操作系统_清华大学(向勇、陈渝)-笔记-第五章-虚拟内存

覆盖技术

目标:在较小的可用内存中运行较大的程序,
把程序按其自身逻辑结构,划分为多个独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。

  • 必要部分的代码和数据常驻内存。
  • 不常用功能在其他程序模块中实现,要用的时候加载到内存当中。
  • 不存在调用关系的模块是平行的,可以共享一块内存。

缺点:太麻烦了,程序员会骂娘;实际上是时间换空间。

交换技术

目标:多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的内存资源。
将不能运行的程序(等结果)送到外存中,从而空出空间。
需要考虑问题:

  • 什么时候交换?-只当内存空间不够或有不够危险的时候才换出。
  • 提供多大的空间?-必须足够大以存放用户进程的所有内存映像的拷贝,必须能对这些内存映像进行直接存取。
  • 程序怎么换入?-再换入内存时,原先的地盘可能被别人霸占了,最好采用动态地址映射的方法。

虚拟技术

目标:

  • 像覆盖技术那样对程序员透明。
  • 像交换技术那样进行程序部分交换。

程序的局部性原理:在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域,这可以表现为:

  • 时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短的时期内。
  • 空间局部性:当前指令和邻近的几条指令,当前访问的数据和邻近的几个数据都集中在一个较小的区域内。


每次只能在内存中放一行数据(1024 * 4 Byte大小),那么有如下的结论:

按列访问,就要发生多得多的缺页中断。

虚存技术的基本概念

  • 在装入程序时,不必要全部装入,只需要装入需要的代码数据。
  • 在执行过程中,若需要执行的东西不在内存中,就装入进去。
  • 将暂时不需要的页面掉出保存在外存当中。

虚存技术的基本特征

  • 较大的用户空间,外存+内存>>内存。
  • 部分交换:与之相对的是交换技术。
  • 不连续性:物理内存分配具有不连续性,虚拟地址空间使用的不连续性。

虚存技术的实现

请求调用:过程同页表管理,但正常情况下,逻辑地址空间大于物理地址空间,所以找不到页的时候就报错,而在虚拟内存管理技术之下,找不到对应的物理页的时候,其可能存在于disk当中,这时候就要进行页面置换。
页面置换
为了更好进行页面置换,我们需要额外定义一些标记,如下图所示:

栗子:
0的位置能够得到数据,
但是32780是缺页中断。

缺页中断的描述:

  1. 如果内存中有空闲的物理页面,则分配一物理帧f,转到第4步,否则转2。
  2. 采用某种页面置换算法,选择一个将被替换的物理页帧f,他所对应的逻辑页为q。如果里面的数据是被修改过的,那要写回外存,否则直接占用。
  3. 对q所对应的页表项进行修改,把驻留位置0,表明再次使用的话要去外存中找。
  4. 把需要访问的页p装入到物理页面f当中。
  5. 修改p所对应的页表项内容,把驻留位设置为1,把物理页帧号设置为f。
  6. 恢复中断程序。

有效存储器访问时间EAT:EAT=访存时间 * 命中几率 + page fault处理时间 * page fault几率

posted @ 2020-10-17 12:23  HermioneGranger  阅读(198)  评论(0)    收藏  举报