Help


from Wikipedia
« »  
The CPU primarily divides memory into 4 KB pages.
Segment registers, fundamental to the older 8088 and 80286 MMU designs, are not used in modern OSes with one major exception: access to thread-specific data for applications or CPU-specific data for OS kernels, which is done with explicit use of the FS and GS segment registers.
All memory access involves a segment register, chosen according to the code being executed.
The segment register acts as an index into a table, which provides an offset to be added to the virtual address.
Except when using FS or GS as described above, the OS ensures that the offset will be zero.
After the offset is added, the address is masked to be no larger than 32 bits.
The result may be looked up via a tree-structured page table, with the bits of the address being split as follows: 10 bits for the root of the tree, 10 bits for the leaves of the tree, and the 12 lowest bits being directly copied to the result.
Some operating systems, such as OpenBSD with its W ^ X feature, and Linux with the Exec Shield or PaX patches, may also limit the length of the code segment, as specified by the CS register, to disallow execution of code in modifiable regions of the address space.

2.348 seconds.