任务调度和页面置换算法

时间:2021-08-05 20:04:45
页面置换:在进程运行过程中,若其要访问的页面不在内存中而需要把他们调入内存,但是内存已无空闲空间,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据送磁盘的交换区。集中常见的页面置换算法。1、最佳置换算法:其所选择的淘汰页面将是以后永不使用的,或是在最长时间内不再被访问的页面。采用最佳置换算法,通常可以保证获得最低的缺页率。但是人们目前还无法预知也得进程在内存的若干个页面中那一个页面是未来最长时间内不再被访问的,因为该算法是无法实现的,但是可以利用该算法去评价其他算法2、先进先出(FIFO)页面置换算法:该算法总是淘汰最先进入内存中的页面,即选择在内存中驻留时间最久的页面予以淘汰。3、最近最久未使用(LRU)置换算法:Least Recently Used,该算法赋予每一个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当需要淘汰一个页面时,选择现有页面中t值最大的,即最近最久未使用的页面予以淘汰。4、Clock置换算法:为每个页面设置一个访问位,再将内存中所有的页面都通过替换指针链接成一个循环链表,当选择某个页面进行置换时,首先检查该页面的访问位是否为0,如果为0,则将该页面置换出,若为1,则将访问位置为0,不替换出,给该页面第二次驻留内存的机会,之后再按照FIFO算法检查下一个页面。如果检查到最后一个页面时,若其访问位也为1,再返回到队首循环检查。5、改进型CLOCK置换算法:除考虑页面的使用情况外,还需再增加一个因素,即置换代价,选择页面换出时,既要是未使用过的页面,又要是未被修改过的页面。把同时满足这两个条件的页面最为首选淘汰的页面。由访问位A,修改位M可以组合成四种类型的页面     1类(A=0,M=0)该页面最近既未被访问,又未被修改,最佳淘汰页     2类(A=0,M=1)该页面最近未被访问,但已被修改,并不是最好的淘汰页。     3类(A=1,M=0)该页面最近已被访问,但未被修改,该页有可能再被访问。     4类(A=1,M=1)该页面最近已被访问且被修改,该页面可能再被访问     执行过程:1,从指针的当前位置开始,循环扫描队列,寻找第一类页面,将遇到的第一个页面淘汰。第一遍扫描不改变其访问位A                      2,如果第一步失败,开始第二轮扫描。需寻找第二类页面,将遇到的第一个页面淘汰,第二遍扫描时将其访问位都置为0                      3,如果第二步也失败,则将指针返回到开始位置,将访问位复0,重复第一步,或者第二步。6、最少使用(LFU)置换算法:Least Frequently Used 选择最近时期使用最少的页面作为淘汰页面7、页面缓冲算法(PBA):Page Buffering Algorithm,需要设置一个缓冲区。该算法将一个被淘汰的页面放入两个链表中的一个,即如果页面未被修改,就将它放入空闲链表中;否则便放入到已修改的链表中。页面在内存中并不做物理上的移动,而是将页表中的表项移到上述两个链表之一。空闲链表和修改页面链表。利用这种方式可以使被修改的页面和未被修改的页面都仍然保留在内存中。当该进程以后再次访问这些页面时,只花费较小的开销,是这些页面又返回到该进程的驻留集中。当被修改的页面数达到一定数目时,如64个页面,再将它们一起写回到磁盘上,从而显著的减少磁盘I/O次数
任务调度:根据系统的资源分配策略所规定的资源分配算法。1、先来先服务优先调度算法(FCFS)2、短作业优先调度算法(SJF)3、高优先权调度算法4、基于时间片的轮转调度算法5、多级反馈队列调度算
实时调度:非抢占式调度算法 抢占式调度算1、最早截止时间优先即EDF(Earliest Deadline FIrst)算法。在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的早晚排序;当然,具有最早截止时间的任务队列排在队列的前面。调度算法在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。2、最低松弛度优先即LLF(Least Laxity First)算法,根据任务的紧急(或松弛程度)来确定任务的优先等级。