操作系统:虚拟内存的存储管理

本文介绍了操作系统中虚拟内存的管理方式,包括页式管理、倒排页表以及转换检测缓冲区(TLB)。在页式管理中,详细阐述了页表项的结构和二级页表的空间优化。倒排页表通过使用页框号索引页表项节省空间,但增加了地址转换的复杂性。转换检测缓冲区则提高了地址转换的效率。此外,还讨论了页尺寸设置对系统性能的影响。
摘要由CSDN通过智能技术生成

页式管理

在基于分页的虚拟内存方案中,通常每个进程都有一个唯一的页表,对应于每个进程都有自己的虚拟地址空间

页表项的格式为:

  • P位:由于一个进程可能只有一些页在内存中,因此每个页表项需要有一位(P)来表示它所对应的页当前是否在内存中。如果这一位表示该页在内存中,则这个页表项还包括该页的页框号。
  • M位:修改位(脏位),表示相应页的内容从上一次装入内存中到现在是否已经改变。若未改变,则当需要把该页换出时,不需要用页框中的内容更新该页,即不需要将该页的内容再写回磁盘,可以直接丢弃。

由于页表的长度可以基于进程的长度而变化,因此不能在寄存器中保存,页表必须在内存中且可以访问到

当一个进程正在运行时,一个寄存器保存该进程页表的起始地址,虚拟地址(又称为逻辑地址,由页号和偏移量组成)的页号用于检索页表(可以看作是页表的索引,即页表项相对于页表起始地址的位置),查找内存中相应的页框号,并将查找到的页框号与虚拟地址中的偏移量组合起来产生对应的物理地址(由页框号和偏移量组成,是内存中的实际地址)。

 

当页表过大,占据过多内存时,可以采用多级页表的形式,主要有二级页表(即创建页表的页表,可以理解为将原来的页表分为多个大小相等的块/页表)。(参考文章,强烈推荐

以虚拟地址空间为32位(4GB)为例,若页面大小为4KB(即2^12),则页表一共有1M个页表项(4GB/4KB=1M),一个页表项包含了一个页框号,指向内存中的具体页框。若每条页表项占用4B,则一个页表需要占用4MB的内存。如果使用二级页表,则将原来的页表再分为大小相同的页,再建立对应的索引。所以如果二级页表退化为一级页表&

(1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: ①、 50%的指令是顺序执行的; ②、 25%的指令是均匀分布在前地址部分; ③、 25%的指令是均匀分布在后地址部分。 具体的实施方法是: ① 在[0,319]的指令地址之间随机选取一起点m; ② 顺序 执行一条指令,即执行地址为m+1的指令; ③ 在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’; ④ 顺序执行一条指令,其地址为m’+1; ⑤ 在后地址[m’+2,319]中随机选取一条指令并执行; ⑥ 重复上述步骤,直至执行320次指令。 (2) 将指令序列变换成页地址流 设:①页面大小为1K; ②用户内存容量为4页到32页; ③用户虚存容量为32K; 在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条~第9条指令为第0页(对应的虚存地址为[0,9]); 第10条~第19条指令为第1页(对应的虚存地址为[10,19]); . 第310条~第319条指令为第31页(对应的虚存地址为[310,319]); 按以上方式,用户指令可组成32页。 (3) 计算并输出下述各种算法在不同的内存容量下的命中率。 ① 先进先出的算法(FIFO); ② 最近最少使用算法(LRR); ③ 最佳淘汰法(OPT):先淘汰最不常用的页地址; ④ 最少访问页面算法(LFR); ⑤ 最近不经常使用算法(NUR)。 其中③和④为选择内容。 命中率=1-(页面失效次数)/(页地址流长度) 在本实验中,页地址流的长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值