《操作系统导论》第七章 进程调度

本文通过具体实例对比了SJF(短作业优先)和FIFO(先到先服务)两种作业调度算法的响应时间和周转时间,并探讨了不同工作负载及时间片长度对这两种算法的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚读了操作《操作系统导论》第七章的内容,在这做一下课后练习题,虽然和考试内容关系不大,但是和课本上的概念还是想通的,读这本书也确实会学习到一些其他的思想和思考方法。

以下内容,属个人看法,可能不对,后期找到标准答案再改。

本章涉及到的一些基本概念:

  • 周转时间:任务完成的时间 - 任务到达的时间
  • 响应时间:任务第一次被执行的时间 - 任务到达的时间

当然平均周转时间和平均响应时间就不说了。

  1. Compute the response time and turnaround time when running three jobs of length 200 with the SJF and FIFO schedulers.

准确的来说应该是平均响应时间和平均周转时间。
SJF(短作业优先调度)
响应时间:(0+200+400)/3=200(0 + 200 + 400) / 3 = 200(0+200+400)/3=200
周转时间:(200+400+600)/3=400(200 + 400 + 600) / 3 = 400(200+400+600)/3=400
FIFO(先到先服务FCFS)
响应时间:(0+200+400)/3=200(0 + 200 + 400) / 3 = 200(0+200+400)/3=200
周转时间:(200+400+600)/3=400(200 + 400 + 600) / 3 = 400(200+400+600)/3=400

  1. Now do the same but with jobs of different lengths: 100, 200, and 300.

SJF(短作业优先调度)
响应时间:(0+100+300)/3≈133.33(0 + 100 + 300) / 3 \approx 133.33(0+100+300)/3133.33
周转时间:(100+300+600)/3≈333.33(100 + 300 + 600) / 3 \approx 333.33(100+300+600)/3333.33
FIFO(先到先服务FCFS),即使是同时到达,也有先后关系,不用纠结与这一点。
响应时间:(0+100+300)/3≈133.33(0 + 100 + 300) / 3 \approx 133.33(0+100+300)/3133.33
周转时间:(100+300+600)/3≈333.33(100 + 300 + 600) / 3 \approx 333.33(100+300+600)/3333.33

  1. Now do the same, but also with the RR scheduler and a time-slice of 1.

时间片为1
响应时间:(0+1+2)/3=1(0 + 1 + 2) / 3 = 1(0+1+2)/3=1
周转时间:(298+400+501)/3≈399.67(298 + 400 + 501) / 3 \approx 399.67(298+400+501)/3399.67
显然,使用轮转调度算法显著提高了系统的响应时间,但是周转时间表现的很差。

  1. For what types of workloads does SJF deliver the same turnaround times as FIFO?

任务按照运行时间的长短进行顺序到达

  1. For what types of workloads and quantum lengths does SJF deliver the same response times as RR?

任务总是当上一个任务完成后到达或者说一个时间片的长度足以完成一项任务。

  1. What happens to response time with SJF as job lengths increase? Can you use the simulator to demonstrate the trend?

假设初始三个任务的长度分别为100,200,300,同时到达。
如果任务的时间增长呈线性的话,那么SJF的响应时间也是呈线性增长的。
在这里插入图片描述

  1. What happens to response time with RR as quantum lengths increase? Can you write an equation that gives the worst-case response time, given N job

响应时间是逐渐增加的。
时间片:rrr
时间片按照线性增长,假设为:r=f(x)=k∗x;k>0,x=1,2,...,∞r = f(x) = k*x;k > 0, x = 1,2,...,\inftyr=f(x)=kx;k>0,x=1,2,...,
N个任务:[N1,N2,...,Nn][N_1, N_2,...,N_n][N1,N2,...,Nn]
N该任务对应的执行时间:[T1,T2,...,T3][T_1, T_2,...,T_3][T1,T2,...,T3]
响应时间:responseTime=∑i=1nr∗(i−1)responseTime=\sum_{i=1}^{n}{r*(i-1)}responseTime=i=1nr(i1)
所以响应时间随时间片的增长的函数关系:
f(r)=∑i=1n(r∗(i−1))=n∗(n−1)∗r/2 f(r) = \sum_{i=1}^{n}{(r*(i-1))}=n*(n-1)*r/2 f(r)=i=1n(r(i1))=n(n1)r/2
从上面的方程中可以看出,随着r的增长,f®也是增长的,但是增长的速度和任务的数量也有关系。
但是我感觉这问题有点奇怪,时间片调度的响应时间应该是平均的,

关于《操作系统导论第七章的答案,目前并未提供具体的 PDF 文件链接或相关内容。然而,可以基于已知的信息构建一些可能的回答方向。 通常情况下,《操作系统导论》这类教材的第七章可能会涉及进程管理、内存分配策略或其他高级主题。如果具体问题是围绕这些领域展开,则可以从以下几个方面入手: ### 可能的主题范围 #### 进程调度算法分析 假设第七章讨论了常见的进程调度算法(如先来先服务 FCFS、最短作业优先 SJF 或者轮转法 Round Robin),那么解答可能需要计算平均等待时间或者周转时间[^1]。 ```python def calculate_average_waiting_time(processes, burst_times): n = len(processes) waiting_times = [0] * n # 计算每个进程的等待时间 for i in range(1, n): waiting_times[i] = burst_times[i - 1] + waiting_times[i - 1] average_waiting_time = sum(waiting_times) / n return average_waiting_time ``` 上述代码片段展示了如何通过给定的一组进程及其执行时间来求解平均等待时间。 #### 内存分页机制探讨 如果是有关虚拟存储器以及页面置换算法的内容,比如 FIFO、LRU 和 OPT 的比较研究,则可参照如下逻辑进行推演并得出结论[^2]: | 页面访问序列 | 已有框架数 (Frames) | |--------------|----------------------| | ... | | 对于特定条件下的最优方案选择问题,例如当可用物理内存大小固定时能够容纳的最大对象数量等问题,可以直接套用类似下面这样的公式完成定量评估: \[ \text{最大支持容量}=\frac{\text{总空间}-\sum_{i=1}^{k}\text{(其他开销)}} {\text{单个实例所需资源}} \] 其中 \( k \) 表示额外消耗项数目。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值