- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.4 内存扩充技术 内存扩充背景 CASE 1:在一个时刻,系统只能有一个作业在运行(假定单处理器系统)。对多道程序设计而言,如果内存紧张,是不是可以考虑回收暂停的作业占有的内存? CASE 2:对特大型作业,假定其要求的内存大于所有的物理内存,是不是这个作业不可能得到运行? 解决思路 对CASE 1采用交换技术:考虑把暂停的作业交换到磁盘上,待其真正要运行,再恢复执行现场。 对CASE 2采用同时部分装入:特大型作业的所有代码不可能同时执行,可以考虑把正在执行的区域先装入。换句话说,把暂时不用的部分换出。 应用程序不透明方式----覆盖技术 应用程序透明方式------虚拟存储技术 覆盖技术: 将一个大程序按程序的逻辑结构划分成若干个程序(或数据)段,并将不会同时执行、从而就不必同时装入内存的程序段分在一组内,该组称为覆盖段。 同个覆盖段中多个程序段分配到同一个称为覆盖区的存储区域。 MAIN (10K) A (30K) B (20K) C (30K) D (30K) E (40K) (a)一个程序的调用结构 (b)覆盖和覆盖段 图2-10 覆盖管理 覆盖段 覆盖区 MIAN 10K A 和 B 30K C 、 D 和 E 40K 覆盖技术的实现关键: 操作系统不知道程序的逻辑结构,也不可能自动划分覆盖段。 需要应用程序员在设计程序就要规划好各个覆盖段。并用约定的描述语言,描述出覆盖段的划分,以及对每个覆盖段,何时执行特定程序段的调入和覆盖。并将该描述脚本按规定的方式提交给操作系统 操作系统按描述脚本的要求,在规定的时间调入合适的程序段到覆盖段。 交换技术: 覆盖技术用于一个作业的内部,交换技术用于不同的作业。 任一时刻,主存中只保留一个完整的用户作业。当该作业的时间片用完或因等待某一事件而不能继续运行时,系统就挑选下一个作业进入主存运行。 为减少交换的数据量,如果新作业的内存需求不大,可只交换出原作业的一部分 交换技术对应用程序而言是透明的,无需程序员干预。 作业1 空闲区 (a) 作业2 空闲区 (b) 作业3 空闲区 (c) 作业2 作业1 空闲区 (d) 作业3 作业2 作业3 空闲区 (e) 作业2 作业2 空闲区 (f) 图2-11 单一连续存储区的存储交换 虚拟存储器—背景 作业即使不全部装入主存也能正确运行的,因为: 1.在一个程序中一般都有相当数量的出错处理子程序,在正常的运行过程中很少执行到这些程序。 2.程序中一般都含有类似then和else的彼此互斥的部分,互斥的部分又可以调用自己的子程序,在程序的一次执行中往往只选择其中的一条路径执行。 3.程序中的初始化部分一般只执行一次,初始化工作完成后这些代码就没有存放在主存中的必要。 4.从运行的时间角度来分析,在一段时间内作业一般不会执行到所有程序段的指令和存取绝大部分数据,它往往相对集中地访问某些区域中的指令和数据,这就是程序运行的“局部性原理”。 虚拟存储器的基本原理 思想: 通过地址映射机构:完全隔离程序地址和实际的物理地址。 在主存中只装入最近经常要访问或正需要访问的指令和数据,剩余部分就暂时不必装入,等到以后要访问到它们时再调入内存。因而运行程序所需内存可远小于程序的虚拟地址。 用户的程序就不受实际内存大小的限制,好像计算机系统向用户系统提供了容量极大的“主存”,而这个大容量的“主存”是靠存储管理的软件和硬件,通过大容量的辅存作为后援存储器扩充而获得的,是程序设计员感觉到的,而实际上并不存在的“主存”,故称虚拟存储器。 程序虚拟地址 物理硬盘 换入换出 物理内存 地址映射 虚拟存储器的实现要点: 需要OS,甚至是CPU支持地址映射,将逻辑地址转化为物理地址 操作系统需要对程序虚拟地址空间对应的物理内存进行管理:装入、交换、调出,维护地址映射表等。 虚拟存储器的大小限制: 指令地址字长度的限制。 存放程序指令和数据的外存储器的大小,这种设备叫做外围设备。存放程序指令和数据的外存区域称为交换区。 虚拟地址空间不能大于内存和磁盘的容量之和。 2.5、纯分页式存储管理 导引:地址映射的基本方式 一一自由映射: 灵活,无任何零头 地址映射表很大 单一块的映射: 无法解决单一大程序运行的问题 二者的结合? 1、基本思想 作业的虚拟地址空间划分为等长的块,每块称为虚页。 虚拟地址-?虚页号+页内偏移地址 主存地址空间也划分为与虚页长度相等的块,每块称为实页。主存地址-?实页号+页内偏移地址 每个作业的每个虚页号---?每个实页号 页内偏移地址采用恒等方式映射 2、地址表示和分配 地址表示 在具体实现时,页的大小是2的幂次方。如Linux下80386为2的12次方(4096)。 二进制表示的虚拟地址可解释为高位部分
文档评论(0)