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

news2024/10/5 16:22:03

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java EE|多线程之线程状态与线程安全

文章目录一、线程状态线程状态分类线程各状态剖析线程状态的转移二、线程安全线程不安全举例线程安全概念线程不安全的原因剖析Java标准库中的线程安全类与不安全类线程不安全问题的规避方案一:加监视锁方案二:加volatile关键字方案三:使用wa…

Mybatis框架,以 paramDTO对象集合形式进行批量查询。

在日常工作中&#xff0c;我们时常遇到数据库表中以 (name code) 为唯一索引&#xff0c; 在数据查询时需要根据这一组条件查询出表中唯一1条数据。 有时&#xff0c;我们的入参是 List<DTO> &#xff0c;需要进行批量查询数据。那么可以使用以下的SQL来进行数据的查询…

崔宝秋国际开源经验在小米开花 | 开源英雄

【编者按】崔宝秋的开源人生&#xff0c;来源于内心的真正热爱&#xff0c;和一路的升级打怪。从少时与计算机结缘到成为自由软件信徒&#xff0c;从IBM、雅虎、LinkedIn 到小米这一路走来&#xff0c;从一个开源的追随者成长为开源的推动者&#xff0c;小米的开源文化、丰硕的…

kettle工具连接elasticsearch 7并导入MySQL表数据-简述

一、简述 工作中需要利用kettle开源ETL工具将MySQL数据库中表数据同步到elasticsearch集群中。为此特记录一下操作方式&#xff0c;留作记录和学习。 二、环境 kettle工具&#xff1a;kettle 9.2 elasticsearch集群&#xff1a;7.11.1 集群配置信息&#xff1a; 集群名称&…

Linux-终端命令行

终端(Terminal)命令行仅仅是一个工具&#xff0c;对于命令有许多&#xff0c;而且随着嵌入式领域不断开发&#xff0c;命令会越来越多&#xff0c;我们只需要去了解常用的即可。 对于创建或删除一个文件夹&#xff0c;清理终端&#xff0c;下载文件等等都可以在终端命令行输入…

Nginx 进阶篇

文章目录Nginx 进阶篇五、 服务配置1、 配置成系统服务2、 配置环境变量六、 部署静态资源1、 概述2、 配置指令2.1 listen2.2 server_name2.3 location2.4 root2.5 alias2.6 index2.7 error_page3、 静态资源优化配置语法4、 静态资源压缩模块4.1 Gzip 模块配置指令4.2 配置实…

《Linux运维实战:Centos7.6基于ansible一键离线部署redis6.2.8容器版之哨兵集群》

一、部署背景 由于业务系统的特殊性&#xff0c;我们需要针对不同的客户环境部署redis 哨兵集群&#xff0c;由于大都数用户都是专网环境&#xff0c;无法使用外网&#xff0c;为了更便捷&#xff0c;高效的部署&#xff0c;针对业务系统的特性&#xff0c;我这边编写了基于ans…

唤醒手腕 Go 语言开发学习笔记(基本简介、环境安装)

1. Go语言简介 Go&#xff08;又称 Golang&#xff09;是 Google 的 Robert Griesemer&#xff0c;Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近&#xff0c;但功能上有&#xff1a;内存安全&#xff0c;GC&#xff08;垃圾回收&#xf…

Java中String类的常见问题

目录 Q1&#xff1a;为什么String类要定义成不可变类型&#xff1f; 方便String对象缓存HashCode值 字符串常量池的需要 衍生问题&#xff1a;String str new String("hello world") 创建了几个对象&#xff1f; 为了保障程序的安全性 Q2&#xff1a;String的…

2022年深度学习在时间序列预测和分类中的研究进展综述

时间序列预测的transformers的衰落和时间序列嵌入方法的兴起&#xff0c;还有异常检测、分类也取得了进步 2022年整个领域在几个不同的方面取得了进展&#xff0c;本文将尝试介绍一些在过去一年左右的时间里出现的更有前景和关键的论文&#xff0c;以及Flow Forecast [FF]预测…

