在操作系统中,多个进程同时运行。一个进程中也可能有多个线程。例如,MS Word程序有多个线程,一个线程检查语法,一个线程计算单词等。操作系统中的所有进程和线程都由操作系统管理。操作系统必须为运行这些进程和线程分配时间。进程和线程的管理称为CPU调度。
在操作系统中,多道程序设计用于在不同进程之间切换CPU。多道程序设计的目标是在给定时间至少有一个进程在CPU上运行。如果有一个处理器,那么一个进程必须在给定的时间运行;如果有多个处理器,那么CPU将在给定的时间运行多个进程。
CPU必须通过一种机制来决定下一个必须运行哪个进程。为此,就绪队列由操作系统创建。接下来要运行的进程保持就绪状态。进程从就绪状态移动到运行状态。如果一个进程需要任何输入/输出请求,那么该进程将从运行状态移动到等待状态。在进程完成输入/输出操作后,该进程再次被置于就绪状态,供操作系统运行。
排程目标:
调度有一些目标或目的,使操作系统运行良好。计划的一些目标是:-
最大化吞吐量。吞吐量是单位时间内完成的作业数量。
CPU时间必须以公平的方式分配,即所有作业都应该平等对待。
由于CPU是昂贵的,所以调度的目的是最大化CPU利用率。
最小化响应时间。响应时间是进程保持就绪状态并第一次获得CPU的时间。
最大限度地利用其他资源,如打印机和磁盘。
尽量减少等待时间。等待时间是进程保持在就绪状态的总时间。
尽量减少周转时间。周转时间=等待时间+ I/O时间+计算时间。
抢占和非抢占调度:
在抢占式调度中,如果一个进程正在运行,那么如果任何高优先级进程到来,那么前一个进程必须停止。前一个进程从运行状态移动到就绪状态。
在非抢占调度中,进程继续运行,直到它需要输入/输出资源。该进程在完成输入/输出请求后再次获得CPU时间。
调度标准:
有一些用于判断CPU性能的调度标准。他们是:-
周转时间:执行流程所需的时间称为周转时间。它是实际作业时间加上等待时间。
等待时间:进程等待执行的时间称为等待时间。它是周转时间减去实际作业时间。
吞吐量:在指定时间段内执行的进程数称为吞吐量。如果进程的大小很大,吞吐量会降低。对于短流程,它会增加。
CPU利用率:为了获得最佳性能,CPU必须一直处于活动状态。CPU利用率在实时应用程序和多程序系统中被认为是重要的。
响应时间:从提交请求到生成第一个响应之间的时间称为响应时间。
调度算法:
CPU调度算法尽量减少等待时间、周转时间和响应时间。此外,它还用于最大限度地提高吞吐量和CPI利用率。
下面是我们将讨论的调度算法列表:-
先到先得安排
最短作业优先调度
优先级调度
轮询调度
多级队列调度
多级反馈队列调度
先到先得:
在这种调度类型中,首先进入的进程将首先执行,然后第二个进入的进程将首先执行,以此类推。
如果第一个进程有最长的突发时间,那么其他进程将不得不等待更长时间。如果第一个进程突发时间较短,那么其余进程将执行得更快。
最短作业优先调度:
在这种调度中,平均等待时间减少了。完成时间较短的进程/作业将首先运行。然后运行完成时间比第一个作业最短的下一个作业。
最短的作业优先调度(SJF)将以较低的突发时间运行进程,并将其分配给CPU。
优先级调度:
在这种调度类型中,所有进程都被分配了一个优先级id。优先级id为整数形式,取值范围为0 ~ 10。优先级id值越小,优先级值越高。
在优先级调度中,具有较高优先级的进程将首先执行,然后将执行具有较高优先级的第二个进程。
轮循调度:
在轮循调度中,每个进程被CPU分配一定的运行时间。它与FCFS相同,但该进程在一段时间后切换到另一个进程。
所有进程首先被放置在就绪队列中,然后第一个到来的进程将执行一段固定的时间。然后下一个进程就绪队列将执行一段固定的时间,依此类推。
多级队列调度:
在这种调度类型中分为两类,一类是交互式进程(前台进程),另一类是非交互式进程(后台进程)。交互进程首先执行,具有高优先级,而非交互进程的优先级较低,在交互进程之后执行。
在此调度就绪队列被分成5个子队列,即
系统进程
互动的过程
交互式编辑流程
批处理进程
学生的过程
请注意,分配给一个子队列的进程将留在该子队列中,并且在完成其生命周期之前不能移动到其他子队列中。
在多级队列中,每个子队列都有一个从0到4的优先级。0被认为是高优先级,4被认为是低优先级。处于较高优先级子队列的进程将首先执行,然后所有处于低优先级子队列的进程将被执行,依此类推。
所有子队列都被分配一定的时间,然后CPU转移到另一个子队列并执行该子队列中的进程。
多级反馈队列调度:
在这个队列中,进程被放置在不同的子队列中,就像我们在多级队列调度中看到的那样。但是在这种调度中,如果进程等待的时间更长,则可以将其移到更高优先级的队列中。
这种调度遵循先到先得(FCFS)规则。
领取专属 10元无门槛券
私享最新 技术干货