操作系统-内存管理1
3.1 内存管理概念
3.1.1 基本原理与要求
主要功能:
分配与回收,地址转换(逻辑地址物理地址),扩充(虚拟技术),共享,存储保护(互不干扰)
创建进程
步骤:编译,链接与载入
链接:
静态链接,载入时链接,运行时链接
载入:
绝对载入(单道程序,绝对地址),
可重定位载入(载入前程序中为相对地址,载入时一次性重写为绝对地址),
动态运行时载入(在重定位寄存器中保存基地址,真正执行时转换为绝对地址)
地址
逻辑地址:相对地址,虚拟地址
物理地址:实际地址,通过MMU转换(页表中的结构,这操作叫地址重定位)
内存映像
代码段,数据段,PCB,
堆(存动态分配的变量,向高地址增长),栈(实现函数调用,向低地址增长)
内存保护
互不干扰
- 上下限寄存器
- 重定位寄存器(基地址)和界地址寄存器:先和界地址比较,,再映射物理地址;(要进内核空间)
3.1.2 覆盖与交换
覆盖(已成为历史):部分常驻于内存,部分则可替换;当需要调用时替换掉原有的段
交换:将等待队列中的程序暂时移出内存(中级调度)
3.1.3 连续分配管理
固定分区
问题:
- 程序可能过大
- 程序过小导致内部碎片
动态分区
可能导致外部碎片——紧凑技术可处理
分配策略:
首次适应:从头开始顺序查找,第一个大小合适的空闲分区(效果最好)
邻近适应:从上次查找结束的位置开始,第一个大小合适的空闲分区
最佳适应:大小最合适的空闲分区(外部碎片多)
最差适应:从最大的分区中分一部分(无大分区)
3.1.4 基本分页存储管理
页:大小相等且固定
页,帧和块
页表项和地址结构第一部分都是页号,页表项的第二部分是块号(物理内存),地址中的第二部分是页内偏移。
用逻辑地址计算物理地址:略(一套流程,感觉他没说明白)
注意有的以字节为编址单位
?P168和P169没细看
快表TLB:有的可以同时查快表和页表
二级页表的优劣点
3.1.5 基本分段存储管理
按照自然段划分逻辑空间
段表:段号+段长
也有从逻辑地址到物理地址的一套操作,略
3.1.6 段页式管理
分页提高内存利用率,分段反映逻辑结构而且有利于段的共享和保护
先分段,段中再分页
逻辑地址:段号,页号和页内偏移量
一个进程中只有一个段表,可能有多个页表