学习日期:2024.7.3
内容摘要:调度的概念、层次,进程调度的时机,调度器和闲逛进程,调度算法的评价指标
调度的基本概念
有一堆任务需要处理,但由于资源有限,有的事情不能同时处理,这就需要按照某种规则决定处理顺序,这就是“调度”研究的问题。
作业
作业:用户提交给系统的一个任务。若干进程共同完成一个作业。作业可以包含一个或多个进程。
进程与作业的区别与联系
1.联系
一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。
用户提交作业以后,当作业被调度,系统会为作业创建进程,一个进程无法完成时,系统会为这个进程创建子进程。
2.区别
进程是一个程序在一个数据集上的一次执行,而作业是用户提交给系统的一个任务。
调度的三个层次
高级调度(作业调度)
按一定的原则从外存的作业后备队列中挑选一个调入内存,并创建进程,每个作业只调入调出一次。作业调入时建立PCB,调出时撤销。
简单理解为有好几个程序待启动,到底先启动哪个。
低级调度(进程调度)
按照某种策略从就绪队列中挑选一个进程,将处理机分配给它。
进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置,频率很高,通常几十毫秒一次。
中级调度(内存调度)
内存不够时,可以将某些进程的数据调出到外存,等内存空间空闲或者进程需要运行时再重新调入内存。暂时调到外存等待的进程状态为挂起状态,被挂起的进程PCB会被组织为挂起队列。
挂起和阻塞状态都是暂时不能获得CPU的服务,但是挂起态的进程映像被调到了外存当中,阻塞态还在内存中。
中级调度就是,按照某种策略决定将哪个处于挂起状态的进程重新调入内存,一个进程可能会被多次调出调入内存,因此中级调度发生的频率比高级调度更高。
进程调度的时机
进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。
需要进行进程调度与切换的情况:
当前运行进程主动放弃处理机的
①进程正常终止 ②运行过程中发生异常终止 ③进程主动请求阻塞
当前运行进程被动放弃处理机的
①分给进程的时间片用完 ②有更紧急的事情需要处理 ③有更高优先级的进程进入就绪队列
不能进行进程调度与切换的情况:
①在处理中断的过程中。中断处理过程非常复杂,与硬件密切相关,很难做到在中断处理过程中切换进程。
②进程在操作系统内核临界区中。
③在原语操作过程中,原语不可中断,要一气呵成。(如在进程控制中提到的一些原语操作)
进程调度的方式
非剥夺调度方式
又称“非抢占调度方式”,在有的操作系统中,只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。
优缺点:实现简单,系统开销小,但是无法及时处理紧急任务,适用于早期的批处理操作系统。
剥夺调度方式
又称“抢占调度方式”。当一个进程正在处理机上执行时,如果有一个更重要或者更紧迫的进程需要使用处理机,就立即暂停正在执行的进程,将处理机分配给更加紧急重要的那个进程,
优缺点:可以优先处理更紧急的进程,也可以实现让各进程按时间片轮流执行的功能,(通过时钟中断)。适合于分时操作系统、实时操作系统。
进程切换是有时间代价的,如果过于频繁的进行进程的调度、切换,必然使得整个系统的效率降低,系统的大部分时间都花在进程切换上,真正用于执行进程的时间减少。并不是切换越多并发度就越高!
调度器和闲逛进程
如图所示,②和③都由调度程序引起,其决定运行的进程和分配的时间片大小。创建新进程、进程退出、运行进程阻塞、I/O中断发生都会触发调度程序。
非抢占式调度策略,只有运行阻塞或退出才会触发调度程序工作。
抢占式调度策略,每个时钟中断或k个时钟中断会触发调度程序工作。
调度程序处理的对象是进程(不支持内核级线程的操作系统)或内核级线程(支持内核级线程的操作系统)。
闲逛进程:调度程序在没有其它就绪进程时,运行闲逛进程(idle)
特性:①优先级最低,能耗也低 ②可以是0地址指令,占一个完整的指令周期,指令周期末尾例行检查中断
调度算法的评价指标
CPU利用率、系统吞吐量、周转时间、等待时间、响应时间,是调度算法的常见评价指标。
CPU利用率
因为CPU造价昂贵,人们希望让CPU尽可能多的工作。
CPU利用率:CPU忙碌的时间占总时间的比例。
系统吞吐量
对于计算机来说,希望能用尽可能少的时间处理完尽可能多的作业。
系统吞吐量:单位时间内完成作业的数量。
周转时间
对于使用计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。
周转时间:作业在外存后备队列上等待作业调度(高级调度)的时间、进程在就绪队列上等待进程调度(低级调度)的时间、进程在CPU上执行的时间、进程等待I/O操作完成的时间。后三项在一个作业的整个处理过程中,可能发生多次。
在周转时间相同的情况下,运行时间长的作业给用户的感觉会更好。
比如说两个作业,一个是等10分钟运行1分钟,一个是等1分钟运行10分钟,周转时间都是11分钟,但是显然等1分钟运行10分钟的感觉好一些。
带权周转时间
为了更客观的评价,引入了带权周转时间,就是作业的周转时间除以作业实际运行的时间。
带权周转时间必然≥1(刚交上去就运行就是1),带权周转时间与周转时间都是越小越好
同理,也有平均带权周转时间,就是带权周转时间之和除以作业数。
等待时间
计算机的用户希望自己的作业尽可能少的等待处理机。
等待时间:进程/作业处于等待处理机状态时间之和,等待时间越长用户满意度越低。
对于进程来说,等待时间就是进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间。
对于作业来说,不仅要考虑进程建立后的等待时间,还要加上作业在外存后备队列中的等待时间。
与前面指标类似,也有“平均等待时间”来评价整体性能。
响应时间
计算机的用户希望自己提出的请求尽快被系统响应。
响应时间:用户从提交请求到首次产生响应所用的时间。
内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》