【操作系统实验/Golang】实验1:进程调度(FCFS, SJF, RR)

该实验设计了程序来模拟FCFS(先来先服务),SJF(短作业优先)和RR(时间片轮转)三种进程调度算法。通过输入进程的到达时间、服务时间和时间片大小,程序计算并比较了各种算法下的周转时间、带权周转时间和等待时间,以及平均值。实验结果显示,不同算法对平均周转时间和等待时间有显著影响。
摘要由CSDN通过智能技术生成

1 实验问题描述

设计程序模拟进程的先来先服务FCFS、短作业优先SJF和时间片RR算法的调度过程。假设有n个进程分别在T1, … ,Tn时刻到达系统,它们需要的服务时间分别为S1, … ,Sn。如果选择RR算法,还需要指定时间片大小q。

分别采用三种进程调度算法进行调度,计算每个进程的完成时间,周转时间、带权周转时间和等待时间,并且统计n个进程的平均周转时间、平均带权周转时间和平均等待时间。最后,对三个算法做出比较评价。

程序要求如下:

  1. 采用FCFS、SJF和RR算法分别模拟进程调度过程,计算每个进程的周转时间,带权周转时间和等待时间,并且计算所有进程的平均周转时间,带权平均周转时间和平均等待时间;

  1. 输入
    进程数n,进程编号,以及每个进程的到达时间T1, … ,Tn和服务时间S1, … ,Sn。在屏幕上要以表的形式显示输入的信息,如:

Process Num.

Arrival Time

CPU Burst

---------

---------

---------

也可以以文件形式存储上述信息,在程序运行时从文件中读取数据并显示如上表的输入信息。此外,RR算法还要求输入时间片大小q。

根据显示信息:“1-FCFS,2-SJF,3-RR”,选择0、1或者2进入对应的算法过程。

  1. 输出:

  1. 要求模拟整个调度过程,输出每个时刻的进程运行状态,如:

Process Num.(pid)

Start Time(st)

End Time(et)

Ready Queue(rq)

---

---

----

----

---

---

----

----

  1. 要求输出计算出来的每个进程的周转时间,带权周转时间和等待时间,如:\

Process Num.(pid)

Turnarround Time(tt)

WeightedTurnarround Time(wtt)

Waiting Time(wt)

Arrival Time

CPU Burst

0

---

---

---

---

---

1

---

---

---

---

---

  1. 要求输出所有进程的平均周转时间,带权平均周转时间和平均等待时间。如:
    Algorithm: ---------------
    Average TAT: ---------------
    Average WTAT: ---------------
    Average WT: ---------------

2 测试数据

  1. 测试数据1:

n = 5, q = 2或4

pid

ArrivalTime

ServiceTime(CPU Burst)

0

0

6

1

1

2

2

2

5

3

3

9

4

4

8

  1. 测试数据2:

n = 5, q = 2或10

pid

ArrivalTime

ServiceTime(CPU Burst)

0

0

5

1

1

7

2

3

3

3

4

8

4

6

2

3 流程图

3.1 FCFS

3.2 SJF

3.3 RR

4 实验结果

4.1 测试数据1

4.1.1 FCFS

4.1.2 SJF

4.1.3 RR

  1. q=2

  1. q=4

4.2 测试数据2

4.2.1 FCFS

4.2.2 SJF

4.2.3 RR

  1. q=2

  1. q=10

4.3 实验结果汇总

  1. 测试数据1:

Algorithm

AvgTAT

AvgWTAT

AvgWT

FCFS

13.80

2.41

7.80

SJF

13.60

2.37

7.60

RR

q = 2

18.00

2.82

12.00

q = 4

19.20

3.15

13.20

  1. 测试数据2:

Algorithm

AvgTAT

AvgWTAT

AvgWT

FCFS

13.20

3.69

8.20

SJF

10.20

1.92

5.20

RR

q = 2

15.80

3.42

10.8

q = 10

13.20

3.69

8.20

5 实验代码

请见GitHub。

OS-Experiments/exps_1_updated at main · Jackkee27/OS-Experiments

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值