第4章存储器管理1_第1页
第4章存储器管理1_第2页
第4章存储器管理1_第3页
第4章存储器管理1_第4页
第4章存储器管理1_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 存储器管理(内存管理) 美国数学家冯诺依曼提出著名的“存储程序控制原理”,cpu不断地从存储器中取出指令和需要的数据,执行指令,并把数据保存到存储器中。 存储器是计算机系统的重要资源存储器是计算机系统的重要资源, 虽然存虽然存储器的容量迅速增加储器的容量迅速增加, 但软件的需求也同样但软件的需求也同样在急剧膨胀在急剧膨胀, 存储器仍然是紧俏资源;虽然存储器仍然是紧俏资源;虽然存储器的访问速度不断增加,仍然存在着与存储器的访问速度不断增加,仍然存在着与cpu速度不匹配的矛盾。速度不匹配的矛盾。 存储器管理是操作系统的最重要部分。存储器管理是操作系统的最重要部分。4.1 概述概述4.1.1

2、 存储体系存储体系高速缓存高速缓存cache: 数百数百k到数到数m字节、非常快速、昂贵、易丢失字节、非常快速、昂贵、易丢失内存内存ram: 数百数百m到数到数g字节、中等速度、中等价格、易丢失字节、中等速度、中等价格、易丢失 磁盘:磁盘: 数数g到数百到数百g字节、低速、价廉、断电仍保存字节、低速、价廉、断电仍保存 cache主存外存4.1.2内存的几个基本概念内存的几个基本概念 内存空间内存空间: 是由存储单元是由存储单元(字节或字字节或字)组成的连续组成的连续的地址空间的地址空间; 内存空间用来存放当前正在运行程序的内存空间用来存放当前正在运行程序的代码及数据代码及数据, 是程序计数器所

3、指的存储器。是程序计数器所指的存储器。 对内存的要求对内存的要求: 能直接存取能直接存取, 访问速度尽量快访问速度尽量快, 应应与与cpu 取指速度相匹配;取指速度相匹配; 足够大足够大, 能装下保证当前能装下保证当前正常运行的程序和数据正常运行的程序和数据, 否则否则cpu执行速度就会受到执行速度就会受到内存速度和容量的影响而得不到充分发挥。内存速度和容量的影响而得不到充分发挥。 内存可以分为:内存可以分为: 系统区:用于存放操作系统系统区:用于存放操作系统 用户区:用于装入并存放用户程序和数据用户区:用于装入并存放用户程序和数据。 物理地址和逻辑地址:物理地址和逻辑地址: 物理地址指内存单

4、元的地址,也叫绝对地址或实物理地址指内存单元的地址,也叫绝对地址或实地址;逻辑地址是在程序中使用的地址,从地址;逻辑地址是在程序中使用的地址,从0开开始编址始编址,逻辑地址也叫相对地址,虚地址。逻辑地址也叫相对地址,虚地址。 地址映射(地址变换):地址映射(地址变换): 逻辑地址不能直接访问内存单元,必须转换成逻辑地址不能直接访问内存单元,必须转换成物理地址,这一转换过程称为地址映射物理地址,这一转换过程称为地址映射。4.1.3 存储管理的内容存储管理的内容1. 内存空间的管理内存空间的管理(分配与回收分配与回收) 记录内存的使用情况(内存分配回收的依据)记录内存的使用情况(内存分配回收的依据

5、) 确定分配算法确定分配算法, 实施内存分配实施内存分配 回收内存回收内存 分配方式分配方式: 静态与动态静态与动态2. 存储共享存储共享 内存共享:两个或多个进程共用内存中相同区域内存共享:两个或多个进程共用内存中相同区域 目的:节省内存空间目的:节省内存空间, 提高内存利用率;提高内存利用率; 实现进程通信实现进程通信(数据共享数据共享) 共享内容:共享内容: 代码代码 数据数据3. 存储保护与安全存储保护与安全 为多个程序共享内存提供保障为多个程序共享内存提供保障, 使内存中的各道程序使内存中的各道程序只能访问它自己的区域只能访问它自己的区域, 避免各道程序间相互干扰避免各道程序间相互干

