操作系统(二)

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

计算机硬件

基本结构

在这里插入图片描述

内存层次

在这里插入图片描述

操作系统的内存管理

在这里插入图片描述
在操作系统中管理内存的不同方法
1.程序重定位
2.分段
3.分页
4.虚拟内存
5.按需分页虚拟内存

地址空间&地址生成

地址空间定义

物理地址空间:硬件支持的地址空间
起始地址0,直到MAX(sys)
逻辑地址空间:在CPU运行的进程看到的地址
起始地址0,直到MAX(prog)
在这里插入图片描述

地址生成

逻辑地址生成

在这里插入图片描述
编译时
假设起始地址已知
如果起始地址改变,必须重新编译
加载时
如编译时起始位置未知,编译器需生成课重定位的代码
加载时,生成绝对地址
执行时
执行时代码可移动
需地址转换(映射)硬件支持

地址生成过程

CPU
ALU:需要逻辑地址的内存内容
MMU:进行逻辑地址和物理地址的转换
CPU控制逻辑:给总线发送物理地址请求
内存
发送物理地址的内容给CPU
或接收CPU数据到物理地址
操作系统
建立逻辑地址LA和物理地址PA的映射
在这里插入图片描述

地址安全检查

在这里插入图片描述

连续内存分配

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

内存碎片

内存碎片:空闲内存不能被利用
在这里插入图片描述
1>外部碎片:分配单元之间的未被使用内存
在这里插入图片描述
2>内部碎片
分配单元内部的未被使用内存,取决于分配单元大小是否要取整
在这里插入图片描述

动态分区分配

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

最先匹配

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

最佳匹配

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

最差分配

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

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

碎片整理:紧凑

碎片整理
通过调整进程占用的分区未知来减少或避免分区碎片
碎片紧凑
1.通过移动分配给进程的内存分区,以合并外部碎片
2.碎片紧凑的条件:所有应用程序课动态重定位
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值