[OS] 第四章 存储器管理

 用户程序的主要处理阶段
   连续分配方式
  虚拟存储器的基本特征
  分页、分段存储管理技术       
 存储管理的功能
 (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)分段对换:以 “段”为单位
 }
  进程对换实现功能:
      对换空间的管理
      进程的换出
      进程的换入
 对换空间的管理
  文件区        为提高空间利用率采用离散分配方式
  
  对换区        为提高对换速度采用连续分配方式
  -外存-

posted @ 2013-02-03 11:21  小尼人00  阅读(196)  评论(0编辑  收藏  举报