6、扰, 特别特别是当一道程序发生错误时是当一道程序发生错误时,不致于影响其他程序的运行。不致于影响其他程序的运行。通常由硬件完成保护功能通常由硬件完成保护功能, 由软件辅助实现。由软件辅助实现。4. 内存内存“扩充扩充” 通过虚拟存储技术实现通过虚拟存储技术实现 用户在编写程序时,不应该考虑内存的容量,所以用户在编写程序时,不应该考虑内存的容量,所以要采用一定技术来要采用一定技术来“扩充扩充”内存的容量,使用户能够内存的容量,使用户能够使用比实际内存容量大的多的内存空间。使用比实际内存容量大的多的内存空间。5. 程序的装入程序的装入 创建进程的第一件事创建进程的第一件事, 就是将程序和数据装入内

7、存。就是将程序和数据装入内存。4.2 程序的装入和链接程序的装入和链接对用户程序的处理过程对用户程序的处理过程装装入入程程序序装入阶段装入阶段内存内存可可执执行行代代码码链链接接程程序序装入装入模块模块链接阶段链接阶段库库源源程程序序编译编译程序程序或或汇编汇编程序程序目标模块目标模块编译阶段编译阶段目标模块目标模块4.2.1 程序的链接程序的链接链接的具体工作:链接的具体工作:(1)对相对地址进行修改对相对地址进行修改 (2)变换外部调用符号变换外部调用符号程序的链接方式程序的链接方式1. 静态链接方式静态链接方式: 装入前进行链接装入前进行链接, 将所有模块的相对将所有模块的相对地址链接起

8、来地址链接起来,形成整个程序的连续的逻辑地址。形成整个程序的连续的逻辑地址。2. 装入时动态链接装入时动态链接: 边装入、边链接边装入、边链接, 各模块独立分开各模块独立分开装入内存的不同位置装入内存的不同位置, 便于修改便于修改, 便于共享。便于共享。3. 运行时动态链接运行时动态链接: 边运行、边装入边运行、边装入, 有些模块往往不有些模块往往不会运行到会运行到(如错误处理如错误处理), 不必装入不必装入, 效率高节省内存。效率高节省内存。模块acall b;return;0l-1模块bcall c;return;0m-1模块creturn;0n-1模块ajsr “l”;return;0l

9、-1模块bjsr “l+m”;return;ll+m-1模块creturn;l+ml+m+n-1绝对装入方式:绝对装入方式:编译产生的是绝对地址编译产生的是绝对地址, 按此绝对地按此绝对地址装入程序和数据。逻辑地址与物理地址完全相址装入程序和数据。逻辑地址与物理地址完全相同,不需要任何地址映射。同,不需要任何地址映射。可重定位装入方式:可重定位装入方式:根据内存当前的情况,把装入根据内存当前的情况,把装入模块装入到合适位置。地址变换在装入时完成,以模块装入到合适位置。地址变换在装入时完成,以后不再改变,叫做静态重定位。后不再改变,叫做静态重定位。动态运行时装入方式:动态运行时装入方式:程序运行

10、过程中程序运行过程中, 在内存中的在内存中的位置可以改变位置可以改变, 因此边运行因此边运行, 边装入,叫做动态重定边装入,叫做动态重定位。地址变换在运行阶段完成位。地址变换在运行阶段完成。4.2.2 程序的装入程序的装入地址重定位地址重定位(地址映射地址映射)move ax,200名空间名空间编译编译连接连接move ax,2003456000100200逻辑地址空间逻辑地址空间.move ax,12003456 1100物理地址空间物理地址空间12001000地址地址映射映射200vrbr4.2连续分配方式l单一连续分配用户程序用户程序ram中的中的操作系统操作系统0 xfff0ram中的

11、中的操作系统操作系统用户程序用户程序0l固定分区分配 系统把内存用户区划分为若干分区系统把内存用户区划分为若干分区, 分区大小可以分区大小可以相等相等, 也可以不等。一个进程占据一个分区。也可以不等。一个进程占据一个分区。操作系统分区1分区2分区3分区43150k250k 空闲空闲无无250k100k 空闲空闲无无1050k占用占用 进程进程14400k250k 占用占用 进程进程2分区号分区号 起址起址分区长度分区长度状态状态进程进程l动态分区分配 内存不是预先划分好的,而是当作业装入时,根内存不是预先划分好的,而是当作业装入时,根据作业的需求和内存空间的使用情况来决定是否据作业的需求和内存

