操作系统—进程调度

进程调度的功能:由操作系统内核的进程调度程序完成。在Linux内核中,进程调度的功能实现从调用内核函数schedule()开始。

什么是操作系统的调度功能?

按照某种策略或算法从就绪态进程中为当前的CPU选择在其上运行的新线程。

选择合适的调度算法的准则?

周转时间短,响应时间快,截至时间的保证,系统吞吐高,处理机(CPU)利用率好。

调度算法

调度算法分为:

先来先服务调度算法(FCFS):顾名思义,先来的先服务,哪个进程先到就绪队列,就先为哪个进行先分配CPU。

性能分析:适合长进程,不利于短进程。  有利于CPU繁忙型进程,不利于(I/O)繁忙型进程。

短进程优先调度算法(SPF):从就绪队列中选择估计运行时间最短的进程,优先分配CPU,优先执行。

性能分析:优点:与FCFS算法相比,短进程优先的算法可以有效的降低进程的平均等待时间,提高系统的吞吐率。

缺点:

1.对长进程不利。如果由一直有短进程进入系统,长进程一直得不到调度。

2.不能保证紧迫进程的及时处理。

3.进程的长短根据用户的估计而定,因此不一定能做到真正的短进程优先。

优先权调度算法:使用优先权调度算法的系统,每个进程都有一个与之相关联的优先权。优先权通常是固定的数字,如0-127中的一个数字。系统可能设计为优先权越大,优先权越高。系统将CPU分配给就绪队列中优先值最高的进程。

优先权调度算法类型:

1.非抢占式:如果CPU正在运行一个进程,然后就绪队列里进来了一个优先权值高的进程,那么要等待当前CPU执行完了当前进程,再执行进来的优先权值高的进程,不抢占CPU。

2.抢占式:与上面的相反,直接抢占CPU,执行进来的优先权值高的进程。

优先权类别:

动态优先权:进程创建时被赋予优先权,随着进程的推进或者等待时间的增加而改变。

静态优先权:在创建进程的时候确定,在进程的整个运行期间保持不变。

时间片轮转调度算法(RR):设计一个时间片,就是一个进程在CPU上运行的时间,一般会有两种情况,一种是时间片的时间没有用完,进程结束了,自动释放CPU。另一种是进程的时间区间大于一个时间片的情况,进程可能需要若干个时间片。每当进程在CPU上连续运行的时间等于一个时间片的长度,操作系统在时钟中断处理过程中会抢占CPU,进行进程切换,用新的就绪进程替代当前进程,被替换的当前进程重新回到就绪队列中。

时间片大小确定考虑的因素:1.系统对响应时间的要求。2.就绪队列中进程的数目。3.系统的处理能力。

性能分析:RR算法的性能很大程度上依赖于时间片的大小。在极端情况下,时间片大,就会与先来先服务算法一样。如果很小,进程需要经过多次的上下文切换和进程调度,浪费时间增加CUP在切换进程和进程调度的开销。

猜你喜欢

转载自blog.csdn.net/weixin_44126152/article/details/106679822