资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第4章 存储器管理(内存管理) 美国数学家冯诺依曼提出著名的“存储程序控制原理”,CPU不断地从存储器中取出指令和需要的数据,执行指令,并把数据保存到存储器中。 存储器是计算机系统的重要资源存储器是计算机系统的重要资源, 虽然存虽然存储器的容量迅速增加储器的容量迅速增加, 但软件的需求也同样但软件的需求也同样在急剧膨胀在急剧膨胀, 存储器仍然是紧俏资源;虽然存储器仍然是紧俏资源;虽然存储器的访问速度不断增加,仍然存在着与存储器的访问速度不断增加,仍然存在着与CPU速度不匹配的矛盾。速度不匹配的矛盾。 存储器管理是操作系统的最重要部分。存储器管理是操作系统的最重要部分。4.1 概述概述4.1.1 存储体系存储体系高速缓存高速缓存Cache: 数百数百K到数到数M字节、非常快速、昂贵、易丢失字节、非常快速、昂贵、易丢失内存内存RAM: 数百数百M到数到数G字节、中等速度、中等价格、易丢失字节、中等速度、中等价格、易丢失 磁盘:磁盘: 数数G到数百到数百G字节、低速、价廉、断电仍保存字节、低速、价廉、断电仍保存 Cache主存外存4.1.2内存的几个基本概念内存的几个基本概念 内存空间内存空间: 是由存储单元是由存储单元(字节或字字节或字)组成的连组成的连续的地址空间续的地址空间; 内存空间用来存放当前正在运行程序内存空间用来存放当前正在运行程序的代码及数据的代码及数据, 是程序计数器所指的存储器。是程序计数器所指的存储器。 对内存的要求对内存的要求: 能直接存取能直接存取, 访问速度尽量快访问速度尽量快, 应与应与CPU 取指速度相匹配;取指速度相匹配; 足够大足够大, 能装下保证当能装下保证当前正常运行的程序和数据前正常运行的程序和数据, 否则否则CPU执行速度就会受执行速度就会受到内存速度和容量的影响而得不到充分发挥。到内存速度和容量的影响而得不到充分发挥。 内存可以分为:内存可以分为: 系统区:用于存放操作系统系统区:用于存放操作系统 用户区:用于装入并存放用户程序和数据用户区:用于装入并存放用户程序和数据。 物理地址和逻辑地址:物理地址和逻辑地址: 物理地址指内存单元的地址,也叫绝对地址或实物理地址指内存单元的地址,也叫绝对地址或实地址;逻辑地址是在程序中使用的地址,从地址;逻辑地址是在程序中使用的地址,从0开开始编址始编址,逻辑地址也叫相对地址,虚地址。逻辑地址也叫相对地址,虚地址。 地址映射(地址变换):地址映射(地址变换): 逻辑地址不能直接访问内存单元,必须转换成逻辑地址不能直接访问内存单元,必须转换成物理地址,这一转换过程称为地址映射物理地址,这一转换过程称为地址映射。4.1.3 存储管理的内容存储管理的内容1. 内存空间的管理内存空间的管理(分配与回收分配与回收) 记录内存的使用情况(内存分配回收的依据)记录内存的使用情况(内存分配回收的依据) 确定分配算法确定分配算法, 实施内存分配实施内存分配 回收内存回收内存 分配方式分配方式: 静态与动态静态与动态2. 存储共享存储共享 内存共享:两个或多个进程共用内存中相同区域内存共享:两个或多个进程共用内存中相同区域 目的:节省内存空间目的:节省内存空间, 提高内存利用率;提高内存利用率; 实现进程通信实现进程通信(数据共享数据共享) 共享内容:共享内容: 代码代码 数据数据3. 存储保护与安全存储保护与安全 为为多多个个程程序序共共享享内内存存提提供供保保障障, 使使内内存存中中的的各各道道程程序序只只能能访访问问它它自自己己的的区区域域, 避避免免各各道道程程序序间间相相互互干干扰扰, 特特别别是是当当一一道道程程序序发发生生错错误误时时,不不致致于于影影响响其其他他程程序序的的运运行。通常由硬件完成保护功能行。通常由硬件完成保护功能, 由软件辅助实现。由软件辅助实现。4. 内存内存“扩充扩充” 通过虚拟存储技术实现通过虚拟存储技术实现 用户在编写程序时,不应该考虑内存的容量,所以用户在编写程序时,不应该考虑内存的容量,所以要采用一定技术来要采用一定技术来“扩充扩充”内存的容量,使用户能够内存的容量,使用户能够使用比实际内存容量大的多的内存空间。使用比实际内存容量大的多的内存空间。5. 程序的装入程序的装入 创建进程的第一件事创建进程的第一件事, 就是将程序和数据装入内存。就是将程序和数据装入内存。4.2 程序的装入和链接程序的装入和链接对用户程序的处理过程对用户程序的处理过程装装入入程程序序装入阶段装入阶段内存内存可可执执行行代代码码链链接接程程序序装入装入模块模块链接阶段链接阶段库库源源程程序序编译编译程序程序或或汇编汇编程序程序目标模块目标模块编译阶段编译阶段目标模块目标模块4.2.1 程序的链接程序的链接链接的具体工作:链接的具体工作:(1)对相对地址进行修改对相对地址进行修改 (2)变换外部调用符号变换外部调用符号程序的链接方式程序的链接方式1.静静态态链链接接方方式式: 装装入入前前进进行行链链接接, 将将所所有有模模块块的的相相对地址链接起来对地址链接起来,形成整个程序的连续的逻辑地址。形成整个程序的连续的逻辑地址。2.装装入入时时动动态态链链接接: 边边装装入入、边边链链接接, 各各模模块块独独立立分分开装入内存的不同位置开装入内存的不同位置, 便于修改便于修改, 便于共享。便于共享。3.运运行行时时动动态态链链接接: 边边运运行行、边边装装入入, 有有些些模模块块往往往往不不会会运运行行到到(如如错错误误处处理理), 不不必必装装入入, 效效率率高高节节省省内存。内存。模块ACALL B;Return;0L-1模块BCALL C;Return;0M-1模块CReturn;0N-1模块AJSR “L”;Return;0L-1模块BJSR “L+M”;Return;LL+M-1模块CReturn;L+ML+M+N-1绝对装入方式:绝对装入方式:编译产生的是绝对地址编译产生的是绝对地址, 按此绝对按此绝对地地址装入程序和数据。逻辑地址与物理地址完全相址装入程序和数据。逻辑地址与物理地址完全相同,不需要任何地址映射。同,不需要任何地址映射。可重定位装入方式:可重定位装入方式:根据内存当前的情况,把装入根据内存当前的情况,把装入模块装入到合适位置。地址变换在装入时完成,以模块装入到合适位置。地址变换在装入时完成,以后不再改变,叫做静态重定位。后不再改变,叫做静态重定位。动态运行时装入方式:动态运行时装入方式:程序运行过程中程序运行过程中, 在内存中在内存中的的位置可以改变位置可以改变, 因此边运行因此边运行, 边装入,叫做动态重定边装入,叫做动态重定位。地址变换在运行阶段完成位。地址变换在运行阶段完成。4.2.2 程序的装入程序的装入地址重定位地址重定位(地址映射地址映射)MOVE AX,200名空间名空间编译编译连接连接MOVE AX,2003456000100200逻辑地址空间逻辑地址空间.MOVE AX,12003456 1100物理地址空间物理地址空间12001000地址地址映射映射200VRBR4.2连续分配方式l单一连续分配用户程序用户程序RAM中的中的操作系统操作系统0xFFF0RAM中的中的操作系统操作系统用户程序用户程序0l固定分区分配 系统把内存用户区划分为若干分区系统把内存用户区划分为若干分区, 分区大小可分区大小可以相等以相等, 也可以不等。一个进程占据一个分区。也可以不等。一个进程占据一个分区。操作系统分区1分区2分区3分区43150K250K 空闲空闲无无250K100K 空闲空闲无无1050K占用占用 进程进程14400K250K 占用占用 进程进程2分区号分区号 起址起址分区长度分区长度状态状态进程进程l动态分区分配 内存不是预先划分好的,而是当作业装入时,根内存不是预先划分好的,而是当作业装入时,根据作业的需求和内存空间的使用情况来决定是否据作业的需求和内存空间的使用情况来决定是否分配。若有足够的空间,则按需要分割一部分分分配。若有足够的空间,则按需要分割一部分分区给该进程;否则令其等待。区给该进程;否则令其等待。动态分区的使用情况动态分区的使用情况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 60k 110k 60k PePe 170k 100k Pc 170k 100k Pc 空空 始址始址 长度长度 占用标志占用标志 100k 10k 100k 10k 空闲空闲 270k 730k 270k 730k 空闲空闲 空空 (a)已分配区表已分配区表 (b)未分配区表未分配区表 1.动态分区分配的数据结构动态分区分配的数据结构2. 空闲分区链空闲分区链 (P 108 图图 4-5) 将描述分区分配情况的信息附加在分区中。具体地将描述分区分配情况的信息附加在分区中。具体地说,是放在每个分区的首尾两个字中。描述信息包括:说,是放在每个分区的首尾两个字中。描述信息包括: (1) 状态信息状态信息: “0”表示该区空闲表示该区空闲, “1”表示已分表示已分配。配。 (2) 该区的大小该区的大小(以字或块为单位以字或块为单位)。 (3) 指针指针信息信息: 构成空闲区链。构成空闲区链。状态位状态位 分区大小(分区大小(N+2) 前向指针前向指针大小为大小为N的已分配区或空闲区的已分配区或空闲区状态位状态位 分区大小(分区大小(N+2) 后向指针后向指针3.分区分配算法分区分配算法首次适应算法首次适应算法FF: 空闲分区按地址排序,找到第一个满足请求的分区空闲分区按地址排序,找到第一个满足请求的分区, 将其分割并分配。将其分割并分配。特点:简单、快速特点:简单、快速循环首次适配算法循环首次适配算法RFF : 上次找到的空闲区的下一个找起,若最后一个分区上次找到的空闲区的下一个找起,若最后一个分区还不满足,返回到头部继续找还不满足,返回到头部继续找 。特点:空闲分区分布特点:空闲分区分布均匀,查找空闲分区更快。均匀,查找空闲分区更快。最佳适配算法最佳适配算法BF(Best-Fit): 空闲分区按大小排序,找到第一个满足请求的空闲空闲分区按大小排序,找到第一个满足请求的空闲分区。分区。特点特点: 用最小的空间满足要求。用最小的空间满足要求。4.动态分区的实现动态分区的实现 1)分配内存)分配内存从头开始查表检索完否?返回Yu.sizem.size?N继续检索下一表项Nm.size-u.size=size?Y将该分区分配给请求者,修改有关数结构返回从该分区中划出u.size大小的分区N将该分区从链中移出Y2)回收内存回收内存 P109,P110自学自学l可重定位分区分配 随着分区不断地分配和回收,内存中会出现许多随着分区不断地分配和回收,内存中会出现许多“碎片碎片”。为了利用这些碎片,可采用。为了利用这些碎片,可采用“紧凑紧凑”的技术把许多分散的小分区(即碎片)拼接成一的技术把许多分散的小分区(即碎片)拼接成一个可被利用的大分区。这意味着进程在内存中的个可被利用的大分区。这意味着进程在内存中的位置进行了移动(浮动),必须对程序和数据的位置进行了移动(浮动),必须对程序和数据的进行重定位(进行新的地址变换)。进行重定位(进行新的地址变换)。 物理地址物理地址 重定位寄存器中重定位寄存器中的地址的地址+相对地址相对地址l对换 当内存空间紧张时当内存空间紧张时, 系统将内存中某些进程暂时系统将内存中某些进程暂时移到外存移到外存, 把外存中某些进程换进内存把外存中某些进程换进内存,使用前者使用前者所占用的区域。对换技术是提高内存利用率的有所占用的区域。对换技术是提高内存利用率的有效措施,自效措施,自60年代初期出现以来,现在已被广泛年代初期出现以来,现在已被广泛应用于操作系统中。应用于操作系统中。对换的单位对换的单位进程对换进程对换页面对换页面对换(置换置换)对换空间的管理对换空间的管理1.外存的划分外存的划分: 文件区和对换区文件区和对换区2.对换区的管理对换区的管理: 目标提高进程换入换出的速度目标提高进程换入换出的速度 方式类似于动态分区的连续分配方式方式类似于动态分区的连续分配方式进程的换出与换入进程的换出与换入 选择处于阻塞态且优先权最低的进程换出。选择处于阻塞态且优先权最低的进程换出。 选择选择“就绪就绪”且换出时间最久的进程换入。且换出时间最久的进程换入。l连续分配方式的特点 逻辑地址连续逻辑地址连续,物理地址也连续物理地址也连续.l作业:P142 1,2,3,5,6,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号