当前位置: 首页 > news >正文

操作系统-处理机调度和死锁进程同步

1.  处理机调度的层次
(1)  高级调度(high level scheduling)又称为长程调度或作业调度,它的调度对象是作业, ,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进 程、分配必要的资源,并将它们放入就绪队列。主要用于多道批处理系统中
(2)  低级调度(low level scheduling)又称为短程调度或进程调度,其所调度的对象是进程. 决定就绪队列中的哪个进程应获得处理机,并由分派 程序将处理机分配给被选中的进程。低级调度是最基本的一种调度,在多道批处理、分时和实时这3种系统中,都必须配置这种调度
(3)  中级调度(intermediate scheduling)又称为内存调度。引入中级调度的主要目的是提高内存利用 率和系统吞吐量。由中级调度来决定把外存上 的那些已具备运行条件的就绪进程再重新调入内存,并修改它们的状态为就绪状态,挂在就绪队列 上等待。

2.  作业和作业调度
(1)  作业控制块: 每个作业设置了一个作业控制块(job control block,JCB),它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度所需的全部信息。
(2)  作业调度的主要任务是,根据JCB中的信息,检查系统中的资源能否满足作业的需求,以及按照一定的调度算法从外存的作业后备队列中选取某些作业调入内存,并为它们创建进程和分配必要的资源。
a)  在每次进行作业调度时,应当从后备队列中选取多少作业调入内存,取决于多道程序度,其表示允许多少个作业同时在内存中运行。
b)  应选择后备队列中的哪些作业调入内存,取决于所采用的调度算法。
(3)  进程调度任务:
a)  保存CPU现场信息。在进行进程调度时,首先需要保存当前进程的CPU现场信息
b)  按某种算法选取进程。
c)  把CPU分配给进程
(4)  进程调度机制
a)  排队器。为了提高进程调度的效率,应事先将系统中的所有就绪进程,按照一定的策略排成一个或多个队列,以便调度程序能最快地找到它们
b)  分派器。分派器将进程调度程序所选定的进程从就绪队列中取出,然后进行从分派器到新选进程间的上下文切换,以将CPU分配给新选进程。
c)  上下文切换器。OS将保存当前进程的上下文, 把新选进程的CPU现场信息装入CPU的各个相应寄存器中

3.  处理机调度算法的目标
(1)  批处理系统中处理机调度算法的目标:
a)  平均周转时间短, 均周转时间是指从作业被提交给系统开始到作业完成为止的这段时间间隔
b)  系统吞吐量高。
c)  处理机利用率高。
(2)  分时系统中处理机调度算法的目标
a)  保证响应时间快。
b)  保证均衡性。(所谓均衡性是指,系统响应时间的快慢应 与用户所请求服务的复杂性相适应)
(3)  实时系统中处理机调度算法的目标
a)  保证满足截止时间的要求
b)  保证可预测性

4.  算法调度
(1)  先来先服务


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


(3)  优先级调度算法
a)  静态
i.  非抢占式优先级调度算法。该算法规定,一旦把处理机分配给就绪队列中优先级最高的进程,该进程便会一直执行下去直至完成
ii. 抢占式优先级调度算法。只要出现了另一个优先级更高的进程,调度程序就会将处理机分配给新到的优先级更高的进程。
b)  高响应比


(4)  轮转调度算法
系统会将所有的就绪进程按FCFS策略排成一个就绪队列。系统可设置每 隔一定时间(如30ms)便产生一次中断,去激活进程调度程序进行调度,把处理机分配给队首 进程,并令其执行一个时间片。当它运行完后,再把处理机分配给就绪队列中新的队首进程, 同样地让它也执行一个时间片。
(5)  最早截止时间优先算法
在该例中有两个周期实时任务,任务A 和任务B的周期时间分别为20ms和50ms,每个周期的处理时间分别为10ms和25ms。


(6)  最低松弛度优先算法
松弛度=必须完成时间-其本身的运行时长-当前时间