12、空间的使用情况来决定是否分配。若有足够的空间,则按需要分割一部分分分配。若有足够的空间,则按需要分割一部分分区给该进程;否则令其等待。区给该进程;否则令其等待。动态分区的使用情况动态分区的使用情况pa(120k)操作系统操作系统(b)pb(30k)pc(100k)操作系统操作系统(c)pb(30k)pc(100k)pd(80k)操作系统操作系统(d)pc(100k)70kpa(120k)操作系统操作系统(a)1m140k0270k170k20k(e)pd(80k)操作系统pc(100k)pe(78k) 始址始址 长度长度 占用标志占用标志 20k 80k pd20k 80k pd 110k 6

13、0k pe 110k 60k pe 170k 100k pc 170k 100k pc 空空 始址始址 长度长度 占用标志占用标志 100k 10k 100k 10k 空闲空闲 270k 730k 270k 730k 空闲空闲 空空 (a)已分配区表已分配区表 (b)未分配区表未分配区表 1.动态分区分配的数据结构动态分区分配的数据结构2. 空闲分区链空闲分区链 (p 108 图图 4-5) 将描述分区分配情况的信息附加在分区中。具体地将描述分区分配情况的信息附加在分区中。具体地说,是放在每个分区的首尾两个字中。描述信息包括:说,是放在每个分区的首尾两个字中。描述信息包括: (1) 状态信息状

14、态信息: “0”表示该区空闲表示该区空闲, “1”表示已分配。表示已分配。 (2) 该区的大小该区的大小(以字或块为单位以字或块为单位)。 (3) 指针信息指针信息: 构成空闲区链。构成空闲区链。状态位状态位 分区大小(分区大小(n+2) 前向指针前向指针大小为大小为n的已分配区或空闲区的已分配区或空闲区状态位状态位 分区大小(分区大小(n+2) 后向指针后向指针3.分区分配算法分区分配算法首次适应算法首次适应算法ff: 空闲分区按地址排序,找到第一个满足请求的分区空闲分区按地址排序,找到第一个满足请求的分区, 将其分割并分配。将其分割并分配。特点:简单、快速特点:简单、快速循环首次适配算法循

15、环首次适配算法rff : 上次找到的空闲区的下一个找起,若最后一个分区上次找到的空闲区的下一个找起,若最后一个分区还不满足,返回到头部继续找还不满足,返回到头部继续找 。特点:空闲分区分特点:空闲分区分布均匀,查找空闲分区更快。布均匀,查找空闲分区更快。最佳适配算法最佳适配算法bf(best-fit): 空闲分区按大小排序,找到第一个满足请求的空空闲分区按大小排序,找到第一个满足请求的空闲分区。闲分区。特点特点: 用最小的空间满足要求。用最小的空间满足要求。4.动态分区的实现动态分区的实现 1)分配内存)分配内存从头开始查表检索完否?返回yu.sizem.size?n继续检索下一表项nm.si

16、ze-u.size=size?y将该分区分配给请求者,修改有关数结构返回从该分区中划出u.size大小的分区n将该分区从链中移出y2)回收内存回收内存 p109,p110自学自学l可重定位分区分配 随着分区不断地分配和回收,内存中会出现许多随着分区不断地分配和回收,内存中会出现许多“碎片碎片”。为了利用这些碎片,可采用。为了利用这些碎片,可采用“紧凑紧凑”的技术把许多分散的小分区(即碎片)拼接成一的技术把许多分散的小分区(即碎片)拼接成一个可被利用的大分区。这意味着进程在内存中的个可被利用的大分区。这意味着进程在内存中的位置进行了移动(浮动),必须对程序和数据的位置进行了移动(浮动),必须对程序和数据的进行重定位(进行新的地址变换)。进行重定位(进行新的地址变换)。 物理地址物理地址 重定位寄存器中重定位寄存器中的地址的地址+相对地址相对地址l对换 当内存空间紧张时当内存空间紧张时, 系统将内存中某些进程暂时系统将内存中某些进程暂时移到外存移到外存, 把外存中某些进程换进内存把外存中某些进程换进内存,使用前者使用前者所占用的区域。对换技术是提高内存利用率的有所占用的区域。对换技术是提高内存利用率的有效措施,自效措施,自60年代初期出现以来,现在已被广泛年代初期出现以来,现在已被广泛应用于操作系统中。应用于操作系统中。对换的单位对换的单位进程对换进程对换页面对换页面对换(置换置换

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论