📜  FCFS CPU 调度程序|设置 2(具有不同到达时间的进程)(1)

📅  最后修改于: 2023-12-03 14:41:09.956000             🧑  作者: Mango

FCFS CPU 调度程序 | 设置 2

FCFS(First Come First Serve)CPU 调度程序是操作系统中最简单的一种调度算法。这种算法按照进程的到达顺序依次调度进程。这意味着,如果一个进程进入到就绪队列的时间早于其他进程,它将首先被选中执行。在本文中,我们将介绍如何用 FCFS CPU 调度程序来处理两个具有不同到达时间的进程。

1. 题目描述

我们有两个进程:

  • 进程 1:到达时间为 0,需要执行的时间为 6。
  • 进程 2:到达时间为 2,需要执行的时间为 4。

我们需要用 FCFS CPU 调度程序对这两个进程进行调度,并输出它们的执行顺序。

2. 实现思路

首先,将两个进程按照他们的到达时间排序,进程 1 的到达时间为 0,进程 2 的到达时间为 2。因此,进程 1 将首先被执行。

执行进程 1 需要 6 个时间单位,因此,在执行完进程 1 之前,我们需要等待 6 个时间单位。在这个时候,进程 2 的到达时间已经过去了 6 个时间单位。因此,进程 2 可以立即执行,执行完成后,整个程序结束。

3. 代码实现

以下是一个用 Python3 实现的 FCFS CPU 调度程序,用于处理两个具有不同到达时间的进程。代码片段如下:

processes = [{'name': '进程 1', 'arrival_time': 0, 'burst_time': 6},
             {'name': '进程 2', 'arrival_time': 2, 'burst_time': 4}]

# Sort the processes according to their arrival time
processes.sort(key=lambda x: x['arrival_time'])

# FCFS scheduling algorithm
current_time = 0
for process in processes:
    # Wait for the process to arrive
    if process['arrival_time'] > current_time:
        current_time = process['arrival_time']
    # Execute the process
    print(f"{process['name']} 开始执行,执行时间:{current_time} ~ {current_time + process['burst_time'] - 1}")
    current_time += process['burst_time']

在这段代码中,我们首先定义了两个进程,并按照到达时间排序。然后,我们按照 FCFS 调度算法依次执行进程,并输出它们的执行顺序和时间范围。

运行这段代码,将输出以下结果:

进程 1 开始执行,执行时间:0 ~ 5
进程 2 开始执行,执行时间:6 ~ 9