- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 存储器管理
存储器是一种必须仔细管理的重要资源。虽然现在一台普通家用计算机的存储器容量可能是60年代早期全世界最大的计算机IBM 7094的五倍以上,但是程序长度的增长速度和存储器容量的增长一样快。用类似于帕金森定律的话来说: 存储器有多大,程序就会有多长。在这一章中我们将讨论操作系统是怎样管理存储器的。
在理想的情况下,每个程序员都会喜欢的是无穷大、快速并且内容不易变(即掉电后内容不会丢失)的存储器,同时又希望它是是廉价的。但不幸的是当前的技术没有能够提供这样的存储器,因此大部分的计算机都有一个存储器层次结构,它由少量的非常快速、昂贵、易变的的高速缓存(cache),若干兆字节的中等速度、中等价格、易变的主存储器(RAM),和数百兆或数千兆字节的低速、廉价、不易变的磁盘组成。操作系统的工作就是协调这些存储器的使用。
操作系统中管理存储器的部分称为存储管理器,它的任务是跟踪哪些存储器正在被使用、哪些存储器空闲,在进程需要时为它分配存储器,使用完毕后释放存储器,并且在主存无法容纳所有进程时管理主存和磁盘间的交换。
在这一章中我们将讨论许多不同的存储器管理方案,从非常简单的到高度复杂的。我们从最简单的存储管理系统开始,然后逐步过渡到更加精密的系统。
4.1基本的内存管理
存储管理系统可以分为两类:在运行期间将进程在主存和磁盘之间移动的系统(交换和分页)和不移动的系统。后一种比较简单,因此我们首先讨论。随后在本章的后半部分我们将讨论交换和分页。在本章中读者应该自始至终清醒地认识到:交换和分页在很大程度上是由于缺少足够的主存以同时容纳所有的进程而引入的。随着主存越来越便宜,选择某种存储器管理方案的理由也许会变得过时,除非程序变大的速度比存储器降价的速度还要快。
4.1.1没有交换和分页的单道程序
最简单的存储器管理方案是同一时刻只运行一道程序,应用程序和操作系统共享存储器。这种方案的三个变种如图4-1所示。操作系统可以位于主存最低端的随机存取存储器(RAM)中,如图4-1(a)所示;它也可以位于主存最高端的只读存储器(ROM)中,如图4-1(b)所示;还可以让设备驱动程序位于内存高端的ROM中而让操作系统的其他部分位于低端的RAM中,如图4-1(c)所示。例如小型的MS-DOS系统使用的就是最后一种模型。在IBM PC计算机中,系统位于ROM中的部分称为基本输入输出系统(BIOS)。
图4-1 在一个操作系统一个用户进程时三种简单的内存组织方法,其他方法也是存在的。
当这样组织系统时,同一时刻只能有一个进程在存储器中运行。一旦用户输入了一个命令,操作系统就把需要的程序从磁盘拷贝到存储器中并执行它;在进程运行结束后,操作系统显示出一个提示符并等待新的命令。当收到新的命令时它把新的程序装入存储器,覆盖掉原来的程序。
4.1.2固定分区的多道程序
虽然单道程序常常用于带有简单操作系统的小型计算机上,但我们往往更加希望同时能有多个进程同时运行。在分时系统中,允许多个进程同时在存储器中,这意味着当一个进程因为等待I/O结束而阻塞时,其他的进程可以利用CPU,因而提高了CPU的利用率。即使在个人计算机上,同时运行两个或多个进程也常常是很有用的。
实现多道程序的最容易的办法是把主存简单地划分为n个分区(可能不相等),分区的划分可以在系统启动时手工完成。
当一个作业到达时,可以把它放到能够容纳它的最小的分区的输入队列中。因为在这种方案中分区大小是固定的,一个分区中未被作业使用的空间就白白浪费掉了。图4-2(a)所示的就是这种固定分区、各分区有自己独立的输入队列的系统。
图4-2 (a)各分区具有独立输入队列固定内存分区。(b)仅有单个输入队列的固定内存分区。
把输入作业排成多个队列时,在大分区的队列为空而小分区的队列为满的情况下,其缺点就变得很明显,如图4-2(a)中的分区1和3所示。另一种方法如图4-2(b)所示,只使用一个队列,当一个分区空闲时,选择最靠近队列头可以被该分区容纳的作业装入其中运行。因为我们不希望为了一个小作业而浪费一个大分区,所以另一个策略是搜索整个输入队列找出该分区能容纳的最大的作业,这种算法认为不值得给小作业一个完整的分区,然而通常我们更加期望给小作业(假设是交互作业)最好的服务,而不是最差的。一个解决方法是至少保留一个小分区,这样就不必为了使小作业运行而为其分配大的分区。另一个方法是采用这样一个规则:一个可运行的作业最多只能够被跳过k次。一个作业每被跳过一次就得一分,当它得到k分时它就不能再被跳过了。
这种由操作员在早晨设置好随后就不能再被改变的固定分区的系统曾在IBM大型机的OS/360中使用了许多年,它被称为MFT(具有固定数目任务的多道程序,或OS/MFT),它易于理解也易于实现:输入作业被送入队列排队直到有
您可能关注的文档
最近下载
- 2023~2024学年三年级下册语文期末模考试卷·创意情境 统编版.docx VIP
- 扬州地区部分县2025届全国卷Ⅱ数学试题中考模拟题解析(精编版)含解析.doc VIP
- 中国规范与菲律宾规范中风荷载计算比较研究参考.pdf VIP
- 学校党组织领导的校长负责制实施方案.doc VIP
- 人教版三年级数学下册第一次月考试卷第一二单元.doc VIP
- JBT14264-2022 高温纳电池性能要求和试验方法.pdf
- 2025年科尔沁艺术职业学院单招职业适应性测试题库参考答案.docx
- 北师大版小学一年级下册语文第一-六单元月考试卷2.doc VIP
- 中文大模型基准测评2024年度报告.pdf
- 金属非金属矿山重大事故隐患检查表(根据金属非金属矿山重大事故隐患判定标准(2022)编制).pdf
文档评论(0)