There is already described how CPU works. OTOH there is some other aspect to describe.
First, there are kernel virtual space and user process virtual base. In a most typical setup (like for x86), they share a common space but kernel one is at top half of the whole space. (In x86-32 in a special mode before mass migration to 64 bit, it could be top 1/4 or even 1/8 of the whole space.) This space maps kernel code and data in a rather free way, it can allocate and free any space portion. But, it has to keep some data structures that track use of the whole physical address space (free/occupied, who occupies).
OTOH, specific platform issues add some more restrictions. For example, it is highly suggested that when DAT is turned on or off on x86, this is done from an equal-mapped page (virtual address is equal to physical one). With typical Wintel platform, this means it is most handy to put the code for this switching and some page catalogs to first 1MB (and make it unavailable for userland - that's why often start address of Linux process is 4MB).
Also, each userland process has its own virtual space structure (its part, complementary to kernel one) which are described in OS-specific structures. At Linux, /proc/$pid/maps describes them. A book like this describe them in details.
In the language of the design and implementation of the 4.4 BSD , the bottom half of the kernel is Mach micro kernel, whereas the top half is monolithic drivers etc. Can I think it this way?
Item | Current | Lowest | Reviews |
---|---|---|---|
The Design and Implementation of the 4.4 BSD Oper… | - | - | 4.5/5.0 |
^Item Info | Bot Info | Trigger
Item | Current | Lowest | Reviews |
---|---|---|---|
The Design and Implementation of the 4.4 BSD Oper… | - | - | 4.5/5.0 |
^Item Info | Bot Info | Trigger