FCFS实现较简单:
1.按照时间先后到达顺序,进行进程对列的构造
2.有的时候一个进程处理结束但是后一个进程还未到,则后一个进程的完成时间=进程到达时间+进程服务时间
SJF实现有许多细节要注意:终于有用到for...else结构了
1.第一个是最早到达的进程,而不管他是否服务时间最短
2.后面的进程选取服务时间最短的
2.1:有可能进程处理完成后,后面服务时间最短的进程还未到达,则选取其他已经到达且服务时间最短的,我这里实现的是已经到达的进程中的第一个,不一定是服务时间最短的,也不一定是最早的
2.2:没有则等待服务时间最短的到达(但是还有比他更早到达的呢,这个算法应该要是动态的,但是实现好难)
"""
from multiprocessing import Process
import time
import datetime
import os
"""
import random
import functools
n = int(input('please input process num:'))
MaxNum = 100 # 最大进程数
Pid_queue = [] # 进程队列
Pid_set = [] # 进程集
ArrivalTime = random.sample(range(n), n) # 到达时间
ServiceTime = random.sample(range(1, 13), n) # 服务时间
FinishTime = [] # 完成时间
WholeTime = [] # 周转时间
WeightWholeTime = [] # 带权周转时间
Average_WT_FCFS, Average_WT_SJF = 0, 0 # 平均周转时间
Average_WWT_FCFS, Average_WWT_SJF = 0, 0 # 平均带权周转时间
absolute_first_index

本文介绍了计算机操作系统中两种基本的进程调度算法:先来先服务(FCFS)和最短作业优先(SJF)。FCFS算法按照进程到达的先后顺序进行调度,如果前一进程完成后,后一进程未到达,则等待其到达。SJF算法则优先选择服务时间最短的进程,但实际实现时可能涉及多个细节,如等待服务时间最短的进程尚未到达的情况。
最低0.47元/天 解锁文章
1850

被折叠的 条评论
为什么被折叠?



