操作系统笔记整理4——处理机调度与死锁(1)

点此链接可跳转到:操作系统笔记整理——目录索引页

参考书籍:《计算机操作系统》第四版 汤小丹等编著

处理机调度的层次

1.高级调度(作业调度)
从外存后备队列中选择作业进入内存就绪队列
2.中级调度(交换调度)
在内存和外存对换区之间按照给定的策略选择进程对换
3.低级调度(进程调度)
从就绪队列中选择一个进程来执行并由分派程序分配处理机
是OS中最基本的调度
在这里插入图片描述
CPU的利用率= C P U 有 效 工 作 时 间 C P U 有 效 工 作 时 间 + C P U 空 闲 等 待 时 间 \frac{CPU有效工作时间}{CPU有效工作时间+CPU空闲等待时间} CPU+CPUCPU
周转时间=结束时间-到达时间
带权周转时间= 周 转 时 间 系 统 服 务 时 间 \frac{周转时间}{系统服务时间}
带权周转时间越小越好

作业调度

作业:作业是把命令、程序和数据按照预先确定的次序结合在一起,并提交给系统的一个组织单位。
作业控制块JCB是作业在系统中存在的唯一标志
作业运行时首先被调度进入内存,并以进程的形式存在,其状态是执行状态,处于执行状态的作业可以有多个,处于执行状态的作业并不意味着一定在CPU上运行,是否运行依赖于进程控制。

先来先服务调度算法FCFS

按进程(作业)进入就绪(后备)队列的先后次序来分配处理机(为期创建进程)
在这里插入图片描述
特点:简单,但效率不高,有利于CPU繁忙型作业,不利于I/O繁忙型作业

短作业优先调度算法(SJF)

用于作业调度,主要任务是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存
类似地,用于进程的是短进程优先调度算法(SPF)
在这里插入图片描述
能有效降低作业的平均等待时间和平均周转时间,提高了吞吐量,但是对长作业不利,没有考虑作业的紧迫程度,作业执行时间、剩余时间仅为估计。

优先级调度算法(PSA)

PSA:Priority scheduling algorithm
以作业的紧迫程度为优先级
静态优先级:优先权在创建进程时确定,且在整个运行期间保持不变
动态优先级:在进程的存在过程中不断发生变化

高响应比优先算法(HRRN)

HRRN:Highest response ratio next
高响应比优先算法既考虑了作业的等待时间,也考虑的作业的运行时间,是是一种动态优先级调度算法
优先权= 等 待 时 间 + 要 求 服 务 时 间 要 求 服 务 时 间 \frac{等待时间+要求服务时间}{要求服务时间} +

例题
在这里插入图片描述

进程调度

任务:保存处理机的现场信息、按某种算法选取进程、把处理机分配给进程

最短剩余时间调度算法(SRT (Shortest Remaining Time))

最短剩余时间调度算法是针对SPF(短进程优先)增加了抢占机制的一种调度算法
它总是选择预期剩余时间最短的进程。只要新进程就绪,且有更短的剩余时间,调度进程就可能抢占当前正在运行的进程。
在这里插入图片描述

时间片轮转调度算法(RR)

系统将所有就绪进程按FCFS的原则,排成一个队列依次调度,把CPU分配给队首进程,并令其执行一个时间片,通常为10-100ms,时间片用完后,系统的计时器发出时钟中断,该进程将被剥夺CPU并插入就绪队列末尾

进程切换时机
1.一个时间片尚未用完进程便已完成,立即在调度就绪队列中队首进程运行,并启动一个新的时间片
2.如果在一个时间片用完时进程尚未运行完毕,则剥夺CPU,调度程序把它送完就绪队列的末尾。

响应时间T=时间片q*就绪队列进程数n

例:一个分时OS,10个终端,时间片100ms,每个用户的请求进程要300ms的时间处理,问终端用户提出二次请求的时间间隔最少是多少?
响应时间=100ms*10=1s,每个用户的请求要3个时间片才能处理完,要轮转3次,所以终端用户的二次请求的时间间隔最少应为2.1s~3s

在这里插入图片描述
在这里插入图片描述

优先级调度算法

非抢占
在这里插入图片描述
抢占
在这里插入图片描述

多级队列调度算法

将就绪队列划分成若干个独立的队列,每个作业固定地分属一个队列,不同的队列可以采用不同的调度算法

多级反馈队列调度算法

FCFS+优先级+RR+抢占
1.设置多个就绪队列,队列1的优先级最高,其余队列逐个降低
2.每个队列中进程执行的时间片大小各不相同,进程所在队列的优先级越高,时间片就越短
3.新进程进入系统,先放入队列1的末尾,按FCFS调度,若能完成则撤离系统,反之调入队列2,按FCFS调度,如此下去,最后进入队列n按RR算法调度
4.仅当队列1为空时,才调度队列2中的进程运行。若一个队列中的进程正执行,此时有新进程进入高级队列,则新进程抢占运行,原进程移至本队队尾。
在这里插入图片描述

实时调度

实时调度的基本条件:
1.提供必要的调度信息
2.系统处理能力强
3.采用抢占式的调度机制
4.具有快速切换机制

限制条件

m:实时任务数;Ci:每次处理时间;Pi:周期时间
单处理机: ∑ i = 1 m C i P i \sum_{i=1}^{m}\frac{Ci}{Pi} i=1mPiCi≤1
多处理机: ∑ i = 1 m C i P i \sum_{i=1}^{m}\frac{Ci}{Pi} i=1mPiCi≤N(N:处理机数目)

最早截止时间优先算法(EDF)

非抢占式
用于非周期实时任务
在这里插入图片描述
抢占式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最低松弛度优先算法

低松弛=高紧急
紧急度越高,优先级越高
算法采用抢占调度方式
松弛度=必须完成时间-本身剩余运行时间-当前时间

优先级倒置

优先级倒置现象:高优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞。

例如:有三个完全独立的进程 Task A、Task B 和 Task C,Task A 的优 先级最高,Task B 次之,Task C 最低。Task A 和 Task C 共享同一个临 界资源 X。
在这里插入图片描述
根据优先级原则,高优先级进程优先执行。但此例中 Task A 和 Task C共享同一个临界资源,出现了不合理的现象。
高优先级进程 Task A 因低优先进程 Task C 被阻塞,又因为低优先进程Task B的存在延长了被阻塞的时间。

解决方法:

  1. Priority Ceiling
    进程 Task C 在进入临界区后,Task C 所占用的处理机就不允许被抢占。 这种情况下,Task C 具有最高优先级(Priority Ceiling)。
    如果系统中的临界区都较短且不多,该方法是可行的。反之,如果 Task C 临界区非常长,则高优先级进程 Task A 仍会等待很长的时间,其效果无法 令人满意。
    在这里插入图片描述
  2. Priority Inheritance
    当高优先级进程 Task A 要进入临界区使用临界资源 X 时,如果已经有一个 低优先级进程 Task C 正在使用该资源,可以采用优先级继承(Priority Inheritance)的方法。
    此时一方面 Task A 被阻塞,另一方面由 Task C 继承 Task A 的优先级,并 一直保持到 Task C 退出临界区。
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值