And you can also argue that that's overengineered (the original NT design docs were posted on here a while ago), that the UNIX model (while much more primitive and simplified) has proven more successful in the real world, and that the original "clean, overengineered" NT design has been buried under a progressively bigger truckload of crap year upon year and is no longer as clean as it once was.
> the original "clean, overengineered" NT design has been buried under a progressively bigger truckload of crap year upon year and is no longer as clean as it once was.
The original UNIX model has (considering the current state of GNU/Linux) similarly buried under a progressively bigger truckload of crap year upon year and is no longer as clean as it once was.
A central difference is: the NT kernel stayed rather clean (the crapload rather happened in the Windows subsystem).
Once you've taken most all of the other subsystems out of NT (which they pretty much have), all you're left with is is the crapload in the Windows subsystem.
I should have mentioned that I am speaking from a Plan 9 point of view where some of the common mechanisms are provided via the kernel file servers such as /proc.
Under Windows, a lot more concepts are handles than just files, directories, symbolic links, pipes, mail slots, ..., e.g.
- processes, threads
- synchronization objects (mutex, semaphore)
- events (CreateEventEx)
- I/O Completion Ports
- Sections (ZwCreateSection) and Partitions (https://www.geoffchappell.com/studies/windows/km/ntoskrnl/ap... ) for memory
- waitable timers
- GUI components (HWND)