I ask this question, because I am trying tried to search this information for all Windows operating systems (from 9x up to Windows 8, including Windows CE/Embedded), but no success, I didn’t get exactly the count of rings in different versions, about memory range and so on.
Some info was in MSDN about native development (KMDF), but only for lower-level work, than Win32, and there was no full info about all rings and accessing each ring.
Could you help me answer this question?
No major operating system (at least not on desktop) nowadays uses more than 2 rings, for the simple reason that on the one major architecture, the modern, efficient way of doing syscalls (e.g.
SYSENTER) exclusively supports going from ring-3 to ring-0 and back.Which means, if you are going to support more than two rings, and Intel support is a consideration, you will buy a rather minor (and often disputed) advantage security-wise at the price having to write separate implementations of completely different security models — for the same identical OS.
Which, frankly, lies somewhere in between “maintenance nightmare” and “madness”.