操作系统课程笔记

隐藏

地址空间与地址生成

逻辑地址 -> 物理地址 是通过MMU查表得到,操作系统所起的作用是建立MMU这张映射表。

内存碎片

有程序与程序之间的外碎片和程序内部无法利用的内碎片, 操作系统关注如何减少外碎片和内碎片。

分配空间策略:

  • 首次适配
  • 最佳适配
  • 最差适配

程序需要的空间是无法预知的,所以这几种分配内存的策略都不是银弹。 目标是尽可能多的有大的地址空间,

除了分配策略,还考虑其他解决地址空间的方式。

方法一是碎片整理,需要考虑:整理的时机?拷贝的开销?

方法二 swapping ,内存与硬盘swap,需要考虑:换哪个程序?什么时候换入换出?开销? 虚拟内存管理考虑这个问题。

非连续内存

为什么采用非连续内存分配?

答:连续内存空间分配容易产生内碎片、外碎片,

非连续内存分配优点:

  1. 更好的内存利用和管理
  2. 允许共享代码和数据(共享库等)
  3. 支持动态加载和动态链接

问题: 管理开销比较大

如何建立虚拟地址和物理地址之间的转换呢?有软件方案和硬件方案,为了加速,采用硬件方案,硬件方案有两种:

  • 分段(例如程序各个段(数据段,代码段…)的特点(有些只读,有些可读写)来管理与共享)
  • 分页(现代操作系统分段管理方式比较少,更多的是分页的管理方式)与分段不同点在于页的尺寸是固定的,而各个段的尺寸可以不一样

分页

逻辑地址和物理地址的分页大小要一致,例如如果逻辑地址是4k每页,物理地址也要4k每页。

frame物理页,page逻辑页

逻辑页和物理页的映射关系:

  • 页表
  • MMU/TLB

为了加速,通过TLB缓存最近使用的映射到CPU的缓存。

分页需要类似一个map,从逻辑页地址映射到物理页地址。 如果只有以及映射,需要的空间将很大,例如如果每页大小为2^10,那么64位的地址空间就需要2^54条记录,

需要缓解这一空间问题有几种方案,

方案一:多级页表的方式可以缓解空间压力,虽然实际上总空间增加了,但有些未使用的内存可以不存在子页,节省空间

方案二:反向页表,通常页表是逻辑页到物理帧的映射,但通常逻辑空间大于物理空间,例如物理空间可能只有4G,逻辑空间2^64,所以如果是物理帧映射逻辑页则需要的空间少很多。只是这需要硬件设计得很复杂,否则查找耗时大

方案三:hash页表,通过hash表即可以节省空间,由可以加速查找,但需要注意防hash碰撞以及硬件设计有些复杂。

-----EOF-----

Categories: Tags: os