OS(八):存储器管理之请求分页存储管理方式

发布时间 2023-08-22 17:02:02作者: 无虑的小猪
  请求分页系统建立在基本分页基础上,为能支持存储器功能增加了请求调页和页面置换功能。

  页面 作为调入和换出的基本单位。

1、请求分页的硬件支持

1.1、页表机制

  页表将用户地址空间中逻辑地址变换为内存空间的物理地址。只将部分应用程序调入内存,页表增加若干项,详情如下:

   状态P:用于指示该页是否已调入内存,供程序访问参考;

  访问字段A:记录本页在一段时间内被访问的次数,或记录记录本页最近有多长时间未被访问,供选择换出页面时参考;

  修改为M:表示该页在调入内存后是否被修改过。M位供置换页面时参考。

  外存地址:指出该页在外存上的地址,通常是物理块号,供调入该页时参考。

1.2、缺页中断机构

1、缺页中断

  请求分页系统中,当索要访问的页面不再内存时,产生缺页中断,请求OS将所缺的页面调入内存。

2、缺页中断的特点

  缺页中断也需要保护CPU环境、分析中断原因、转入中断处理程序,恢复CPU等步骤,但与一般中断有区别:

2.1、在指令执行期间产生和处理中断信号

  通常,CPU在一条指令执行完后,才检查是否有中断请求到达,若有,便去响应,否则继续执行下一条指令;

  缺页中断时在指令执行期间。

2.2、一条指令在执行期间可能产生多次缺页中断

1.3、地址变换机构

  请求分页系统中的地址变换过程:

    

  检索快表,若快表中有要访问的页,修改页表项中的访问位。对于写指令,需将位置修改成1,然后利用页表项给出的物理块号和页内地址形成物理地址。

  若快表中未找到该页的页表项,到内存中查找页表,再从找到的页表项中的状态位P,判断该页是否已调入内存,若已调入内存,将此页的页表项写入快表,当快表已满,按某种算法确定页的页表项后,再写入该页的页表项;若该页尚未调入内存,产生缺页中断,请求OS从外存把该页调入内存。

2、内存分配策略和算法

  请求分页系统中,内存分配策略可分为 固定 和 可变 策略;

  进行置换时,可分为 全局置换 和 局部置换。

2.1、物理块的分配策略

  固定内存分配局部置换:为每个进程分配一定数目的物理块,在整个运行期间不再改变,若发生缺页,在内存中的页面中选出一个换出,再调入一页,保证分配给该进程的内存空间不变。

  可变分配全局置换:为每个进程分配一定数目的物理块,OS自身维护一个空闲物理块队列,若发生缺页,系统从空闲物理块队列中取出一个物理块分配给该进程,并将调入的页装入,当队列中的物理块用完,OS从内存中选择一页调出。

  可变分配局部置换:为每个进程分配一定数目的物理块,若发生缺页,在内存中的页面中选出一个换出,若频繁的而发生缺页中断,系统为该进程分配若干个附加的物理块。

2.2、物理块的分配算法

1、平均分配算法

  将所有可供分配的物理块平均分给各进程。

2、按比例分配算法

  根据进程的大小按比例分配物理块。

3、优先权分配算法

  根据进程的优先权分配物理块。

2.3、调页策略

1、调入页面的时机

1.1、预调页策略

  预测为基础的预调页策略,将预计在不久之后会被访问的页面预先调入内存。

1.2、请求调页策略

  进程在运行中需要访问某部分程序和数据,发现所在的页面不在内存,向OS提出请求将所需页面调入内存。

2、何处调入页面

  请求分页系统中外存分为两部分:存放文件的文件区 和 存放对换页面的对换区。

  对换区采用连续分配的方式,文件区采用离散分配方式,对换区的磁盘I/O比文件区高。

1、系统拥有足够的对换区空间

  全部从对换区调入所需页面,提高调页速度。

  进程运行前,将该进程有关文件从文件区拷贝到对换区。

2、系统缺少足够的对换区空间

  不会被修改的文件从文件区调入,换出这些页面时,由于未被修改不必将它们换出,再调入时直接从文件区调入;

  可能被修改的文件,换出时,调到对换区,需要时再从对换区调入。

3、页面调入过程

程序访问的页面不在内存中:

  1、向CPU发出缺页中断,中断程序保留CPU环境,分析中断原因后转入缺页中断处理程序;

  2、程序通过查找页表,得到该页在外存的物理块;

  3、若此时内存能容纳新页,启动磁盘I/O将所缺之页调入内存,在修改页表;若内存已满,按某种置换算法从内存中换出一页,若该页已被修改,必须写回磁盘,然后将所缺的页调入内存;

  4、修改页表中的表项,存在为设置为1,将此项写入快表。

  在缺页调入内存后,利用修改后的页表,形成所要访问数据的物理地址,再去访问内存数据。

 

3、页面置换算法

 

  进程运行时,发生缺页中断,需要将缺少的页面调入内存,此时内存无空闲空间,必须从内存中调出一页至磁盘的对换区。

 

  在物理内存和对换区之间进行换入换出操作,把选择换出页面的算法 称为 页面置换算法。

 

3.1、最佳置换(OPT)算法

 

  保障最低缺页率,每次选择淘汰最不可能再次被使用的页面、无法实现。

 

3.2、先进先出(FIFO)页面置换算法

 

  保障顺序上的公平,每次选择淘汰最早进入内存的页面。

 

3.3、最近最久未使用(LRU)置换算法

 

  保障时间和距离上的公平,每次选择淘汰最久最近未使用的页面、需要硬件支持,开销大

 

3.4、时钟置换算法NRU

 

  保障性能和开销均衡,为页面设置访问位(0/1),并链接成循环队列,进程访问页面后置为1。淘汰时为1置为0并跳过,为0时淘汰。最多需要两轮扫描

 

3.5、改进型时钟置换算法

 

  额外考虑是否修改,保障最少I/O操作,增加修改位(0/1),第一轮找(0,0),第二轮找(0,1)并修改访问位为0,第三轮找(0,0),第四轮找(0,1);最多需要四轮。