I’m designing a memory chip, and since this seems like the best place to ask a related system software question…
On a modern x86 processor, does system-level code (protection ring 0) run on physical memory addresses?
And is it the same for the 64 bit spec?
(I need to know so I know whether addresses for system code go through the virtual/segmented memory subsystem or not.)
They run as any other code. The only difference between Ring 0 the other rings is that Ring 0 can execute privileged instructions, and thus modify the memory address space and structure. This privilege, however, does not mean that Ring 0 cannot use virtual memory just like any other code. It is technically possible to run all processes in Ring 0 and maintain the same virtual memory behavior, assuming the processes don’t attempt to modify it. It is also possible to run less privileged ring processes without virtual memory address spaces.