操作系统分类(按工作方式)
批处理操作系统(CPU高效性)
批处理操作系统 (Batch Operating System):
- 特点: 用户将作业(包含程序、数据和命令)提交给系统操作员,操作员将若干用户的作业组成一批,输入计算机,系统按顺序自动完成这一批作业。作业一旦开始运行,用户不能干预。
- 优点: 系统资源利用率高,吞吐量大。
- 缺点: 用户无法与作业进行交互,周转时间长,调试困难。
- 示例: 早期的IBM OS/360等。
分时操作系统(交互性&快速响应)
分时操作系统 (Time-Sharing Operating System):
- 特点: 将CPU的运行时间划分成若干个小的时间片(Time Slice),多个用户通过各自的终端同时共享一台计算机的资源。系统轮流为每个用户的作业服务一个时间片,用户可以通过终端与自己的程序进行交互。
- 优点: 实现了人机交互,多个用户可以同时使用一台计算机,提高了计算机的利用率,响应时间较快。
- 缺点: 系统管理开销较大,对内存和外部设备的要求较高。
- 示例: UNIX、Linux、Windows的多用户版本。
实时操作系统(实时性&可靠性)
实时操作系统 (Real-Time Operating System - RTOS):
- 特点: 系统能够及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。实时性&可靠性要求极高。
- 分类:
- 硬实时系统 (Hard Real-Time System): 必须在严格的、确定的时间内完成任务,任何超时都可能导致系统失败或灾难性后果。例如:飞行控制系统、工业机器人控制。
- 软实时系统 (Soft Real-Time System): 允许偶尔的任务超时,但会降低系统性能,不会造成灾难性后果。例如:多媒体播放、网络数据传输。
- 优点: 响应快速、及时,可靠性高。
- 缺点: 通常功能相对简化,资源利用率可能不是最高。
- 示例: VxWorks、QNX、RTLinux、Windows CE。
处理机调度的层次
在操作系统中,处理机调度通常分为三个层次,它们各自在不同的时间尺度和决策层面工作,共同管理着处理机资源在多个任务间的分配。
作业调度
-
高级调度,也称为作业调度 或长程调度
- 主要职责:高级调度的主要任务是从外存(如硬盘)上的后备作业队列中挑选一个或多个作业,为它们分配必要的资源(如内存空间),创建相应的进程,并将这些进程调入内存的就绪队列,使其能够参与CPU的竞争。
- 目标:控制进入系统的作业数量,即控制多道程序设计的道数(Degree of Multiprogramming)。它决定了哪些作业能够进入系统运行,从而影响系统的整体吞吐率和资源利用率。
- 执行频率:相对较低,可能在几分钟甚至更长时间内才执行一次。
- 应用场景:主要用于批处理系统中,但在分时和实时系统中,由于用户直接与系统交互,作业的概念相对淡化,高级调度的功能很大程度上被减弱或与其他调度层次合并。
- 主要职责:高级调度的主要任务是从外存(如硬盘)上的后备作业队列中挑选一个或多个作业,为它们分配必要的资源(如内存空间),创建相应的进程,并将这些进程调入内存的就绪队列,使其能够参与CPU的竞争。
内存调度
-
中级调度,也称为内存调度 或 中程调度
- 主要职责:中级调度的主要任务是根据系统负载和内存使用情况,决定将内存中暂时不能运行的进程(如等待I/O完成时间过长或优先级较低的进程)调出到外存的挂起队列(Swap Out),以及在适当的时候将具备运行条件的挂起进程重新调入内存(Swap In)。
- 目标:提高内存利用率和系统吞吐量。通过换出暂时不活动的进程,可以释放内存空间给更急需的进程,从而提高CPU的利用率和系统的整体效率。
- 执行频率:介于高级调度和低级调度之间,执行频率比高级调度高,但比低级调度低。
- 引入原因:为了平衡系统负载,提高内存资源的利用效率。
进程调度
-
低级调度,也称为进程调度 或 短程调度
- 主要职责:低级调度的主要任务是从内存的就绪队列中,按照某种调度算法(如先来先服务、时间片轮转、优先级调度等)选择一个进程,并将CPU的使用权分配给它。
- 目标:在就绪的进程中快速、公平、高效地分配CPU,使得各个进程能够及时得到响应和执行。
- 执行频率:非常高,是操作系统中最频繁执行的调度,通常在毫秒级别。每次中断、系统调用或进程状态改变后都可能触发低级调度。
- 核心功能:直接决定了哪个进程当前可以占用CPU运行。
三种调度之间的联系
作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列,进程调度从就绪队列中选出一个进程,并把其状态改为运行状态,把CPU分配给它。
中级调度是为了提高内存的利用率,系统将那些暂时不能运行的进程挂起来。当内存空间宽松时,通过中级调度选择具备运行条件的进程,将其唤醒。
1) 作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间。
2) 作业调度次数少,中级调度次数略多,进程调度频率最高。
3) 进程调度是最基本的,不可或缺。
评估进程调度算法性能指标
周转时间
- 定义:
- 周转时间是指从进程被提交给系统开始,到进程完成并退出系统为止的完整时间间隔。
- 它包括了进程等待进入内存、在就绪队列中等待、在CPU上运行以及进行I/O操作的所有时间。
- 计算公式:
- 周转时间 = 完成时间 - 提交时间
- 意义:
- 周转时间是衡量一个进程在系统中总共花费的时间,它反映了系统对进程的响应速度和处理效率。
等待时间
- 定义:
- 等待时间是指进程在就绪队列中等待CPU分配的时间总和。
- 它不包括进程在CPU上运行和进行I/O操作的时间。
- 计算公式:
- 等待时间 = 周转时间 - 运行时间
- 意义:
- 等待时间反映了进程在就绪队列中等待的时间,它能够评估CPU调度算法的效率。
- 一个较小的等待时间表示CPU调度算法能够有效地利用CPU资源。
带权周转时间
- 定义:
- 带权周转时间是对周转时间的进一步衡量,它考虑了进程的运行时间。
- 它通过将周转时间除以进程的实际运行时间,来评估系统对不同长度进程的公平性。
- 计算公式:
- 带权周转时间 = 周转时间 / 运行时间
- 意义:
- 带权周转时间能够更好地反映系统对短进程的响应情况。
- 一个较小的带权周转时间表示系统对短进程的响应较好。
其他指标
CPU利用率。
CPU是计算机系统中最重要和昂贵的资源之一,所以应尽可能使CPU 保持“忙”状态,使这一资源利用率最髙。
平均周转时间是指多个作业周转时间的平均值:
平均周转时间 = (作业1的周转时间 + … + 作业 n 的周转时间) / n
响应时间
是指从用户提交请求到系统首次产生响应所用的时间。在交互式系统中,周转时间不可能是最好的评价准则,一般釆用响应时间作为衡量调度算法的重要准则之一。
从用户角度看,调度策略应尽量降低响应时间,使响应时间处在用户能接受的范围之内。
不同调度算法题目
FCFS例题&SJF例题
在计算的时候显然考虑的都是理想状况,忽略了系统切换上下文的时间与磁盘I/O时间,(一般题目中都会有相关的注释)。
下面展示的是先来先服务算法(FCFS),即哪个进程先到来哪个进程便先执行
让我们对于上面三个进程的顺序来做一下浅浅的变换,让执行需要时间短的进程先执行,即短作业优先算法(SJF)
调度算法旨在最小化平均等待时间,因此它拥有最短的平均等待时间
非抢占式短作业优先例题
- 工作方式:
- 一旦一个作业开始执行,它就会一直运行到完成,即使有更短的作业到达。
- 新到达的短作业必须等待当前作业完成后才能执行。
- 特点:
- 实现简单。
- 可能导致长作业的等待时间较长,特别是当短作业频繁到达时。
抢占式短作业优先(最短剩余时间优先)例题
- 工作方式:
- 当一个更短的作业到达时,如果它的剩余运行时间比当前正在运行的作业的剩余运行时间短,则当前作业会被抢占,CPU会被分配给新到达的作业。
- 总是选择剩余运行时间最短的作业执行。
- 特点:
- 能够进一步缩短平均等待时间。
- 实现相对复杂,需要记录和比较作业的剩余运行时间。
高相应比优先调度算法
高响应比优先调度算法主要用于作业调度,该算法是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考虑每个作业的等待时间和估计的运行时间。
在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。
响应比的变化规律可描述为:
响应比_RP = (等待时间 + 要求服务时间) / 要求服务时间;
当作业的等待时间相同时,则要求服务时间越短,其响应比越高,有利于短作业。
当要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而它实现的是先来先服务。
对于长作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,其响应比便可升到很高,从而也可获得处理机。克服了饥饿状态,兼顾了长作业。
在上面那这个表格中通过计算我们可以知道这四个job的执行顺序分别是:
Job1->Job3->Job2->Job4
注意上面计算作业响应比R都没有+1,因为我们在这里并不是要具体求出每个作业的响应比是多少,只是为了比较得出几个任务的执行顺序,所以来说为了简便就都没有+1。
轮转调度算法(RR)
多级反馈队列调度算法(集合了前几种算法的优点)
多级反馈队列调度算法是时间片轮转调度算法和优先级调度算法的综合和发展,如图2-5 所示。
通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。
例如,为提高系统吞吐量和缩短平均周转时间而照顾短进程;为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程;同时,也不必事先估计进程的执行时间。
实现思路
多级反馈队列调度算法的实现思想如下:
(1)应设置多个就绪队列,并为各个队列赋予不同的优先级,第1级队列的优先级最高,第2级队列次之,其余队列的优先级逐次降低。
(2)赋予各个队列中进程执行时间片的大小也各不相同,在优先级越高的队列中,每个进程的运行时间片就越小。例如,第2级队列的时间片要比第1级队列的时间片长一倍, ……第i+1级队列的时间片要比第i级队列的时间片长一倍。
(3)当一个新进程进入内存后,首先将它放入第1级队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样地按FCFS 原则等待调度执行;如果它在第2级队列中运行一个时间片后仍未完成,再以同样的方法放入第3级队列……如此下去,当一个长进程从第1级队列依次降到第 n 级队列后,在第 n 级队列中便釆用时间片轮转的方式运行。
(4)仅当第1级队列为空时,调度程序才调度第2级队列中的进程运行;仅当第1 ~ (i-1)级队列均为空时,才会调度第i级队列中的进程运行。如果处理机正在执行第i级队列中的某进程时,又有新进程进入优先级较高的队列(第 1 ~ (i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i级队列的末尾,把处理机分配给新到的更高优先级的进程。
优势
多级反馈队列的优势有:
终端型作业用户:短作业优先。
短批处理作业用户:周转时间较短。
长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。
参考文章:
下面这篇文章写的超级好,极力推荐阅读!!!