存储器管理
学习操作系统,渐渐地发现自己框架有些连不上了,从存储器管理开始,抽课间连贯了一下,做个记录。文章为复习后凭记忆编写,如有错误,请大家斧正。
一、存储器分类
内存分为内核区与用户区。内核区用来存放一些数据和运行操作系统。用户区又可以分为很多。
根据划分方法不同:
- 静态划分可以分为固定分区的系统如多道程序系统,分页存储管理等。
- 动态划分可以分为可变分区和分段式存储管理
二、逻辑地址与物理地址
物理地址又称绝对地址或实地址,逻辑地址又称相对地址、虚地址,二者通过重定位可以互相映射。
重定位的两种方法:
- 静态重定位
程序装载时确定,内存副本前后不一样,虽然这里我不太理解。
- 动态重定位
通过一些硬件实现。有可浮动性。分页存储管理采取这种方法。
三、存储管理功能
- 内存分配和回收
- 地址转换
- 内存共享保护
- 内存扩充技术
- 覆盖技术
- swap交换技术,如 linux 的 swap 分区过渡存储
- 虚拟内存技术
四、存储管理分类
1. 分区管理
一种连续分配策略的存储管理。
- 单一分区分配
- 固定分区分配
系统维护一个主存分配表记录空闲区和分配区,并通过界限寄存器对法来进行存储保护。缺点是产生内碎片。
- 可变分区
系统维护两个表(alloc ,free),在编译分配空间前通过 len (本作业存储空间最大长度)来进行溢出检测。缺点是产生很小的外碎片。其次为增大对free空闲区的分配效率,对其访问顺序有三种方法,最先、最佳、最坏。
- 伙伴系统
以 2 的幂次方的空间分配,通过递归分配、合并,缺点是效率、内存利用率低。
2. 分页管理
简介: 分页管理以物理块为分配单位,每个物理块 512B~4KB,有效地减小了内碎片,因为每块等大小故也消除了外碎片。其次他是离散存储,各页所占的物理块可以不连续。分页系统访存需要两次,一次访问页表得到物理地址,后根据物理地址访存。
- 实分页
程序运行时需要把页面全部装入内存。
物理地址字结构:物理块号 + 块内地址
逻辑地址字结构:页面首地址 + 页内地址
因为页面大小 == 块大小,故后者位数相同,而在实分页下,两者所占位数都相同
随着内存的不断增大,实分页技术的前景无限可期。
- 快表
16 个表目的快表命中率 > 95%
- 虚分页
...... 随更中