C 语言 FCFS 程序

2024年8月28日 | 阅读 4 分钟

什么是 CPU 调度?

对进程和活动进行调度,以按时完成任务。CPU 调度是一种方法,它通过允许一个进程运行而另一个进程由于缺乏任何资源(例如 I/O 等)而被延迟(处于待机状态)来最大限度地利用 CPU。CPU 调度用于提高系统的有效性、速度和公平性。

每当 CPU 空闲时,操作系统都必须从就绪进程列表中选择一个进程。临时(CPU)调度程序执行此选择。调度程序选择一个准备启动的内存进程来获取 CPU。

在本文中,我们将讨论 FCFS 调度算法。

目的是使用 FCFS 调度算法,在给定 n 个进程及其突发时间的情况下,确定平均等待时间和平均周转时间。最简单的调度技术是先进先出 (FIFO),通常称为先来先服务 (FCFS)。进程只是按照它们进入就绪队列的顺序使用 FIFO 进行排队。

使用的术语

  • 执行完成后,即完成时间。
  • 周转时间:周转时间通过将突发时间和等待时间相加来计算。
  • 等待时间:进程在接收 CPU 并开始执行之前必须等待的时间量称为等待时间。

在此,第一个过程将首先执行,后续过程将不会开始,直到第一个过程完全执行完毕。

在这里,我们假设所有进程同时到达,或者说到达时间为零。

如何使用软件计算下面的轮询时间?

  • 进程执行结束的时间。
  • 周转时间是完成时间和到达时间之间的时间间隔。周转时间 = 到达时间 - 完成时间。
  • 等待时间 (W.T):突发时间和周转时间之间的时间间隔。
  • 周转时间减去突发时间等于等待时间。

实施

  1. 在第一步中输入进程及其突发时间 (bt)。
  2. 计算每个步骤的等待时间 (wt)。
  3. 由于第一个进程无需等待,因此进程 1 的等待时间将为零,即 wt[0] = 0。
  4. 确定所有其他进程的等待时间,即对于进程 I,wt[i] = bt[i-1] + wt[i-1]。
  5. 将等待时间 + 突发时间计算为每个进程的周转时间。
  6. 计算平均延迟时间如下:总等待时间 / 进程数。
  7. 计算平均周转时间如下:总周转时间 / 进程数。

程序代码

输出

Processes  Burst time  Waiting time  Turn around time
 1                   10                    0                         10
 2                    5                     10                       15
 3                   8                      15                       23
Average waiting time = 8.33333
Average turn around time = 16
................................................................................................
Process executed in 2.11 seconds
Press any key to continue.

注意

  1. 非抢占式
  2. 平均等待时间不是一个好主意。
  3. 无法并发使用资源:导致护航效应(考虑一个场景,其中有几个 I/O 密集型进程和一个 CPU 密集型进程。当 CPU 密集型进程获取 CPU 时,I/O 密集型进程必须等待它。如果 I/O 密集型活动在切换到 I/O 设备之前先使用 CPU 一段时间会更好。