Paging: Difference between revisions
[unchecked revision] | [unchecked revision] |
Content deleted Content added
Slight Correction |
Page Directory |
||
Line 6:
==MMU==
Paging is achieved through the use of the [[MMU]]. The MMU is a unit that
===
The topmost paging structure is the page directory. It is essentially an array of page directory entries that take the following form.
'''Note: With 5mb pages, bits 21 through 12 are Reserved!'''
[[Image:Page dir.png|frame|A Page Table Entry]]
The page table address field represents the physical address of the page table that managers the four megabytes at that point. Please note that it is very important that this address be 4kb aligned. This is needed, due to the fact that the last bits of the dword are overwritten by access bits and such.
The next valid flag, S, or 'Page Size', stores the page size for that specific entry. If the bit is set, then pages are 4mb in size. Otherwise, they are 4kb.
A, or 'Accessed' is used to discover whether a page has been read or written to. If it has, then the bit is set, otherwise, it is not. Note that, this bit will not be cleared by the CPU, so that burden falls on the OS. (ie. if it needs this bit at all.)
D, is the 'Cache Disable' bit. If set, the page will not be cached. Otherwise, it will be.
W, the controls 'Write-Through' abilities of the page. If the bit is set, write-through caching is enabled. If not, then write-back is enabled instead.
U, the user\supervisor bit, controls access to the page based on privilege level. If the bit is set, then the page may be accessed by all; if the bit is not set, however, only the supervisor can access it.
R, the read and write permissions flag, either makes the page only readable, that is, when it is not set, or makes the page both readable and writable, that is, being set.
P, or 'Presence', determines if the page is actually in physical memory at the moment. (eg. if a page only exists on the hard drive, it is not in physical memory.) If a page is called, but not present, a page fault will occur, and the OS should handle it. (See below.)
===Page Table===
Todo
====Example====
|