【操作系统】第三章:连续内存分布
3.1 计算机体系结构及内存分层体系
操作系统结构
CPU:完成基本的对程序或软件的控制
内存:放置程序代码和他处理的数据
外设
操作系统功能
操作系统管理内存的方法
- 程序重定位
- 分段
- 分页
- 虚拟内存
- 按需分页虚拟内存
3.2 地址空间和地址生成
地址空间定义
- 物理地址空间 — 硬件支持的地址空间(主存和磁盘)
- 逻辑地址空间— 一个运行程序所拥有的内存范围(一维的线性空间)
地址生成
- 逻辑地址的生成
物理地址的生成
CPU方面
- 计算器需要在逻辑地址的内存内容
- 内存管理单元寻找在逻辑地址和物理地址之间的映射
- 控制器从总线发送在物理地址的内存内容的请求
内存方面
- 内存发送物理地址内存的内容给CPU
操作系统方面
- 建立逻辑地址和物理地址之间的映射
地址安全检查
3.3 连续内存分配
内存碎片问题
当我们给正在运行的程序分配空间之后,会出现一些空闲的空间(碎片)不能被利用
外部碎片
在分配单元间未使用的内存(程序空间之间的碎片)
内部碎片
在分配单元中的未使用内存(在分配给程序的空间内部出现的碎片)
分区的动态分配
- 简单的内存管理方法:
- 当一个程序准许运行在内存中时,分配一个连续的区间
- 分配一个连续的内存区间给运行的程序以访问数据
第一适配
- 找到第一个满足需求的空闲块立马返回
- 优点:
- 简单
- 易于产生更大的空闲块,向着地址空间的结尾
- 缺点
- 容易产生外部碎片
- 不确定性
最佳适配
- 寻找空间中最满足需求的空闲块
- 优点:
- 大部分分配是小尺寸时非常有效
- 比较简单
- 缺点:
- 分配时需要先将空闲块按大小排序进行查找,降低效率
- 易产生很多没怎么用的微小碎片
最差适配
- 寻找空间中大小最不匹配的空闲块
- 优点:
- 分配是中等尺寸时效果最好
- 缺点:
- 效率降低
- 容易破碎大的空闲块导致大分区无法被分配
压缩式碎片整理
- 重置程序以合并孔洞,要求所有程序是 动态可重置的
- 何时重置?
- 开销如何?
交换式碎片整理
- 运行程序需要更多的内存,抢占等待的程序并回收他们的内存
- 选择哪些程序进行交换?
- 何时进行?
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.