计算机中的存储器分类很多,其中页式存储是一种常见的存储方式。它是指将主存储器分成大小相等的区域,每个区域称为一页。当某进程需要存储时,会被划分成多个页,每一页可以单独被调入内存中,从而实现了进程的分段存储。以下是几个页式存储的例题,从不同的角度进行分析。
1. 基本页式存储问题
假设一个计算机的页大小为256字节,物理地址为32位,使用32位虚拟地址生成页表,一个进程使用页式存储管理,其中进程的虚拟地址空间为4GB,占用了32个页面空间,每个页面都已在物理内存块中占据了一个页面大小的空间。求解该进程的页表大小、实际物理内存空间以及进程在内存中的第一个虚拟地址。
解析:由于页大小为256字节,则每页可以表示28=256个地址单元,即一页能够存储256个数据项。整个虚拟地址空间为4G,则一共有4G/256=2^22个页面,即页面数为2^22。每个页面占据32位虚拟地址和32位物理地址的大小,因此一个页面的大小为4KB。进程使用了32个页面,则进程所占用的虚拟地址空间为32*256B=8192B。进程的每一个页面在物理内存块中占据了一个页面大小的空间,因此物理内存的实际空间为32*4KB=128KB。由于页表中需要存储32个页面的映射关系信息,因此页表大小为32*4B=128B。进程在内存中的第一个虚拟地址为0x00000000。
2. 多级页表问题
假设一个计算机有一个4GB的虚拟地址空间,页大小为4KB,一级页表大小为4KB,且每个二级页表倍数为4页。假设所有的页表和数据都存储在内存中,问在该计算机中可以管理的最大物理存储器空间是多少。
解析:双重页面表可以管理220 = 1MB的物理地址空间,因为页表本身也需要存储在物理内存中。由于一级页表大小为4KB,则可以存储4KB/4B=1024个指针,每个指针指向一个2级页表。每个二级页表可以管理4KB*4=16KB的地址空间,因此一个一级页表可以管理16KB*1024=16MB的地址空间。则一级页表可以管理220*16MB=2GB的物理地址空间。因为一级页表只占用了1/512的空间,所以可以使用8架二级页表来覆盖另外的2GB的物理地址空间。所以该计算机可以管理的最大物理存储器空间为2GB*(1+8)=18GB。
3. 页式存储的换页机制问题
对于采用页式存储管理方式的操作系统,当内存空间不足时,需要进行页调度(也就是换页)操作。假设一个页面的大小为512字节,操作系统采用随机算法来选择需要换出的页面,建立页面调度队列,缺页率为15%,如果全部页面换出来的话,需要换出多少页面?
解析:由于缺页率为15%,则有15%的内存访存需要通过页调度操作将所需页面调入内存。因此,每发生100次内存访问中,就有15次需要进行页调度操作。由于一个页面的大小为512字节,则每次需要调入或者调出2个页面,即大小为1KB。因此,每100次内存访问中需要换出的页面数为15*2=30个页面。
扫码咨询 领取资料