首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

操作系统中的进程和线程,CPU调度

在操作系统中,多个进程同时运行。一个进程中也可能有多个线程。例如,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)规则。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230425A0844X00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券