5.  死锁概述
(1)  可重用资源: 可重用资源是一种可供用户重复使用多次的资源①每个可重用资源 中的单元,只能分配给一个进程使用,而不允许多个进程共享。②系统中每类可重用资源中的单元数目是相对固定的,进程在运行期间 既不能创建资源,也不能删除资源。
(2)  可消耗资源: 又称为临时性资源,它是在进程运行期间由进程动态创建和消耗的
(3)  可抢占资源是指,某进程在获得这类资源后,这类资源可以再被其他进程或系统抢占。
(4)  不可抢占资源是指,一旦系统把这类资源分配给某进程后,就不能将它强行收回,而只能 在进程用完后等待其自行释放。

6.  死锁
(1)  死锁: 在一组进程发生死锁的情况下,这组死锁进程中的每个进程都在等待另一个死锁进程 所占有的资源
(2)  产生死锁的必要条件: 互斥条件,请求和保持条件, 不可抢占条件,循环等待条件
(3)  死锁的预防:
a)  破坏"请求和保持"条件:
i.  第一种协议: 该协议规定,所有进程在开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源. ①资源被严重浪费,严重地 降低了资源利用率②进程经常会发生饥饿现象。
ii. 第二种协议: 该协议是对第一种协议的改进,它允许一个进程只获得运行初期所需的资源后,便开始运 行。进程运行过程中再逐步释放已分配给自己的、且已用毕的全部资源,然后再请求新的所需资源。
b)  破坏"不可抢占"条件: 当一个已经保持了某些不可抢占资源的进程提出新的资源请求而不能得到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请
c)  破坏"循环等待"条件: 一个能保证"循环等待"条件不成立的方法是,对系统的所有资源类型进行线性排序,并 赋予它们不同的序号。规定每个进程必须按 序号递增的顺序请求资源
(4)  死锁避免
安全状态: 允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此 次资源分配的安全性。所谓安全状态,是系统能按某种进程推进顺序(P1, P2, …, Pn),为每个进程 Pi分配其所需的资源,直至满足每个进程对资源的最大需求,进而使每个进程都可顺利完成的一 种系统状态。此时,称进程推进顺序(P1, P2, …, Pn)为安全序列。
(5)  利用银行家算法避免死锁
假定系统中有5个进程{P0, P1, P2, P3, P4}和3类资源{A, B, C},各类资源的数量分别为10、5、 7,在t0时刻的资源分配情况如图3-17所示。


(6)  死锁的检测
在资源分配图中找出一个既不阻塞又非独立的进程节点Pi。消去Pi的请求边和 分配边,使之成为孤立的节点。在进行一系列的简化后,若能消去图中所有的边,使所有的进程节点都成为孤立的节点,则称该图是可完全简化的;若不能通过任何过程使该图完全简化,则称该图是不可完全简化的


(7)  死锁的解除:
a)  终止所有死锁进程
b)  逐个终止死锁进程

7.  两种形式的制约关系
(1)  间接相互制约关系(互斥关系)用户在要使用这类资源之前应先提出申请,而不能直接使用。
(2)  直接相互制约关系(同步关系)。进程间的直接制约关系就是源于它们之间的相互合作,该关系也可称为同步关系。

8.  临界资源: 进程在使用它们时都需要采用互斥方式,这样的资源被称为临界资源

9.  临界区:
(1)  临界区:人们把在每个进程中访问临界资源的那段代码称为临界区(critical section)若能保证各进程互斥地进入自己的临界区,便可实现各进程对临界资源的互斥访问。
(2)  进入区: 在临界区前面增加一段用于进行临界资源检查的代码. 看它是否正在被访问,把这段代码称为进入区(entry section). 如果此刻该临界资源未被访问,进程便可进入临界区对该资源进行访问,并将访问标志设置为"正被访问"
(3)  退出区:在临界区后面也要相应地加上一段被称为退出区(exit section)的代码,用于将临界区正被访问的标志恢复为未被访问的标志。
(4)  剩余区: 进程中除上述进入区、临界区及退出区之外的其他部分的代码,在这 里都被称为剩余区。


遵循下述4条准则
(1)  空闲让进。当无进程处于临界区时,表明临界资源处于空闲状态,应允许1个请求进 入临界区的进程立即进入自己的临界区,以有效地利用临界资源。
(2)  忙则等待。当已有进程进入临界区时,表明临界资源正在被访问,因而其他试图进入 临界区的进程必须等待,以保证对临界资源的互斥访问。
(3)  有限等待。对于要求访问临界资源的进程,应保证其在有限时间内能进入自己的临界 区,以免陷入"死等"状态。
(4)  让权等待(原则上应遵循,但非必须)。当进程不能进入自己的临界区时,应立即释 放处理机,以免进程陷入"忙等"状态

