页面置换、作业调度、进程调度小剖析

本文详细介绍了页面置换算法,如先进先出、最近最久未使用等,并对比了作业调度和进程调度的不同策略,包括先来先服务、最短作业优先等。通过生活中的例子解释了两级调度的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:https://blog.youkuaiyun.com/liushuijinger/article/details/7586653

页面置换、作业调度和进程调度他们之间有很多相似的地方,作业跟进程调度之间尤为相似,之前一直搞不清他们之间的区别跟联系,你是不是也跟我有一样的感受呢?看完这篇文章或许会让你对他们有更清晰的认识。




页面置换算法:

1,先进先出:淘汰最早进入cache的信息块。

2,最近最久未使用:淘汰近期使用频率最低的信息块。

3,随机替换:用随机数发生器随机产生一个信息块号,然后淘汰掉。

4:优化替换:此方法必须先执行一次程序,然后根据cache替换情况对接下来的信息块进行替换。

5:最佳置换:淘汰规则是将以后永远不会用到或者最长时间不会用到的信息块淘汰掉。此方法能够最大限度的减少缺页率,但是这是一种理想的方法,现实是无法实现的,只能作为其他置换算法的一个衡量标准。





作业调度:

1,先来先服务:按作业的到达时间进行调度,先到达先调度。

2,最短作业优先:优先执行所需时间最短的作业。

3,优先数:优先执行优先级高的作业。

4,最高响应比优先:优先执行响应比高的作业。响应比=(等待时间+计算时间)/计算时间。



进程调度:

1,先进先出:跟作业调度的先来先服务差不多,先执行最先进入就绪队列的进程。

2,最短优先:跟作业调度的短作业优先差不多,优先执行所需时间最短的进程。

3,最高响应比:跟作业调度的最高响应比差不多,优先执行响应比高的进程。响应比=(等待时间+要求服务的时间)/要求服务的时间。

4,优先级:跟作业调度的优先级算法差不多,优先执行优先级高的进程。

5:,时间片轮转:按照先进先出的规则给进程分配时间片,时间片结束后不管有没有执行完,都将执行下一进程。


看到这里,大家会发现作业调度跟进程调度是如此的相似,那么他们之间到底有什么关系呢?一起看下面这张图:



由上图可以看出,作业调度跟进程调度是密切相关的,首先进行作业调度将使之进入就绪队列,然后进行进程调度,或者进程执行完毕继续下面的进程,或者挂起等待下一轮的调度。下面结合生活中的例子分析一下两级调度。

第一级的作业调度是会将一批作业同时装入内存,以淋浴公共澡堂为例,里面可能只有1个水龙头,但可以一次让三四个人一起进去洗,因为洗澡的人并不是总要占着水龙头,只要相互错开就行了。那么澡堂就可以规定一次进三个人,三个洗完,再进三个。


第二级调度就是进程调度了,三个人同时用水龙头,那这个水龙头就相当于CPU,当然也可以多个水龙头,那就是多处理器了。洗的过程中,三个人可能有的在搓澡,有的在帮别人搓澡,也有可能都打完香皂就等冲水了,那让谁用水龙头呢?一般就是排先后,先申请的先用原则,但也不一定,比如有一个人说给我十秒钟冲一下就洗完了,那就是个短作业,不妨让他先用,洗完他就走了,这样大家的平均等待时间会缩短,也算是提高了效率;再就是有一个人可能在洗的过程中突然被洗发水迷了眼,所以需要赶紧冲一下,这就是高优先级的作业了,不同优先级之间,先可着高优先级的进行调度,这也是一种原则。所以总的来说,进程调度是在多个就绪进程中按一定的策略选出当前应执行的进程,合适与否,是按一定的策略遴选出来的。


我的理解大概就这些,不知道看完以后是不是对你有帮助,大家有什么更好的理解希望不吝赐教!



设计一个有N个进程并发的进程调度程序。进程调度算法:采用最高优数优调度算法(即把处理机分配给优数最高的进程)算法。每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优数及需要的运行时间可以事人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得CPU后都只能运行一个时间片,运行后已占用CPU时间加1。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优数减1(即降低一级),然后把它插入就绪队列等待CPU。 设计一个请求页式存储管理方案。并编写模拟程序实现。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列。为简单起见,页面淘汰算法采用FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。具体的做法可以是:产生一个需要访问的指令地址流; 指令合适的页面尺寸(例如以 1K或2K为1页); 指定内存页表的最大长度,并对页表进行初始化; 每访问一个地址时,首要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不在主存且页表已满,则按FIFO页面淘汰算法淘汰一页后调入所需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值