操作系统复习(二)

本文详细介绍了操作系统中的几种调度算法,包括先来先服务、非抢占式短作业优先、抢占式短作业优先、高响应比优先、时间片轮转以及多级反馈队列调度算法,分析了每种算法的工作原理和应用场景,帮助读者深入理解操作系统的任务调度机制。
摘要由CSDN通过智能技术生成

1、平均周转时间

        周转时间是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。

2、平均带权周转时间

         带权周转时间是指作业的周转时间与系统为它提供服务的时间之比

1、先来先服务算法

FCFS按照作业到达的先后次序进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短。

A进程先到达,服务时间为3,时间2处B到达,但因为是先来先服务,因此A继续运行,运行到3时刻A结束,B开始运行,运行过程中C、D依次到达,运行到6时刻B结束,C开始运行,之后依次运行D、E。

进程 A B C D E 平均
FCFS 到达时间 0 2 4 6 8
服务时间         3 6 4 5 2
完成时间 3 9 13 18 20
周转时间 3 7 9 12 12 8.6
带权周转时间 1 1.17 2.25 2.4 6 2.56

2、非抢占式短作业优先

        A作业首先到达,此时只有A在队列中,因此A先执行,运行到2s时B到达,但因为是非抢占式,因此A继续运行,第3s时A运行完,此时队列中只有B到达了,因此B运行,运行过程中C、D、E依次到达,但由于是非抢占式,因此B到第9s运行完。此时队列中有C、D、E作业,先运行谁呢?这时候就要考虑短作业优先原则,通过判断,作业E的服务时间最短为2,因此先运行E。运行完E后,再判断出C作业的服务时间最短为4,因此运行作业C,最后运行作业D。

进程 A B C D E 平均
SJF 到达时间 0 2 4 6 8
服务时间         3 6 4 5 2
完成时间 3 9 15 20 11
周转时间 3 7 11 14 3 7.6
带权周转时间 1 1.17 2.75 2.8 1.5 1.84

3、抢占式短作业优先

        A作业首先到达,运行2s后B到达,但B的服务时间为6s,A接下来的服务时间为1s,因此继续运行A,A运行完后开始运行B,B运行1s后到了第4s,此时C作业到达,B接下来的服务时间为5,而C作业的服务时间为4,因此优先运行C,B进入后备队列,C运行到第6s时D到达,但D的服务时间长,因此继续运行C,D进入后备队列,排在B后面,到第8s时C运行结束,E到达,此时E的服务时间最短,因此优先运行E。E运行结束后,因此此时B和D的服务时间相同,D排在B后面,所以先运行作业B,再运行作业D。

进程 A B C D E 平均
SJF 到达时间 0 2 4 6 8
服务时间         3 6 4 5 2
完成时间 3 15 8 20 10
周转时间 3 13 4 14 2 7.2
带权周转时间 1 2.16 1 2.8 1 1.59

4、高响应比优先

        响应比=(运行时间+等待时间)÷ 运行时间。

        比较时直接比较等待时间 ÷ 运行时间的大小即可。

        高响应比优先算法为非抢占式。

        A作业先到达,运行到第3s结束,B作业接着运行6s,到第9s结束,此时C、D、E都到达,此时需要判断优先运行谁,可以算出C的响应比为2.25,D的响应比为1.6,E的响应比为1.5,因此先运行C,C运行到第13s结束,此时可以算出D的响应比为2.4,E的响应比为3.5。因此先运行E,再运行D。

进程 A B C D E 平均
HRRN 到达时间 0 2 4 6 8
服务时间         3 6 4 5 2
完成时间 3 9 13 20 15
周转时间 3 7 9 14 7 8
带权周转时间 1 1.17 2.25 2.8 3.5 2.14

5、时间片轮转(时间片=1)

        时间片轮转法较为复杂,但认真分析,找到规律就会非常简单。

 这是我画的草图,大家可能看不太明白,我解释一下。

0s的时候作业A到达,进入就绪队列。

1s的时候,作业A在队首,将CPU分配给A执行。执行完后A立即进入回到队尾,但此时其他作业还未到达,因此A直接在队首。即A(此时A已经执行了1s时间)

2s的时候B到达,排在A进程的后面,因此2s的时候将CPU分配给A运行。执行完后A立即回到队尾,排在B进程后面。此时B在队首,A在队尾。即A  B(此时A已经执行了2s时间)

3s的时候,因为B在队首,因此将CPU分配给B执行。此时B后面是A进程,B执行完后立即回到队尾,排在A后面,那么此时A在队首,B在队尾。即B  A(此时B执行了1s时间)

4s的时候,C作业到达,排在队尾,即B的后面。A在队首,将CPU分配给A执行,因为A的服务时间为3,因此此次执行结束后A出队,因此A的完成时间为4。此时B在队首,C在队尾。即C  B(A执行了3s时间并出队)

5s的时候,B在队首,将CPU分配给B执行,执行结束后立即回到队尾,排在C的后面,此时C在队首,B在队尾。即B  C&#

  • 9
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
1. 实验目的 调度的实质是操作系统按照某种预定的策略来分配资源。进程调度的目的是分配CPU资源。由于进程调度程序执行的频率很高,因此调度算法的好坏直接影响到操作系统的性能。本实验的目的是编程模拟实现几种常用的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较各种算法的性能优劣。 2. 实验原理 [1]. 进程调度算法描述 进程调度算法包括先来先服务调度算法、最作业时间优先抢占和非抢占)、最高响应比调度算法4种。(每个人必须做FCFS,然后在后面的三种中任选一种,即每个人必须做2种调度算法的模拟。) [2]. 衡量算法性能的参数 计算进程的平均周转时间和平均带权周转时间。 3. 实验内容 (1)编程实现本实验的程序,要求: [1]. 建立进程的进程控制块,进程控制块至少包括: a) 进程名称; b) 进程需要执行时间; c) 进入就绪队列时间; d) 进程执行开始时间 e) 进程执行结束时间 [2]. 编程实现调度算法。 [3]. 进程及相关信息的输入。这些信息可以直接从键盘上输入,也可以从文件读取。 [4]. 时间片与时间流逝的模拟。本实验需要对算法的执行计时,程序应该提供计算时间的方法。一种最简单的方法是使用键盘,比如每敲一次空格代表一个时间片的流逝。另一种方法是使用系统时钟。 [5]. 一组进程序列执行完毕,打印出结果信息。程序需要计算出每个进程的开始执行时间、结束时间、周转时间和带权周转时间,并为整个进程序列计算平均周转时间和平均带权周转时间。程序将计算结果按一定的格显示在计算机屏幕上或输出到文件中。打印出进程调度顺序图。 [6]. 实现数据在磁盘文件上的存取功能。 (2)对下列就绪进程序列分别使用上面的几种算法进行调度,计算每种算法下的平均周转时间和平均带权周转时间。 进程号 到达时间 要求执行时间 0 0 1 1 1 35 2 2 10 3 3 5 4 6 9 5 7 21 6 9 35 7 11 23 8 12 42 9 13 1 10 14 7 11 20 5 12 23 3 13 24 22 14 25 31
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱学习的崔先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值