3、操作系统——虚拟内存

存储器的层次结构
访问时间类型容量
1 nsecregister< 1KB
2 nseccache1 MB
10 nsecmain memory64-512 MB
10 msecmagnetic disk5-50 G
100 secmagnetic tape20-100 GB

上表示存储器的层次结构,随着现在科技的发展其容量已经有很大提升了。虽然内存的容量在迅速提升,但是软件的容量也在迅速提升,为了能够使有限的内存能够运行更多的程序就出现了虚拟内存技术。


在计算机系统中,尤其是多道程序运行的环境下,可能会出现内存不够用的情况,解决方法如下:

①、如果程序太大超过了内存容量,可采用手动的覆盖技术,只把需要的指令和数据保存到内存中。

②、如果程序太多,超过内存的容量,可采用自动的交换技术,把暂时不能执行的程序送到外存中。

③、如果想要在有限容量的内存中,以更小的页粒度为单位装入更多更大的程序,可采用自动的虚拟存储技术。


一、覆盖技术

目标:在比较小的可用内存中运行较大的程序,常用语多道程序系统分区存储管理配合使用。

原理:把程序按照其自身逻辑结构划分为若干功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。

①、必要部分的代码和数据常驻内存;

②、可选部分在其他程序模块中实现,平时存放在外存中,在需要用到时才装入内存;

③、不存在调用关系的模块不必同时装入到内存中,从而可以相互覆盖,即这些模块共用同一个分区。

例子:

覆盖技术的缺点: ①、编程花费的时间较多,编程比较复杂 ②、数据的换入换出的时间开销较大


二、交换技术

目标:多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的内存资源。

方法:①、可将暂时不能运行的程序送到外存,从而获得空闲内存空间。②、操作系统把一个进程的整个地址空间的内容保存到外存中(换出swap out),而将外存中的某个进程的地址空间读入到内存中(换入swap in)。换入换出内容的大小为整个程序的地址空间。借助MMU实现。

 交换技术在实现时需要考虑的几个问题:

①、交换的时机确定:只有当内存空间不够或有不够的危险时换出

②、交换区的大小:必须足够大以存放所有用户进程的所有内存影像拷贝;必须能够对这些内存映像进行直接存取

③、程序换入时的重定位:换出后再换入的内存位置一定要在原来的位置上,采用动态地址映射的方式从内存中映射到硬盘上。


覆盖技术和交换技术的比较

①、覆盖只能发生在那些相互之间没有调用关系的程序模块之间,因此必须给出程序内的各个模块之间的逻辑覆盖结构。

②、交换技术是以在内存中的程序大小为单位进行的,它不需要给出各个模块之间的逻辑覆盖结构。


三、虚拟内存管理技术——虚存技术

覆盖技术与交换技术存在的不足

①、覆盖技术需要程序员对程序的模块进行划分,增加了程序员的负担。

②、交换技术以进程为单位,需要把进程的整个地址空间都换入换出,增加了处理器的开销。

虚存技术的目标

①、像覆盖技术那样不是把程序的所有内容都放到内存中,因而能够运行比当前的空闲内存空间还要大的程序。但做得更好,由操作系统自行控制,不需要程序员编程。

②、像交换技术那样,能够实现进程在内存与外存之间的交换,因而获得更多的空闲内存空间。但做得更好,只对进程的部分内容在内存与外存之间进行交换。

程序的局部性原理

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

①、时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短的时间内;

②、空间局部性:当前指令和邻近的几条指令,当前访问的数据和邻近的几个数据都集中在一个较小的区域内。

程序的局部性原理表明,从理论上虚拟存储技术是可以实现的。

例题:程序的编写方法对缺页率的影响

页面大小为4K,分配给每个进程的物理页面数为1,在每个进程中,定义了如下的二维数组int A[1024][1024],该数组按行存放到内存中,每一行放在一个页面中。以下有两种程序编写方法:

问,两种方法各会引起多少次缺页?

答:程序1的赋值方式为第一列,第二列,...,最后一列;程序2的赋值方式为第一行,第二行,...,最后一行。程序1中,当为A[0][0]赋值完时,数据在硬盘中会产生一次缺页中断,然后操作系统将A数组第一行的数据加载到内存中的一页上,为A[1][0]赋值时,由于一行占一个页面,A[1][0]和A[0][0]不在同一页会产生一次缺页中断,根据这个规律,一列会产生1024次缺页中断 ,1024列会产生1024*1024次缺页中断。程序2会产生1024次缺页中断。

1、虚存技术的实现

可以在页式或段式内存管理的基础上实现。

①、在装入程序时不需要将全部装入到内存中,只需要将当前需要执行的部分页面或段装入到内存中,就可让程序开始执行。

②、在程序执行过程中,如果需要执行的指令或访问的数据尚未在内存中(称为缺页或缺段),则由处理器通知操作系统将相应的页面或段调入到内存中,然后继续执行程序。

③、操作系统将内存中暂时不需要的页面或段存放到外存中,从而腾出更多的空间来存放将要装入的程序以及将要调入的页面或段。

2、虚存技术的基本特征

①、大的用户空间:通过把物理内存与外存相结合,提供给用户的虚拟内存空间通常大于实际的物理内存空间。例如32位的虚拟地址理论上可以访问4GB,若计算机的物理内存只有256MB,但硬盘大于4GB就可实现让运行程序“感觉”自己拥有4GB的内存空间。

②、部分交换:与交换技术相比,虚拟存储的调入调出是对部分虚拟地址空间进行的,交换技术是针对一个进程全部的地址空间,虚存技术是对某个页或段。

③、不连续性:虚拟地址空间可能是不连续的。

3、虚存技术——虚拟页式内存管理

大部分虚拟存储系统都采用虚拟页式内存管理技术,即在页式存储管理基础上增加请求调页和页面置换功能。

基本思路:

①、当一个用户程序开始执行时,将其部分部分页面装入内存就开始执行。

②、在程序运行过程中,如果发现需要执行的指令或者需要访问的数据不在内存中,就产生缺页中断,系统处理中断将缺失的页调入到内存中。

基于此需要对页表表项进行改进

 

4、缺页中断的处理过程

 

当执行load M时到页表中查询驻留位,如果为0表示需要的指令或数据在backing store上(硬盘上),操作系统需要给出空闲的物理内存地址空间,然后将硬盘上的指令或数据加载到该free frame,然后重新设置页表项,然后重新执行load M。

backing store

5、 虚拟内存的性能

使用有效存储器访问时间effective memory access time(EAT)来理解分页的开销:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值