【清华大学】深入理解操作系统(陈渝) 第三章

计算机体系结构

CPU
内存
I/O

内存分层体系

运行内存(主存) / 磁盘(虚拟内存). 主存是在运行程序时所需要保存的数据空间,而磁盘是用于持久化数据保存的数据空间.
CPU可以访问的内存包括两大类 : 寄存器 / cache(L1缓存 / L2缓存)

层次

微处理器(CPU访问)

|___CPU寄存器 / L1缓存
|___L2缓存
主存(程序访问)
磁盘(程序访问)
从CPU寄存器到磁盘,读写速度不断降低,单位成本不断降低,大小不断增大。

内存管理目标

抽象:逻辑地址空间
保护:独立地址空间
共享:访问相同内存
虚拟:更多的地址空间

内存管理方法

程序重定位
分段
分页
虚拟内存
按需分页虚拟内存
实现高度依赖于硬件, 其中内存管理单元(MMU)负责处理CPU的内存访问请求

地址空间

地址空间的定义
物理地址空间 —— 硬件支持的地址空间( address : [0, Max_sys] )
逻辑地址空间 —— 一个运行在程序所拥有的的内存范围( address : [0, Max_prog] )

连续内存分配

内存碎片问题
内存碎片问题指的是空闲的内存无法被利用

  • 外部碎片 : 分配单元间的未使用内存
  • 内部碎片 : 分配单元内的未使用内存

分区的动态分配方式有以下三种 :

  1. 第一匹配分配 : 在内存中找到第一个比需求大的空闲块, 分配给应用程序
  2. 最优适配分配 : 在内存中找到最小的空闲块, 分配给应用程序
  3. 最差适配分配 : 在内存中找到最大的空闲块, 分配给应用程序

碎片整理方法

可以看到的是,三种分区动态分配的方式都会产生外部碎片,因此我们可以对碎片进行一定的整理来解决碎片问题。

1.压缩式碎片整理

  • 重置程序以合并碎片
  • 要求所有程序是动态可重置的
    问题 :
    何时重置 (在程序处于等待状态时才可以重置)
    需要考虑内存拷贝的开销

2.交换式碎片整理

  • 运行程序需要更多的内存时,抢占等待的程序并且回收它们的内存
  • 问题 :
    哪些程序应该被回收 ?
    情况 :
    运行中 : P3
    等待中 : P1 P2 P4
    内存分布 -> 主存 : OS / P1 / P3 / P2 / P4 磁盘 : 空
    当P3程序需要更大的内存时 ->
    内存分布 -> 主存 : OS / P1 / P3 / P2 磁盘 : P4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值