Q1. What do you mean my using a segment with base address zero?If we later enable paging, and map address 0xC000.0000 to 0x0010.0000 (and use a segment with base address zero), the same address will continue to be used.
Memory Mapping
Q2. Win NT maps upto 512MB of physical memory to the kernels address space. Why would they do this? My guess is there assuming that everybody has at least 512MB of Memory?1. Map all physical memory into the address space. This can be either done 1:1 (physical memory is addressed by the bottom of the address space or at some offset (physical memory accessible starting at say 0xD000.0000). This approachs advantage is its simplicity; however, its disadvantage is the fact that the user may have any amount of memory installed in their system, all of which must be addressable.
Q3. How can you get around this disadvantage?it has the disadvantage that you can only access page mappings inside the current address space. This is referrng to option 3 under memory mapping.
Q4. Is it better to put the page tables at a address below or above the page directory address?
Q5. What do you mean by bottom half versus top half when it comes to this statement?If you chosen to put your kernel in the bottom half and your application in the top half, your stuck unless you re-map the first 1MB so that its accessable to ring 3 and make sure theres nothing important here.