操作系统-内存管理1

3.1 内存管理概念

3.1.1 基本原理与要求

主要功能:

分配与回收,地址转换(逻辑地址物理地址),扩充(虚拟技术),共享,存储保护(互不干扰)

创建进程

步骤:编译,链接与载入

链接:

静态链接,载入时链接,运行时链接

载入:

绝对载入(单道程序,绝对地址),

可重定位载入(载入前程序中为相对地址,载入时一次性重写为绝对地址),

动态运行时载入(在重定位寄存器中保存基地址,真正执行时转换为绝对地址)

地址

逻辑地址:相对地址,虚拟地址

物理地址:实际地址,通过MMU转换(页表中的结构,这操作叫地址重定位)

内存映像

代码段,数据段,PCB,

堆(存动态分配的变量,向高地址增长),栈(实现函数调用,向低地址增长)

内存保护

互不干扰

  1. 上下限寄存器
  2. 重定位寄存器(基地址)和界地址寄存器:先和界地址比较,,再映射物理地址;(要进内核空间)

3.1.2 覆盖与交换

覆盖(已成为历史):部分常驻于内存,部分则可替换;当需要调用时替换掉原有的段

交换:将等待队列中的程序暂时移出内存(中级调度)

3.1.3 连续分配管理

固定分区

问题:

  1. 程序可能过大
  2. 程序过小导致内部碎片

动态分区

可能导致外部碎片——紧凑技术可处理

分配策略:

首次适应:从头开始顺序查找,第一个大小合适的空闲分区(效果最好)

邻近适应:从上次查找结束的位置开始,第一个大小合适的空闲分区

最佳适应:大小最合适的空闲分区(外部碎片多)

最差适应:从最大的分区中分一部分(无大分区)

3.1.4 基本分页存储管理

页:大小相等且固定

页,帧和块

页表项和地址结构第一部分都是页号,页表项的第二部分是块号(物理内存),地址中的第二部分是页内偏移。

用逻辑地址计算物理地址:略(一套流程,感觉他没说明白)

注意有的以字节为编址单位

?P168和P169没细看

快表TLB:有的可以同时查快表和页表

二级页表的优劣点

3.1.5 基本分段存储管理

按照自然段划分逻辑空间

段表:段号+段长

也有从逻辑地址到物理地址的一套操作,略

3.1.6 段页式管理

分页提高内存利用率,分段反映逻辑结构而且有利于段的共享和保护

先分段,段中再分页

逻辑地址:段号,页号和页内偏移量

一个进程中只有一个段表,可能有多个页表