本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。
写在最前面
本文为个人完成操作系统课程相关习题时的总结和思考,大部分并未给出答案的精确数值;即使有,也仅为个人认为的结果,并不保证其正确性。后续我也将跟进这篇文章,并及时勘误。(所以这篇文章是交流思路而不是分享答案)
人对事物的认知过程是一个循序渐进、不断纠正已有错误认知的过程,也希望能有更多小伙伴能加入共同讨论,对其中的一些问题提出你的见解。
处理器调度类型及主要任务
多线程概念相关
- 题目:某操作系统不支持多线程机制,高级程序设计语言提供了用户级多线程库,请画出用户级线程与操作系统进程之间的状态转换图
- 思路:操作系统不支持多线程机制,说明在内核态没有多线程;但是高级程序设计语言可以通过在用户态模拟多线程。
如下图所示:
处理器调度算法相关
周转时间相关及其计算公式
在批处理系统中,周转时间(ti)是指:作业从提交到完成(得到最终结果)所需要的时间。
$$ ti=完成时间-进入队列时间\\ 平均周转时间=Σti/n \\ 带权周转时间Wi=ti/cpu执行时间(单个进程的完成时间-开始时间)\\ 平均带权周转时间=ΣWi/n $$
题目1:
- 题目描述:
某系统就绪队列中有10个进程,已知该系统处理间隔时钟中断需1ms,完成一次进程切换需9ms。若采用时间片轮转算法调度进程,时间片长度设为200ms,试计算系统在进程调度的过程中,轮转一次所花费的调度开销占该次进程调度总时间的多少?
- 思路:完成一次进程切换的总时间=间隔时间中断+一次进程切换=10ms
n:进程数 ;t:一次切换总时间;T:时间片长度 ;
$$ 占比=nt/n(t+T)=t/(t+T) $$
该值与具体的进程数无关。
题目2:
- 题目描述:
现有5个批处理作业A~E均已到达一台按单道方式执行的处理器,其运行时间分别为2 min、4 min、6 min、8 min和10min,各自的优先级分别规定为1、2、3、4和5,其中5是最高级。对于时间片轮转调度算法(时间片长度为2min)、优先数调度算法、最短作业优先调度算法、先来先服务调度算法(按作业到达次序C、D、B、E、A),在忽略进程切换时间的前提下,计算出平均作业周转时间。
时间片轮转调度算法(RR)
调度程序维护一张可运行进程列表,当一个进程用完它的时间片后,就被移到队列末尾。
该算法在交互式系统中尤为常见。
思路
- 这里的作业是同时到达的,那么第一轮获得时间片的先后顺序应该还是看优先级。第一轮的轮转顺序是:EDCBA,该轮结束后A完成;之后每轮结束后都有一个作业完成。
优先数调度算法
(本题中优先级5为最高级)
最短作业优先
刚好是上图的镜像对称
先来先服务
队列:
依次从队头轮到队尾
题目3:
- 题目描述:
在一个只支持三道程序同时运行的多道程序系统中,作业调度采用最短作业优先调度算法,进程调度采用以优先数为基础的抢占式调度算法。在下表所示的作业序列中,优先数即为进程优先数,优先数越小则优先级越高。
作业名 | 到达时刻 | 估计运行时间/min | 优先数 | |
---|---|---|---|---|
A | 10:00 | 40 | 5 | |
B | 10:20 | 30 | 3 | |
C | 10:30 | 60 | 4 | |
D | 10:50 | 20 | 6 | |
E | 11:00 | 20 | 4 | |
F | 11:10 | 10 | 4 |
试给出每个作业进入内存、运行结束的时刻,计算周转时间。
作业(job)和进程(process)的关系
作业相当于任务(task),进程类似于正在完成一个任务;作业是进程的载体,进程是作业的执行体。
从这个图来看,作业调度的时间范围比进程调度的大
(注:红线为作业调度,蓝线为进程调度)
思路
我的理解是:
- “只支持三道程序”:存储器队列最多只能有三个空位,其他暂时不能轮到被调度
(因为并行的本质也是cpu高速来回切换,并不是真的可以同时进行)
- “进程调度采用以优先数为基础的抢占式调度算法”:如果当前正在执行a,b到达并且优先级更高,则b可以抢占。
- “作业调度采用最短作业优先调度算法”:当一个进程结束,决定下一个时刻用哪个作业时,选择最短的那个。
基于此,我认为顺序是这样的:
题目4:
在一个只支持4道程序同时运行的多道程序系统中,若在一段时间内先后到达6个作业,其提交时刻和估计运行时间由下表给出。
作业 | 提交时刻 | 估计运行时间/min | |
---|---|---|---|
1 | 8:00 | 60 | |
2 | 8:20 | 35 | |
3 | 8:25 | 20 | |
4 | 8:30 | 25 | |
5 | 8:35 | 5 | |
6 | 8:40 | 10 |
系统采用SRTF调度算法,作业被调度进入系统后中途不会退出,但作业运行时可被剩余时间更短的作业所抢占。
①分别给出6个作业的开始执行时间、作业完成时间、作业周转时间。
②计算平均作业周转时间。
注意:请画出处理器分配的具体情况。
和上题类似,我认为顺序应该是:
依次标出各个对应时间点即可。