I have a query that is not clear in the tutorials.
In the GDT, there are 32 bits for the base address but only 20 bits for the limit.
As 2^32 is 4GB, I can see that it is possible to have a segment starting anywhere in memory.
However, only having 20 bits for the limit doesn't allow you to have a segment that extends along all of memory if the limit references individual bytes.
My question is: Does the limit refer to individual bytes or does it refer to 4KB sections. i.e. if you set the base to 0 and the limit to 1, you would be able to address the first 4KB of linear memory. (4KB because its the default page size and because 1MB * 4KB = 4GB).
Thanks,
Andrew
Query about GDT entries
Moderator:Moderators
Re: Query about GDT entries
The limit refers to a physical address. But if you look at the bit layout of the GDT you see that bit 55 (granularity) determines whether or not the segment limit is multiplied by 4K or not (granularity bit has to be set to 1 for that to happen). This makes your equation true because the limit is 1MB, but if bit 55 is set it is multiplied by 4K and this allows for a segment limit of up to 4GB (as shown in your equation).
Re: Query about GDT entries
Better knowing two years late than never knowing haha. Didn't realize it was a two year old post 

Re: Query about GDT entries
Haha ok then. Didn't know that either 
