操作系统页表问题。。。。。。

如图,怎么理解啊?
2024-12-16 20:32:43
推荐回答(2个)
回答1:

1).数组,可以按照C语言里面的数组来类似理解,例如a[100],在内存分配时,采取连续的分配方式,如下图所示:

在内存里面连续排放,只是这里指的是页表的分配;

2).虚拟存储空间到物理存储空间的映射是以内存块为单位进行的,也就是说虚拟存储空间中一块连续的存储空间被映射成物理存储空间中同样大小的一块连续存储空间,根据不同的情况有不同大小存储块的划分,例如1MB、64KB、4KB、1KB,举例是用了4KB,这里物理块大小等于4KB。你截的图那句话只是笼统的表达这么一个原则;

3).地址长度为32位,那么最大的虚拟地址空间为2^32(2的32次方)=4GB;因为计算机内采用2进制,32位表示的最大数位2^32 = 4G= 4*1024M = 4 * 1024 *1024K,计算机内部存储单位用字节(Byte)表示;

4).假设每个页需要4KB的内存空间,那么最大的4GB(4*1024*1024KB)可以有最多4GB/4KB=1*1024*1024=1M个页,这个页就是把虚拟地址空间划分为一个一个大小固定的块,每一块称为一页。这里的块大小为4KB,其实物理地址也被划分成大小为4KB的块,有时称为页帧;

5).页表里面的每个页表项占用4Byte,每个页表项就代表一个页的存储地址,系统最多有1M个页,则此时页表最大长度即为页的个数*每个页的存储地址大小:1M*4Byte = 1024*1024*4Byte=4MB,即用这4MB的页表长度即可以表示4GB的存储空间了,页表采用的连续分配;

6).如果系统支持的逻辑地址(Linux下等同于虚拟地址)增加,那么页的个数增加,那么需要的页表长度也增加,计算为:逻辑地址/页大小*页表项大小=页表长度;

7).现代计算机操作系统都采用多级分页机制,可以更好地利用系统资源达到很好的存储映射;

大概就是这个意思。

回答2:

晚点复回答你,很好理解的,上面所说的页表按照微软系统说法叫簇,目前32位系统默认分配单元都是4KB。分区叫卷。