HUST OS 7.3 虚拟内存管理【自学笔记】

7.3 虚拟内存管理
7.3.1 页式虚拟内存管理概念
7.3.2 页表和页式地址映射
7.3.3 快表技术和页面共享技术
7.3.4 缺页中断
7.3.5 页面淘汰策略
7.3.6 缺页因素与页式系统缺点
7.3.7 段式和段页式虚拟存储
7.3.1 页式虚拟内存管理概念

目的:
使得大的程序能在较小的内存中运行;
使得多个程序能在较小的内存中运行(/能容纳下);
使得多个程序并发运行时地址不冲突(/方便,高效);
使得内存利用效率高:无碎片,共享方便

实现思路:在程序运行时,只把当前必要的很小一部分代码和数据装入内存.其余代码和数据需要时再装入.不再运行的代码和数据及时从内存删除.

进程分为若干虚拟页;
内存分割为若干物理页;

内存以页框为单位分配使用
进程以页为单位装入内存

7.3.2 页表和页式地址映射

虚拟地址可以分解成页号P和页内偏移W
VA所处页的编号=VA/页的大小;
VA所处页中的偏移=VA%页的大小

假设页的大小:2^n个单元;
P=VA>>n;
W=VA&(2^n-1);

  • 页面映射表:
    记录页与页框之间的对应关系.也叫页表.
    页号:登记程序地址的页号
    页框号:登记页所在的物理页号.
    页面其他特性:等级含存取权限在内的其他特性.

页式地址映射:
功能:虚拟地址—>物理地址

得到P查页表得P’
MA(物理地址)=页框号P’*页面大小+W;

7.3.3 快表技术和页面共享技术(Cache)

慢表:页表放在内存中
快表:页表放在Cache中

快表的特点:容量小,访问快,成本高.
快表是慢表的部分内容的复制
地址映射时优先访问快表.

(若在快表中找到所需要的数据,则称为"命中")
(没有"命中"时,需要访问慢表,同时更新快表)

现在技术,快表命中率达到95%以上

页表(软件比对);快表(硬件比对,速度快)

页面共享原理:
1.在不同进程的页表中填上相同的页框号,多个进程能互相访问相同的内存空间,从而实现页面共享.

2.共享页面在内存中只有一份真实存储,节省内存.

7.3.4 缺页中断

页表扩充—带中断位的页表
扩充有中断位和辅存地址的页表.

  • 页表扩充—带访问位和修改位的页表.

  • 缺页中断定义:在地址映射过程中,当所要访问的目的页不在内存时,则系统产生异常中断—缺页中断

  • 缺页中断处理程序:把所缺的页从页表指出的辅存地址调入内存的某个页框中,并更新页表中该页对应的页框号以及修改中断位I为0;

缺页(中断)率f=缺页次数/访问页面总次数 ;
命中率=1-f;

7.3.5 页面淘汰策略
  • 页面抖动:
    页面在内存和辅存之间频繁交换的现象;
    "抖动"会导致系统效率下降.

  • 好的淘汰策略:
    具有较低的缺页率
    页面抖动较少

  • 最佳算法[OPT算法]Optimal
    淘汰以后不再需要或最远的将来才会用到的页面.
    (理论上最佳,实践中该算法无法实现)

  • 先进先出淘汰算法[FIFO算法]
    淘汰在内存中停留时间最长的页面
    异常现象:对于一些特定的访问序列,随着分配的也框增多缺页率反而增加.

  • 最久未使用淘汰算法[LRU算法]Least Recently Used
    淘汰最长时间未被使用的页面.
    LRU的实现(硬件方法)
    页面设置一个移位寄存器R.每当页面被访问则将其重置1.
    周期性地(周期很短)将所有页面的R左移1位(右边补0);

  • 最不经常使用算法[LFU算法]Least Frequently Used
    选择到当前时间为止被访问次数最少的页面
    每页设置访问计数器,每当页面被访问时,该页面的访问计数器加1
    发生缺页中断时,淘汰计数值最小的页面,并将所有计数清零.

7.3.6 缺页因素与页式系统缺点

缺页的因素:

1.淘汰算法

2.页本身的大小
页面的大小选择:
页面太大:浪费内存,极限是分区存储;
页面太小:页面增多,页面长度增加,浪费内存;换页频繁,系统效率低;容易缺页

页面的常见大小:1KB,2KB,4KB

3.分配给进程的页框数
页框越少,越容易缺页

4.程序的编制方法
局部性越好,越不容易缺;
跳转或分支越多越容易缺页.

页式系统的不足:
页面划分无逻辑含义;
页的共享不灵活
页内碎片

7.3.7 段式和段页式虚拟存储
  • 进程分段;
    把进程按逻辑意义划分为多个段,每段有段名,长度不定.进程由多段组成.

eg:一个具有代码段,数据段,堆栈段的进程.

  • 段式内存管理系统的内存分配
    以段位单位装入,每段分配连续的内存;
    但是段和段不要求相邻;

  • 段式系统的虚拟地址
    段式虚拟地址VA包含段号和段内偏移W
    VA:(S,W);

  • 段式地址映射过程
    1.由逻辑地址VA分离出(S,W);
    2.查询段表
    检索段号S,查询该段基地址B和长度L;
    3.物理地址MA=B+W;

  • 段的共享
    1.共享段在内存中只有一份存储;
    2.共享段被多个进程映射到各自段表;
    3.需要共享的模块都可以设置为单独的段;

  • 段式系统的缺点
    1.段需要连续的存储空间;
    2.段的最大尺寸受到内存大小的限制;
    3.在辅存中管理可变尺寸的段比较困难;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值