12 虚拟存储器

图片来源:南京大学软件学院COA课程PPT

©author:zzb

12.虚拟存储器

image-20211129172949605

image-20211129173241691

系统软件并不是操作系统

image-20211129173659417

实用程序一般是指程序的创建,文件管理等

当然操作系统本身也是一个程序,自身还是需要占用资源的,同时又在分配计算机的资源

image-20211129175001089

image-20211129175239499

通过仅将当前需要的页调用主存,其他的页暂时放在外存上,可以让主存中尽可能多的包含更多的任务,提高CPU的利用率

image-20211129175319015image-20211129183712793

分区方式:(系统区占用的大小在不同分区方式中都是一样的,不同分区方式是针对用户分区的)

  • 简单固定分区:把用户区划分成长度不等的固定长度的区域,给任务分配一个可用且可以容纳它最小分区。注意一个分区只能放一个任务,不能多个任务一起放在一个分区,因此会非常浪费内存

  • **可变长分区:**根据任务需要的大小来分配内存,提高主存利用率,但时间长了之后,碎片会变多,这些碎片很难被利用

image-20211129184112800

利用页可以使得一个任务的不同页不需要用连续的页框来存储,注意这里是把一个任务的所有部分都分成页装进来(还不是下面的请求分页的思想)

虚拟内存

image-20211129191908177

任务越来越多,对内存的需求越来越大

基本思想:

  • 请求分页:仅仅把需要的页面载进来,而不是把任务的所有页都载进来。因此会存在未命中的问题

优点:

  • 在物理内存不变的情况下,可以载入更多的任务

  • 编写程序时无需考虑物理内存的情况,因此程序可以在不同内存大小的计算机上运行

  • 可以在比物理内存还大的虚拟地址空间中编程

流程

image-20211129192341451

所有使用的页面要载入到硬盘里,当前使用的页面载入到内存里同时被替换且已经被修改的页重新存储到硬盘中,即写回法

设计

image-20211129192616096

cache比主存快10倍,而主存比硬盘快100000倍,因此在cache中缺失来访问主存比在内存中缺失来访问硬盘的开销要小很多,所以要尽可能减少对硬盘的访问

  • 增大页大小,一次能多加载些:如4KB

  • 使用关联映射,增大命中率

  • 采用写回法,减少对硬盘的访问

分页式虚拟存储器

image-20211129193003620

程序运行时,会生成一个页表,记录程序所有虚拟页的信息,页表同样也是存在内存里

页表

image-20211129193703884

在页表中,虚拟页号是不用记录的,因为页表中是所有页的信息,数组的下标就代表了页的标号

物理地址和虚拟地址的页内地址是一样的,所以只要替换虚拟页号就可以,一般来说,虚拟地址的长度会比物理地址的长度要长

快表TLB

image-20211129194533164

页表的使用增加了主存的访问,每次访存都要通过页表去得知这个虚拟地址所对应的物理地址是多少,而之前的cache就是要尽可能减少主存的访问

而页表很大,不能全部放到cache中,所以把最活跃使用的几个页表项放到cache中,称为快表(TLB),对应的主存中的页表就称为慢表

快表采取关联/组关联映射,增大命中率;替换方法采用随机替换法

CPU访存过程

image-20211129195949467

如果在TLB中hit了,那么这个页一定已经被载入内存中了。

要出现TLB中命中但页没有被载入的情况,只有一种可能就是,TLB中有记录,但主存中对应的那一页被其他页给替换了,但这时新的页进来,那么TLB和页表自然也要更新,所以只要把刚刚被替换掉的那一页的记录也给替换掉即可。这样就可以保证TLB中的记录一定是已经被载入的

image-20211129200701995

缺失组合

image-20211129201443716

第8种情况和上面的TLB命中必定载入同理,当一个页从主存中被替换出去后,cache中也会发生替换,那么这个新的数据自然是去把被替换掉的页的信息给替换掉最好

TLB缺失可以由硬件处理也可以由软件处理

缺页由软件处理,虚拟地址到物理地址的转换由硬件处理

分段式虚拟存储器

分页式可能会把数据分到不同的页,不利于保护和管理

image-20211129204057971

分段式和前面的分区类似,但同样是把需要的段载入内存中去,而不是和前面的分区那样是全部载入。同样会出现碎片化的问题

段页式虚拟存储器

image-20211129204431193

每一个段都有一个自己的页表image-20220106215707945

image-20211129204604663

  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
  • Copyrights © 2022-2024 zzb
  • RZ
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信