文章目录
选择与填空
- 影响时间片大小选择的主要因素有3个: (p92)
解析: (1). 系统对响应时间的要求: 系统响应时间与进程数和时间片大小成正比, 因此在系统允许的最大进程数一定的情况下, 时间片的长短取决于系统要求的响应时间. 响应时间越短, 时间片的取值应该越小.
(2). 就绪队列中的进程数量: 系统进程数给定的情况下, 那么进程越多, 响应时间越长, 因此当设定了最长响应时间值后, 时间片大小与系统允许的最大进程数成反比.
(3). 系统的处理能力. - 关于多级队列调度算法正确的是: 各就绪队列的调度算法和优先权都可能不相同(p93)
- 某系统中有4个并发进程, 都需要同类资源3个, 那么该系统不会发生死锁的最少资源数是:
9个
解析:4个并发进程, 每个进程预分配 2个资源, 最后一个可用资源, 可以轮流使用, 因此24+1 = 9个
因此, 可以总结出公式: M个并发进程, 都需要同类资源N个, 最少资源数为M(N-1)+1个 - FCFS(先来先服务)算法适合
长进程
, 不利于短进程
(p89 <张琼声编著的操作系统概论 2017年版, 书后答案本题有误>) - 采用基于静态优先权的调度算法, 若不断有高优先权进程进入就绪队列, 低优先权进程可能进入
饥饿
状态. 银行家
算法是用来避免死锁的算法.- S为死锁状态的
充分
条件是:当且仅当S状态的资源分配图是不可完全简化
的
简答题.
1. 进程调度的功能是什么?时机是什么?(p88)
- 功能:
- 进程调度功能是由操作系统内核的进程调度程序完成, 是按照某种策略和算法从就绪状态进程队列中为当前空闲CPU选择在其上运行的新进程.
- 时机:
- 当一个进程结束, 进程阻塞, 中断返回, 更高优先级的进程到来, 时间片用完, 系统都会发生调度
2. 什么是时间片轮转调度算法?(p92)
- 在时间片轮转算法中, 进程需要在CPU上运行的时间总数(这里称为时间区间),或小于一个时间片,或大于一个时间片. 对于进程的时间区间小于时间片的情况, 进程在CPU上运行结束后, 进程本身会释放CPU. 然后由操作系统调度为另一个就绪进程分配CPU. 对于进程的时间区间大于一个时间片的情况, 进程可能需要若干个时间片.每当进程在CPU上连续运行的时间等于一个时间片长度时, 操作系统在时钟中断处理过程中就会抢占CPU. 进行进程切换, 用新的就绪进程替代当前进程,被替换的当前进程重新回到就绪队列中.
3. 什么多级队列调度算法?(p93)
- 将就绪队列分成多个独立队列, 根据进程的某些属性, 如需要占用的内存大小, 进程优先权或进程类型, 进程会被永久分配到一个队列, 每个队列有自己的调度算法, 不的队列的优先权不同, 调度算法也可能不同.
4. 什么是自调度方式? 自调度有什么优缺点?(p100)
- 采用自调度的系统中设置一个公共的就绪队列, 任何一个空间的处理器都可以自行从该就绪队列中选取一个进程或线程运行.
- 优点
- 易移植
- 有利于提高CPU的利用率
- 缺点
- 瓶颈问题.
- 低效性
- 线程切换频繁
5. 什么是死锁? 引起死锁的原因是什么?(p101)
- 如果一个进程所申请的资源被其他处于阻塞状态的进程占有, 该进程就会因为不能获得所申请的资源被阻塞. 若此时该进程恰好又占有了前述进程的所需要的资源, 那么这一组进程就可能因为等待释放自己所需要但被其它进程已占用的资源而无法向前推进, 这种由于多个进程竞争共享资源而引起的不进程不能向前推进的僵死状态, 称为死锁.
- 原因:
竞争共享资源且分配资源的顺序不当.
简单应用
考虑下面的一个系统在某一时刻的状态, 如表所示
进程名称 | allocation;(ABCD) | Max(ABCD) | Available (ABCD) |
---|---|---|---|
p0 | 0012 | 0012 | 1520 |
p1 | 1000 | 1750 | |
p2 | 1354 | 2356 | |
p3 | 0632 | 0652 | |
p4 | 0014 | 0656 |
使用银行家算法回答下列问题.
- need矩阵的内容是怎样的?
- p0进程已经有0,0,1,2, 最多需求是0,0,1,2, 所以need = max-allocation = 0-0, 0-0, 1-1, 2-2,也就是0, 0, 0,0
- 同理, p1进程就是1-1, 7-0, 5-0, 0-0, 也就是0, 7, 5, 0
- p2进程就是2-1, 3-3, 5-5, 6-4, 也就是1, 0,0,2
- p3进程就是0-0, 6-6, 5-3, 2-2, 也就是0,0,2,0
- p4就是0-0, 6-0, 5-1, 6-4,也就是0, 6, 4, 2
- 系统是否处于安全状态?106
课本中有算法公式, 我看不习惯, 所以用文字描述,
下列是个安全检测过程:
p0 需求0, 0, 0, 0资源, 可以运行, 完后成释放0, 0, 1, 2, 此时空闲1+0, 5+0, 1+2, 2+0, 也就是1, 5, 3, 2
此时p2进程申请1, 0,0 ,2资源后, 空闲资源为:0, 5, 3, 0, 运行完成,释放0+2, 5+3, 3+5, 0+6 , 也就是2, 8,8, 6
此时p3进程申请0, 0, 2,0资源, 空闲2-0, 8-0, 8-2, 6-0, 运行完成后, 释放2+0, 8+6, 6+5, 6+2, 也就是2, 14, 11, 8
此时p4进程申请0, 6, 4, 2资源, 空闲2-0, 14-6, 11-4, 8-2 运行完后, 释放2+0, 8+6, 7+5, 6+6, 也就是2, 14, 12, 12,
此时p1进程申请0, 7, 5, 0 资源,可以完全满足运行
至此, 找到安全序列< p0 - p2- p3 - p4 - p1>, 所以此时系统处于安全状态. - 如果p1提出资源请求(0,4,2,0), 这个请求能否立刻被满足?