[OS] 第四章 存储器管理

来源:互联网 发布:js获取div下的a标签 编辑:程序博客网 时间:2024/05/16 07:39
 用户程序的主要处理阶段   连续分配方式  虚拟存储器的基本特征  分页、分段存储管理技术        存储管理的功能 (1) 内存分配——为每个进程分配一定的内存空间 (2) 地址映射——把程序中所用的相对地址转换成内存的物理地址 (3) 内存保护 (4) 内存扩充 程序的装入和链接从用户的源程序进入系统到相应程序在机器上运行,所经历的主要处理阶段有             , 编译阶段 ,连接阶段,装入阶段和 运行阶段。  1), 编译程序:将用户源代码编译成若干个目标模块; 2), 链接程序:将一组目标模块及它们所需要的库函数链接在一起,形成一个完整的装入模块 3), 装入程序:将装入模块装入内存。   内存空间(或物理空间、绝对空间)由内存一系列存储单元所限定的地址范围   逻辑地址空间(或地址空间)由程序中逻辑地址组成的地址范围 -相对地址(或逻辑地址)    用户程序经编译之后的每个目标模块都以0为基地址顺序编址,这种地址称为相对地址 -绝对地址(或物理地址)**程序的装入1.绝对装入方式 { 逻辑地址与实际地址相同 要求程序员熟悉内存的使用情况 通常在程序中采用符号地址}2.可重定位装入方式 { 目标模块从0编址,其它地址相对于起始地址计算 重定位:装入时对目标程序中指令和数据的修改过程。地址映射}  3.动态运行时装入方式 {   在程序执行时将相对地址转换成为绝对地址   允许程序在内存中移动  } 程序的链接 (1)静态链接。 (2)装入时动态链接。 (3)运行时动态链接。 1) 静态链接 :执行前将目标模块和它们的库函数,连接成一个完整的装配模块。  两个问题:      对相对地址修改      变换外部调用标号2) 运行时动态链接-连续分配方式 有 4 种为一个用户程序分配一个连续的内存空间。分为: 1)单一连续分配 {  内存分系统区和用户区,系统区供os使用  在内存中仅驻留一道程序,整个用户区为一用户独占。  这种分配方式仅能用于单用户、单任务os中.  如:MS-DOS    CP/M } 2)固定分区分配 {  最简单的多道程序的存储管理方式  将内存分为几个固定大小的区域,每个区域装入一道作业。 } 3)动态分区分配 {  数据结构  分区分配算法  分配与回收操作 } 4)动态重定位分区分配   系统区           分区1                  分区 1                  分区2                   分区3                  分区 2                  分区4                  分区5 用户区           分区6                  分区 3                   ……单一连续分配  固定分区分配(分区相等)固定分区分配(分区不等)分区分配操作  1)分配内存 {   设请求的分区大小:u.size   设空闲分区大小: m.size   不可再切割的剩余分区大小:size   如果m.size- u.size≤ size将整个分区分配给请求者,否则剩余部分留在空闲分区链(表)中。   将分区的首址返回给调用者  }  2)回收内存 {   当进程释放内存时,系统根据回收区的首值,从空闲区链(表)中找到相应的插入点,回收区可能出现四种情况:  (1)与插入点的前一个空闲区F1相邻接。  (2)与插入点的后一空闲分区F2相邻接。  (3)同时与插入点的前、后两个分区邻接。  (4)既不与F1邻接,又不与F2邻接。  }**动态重定位的引入 ****  操作系统     碎片:内存中不能被利用的小分区称为“零头”或“碎片”。-------- 用户程序1   10KB 用户程序3   30KB 用户程序6   14KB 用户程序9   26KB  操作系统   分散的小分区拼接成一个大分区的方法,称为“拼接”或“紧凑”--------- 用户程序1 用户程序3 用户程序6 用户程序9   80KB动态重定位的实现 地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的,故称为动态重定位。 增设硬件机构:重定位寄存器动态重定位分区分配算法 增加了紧凑功能 设请求的分区大小:u.size 设空闲分区大小: m.size 不可再切割的剩余分区大小:size*对   换*  差不多中级调度 把内存中暂时不能运行的进程或者暂时不用的程序和数据调到外存,把已具备条件的进程或进程所需数据调入内存。 -对换分类- {  整体对换:以整个进程为单位,          又称进程对换。  部分对换:  (1)页面对换:以“页” 为单位  (2)分段对换:以 “段”为单位 }  进程对换实现功能:      对换空间的管理      进程的换出      进程的换入 对换空间的管理  文件区        为提高空间利用率采用离散分配方式    对换区        为提高对换速度采用连续分配方式  -外存-