操作系统的主要功能包括:进程管理,存储管理,文件管理,作业管理以及设备管理。

存储器管理的对象是主存,也称内存。

存储管理方案主要包括分区存储管理、分页存储管理、分段存储管理、段页式存储管理以及虚拟存储管理。

分区存储管理

分区存储管理是早期的存储管理法案,其基本思想十八内存的用户区划分成若干区域,每个区域分配给一个用户作业使用,并限定他们只能在自己的区域中运行。

按划分方式的不同可分为固定分区、可变分区和可重定位分区。

可变分区主要有 4 种算法:

  1. 最佳适应算法
  2. 最差适应算法
  3. 首次适应算法
  4. 循环首次适应算法

分页存储管理

  • 块/页框架:将内存空间划分成多个大小相等的物理块,对应的每个物理块称为块/页框架。
  • 页:由于块的大小限制,程序的逻辑地址被分成页,不同的页放在不同的块中,不需要连续。
  • 页表:为保证在内存中找到每个页对应的块,系统为每个进程建立一张页面的映射表。页表的作用是实现从页号到块号的地址映射。

分页系统的逻辑地址结构由两部分组成:页号与页内地址。

分页系统的物理地址结构由两部分组成:块号与页内地址。

从地址映射的过程中可以发现,页式存储管理至少需要两次访问主存。例如,第一次是访问页表,得到的是数据的物理地址,第二次是存取数据。

快表:在地址映射机构中增加一个小容量的联想存储器,联想存储器由一组高速存储器组成,称之为快表。用来保存当前访问频率高的少数活动页的页号及相关信息。

逻辑地址到物理地址的转换?实际上就是通过查询页表,将用户程序中的页号变成内存中的物理块号,页内地址不变。

分段存储管理

分页存储是按照内存的物理地址划分,而段式存储是按照程序的逻辑地址划分的。由于程序的大小不等,所以各段的长度不等。

分段系统的逻辑地址结构由两部分组成:段号与段内地址。

段表是系统为每个进程建立一张段映射表,由段表项构成,每个段表项包括段号、段基址(起始地址)和段长(段大小)。

段页式存储管理

段页式存储管理主要是先进行分段在进行分页。

逻辑地址结构:段号、段内页号和段内地址。

页面置换算法

页面置换(调度):当内存空间已满而又需要装入新页时,页式虚拟存储管理必须按照一定的算法把已在内存的一些页调出去。

抖动:即刚被换出的页很快又被访问,需重新调入,导致系统频繁地更换页面,以至于一个进程在运行中把大部分时间花费在完成页面置换的工作上。不合适的页面置换算法会导致系统发生抖动。

  1. 最佳(Optimal)置换算法

    这是一种理想化的算法,即选择那些是永不使用的,或者是在最长时间内不再被访问的页面置换出去。这种方法性能最好,但实际上难于实现,所以该算法通常用来评价其他算法。

  2. 先进先出(FIFO)置换算法

    该算法总是淘汰最先进入主存的页面,即选择在主存中驻留时间最久的页面淘汰。该算法实现简单,只需把一个进程调入主存的页面,按先后次序链接成一个队列,并设置一个指针即可。

    它是一种最直观、性能最差的算法,有 Belady 异常现象,是指如果一个进程未分配它所要求的的全部页面,有时就会出现分配的页面数增加但缺页率反而提高的异常现象。

  3. 最近最少使用(Least Recently Used, LRU)置换算法

    该算法是选择最近最少未使用的页面予以淘汰,系统在每个页面设置一个访问字段,用于记录这个页面自上次被访问以来所经历的时间 T,当要淘汰一个页面时,选择 T 最大的页面,但在实现时需要硬件的支持(寄存器或栈)。

参考链接