操作系统导论 第七章 进程调度

本文深入探讨操作系统中的进程调度,分析了工作负载假设、调度指标,并详细讲解了先进先出(FIFO)、最短任务优先(SJF)、最短完成时间优先(STCF)和轮转(RR)调度策略。通过实例比较了不同策略在理想和非理想状态下的表现,揭示了响应时间和周转时间在调度中的重要性,以及I/O操作对调度的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第七章 进程调度

7.1 工作负载假设

在对进程调度策略进行探讨之前,我们先进行一些简化假设,这些假设与系统中运行的进程有关,被称之为工作负载。

  1. 每一个工作运行相同的时间
  2. 所有的工作同时到达
  3. 一旦开始,每个工作保持运行直到完成
  4. 所有工作只是用CPU
  5. 每个工作的运行时间是已知的

7.2 调度指标

为了衡量不同调度策略的优劣,我们需要定义一个指标,它将在接下来的讨论中发挥重要的作用。现在,我们把周转时间作为我们的指标,它的定义如下:

T周转时间 = T完成时间 - T到达时间

7.3 先进先出(FIFO)

理想状态下

我们先在工作负载的假设下,举一个简单的例子。

假设有三个任务A、B、C,他们在同时到达系统,到达时间设为0(T到达时间=0)

因为FIFO需要有工作的先来后到,我们假设到达顺序是A->B->C。

再假设A、B、C都运行相同的时间10s。

由以上假设我们得出,A在10s时完成,B在20s时完成,C在30s时完成,周转时间分别为10s,20s,30s。

则这三个任务的平均周转时间为

(10+20+30)/3=20

非理想状态下

现在,我们放宽一下假设1

  1. 每一个工作运行相同的时间

假设有三个任务A、B、C,到达时间和顺序不变。

A的运行时间为100s,B和C的运行时间为10s。

此时,只有A运行100s完成任务之后,才能运行B和C。

所以A的完成时间变为100s,B的完成时间变为100s+10s=110s,C的完成时间变为110s+10s=120s。

这时,这三个任务的平均周转时间为

(100+110+120)/3=110

分析

这样看起来,在理想状态下,FIFO策略还算合理,平均周转时间还在我们可以接受的范围内。

但是在非理想状态下,这样的平均周转时间相较于A的周转时间而言,是可以接受的,但相对于B和C的周转时间而言,却是难以忍受的。

这种问题被称为护航效应(convoy effert),一些耗时较少的潜在资源消费者被安排在重量级的资源消费者之后。

在现实生活中我们也会遇到这样的情况,比如在超市购物排队结账时,你

1. 实验目的 调度的实质是操作系统按照某种预定的策略来分配资源。进程调度的目的是分配CPU资源。由于进程调度程序执行的频率很高,因此调度算法的好坏直接影响到操作系统的性能。本实验的目的是编程模拟实现几种常用的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较各种算法的性能优劣。 2. 实验原理 [1]. 进程调度算法描述 进程调度算法包括先来先服务调度算法、最短作业时间优先(抢占式和非抢占式)、最高响应比调度算法4种。(每个人必须做FCFS,然后在后面的三种中任选一种,即每个人必须做2种调度算法的模拟。) [2]. 衡量算法性能的参数 计算进程的平均周转时间和平均带权周转时间。 3. 实验内容 (1)编程实现本实验的程序,要求: [1]. 建立进程进程控制块,进程控制块至少包括: a) 进程名称; b) 进程需要执行时间; c) 进入就绪队列时间; d) 进程执行开始时间 e) 进程执行结束时间 [2]. 编程实现调度算法。 [3]. 进程及相关信息的输入。这些信息可以直接从键盘上输入,也可以从文件读取。 [4]. 时间片与时间流逝的模拟。本实验需要对算法的执行计时,程序应该提供计算时间的方法。一种最简单的方法是使用键盘,比如每敲一次空格代表一个时间片的流逝。另一种方法是使用系统时钟。 [5]. 一组进程序列执行完毕,打印出结果信息。程序需要计算出每个进程的开始执行时间、结束时间、周转时间和带权周转时间,并为整个进程序列计算平均周转时间和平均带权周转时间。程序将计算结果按一定的格式显示在计算机屏幕上或输出到文件中。打印出进程调度顺序图。 [6]. 实现数据在磁盘文件上的存取功能。 (2)对下列就绪进程序列分别使用上面的几种算法进行调度,计算每种算法下的平均周转时间和平均带权周转时间。 进程号 到达时间 要求执行时间 0 0 1 1 1 35 2 2 10 3 3 5 4 6 9 5 7 21 6 9 35 7 11 23 8 12 42 9 13 1 10 14 7 11 20 5 12 23 3 13 24 22 14 25 31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值