操作系统(二)

计算机体系结构&内存分层体系

  • 计算机体系结构/内存分层体系
    • 计算机硬件
      • 基本结构
      • 内存层次
      • 操作系统的内存管理
  • 地址空间&地址生成
    • 地址空间定义
    • 地址生成
      • 逻辑地址生成
      • 地址生成过程
    • 地址安全检查
  • 连续内存分配
    • 内存碎片
    • 动态分区分配
      • 最先匹配
      • 最佳匹配
      • 最差分配
    • 连续内存分配:压缩式与交换式碎片整理
      • 碎片整理:紧凑

计算机体系结构/内存分层体系

计算机硬件

基本结构

操作系统(二)_第1张图片

内存层次

操作系统(二)_第2张图片

操作系统的内存管理

操作系统(二)_第3张图片
在操作系统中管理内存的不同方法
1.程序重定位
2.分段
3.分页
4.虚拟内存
5.按需分页虚拟内存

地址空间&地址生成

地址空间定义

物理地址空间:硬件支持的地址空间
起始地址0,直到MAX(sys)
逻辑地址空间:在CPU运行的进程看到的地址
起始地址0,直到MAX(prog)
操作系统(二)_第4张图片

地址生成

逻辑地址生成

操作系统(二)_第5张图片
编译时
假设起始地址已知
如果起始地址改变,必须重新编译
加载时
如编译时起始位置未知,编译器需生成课重定位的代码
加载时,生成绝对地址
执行时
执行时代码可移动
需地址转换(映射)硬件支持

地址生成过程

CPU
ALU:需要逻辑地址的内存内容
MMU:进行逻辑地址和物理地址的转换
CPU控制逻辑:给总线发送物理地址请求
内存
发送物理地址的内容给CPU
或接收CPU数据到物理地址
操作系统
建立逻辑地址LA和物理地址PA的映射
操作系统(二)_第6张图片

地址安全检查

操作系统(二)_第7张图片

连续内存分配

定义:给进程分配一块不小于指定大小的连续的物理内存区域

内存碎片

内存碎片:空闲内存不能被利用
操作系统(二)_第8张图片
1>外部碎片:分配单元之间的未被使用内存
操作系统(二)_第9张图片
2>内部碎片
分配单元内部的未被使用内存,取决于分配单元大小是否要取整
操作系统(二)_第10张图片

动态分区分配

1.定义:当程序被加载执行时,分配一个进程指定大小课边的分区(块,内存快),分区的地址是连续的
2.操作系统需要维护的数据结构
1>所有进程的已分配分区
2>空闲分区
3.动态分区分配策略
最先匹配
最佳匹配
最差匹配

最先匹配

思路:分配n个字节,使用第一个可用的空间比n大的空闲块
示例:分配400字节,使用第一个1kb的空闲块
操作系统(二)_第11张图片
原理&实现:
1.空闲分区列表按地址顺序排序
2.分配过程时,搜索一个适合的分区
3.释放分区时,检查是否可与临近的空闲分区合并
优点:
1.简单
2.在高低值空间有大块的空闲分布
3.易于产生更大的空闲块,向着地址空间的结尾
缺点:
1.外部碎片
2.分配大块时较慢
3.不确定性

最佳匹配

思路
分配n字节分区时,查找并使用不小于n的最小空闲分区
示例
分配400字节,使用第3个空闲块(最小)
操作系统(二)_第12张图片
原理&实现
1.空间分区列表按照大小排序
2.分配时,查找一个合适的分区
3.释放时,查找并且合并临近的空闲分区(如果找到)
优点
1.大部分分配的尺寸较小时,效果很好
2.可避免大的空闲分区被拆分
3.可减小外部碎片的大小
4.相对简单
缺点
1.外部碎片
2.释放分区较慢
3.容易产生很多无用的小碎片

最差分配

思路
分配n字节,使用尺寸不小于n的最大空闲分区
示例
分配400字节,使用第2个空闲块(最大)
操作系统(二)_第13张图片
原理&实现
1.空闲分区列表按从小到大排序
2.分配时,选最大分区
3.释放时,检查是否可与临近的空闲分区合并,进行可能的合并,并调整空闲分区列表顺序
优点
1.中等大小的分配较多时,效果最好
2.避免出现太多小的碎片
缺点
1.释放分区较慢
2.外部碎片
3.容易破坏大的空闲分区,因此后续难以分配大的分区

连续内存分配:压缩式与交换式碎片整理

碎片整理:紧凑

碎片整理
通过调整进程占用的分区未知来减少或避免分区碎片
碎片紧凑
1.通过移动分配给进程的内存分区,以合并外部碎片
2.碎片紧凑的条件:所有应用程序课动态重定位
操作系统(二)_第14张图片
操作系统(二)_第15张图片

你可能感兴趣的:(操作系统(二))