操作系统内存,磁盘调度,进程调度算法

来源:互联网 发布:nba历年新秀体测数据 编辑:程序博客网 时间:2024/04/29 22:11


操作系统虚拟内存中的四种典型页替换算法(OPT,LRU,FIFO,Clock)

       页面置换:在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断(page fault)。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。

  

典型的置换算法有四种,如下所示:

 OPT:最佳替换算法(optional replacement。替换下次访问距当前时间最长的页。opt算法需要知道操作系统将来的事件,显然不可能实现,只作为一种衡量其他算法的标准。

 分析:(F表示页帧最初填满时出现page fault)

 a.需要页面2,内存中还有空闲位置,直接加入页面2

 b.需要页面3,内存中还有空闲位置,直接加入页面3

 c.需要页面2,内存中已经存在页面2,不加入任何页面

 d.需要页面1,内存中还有空闲位置,直接加入页面1

 e.需要页面5,页面2距离下次访问之间的距离为1,页面3距离下次访问距离为3,页面1没有下次访问(距离为无穷             大),所以替换掉页面1

 f.需要页面2,内存中已经存在页面2,不加入任何页面

 g.需要页面4,页面2,3,5距离下次访问的距离依次是3,2,1,所以替换掉页面2

 h.需要页面5,内存中存在页面5,不改变

 i.需要页面3,内存中存在页面3,不改变

 j.需要页面2,页面4,3,5距离下次访问的距离依次是无穷大,无穷大,1,此时按照先后顺序替换掉页面4

 k.需要页面5,内存中存在页面5,不改变

 L.需要页面2,内存中存在页面2,不改变


LRU:最近最少使用(Least Recently Used).替换上次使用距离当前最远的页。根据局部性原理:替换最近最不可能 访问到的页。性能最接近OPT,但难以实现。可以维护一个关于访问页的栈或者给每个页添加最后访问的时间标签,但开销都很大。

 分析:(F表示页帧最初填满时出现page fault)

 a.需要页面2,内存中还有空闲位置,直接加入页面2

 b.需要页面3,内存中还有空闲位置,直接加入页面3

 c.需要页面2,内存中已经存在页面2,不加入任何页面,这里重置了2的最近历史访问记录

 d.需要页面1,内存中还有空闲位置,直接加入页面1

 e.需要页面5,页面2,3,1距离最近一次历史访问的距离依次为2,3,1(步骤c中重置了2的访问记录).所以替换掉页        面3.

 f.需要页面2,内存中已经存在页面2,不加入任何页面,重置页面2的访问记录

 g.需要页面4,页面2,5,1距离最近一次历史访问的距离依次是1,2,3,所以替换掉页面1

 h.需要页面5,内存中存在页面5,不改变,重置页面5的访问记录

 i.需要页面3,页面2,5,4距离最近一次历史访问的距离依次为3,1,2,所以替换掉页面2

 j.需要页面2,页面3,5,4距离最近一次历史访问的距离依次为1,2,3,所以替换掉页面4

 k.需要页面5,内存中存在页面5,不改变

 L.需要页面2,内存中存在页面2,不改变


FIFO:先进先出(First In First Out),将页面看做一个循环缓冲区,按循环方式替换。这是实现最为简单的算法,隐含的逻辑是替换驻留在内存时间最长的页。但由于一部分程序或数据在整个程序的生命周期中使用频率很高,所以会导致反复的换入换出。

分析:

策略极为简单,如果内存中有空闲位置,则直接替换。否则,可以先想象有一个指针,开始指向第一个位置,没发生替换则指针位置不变,每次需要替换时替换指针所指的位置,然后将指针向后移动一位(若指针位于最后,则移动到内存第一个位置)。


Clock:时钟替换算法(Clock),给每个页帧关联一个使用位。当该页第一次装入内存或者被重新访问到时,将使用位置为1。每次需要替换时,查找使用位被置为0的第一个帧进行替换。在扫描过程中,如果碰到使用位为1的帧,将使用位置为0,在继续扫描。如果所谓帧的使用位都为0,则替换第一个帧。

 分析:(表示说明:页面:“2(1)”表示页面2的使用位为1。"p(n)"表示扫描指针指向第n个的位置)

首先扫描指针p指向第一个帧位置p(1),每次发生替换(或者内存中有空闲位置时进行的替换),指针加1。

 a.需要页面2,内存中还有空闲位置,直接加入页面2,得到2(1),p(2).

 b.需要页面3,内存中还有空闲位置,直接加入页面3,得到2(1),3(1),p(3).

 c.需要页面2,内存中已经存在页面2,不加入任何页面,且这不是页面2的第一次放置,得到2(1),3(1),p(3).

 d.需要页面1,直接加入页面1,得到2(1),3(1),1(1),p(1)

 e.需要页面5,第一轮扫描将2,3,1的使用位都置为0,然后替换掉页面2,得到5(1),3(0),1(0),p(2)

 f.需要页面2,扫描到页面3的使用位为0,所以替换页面3,得到5(1),2(1),1(0),p(3)

 g.需要页面4,扫描到页面1的使用位为0,所以替换页面1,得到5(1),2(1),4(1),p(1)

 h.需要页面5,内存中存在页面5,不改变,得到5(1),2(1),4(1),p(1)

 i.需要页面3,第一轮扫描将5,2,4的使用位都置为0,然后替换到页面5,得到3(1),2(0),4(0),p(2)

 j.需要页面2,扫描到页面2的使用位为0,由于2被重新访问,所以将2的使用位置为1,得到3(1),2(1),4(0),p(2),注       意此时由于未发生页错误,p指针不加1.只是重置了使用位(记住:每次新加入的页使用位都为1)

 k.需要页面5,第一轮扫描将2的使用位置为0,替换掉页面4,得到3(1),2(0),5(1),p(1)

 L.需要页面2,重置页面2的使用位为1,指针p不变,得到3(1),2(1),5(1),p(1)

总结:

1.内存中不存在页面n,而内存中有空闲位置时,直接加入页面n(1),p加1

2.内存中不存在页面n,且内存中没有空闲位置时,发生替换n(1), p加1

3.内存中存在页面n,,p不变,将页面n重置为n(1)(不管页面n之前使用位为1或0)


改进后的时钟算法:设置使用位u,修改位m

1.最近未被访问,未被修改(u=0,m=0)

2.最近被访问,未被修改(u=1,m=0)

3.最近未被访问,被修改(u=0,m=1)

4.最近被访问,被修改(u=1,m=1)

a.从指针当前位置开始扫描,不修改使用位,对找到的第一个(u=0,m=0)进行替换

b.如果a失败,找到第一个(u=0,m=1)进行替换,扫描过程中,将使用位u置为0

c,如果b失败,此时指针回到起始位置,且所有帧的使用位为0,重复步骤a,如果有必要,重复步骤b,直到找到为止



操作系统中磁盘调度算法(FIFO,SSTF,SCAN,C-SCAN)

分类: operation system 541人阅读 评论(0) 收藏 举报
operating system

目录(?)[+]

FIFO:先进先出的调度策略,这个策略具有公平的优点,因为每个请求都会得到处理,并且是按照接收到的顺序进行处理

SSTF:选择使磁头从当前位置开始移动最少的磁盘I/O请求,所以SSTF总是选择导致最小寻道时间的请求

SCAN:SCAN要求磁头仅仅沿一个方向移动,并在途中满足所有未完成的请求,知道它到达这个方向上的最后一个磁道,或者在这个方向上没有其他请求为止

C-SCAN:把扫描限定在一个方向,当访问到某个方向的最后一个磁道时,磁道返回磁盘相反方向磁道的末端,并再次开始扫描。



磁盘调度算法的数据比较




 磁盘调度算法的描述




磁盘调度算法的直观比较


一起学习,一起进步,欢迎访问我的博客:http://blog.csdn.net/wanghao109

  

操作系统进程调度算法图解(FCFS、轮转、SPN、SRT、HRRN、反馈)

分类: operation system 420人阅读 评论(0) 收藏 举报
operating system

                                                                                       


                                                                                                                                           



FCFS: 先来先服务,也可以称为先进先出

轮转: 以一个周期性间隔产生时钟中断,此时当前正在运行的进程被置于就绪队列,基于FCFS选择下一个就绪进程             运行。

SPN:最短进程优先,下一次选择所需处理时间最短的进程

SRT:最短剩余时间优先,总是选择预期剩余时间最短的进程

HRRN:最高响应比优先,R=(w+s)/s,其中R表示响应比,w表示已经等待的时间,s表示期待服务的时间

反馈:进程第一次进入系统是放置于RQ0,第一次被强占并返回就绪态时,放入RQ1,以后每次被强占就下降一级。如果进程处于最低等级,则不再降级,反复返回到该队列,直到结束。


本文转自:http://blog.csdn.net/pi9nc/article/details/19848831

0 0
原创粉丝点击