解决Windows莫名其妙地从休眠状态唤醒的问题

因为经常写代码开很多个工作区&#xff0c;电脑经常就是合盖休眠&#xff0c;这样打开就能用&#xff0c;但是总是在我不经意的时候发现电脑风扇在狂转&#xff0c;不知道是哪个应用又在qj我的电源管理计划&#xff0c;今天午休发现电脑风扇狂转&#xff0c;打开发现是windows系…

c语言操作符(下)

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言初阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>: 讲解c语言中有关操作符的知识. 金句分享: ✨✨✨行程…

我用python写了个小病毒,老板再也不敢扣我工资啦

名字&#xff1a;阿玥的小东东 学习&#xff1a;python正在学习c 主页&#xff1a;阿玥的小东东 今天做个什么呢&#xff0c;我的好朋友提议做一个关机的代码吧&#xff0c;我这一想&#xff0c;对吼&#xff0c;我以前还做过一个关机代码呢&#xff0c;于是乎&#xff0c;今天…

时序收敛技巧之寄存器复制

1、何时需要复制寄存器&#xff1f; 在设计中的关键路径发现某个寄存器具有高扇出和高延迟时&#xff0c;使用寄存器复制是个不错的实现时序收敛的方法。下图是一个典型的例子&#xff1a; 可以看出&#xff0c;第一个寄存器的 IC(InterConnect) 延迟为 1.476ns&#xff0c;该寄…

seo站内优化的方法有哪些(站内优化和站外优化)

站内部优化什么意思 网站优化公司的内部优化意味着什么&#xff1f;网站内部优化&#xff0c;就是网站关键词优化、内容优化、内链优化等等&#xff0c;网站要有一定的排名和流量&#xff0c;要做到内部优化&#xff0c;要做到最快&#xff0c;最快的优化排名&#xff1f;接下…

「认知」打工人的自我修养

都说认知以外的钱难搞&#xff0c;那认知内的呢&#xff1f; 01互联网内卷年代&#xff0c;作为不着调的普通选手&#xff1b; 在诸多花里胡哨的黑话中&#xff0c;个人最待见的就是"认知"这个词&#xff1b; 认知&#xff0c;有强烈的抽象感&#xff1b; 想要深刻…

Mr. Cappuccino的第37杯咖啡——Kubernetes资源管理

Kubernetes资源管理kubectl常用的命令陈述式管理方法1. 创建一个namespace2. 查询所有namespace3. 在namespace下运行一个pod4. 查询指定namespace下的pod5. 查看指定pod的详细信息6. 删除pod7. 删除namespace声明式管理方法命令式对象配置1. 创建yaml文件2. 基于yaml文件创建资…

【JavaEE】多线程(初阶)

目录 Thread 线程的创建 线程的常见属性 中断线程 等待线程 休眠线程 线程的状态 多线程相比于单线程的优势 Thread 在Java中操作多线程&#xff0c;最常用的类就是Thread。 Thread 类是 JVM 用来管理线程的一个类&#xff0c;换句话说&#xff0c;每个线程都有一个唯一…

一网打尽带环链表问题(手把着手带你理解,木有基础也能看懂!)

目录 0.前言 1.认识带环链表 2.带环链表OJ问题简述 3.判断是否为带环链表 4. 寻找入环节点&#xff08;法一&#xff1a;数学推理的魅力&#xff09; 5. 寻找入环节点&#xff08;暴力拆解带环链表的魄力&#xff09; 6.番外&#xff1a;判断是否为带环链表(fast和slow的…

树上的DP

ACACAC来的如此之快&#xff0c;让我以为还要再调试几个点(h)&#xff0c;本文涉及思路参考&#xff1a;参考文章 嗯,这个题和思路让我对跨父节点的树上链有了一个认识&#xff0c;我们来看一下&#xff1a; 如果说&#xff0c;我们要对这样的一条链进行dpdpdp操作&#xff0c…