10. 信号量机制
(1)  整型信号量
整型信号量定义为一个用于表示资源数目的整型量S,仅能通过两个标准的原子操作来访问,即wait(S)和signal(S)操作。
(2)  记录型信号量
在信号量机制中,除了需要一个用于代表资源数目的整型变量 value外,还应增加一个进程链表指针list,用于链接所有等待进程


(3)  AND型信号量
AND型信号量机制的基本思想是:将进程在整个运行过程中需要的所有资源,一次性全部 分配给进程,待进程使用完后再一起释放。
(4)  信号量集
该资源的分配下限值ti,即要求Si>=ti,否则不予分配。一旦允许分配,则基于进程对该资源的需求值di进行Si=Si-di操作


三种特殊情况:
a)  Swait(S, d, d)。此时在信号量集中只有一个信号量S,但允许它每次申请d个资源,当现有资源数少于d时,不予分配。
b)  Swait(S, 1, 1)。此时的信号量集已蜕化为一般的记录型信号量(S>1时)或互斥信号 量(S=1时)
c)  Swait(S, 1, 0)。这是一种特殊且很有用的信号量操作。当S>=1时,允许多个进程进入某个特定的临界区;当S=0时,将阻止任何进程进入特定区。换言之,它相当于一个可控开关
(5)  信号量的应用
该资源设置一个互斥型信号量mutex,并设 其初值为1,然后将各进程访问该资源的临界区置于wait(mutex)和signal(mutex)操作之间即可。设mutex为互斥型信号量,其初值为1,取值范围为(-1,0,1)。当mutex=1时,表示两个进程皆未进入需要互斥访问的临界区;当mutex=0时,表示有一个进程进入临界区运行,另一个必须等待,挂入阻塞队列;当mutex=-1时,表示有一个进程正在临界区运行,而另一个进程因等待而阻塞在信号量队列中,需要被当前已在临界区运行的进程在退出时唤醒。

11. 生产者-消费者问题
(1)  记录型信号量


(2)  利用AND信号量

12. 读者写者问题
(1)  记录型信号量解决


(2)  信号量集机制

http://www.dtcms.com/a/286916.html

相关文章:

  • 基于Qwen2.5-3B-Instruct的LoRA微调与推理实战指南
  • 多线程-3-线程同步
  • HTTPie: 开发者友好的http客户端工具
  • 数据排序
  • 特种作业操作证(制冷空调)的考试科目有哪些?
  • Xilinx Zynq:一款适用于软件定义无线电的现代片上系统
  • 使用 C# 实现移动加权平均(Weighted Moving Average)算法
  • java基础-5 : 面向对象
  • python网络爬虫(第三章/共三章:驱动浏览器窗口界面,网页元素定位,模拟用户交互(输入操作、点击操作、文件上传),浏览器窗口切换,循环爬取存储)
  • RPG60.生成可拾取物品
  • 拓扑排序/
  • 安卓Android项目 报错:系统找不到指定文件
  • Python编程:从入门到实践
  • rpa机器人流程自动化软件公司是做什么的?如何选择RPA厂商?简要介绍RPA技术、应用场景和未来趋势
  • Shell变量操作
  • Linux内核设计与实现 - 第4章 进程的调度
  • 函数返回值问题,以及返回值的使用问题(c/c++)
  • [FDBUS4.2] watcher的使用
  • STM32-CAN
  • vs openssl编译提示无法打开文件“libssl.lib”或“libcrypto.lib”
  • 理解 VMA 与 LMA
  • 【实战】Dify从0到100进阶--文档解读(8)文档列表节点
  • 深入剖析 Delta Live Tables (DLT):声明式数据管道的核心原理与底层实现
  • git:tag标签远程管理
  • 公贝固定资产管理系统对接HR、财务及采购系统的方案与效益
  • 【实用工具】HDCleaner:高效、安全、免费的系统清洁工具,免费的电脑清理垃圾神器,20秒扫出20G垃圾!
  • LP-MSPM0G3507学习--05中断及管脚中断
  • 习题4.1 输出3个人的顺序
  • APIs案例及知识点串讲(下)
  • NFS读写性能评估与优化指南(上)