存储管理-精品·公开课件.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
存 储 管 理 memory manager 主讲人:张晶晶 学号:内容概要: 单道程序存储管理 固定分区的多道程序系统 重定位与存储保护 交换技术 计算机硬件组成 控制器:是整个计算机的中枢神经,协调计算机各部分工作及内存与外设的访问等 运算器:对数据进行加工处理,即对数据进行各种算术运算和逻辑运算 存储器:存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息 外部设备 随着科技的不断发展,存储器的容量越来越大,现在一台普通家用计算机的主存容量已经是当初最大计算机IBM7094的2000多倍,而且与此相对应的应用程序也越来越长,存储器都要对其进行管理,那么操作系统是如何来协调这些程序的运行呢? 存 储 器 层 次 结 构 目前,绝大多数计算机采用层次化的存储结构 CPU寄存器:CPU主要组成部分,访问速度最快,容量一般,价格较昂贵 高速缓存:即高速缓冲存储器,速度快,包括外部和内部的,它与主存储器之间信息的调度和传送由硬件自动进行 主存储器:即内存,访问速度和价格适中 以上三种均属于易失型的,即在断电后内容全部丢失 磁盘:一些辅助存储,其访问速度较慢,价格较便宜。属于非易失型 存 储 管 理 器 主要任务: 第一,记录各类型存储器的使用情况,即哪些部分正被使用,哪些部分还空闲着 第二,当进程需要存储空间时,分配给它 第三,若内存太小不足以容纳所有进程,需要将内存中暂时不运行的进程送到磁盘上,再把磁盘上的另一进程调入内存进行运行(交换) 存储管理器对多个程序进行调度管理,目前有多种管理方案,从简单到复杂。其大致可以分为两类:一类是进程需要在内存与磁盘之间换进换出的(如交换技术和分页技术);一类是不需要换进换出的(相对简单,如单道和多道程序的管理)。 单道程序存储管理 最简单的一种存储管理方法 基本思路:把整个内存划分为两个区:系统区和用户区。每次把一个应用程序装入用户区运行,由它和操作系统共享全部内存。从装入运行开始到运行结束,该程序始终独占整个用户区。 这种管理方案具体来说有三种实现方式,如图: 在单道程序存储管理方式下,每次只能运行一个程序。 当用户输入一条命令后,操作系统把相应的程序从磁盘装入内存并运行。 当进程运行结束后,操作系统就会显示一个提示符,等待用户输入新的命令,然后重复同样的动作。 当系统收到新命令后,就会装入新的程序到内存,同时覆盖旧的程序。 固定分区的多道程序系统 单道程序存储管理每次只能运行一个进程,现已没有人用了。而大多数现代操作系统都可同时运行多个进程。 也就是说,当一个进程由于等待I/O操作被阻塞时,另一个进程可以去使用CPU,从而提高了CPU的利用率。 基本思路:把内存分为N个分区,每个分区大小可等可不等。 当一个新进程到来时,首先将其放置到输入队列中,然后进入到空闲分区。 对于分区分配的要求: 一、这个分区必须大于进程 二、这个分区必须尽可能小,保证浪费掉的内存资源尽可能的少 进程首先进入的输入队列有多个队列和单个队列两种。如图: 对于多个输入队列,可能出现一种情况:小分区的输入队列是满的,而大分区的输入队列却是空的,或者说有很多小进程等着进入内存,而内存中却存有可用的大量的空闲空间。 单个输入队列就是为避免这种不合理状态而提出的。 单个输入队列进入空闲分区有两种办法: 一、选择离队首最近的、能够装入该分区的进程。该方法有一个缺点,当进程比较小时,而队列所在分区较大时,会浪费大量的内存空间。 二、先搜索整个队列,从中选择能够装入该分区的最大进程,减少空间的浪费。 但第二种方法对小进程并不公平,实际上,对于小进程应该为其提供良好的服务。 有两种解决办法: 一、始终保留至少一个小分区,以保证有小进程时能够直接运行,而不需与其他进程竞争大块的空闲分区。 二、制定一条规则,规定一个进程被忽略的次数不得超过K次,每当跳过一个进程,该进程记1分,当达到K分后,就不可再跳过。 重定位与存储保护 多道程序管理系统中,输入队列中的程序会由系统分配到不同的分区,每一个分区都有不同的地址,当一个程序被链接时,链接器必须知道程序所在的地址。 重定位是地址的修改,将程序的逻辑地址空间修改成内存中的实际物理地址空间。 重定位是实现多道程序在内存中同时运行的基础 例如:假设一个程序的第一条指令是去调用一个起始地址为100的函数,这个地址是链接器在生成二进制文件时分配的。若程序被装入分区1(起始地址为100KB),那么该指令执行时会跳转到绝对地址是100的地方,而这个地址存放的是系统的代码和数据,并不是它要访问的函数。实际上,该指令的目标地址应该为100KB+100。 这就是重定位的意义所在 有两种方案解决重定位和存储保

文档评论(0)

秦圈圈 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档