进程调度算法

进程调度算法是操作系统用于给进程分配 CPU 资源的策略。其目的是合理分配 CPU 时间,提高系统的整体性能和资源利用率。通过 CPU 利用率、系统吞吐量、周转时间、等待时间和响应时间等指标,可以衡量一个调度算法的性能。

CPU 利用率

CPU 作为计算机的核心组件,其高效利用至关重要。如果 CPU 长时间处于空闲状态,意味着系统资源未得到充分利用,可能导致系统性能低下和效率不高。例如,在一个数据处理中心,如果大量服务器的 CPU 利用率低,那么运营成本会增加,而处理任务的速度却没有达到最优。

系统吞吐量

它反映了系统在单位时间内处理作业的能力。比如,一个网页服务器在一小时内能够处理 1000 个用户的请求,这就是系统的吞吐量。较高的吞吐量通常表示系统能够更快速地完成大量任务。

周转时间

周转时间涵盖了作业在整个系统中的各个阶段所花费的时间。以一个打印任务为例,从用户提交打印请求开始,包括在队列中等待被处理、实际在打印机上打印以及可能的传输和其他相关操作,直到打印完成,这整个过程所经历的时间就是周转时间。

等待时间

这仅仅是进程在就绪队列中等待 CPU 分配的时间总和。比如,多个进程都准备好运行,但只有一个 CPU 可用,其他进程就处于等待状态。等待时间过长会让用户感到不满,就像在餐厅排队等待用餐,如果等待时间太久,顾客的满意度就会下降。

响应时间

它侧重于用户从提交请求到首次获得系统响应的时间间隔。例如,在在线游戏中,用户点击操作按钮后,游戏界面迅速显示出相应的变化,这个从点击到首次看到变化的时间就是响应时间。响应时间短能使用户体验更好,更愿意使用该系统。

这些性能指标在评估操作系统和调度算法的优劣时都具有重要的参考价值,不同的应用场景可能会对某些指标有更高的要求。


常见的进程调度算法包括:

  1. 先来先服务(FCFS):按照进程到达就绪队列的先后顺序进行调度。先到达的进程先获得 CPU 执行,直到完成或阻塞。该算法易于理解且实现简单,相对公平,但不利于短进程和 I/O 密集型进程。

  2. 短作业优先(SJF):每次调度时选择预计执行时间最短的进程。该算法可减少平均周转时间和等待时间,提高系统吞吐量,但对长进程不利,可能导致长进程长时间无法执行,导致进程饥饿问题,且难以准确预计进程的执行时间。

  3. 最高响应比优先(HRRN):综合考虑每个进程的等待时间和预计执行时间,计算响应比(响应比 = (进程的等待时间 + 进程需要的运行时间) / 进程需要的运行时间),选择响应比最高的进程执行。这种算法既有利于短进程,又可避免长进程长期得不到服务,但每次调度前计算响应比会增大系统开销。

    根据公式可以知道:
    作业的等待时间相同时,如果要求服务时间越短,则响应⽐更⾼,有利于短作业执⾏。
    当要求服务时间相同时,响应⽐由等待时间决定,如果等待时间越⻓,则响应⽐越⾼。
     对于⻓作业,作业的响应⽐可以随着等待时间的增加⽽提高。

  4. 时间片轮转(RR):给每个进程分配一个固定的时间片,进程按时间片轮流执行。若时间片用完,进程未完成则排到就绪队列末尾,等待下一轮调度。该算法简单易行,平均响应时间短,但时间片大小的确定较为关键,若设置不当可能影响系统性能。

  5. 最短剩余时间优先(SRTN):是 SJF 的抢占式版本。当新进程到达时,比较其所需的整个运行时间与当前进程的剩余运行时间,若新进程所需时间更短,则挂起当前进程,运行新进程,否则新进程等待。但是这对⻓作业⼗分不利,由于调度程序总是优先调度短作业,将会导致⻓作业⻓期不被调度,此外该算法也没有考虑到作业的紧迫程度,因此不能保证紧迫性作业会被及时处理。

  6. 最高优先级调度(HPF):从就绪队列中选择最高优先级的进程运行。优先级可分为静态优先级(创建进程时预先规定,整个运行过程不变)或动态优先级(根据进程的动态变化调整)。该算法并非固定为抢占式或非抢占式,系统可预先规定。抢占式是指当就绪队列中出现更高优先级的进程时,立即剥夺当前运行进程的 CPU 资源;非抢占式则是等当前进程完成或阻塞后,再选择高优先级进程。

  7. 多级队列调度:根据进程的性质将其分成若干队列,每个队列采用不同的调度算法,如交互进程队列使用时间片轮转,批处理任务队列使用先来先服务调度算法。

  8. 多级反馈队列调度:设置多个优先级不同的就绪队列,每个队列采用时间片轮转调度。新进程进入内存后,首先放入第一队列末尾,若能在一个时间片内完成则撤离,否则转入下一队列末尾。优先级越高的队列,时间片越小。调度程序优先调度高优先级队列中的进程,只有当高优先级队列为空时,才调度低优先级队列中的进程。如果 CPU 正在调度低优先级队列的进程时,有新进程进入高优先级队列,则会立即把正在运行的进程放回原队列末尾,将 CPU 分配给高优先级队列的新进程。这种算法兼顾了长短作业,有较好的响应时间,适用于各种作业环境。
    它的设计目标是既能让高优先级的进程尽快得到执行,又能避免低优先级进程长时间得不到处理,同时还能较好地应对各种类型的进程。可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。

自然描述:

进程调度算法你了解多少?

进程调度算法是操作系统用来给进程分配CPU资源的策略,主要目的是为了合理分配CPU时间,提高系统的整体性能和资源利用率;不同的算法有不同的特性,可以通过CPU利用率、系统吞吐量、周转时间、等待时间和响应时间来衡量一个调度算法的性能。

调度算法有:(8种)

       先来先服务、短作业优先,还有它的抢占式版本:最短剩余时间优先,高响应比优先、最高优先级调度、时间片轮转、多级队列调度、多级反馈队列调度(最高优先级 + 时间片轮转)

多级反馈队列调度:

       设置多个优先级不同的就绪队列,每个队列中都是使用时间片轮转来调度进程,不同优先级的队列设置的时间片也不同,优先级越高的队列时间片越小(通常相邻的是两倍关系),当有新进程进入内存后,首先将他放在1级队列末尾,如果进程在第一个队列没有执行完,会被移到下一个队列,以此类推;整体上是按照队列优先级抢占式调度,只有高优先级的队列为空,才能调度后续队列中的进程;如果CPU正在调度一个低优先级队列的进程,又有新进程进入高优先级队列,此时须立即把正在运行的进程放回这个低优先级队列末尾,然后把CPU分配给高优先级队列新进来的这个进程。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值