7 ms·
Kudos for the ambition on taking on such a project! > "Keep the greatest advantages of the NT™ architecture, while implementing new features and technologies k
by rickdeckard 2y ago
Kudos for the ambition on taking on such a project!
> "Keep the greatest advantages of the NT™ architecture, while implementing new features and technologies known from other Operating Systems."
Wouldn't hurt to hear what the greatest advantages of the NT architecture are from the author's POV...
- kimusan 2y agoI personally would have a hard time identifying any advantages that has not been superseded by modern OSes
- mort96 2y agoBy "modern OSes" here, are we talking GNU/Linux, which is older than NT and modeled after a system designed in the 60s? Or maybe macOS os iOS, whose foundations are found in FreeBSD, released in the same year as NT and with a direct lineage to that system from the 60s, plus a kernel from 1985? Using the word "modern" to describe Linux and the BSDs but not Windows NT strikes me as odd... Now I use and like Linux and macOS and iOS, and I strongly dislike Windows. But I don't think I would find it difficult to find advantages to NT's approaches to certain problems over the UNIX-style approach to the same problems. For example, the idea that pipes send structured objects rather than text is interesting and has definitive advantages (and disadvantages) compared to UNIX's text-based pipe model. Its filesystem permissions layer is also way more flexible than UNIX's, with hooks for arbitrary programs to inspect file accesses, which has advantages (and disadvantages). And its GUI-first approach to everything, where everything is primarily configured through some GUI rather than a command line or text file, has obvious advantages (and disadvantages). And although I don't understand it very well (again, not a Windows user), what I hear from HyperV is pretty cool. NT is super interesting as the only serious alternative to UNIX-style systems. There is value in studying it, even if I find the overall experience provided by Windows to be much, much worse than my Fedora desktop or my macOS laptop.
- temac 2y agoNT has no notion of pipes that send structured objects, but it does have Unix-like pipes. Maybe you are thinking about Powershell. Powershell is interesting (although in practice I find it not very practical to use), but is quite another subject than NT. It's really also its own segregated world, that relies on dotnet, that is really another platform than NT (although in the first place implemented on top of it, and of course there are some integrations) Windows ACL are powerful in theory but hard to manage in practice. Look at this fine textual representation for example: "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)". Hum; at least ugo+-rwx you can remember it, and actually POSIX ACL are also easier to remember than Windows ACL. Windows NT is not even that much GUI first. There are tons of things that you just can't access through a GUI, let alone a user friendly GUI. Funny example: ACLs on tasks from the Task Scheduler: no GUI access at all. It would probably not even be too hard for MS to plug their standard permission Window so that you can access them with the GUI, but they never did it. So much for the GUI first. Oh, I'm not even sure it has a command line interface to set the ACL there. Maybe just the Win32 API. I also don't think there is an integrated Windows tool to view for examples the processes in a tree, even less to show Win32 jobs. HyperV by itself has nothing revolutionary but there are a few interesting ideas that it can bring when integrated in a few Windows component (some security related sadly reserved to Entreprise version, because it is well known that in 2024 making good security architecture unreachable from the general public and SME is a brilliant idea). But compared to Qubes OS for example, it is very little. Oh there are also no Windows GUI to show HyperV states for these integration (as opposed with regular full system VMs) Now I still think there are a few good ideas in NT, but the low level layers are actually not that far from Unix systems. It's closer than Cutler would admit. (In particular, there are not so much differences between "everything is a "file"" and "everything is an "object"", at least when you look at what Linux as done about "everything is a "file"" -- this is quite ironic because Cutler particularly disliked the "everything is a "file"" idea)
- iknowstuff 2y agoWhich security features are exclusive to enterprise? Because any ol’ Surface ships as a secure core pc which utilizes virtualization for memory security etc: https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-highly-secure-11 https://learn.microsoft.com/en-us/windows-hardware/design/de...
- speed_spread 2y agoNT/VMS offers no immediately quantifiable advantage, but rather a different philosophy than Unix where everything-is-a-file-even-when-it-isnt-really. It's more of a batteries included system where the high-level and low-level parts combine to form a coherent whole. The HAL, dynamically loadable drivers, the registry, services, API personalities. It's a shame that all the good stuff about the design of NT takes a backseat to the modern Microsoft shenanigans.
- p0w3n3d 2y agoYeah. NT used to be so fast even through remote desktop, now it is so slow because of the bloat. Also I've read somewhere NT suffers from young developers wanting to rewrite parts in higher level languages, avoiding old winapi. But the Kernel is fast and nice...
- justin66 2y agoA fair amount of my work is done via remote desktop, via VPN even, and it doesn't strike me as a particularly slow. I guess the question is, compared to what? On what hardware and network infrastructure?
- pjmlp 2y agoIt suffers from young developes wanting to ship Chrome alongside each application. And it doesn't help that UWP and C++/WinRT turned out such mess that even Microsoft own teams rather use Webviews than native UIs. https://techcommunity.microsoft.com/t5/microsoft-teams-blog/microsoft-teams-advantages-of-the-new-architecture/ba-p/3775704 https://techcommunity.microsoft.com/t5/microsoft-teams-blog/... https://blogs.windows.com/windowsdeveloper/2024/06/03/microsoft-photos-migrating-from-uwp-to-windows-app-sdk/ https://blogs.windows.com/windowsdeveloper/2024/06/03/micros... https://github.com/microsoft/microsoft-ui-xaml/discussions/9323 https://github.com/microsoft/microsoft-ui-xaml/discussions/9...
- ThinkBeat 2y agoI used to use the WinAPi directly and then MFC.
- Const-me 2y agoNT kernel is IMO pretty good. Here’s a few points. ABI for device drivers allows to add support for new hardware without recompiling the kernel. First-class support for multithreading, Vista even added thread pool to the userland API. Efficient asynchronous APIs for IO including files, pipes, and everything else. Linux only got this recently with io_uring, NT implemented IOCP decades go in version 3.5. NT security descriptors with these access control lists and nested security groups are better than just 3 roles user/group/root in Linux. This makes launching new processes and opening files more expensive due to the overhead of access checks, but with good multithreading support it’s IMO a reasonable tradeoff. Related to the above, CreateRestrictedToken kernel call for implementing strong sandboxes. Good GPU support, Direct3D being a part of the kernel in dxgkrnl.sys. This enables good multimedia support in MediaFoundation framework because it allows applications to easily manipulate textures in VRAM without the complications of dma-buf in Linux. Related to the above, GPU-centric 2D graphics (Direct2D) and text rendering (DirectWrite) in the userland API.
- anthk 2y agoLinux has a ACL's too. And consider SDL/Pango/Cairo the counterparts for DWrite/DDraw.
- blacklion 2y agoLinux (and FreeBSD, too) has ACLs for FS. NT has ACLs for everything. Each handle (read: descriptor) has associated ACLs. Also, each handle can be waited ("selected") with same system call. No select()/epoll() vs wait() distinctions. Nw Linux has timerfd and procfd and others, but NT had these from birth. In some way NT is more UNIX ("everything is a file") than UNIX itself.
- feldrim 2y agoWell, for NT -almost- everything is an object.
- mort96 2y agoHm which things are protected by ACLs on NT but not on Linux? Even though the "everything is a file" thing breaks down quite quickly on Linux, with lots of drivers just using ioctls for everything, you still have to open pretty much everything through their device node in /dev, which is affected by ACLs AFAIK. The only real exception I can think of is network sockets. But I'm probably thinking in a very UNIX-centric way, so there may be classes of things I'm missing
- delta_p_delta_x 2y ago> modern OSes Like NT? It is in fact the UNIX-likes that are compelled into a fairly ancient stream-of-bytes model; NT (and Windows atop it) understands that data needs to have structure, and imposes structure on that data at an OS level; everything is a manipulable handle, rather than an opaque block of memory to be written to/read from, arbitrarily.
- nullindividual 2y agoThere's some great information about IOCP vs. the various methods used on Linux (sans io_uring). PyParallel: How we removed the GIL and exploited all cores - https://news.ycombinator.com/item?id=7861942 https://news.ycombinator.com/item?id=7861942 The speaker's HN profile for additional commentary on this topic - https://news.ycombinator.com/user?id=trentnelson https://news.ycombinator.com/user?id=trentnelson
- trentnelson 2y agoI should probably do an updated talk/article/deck on io_uring. I really do like NT internals though.
- nullindividual 2y agoI would love it if you did! You're actually one of the few sources that shines a bright spot on what the NT kernel is good at, outside of the ex-Sysinternals folks.
- xoranth 2y agoIs there any good article on NT internals (that isn't Russinovich' book), that highlight where/how it is better than Linux and other *BSDs? When asked people point to IOCP vs epoll, but I'm not sure how relevant it is now that Linux has io_uring. (They also point to stable ABIs for drivers, but I am more interested in internals)
- monocasa 2y agoInterestingly io_uring was added to NT. https://windows-internals.com/i-o-rings-when-one-i-o-operation-is-not-enough/ https://windows-internals.com/i-o-rings-when-one-i-o-operati...
- lowbloodsugar 2y agoI know it was slow, but I miss when NT had the graphics drivers outside the kernel. Crash the UI? Just wait a minute for it to restart. No BSOD.
- whizzter 2y agoThe worst part about now in hindsight is how they probably could've moved to a work-list system like Vulkan or io_uring and kept it all in separate processes to retain that stability. Yes, memory wasn't as plentiful back then and with single-core machines there still would've been more unavoidable context switches but with queues the context switches could've still been reduced in total as opposed to crossing the kernel boundary at all.
- kllrnohj 2y agoGraphics driver crashes don't result in BSODs anymore. Microsoft fixed that in... Windows 7? Vista? They just trigger a black flash of the screen for a few seconds and then everything is back up as it was - including active GPU contexts. You can have the driver crash & recover in the middle of playing a game and barely even notice, it's incredibly impressive tech. https://learn.microsoft.com/en-us/windows-hardware/drivers/display/timeout-detection-and-recovery#desktop-recovery https://learn.microsoft.com/en-us/windows-hardware/drivers/d...
- pohuing 2y agoUnless you have an amd card I guess. Multiple games reliably took down my 5700xt and the system along with it on certain driver versions. While other versions would crash when using obs. Good god what a terrible card that was initially.
- lowbloodsugar 2y agoReally? I knew I liked 7 for a reason.
- wishfish 2y agoAbout a year ago, the aging Nvidia 980 in my aging gaming desktop decided to suddenly die in the middle of playing Valheim. Windows helpfully switched it over to the on-board graphics. It was smooth. Almost a little too smooth because I didn't notice the screen black out, but I did notice I was suddenly at 1024x768. I was terribly confused for a few minutes before I realized what happened.