- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统原理与UNIX课程教学课件第三章进程管理
死锁的预防 预防死锁的两种策略: 预先静态分配法:(针对部分分配条件)预先分配所需全部资源,保证不等待资源。 降低了对资源的利用率,降低进程的并发程度; 有可能无法预先知道所需资源。 有序资源使用法:(针对环路条件)设有n种资源,将它们排序R1R2…Rn。若进程Pi占有Ri,则它只能申请大于Ri的资源Rj(RiRj)。保证不形成环路。 限制进程对资源的请求; 资源的排序占用系统开销。 死锁的避免与银行家算法 死锁避免的要点:在分配资源时判断是否会出现死锁,如不会死锁,则分配资源。 死锁避免可视为动态预防。 基本模式:把进程分为多个步,其中每个步所使用的资源是固定的,且在一个步内,进程所保持的资源数不变。 银行家算法 Dijkstra, 1965年提出银行家算法。 一个银行家把他的固定资金(capital)贷给若干顾客。只要不出现一个顾客借走所有资金后还还不够,银行家的资金应是安全的。银行家需一个算法保证借出去的资金在有限时间内可收回。 银行家算法 假定顾客借款分成若干次进行;并在第一次借款时,能说明他的最大借款额。 具体算法: 顾客的借款操作依次顺序进行,直到全部操作完成; 银行家对当前顾客的借款操作进行判断,以确定其安全性(能否支持顾客借款,直到全部归还); 安全时,贷款;否则,暂不贷款。 银行家算法的特点 允许互斥、部分分配和不可抢占,可提高资源利用率; 要求事先说明最大资源要求,在现实中很困难; 死锁的检测 保存资源的请求和分配信息,利用某种算法对这些信息加以检查,以判断是否存在死锁。 死锁检测算法主要是检查是否有循环等待。 死锁恢复 强制性地从系统中撤消进程并剥夺它们的资源给剩下的进程使用。 撤消进程的原则: 进程的优先数; 重新启动它并运行到当前撤消点所需的代价; 作业的外部代价:即与此进程相关的作业类型都可以有其相应的固定撤消代价。 挂起和解挂机构: 从被挂起进程那里强占资源以解除死锁。 解决死锁的方法比较 3.9 线程 线程的概念 一个进程内的基本调度单位称为线程(Thread)或称为轻权进程(light weight process),这个调度单位既可以由操作系统内核控制,也可以由用户程序控制。 线程与进程的比较 进程是资源分配的基本单位,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。 进程是抢占CPU资源的调度单位,它拥有一个完整的虚拟地址空间。 当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。 线程只由相关堆栈、寄存器和线程控制表TCB组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。 进程切换时将涉及到有关资源指针的保存以及地址空间的变化等问题,线程切换时不会涉及到资源信息的保存和地址空间的变化问题,从而减少了OS的开销。 进程的调度与切换都是由OS内核完成,线程既可以由OS内核完成,也可由用户程序进行。 多线程与进程之间的关系 程序与数据 进程 控制块 PCB 用户 地址 空间 线程 控制块 TCB1 堆栈与 寄存器 线程1 线程 控制块 TCBi 堆栈与 寄存器 线程i 线程 控制块 TCBn 堆栈与 寄存器 线程n 进程 单线程进程和多线程进程 3.9.2 线程的适用范围 使用线程的最大好处是在有多个任务需要处理机处理时,减少处理机的切换时间;而且线程的创建和结束所需要的系统开销也比进程的创建和结束要小得多。 最适合使用线程的系统是多处理机系统。在多处理机系统中,同一用户程序可以根据不同的功能划分为不同的线程,放在不同的处理机上执行。 线程在单处理机系统中的典型应用 服务器中的文件管理和通信控制 在局域网的文件服务器中,对文件的访问请求可被服务器进程派生出的线程进行处理。 前后台处理 所谓前后台处理就是把一个计算量较大或实时性要求不高的程序安排在CPU空闲时执行。对同一个进程中的程序而言,线程可用来减少CPU切换时间和提高执行速度。 异步处理 程序中的两部分如果没有执行上的顺序规定,则这两部分程序可用线程执行。 线程方式还可用于数据的批处理以及网络系统中的信息发送与接收和其他相关处理。 例:一个用户主机通过网络向2台远程服务器进程远程调用(RPC)以获得相应结果的执行情况。 单线程的RPC请求处理 时间 t 用户程序 服务器1 服务器2 RPC请求1 RPC请求2 结果1 结果2 多线程时的RPC请求处理 时间 t 用户程序 服务器1 服务器2 RPC请求1 RPC请求2 结果1 结果2 线程阻塞 执行 3.9.3 线程的执行特性 线程有三个基本状态:执行、就绪、阻塞。 有5个基本操作(动词)来转换线程的状态: 派生(spawn):线程在进程内派生出来,它既可由进程派生,也可
您可能关注的文档
最近下载
- UL 1998-2018 UL可编程器件安全软件标准.pdf VIP
- 2024届广东省广州市省实教育集团九年级数学第一学期期末学业水平测试试题含解析.doc VIP
- 传感器原理及应用复习题 .pdf VIP
- 风力发电工程技术专业2021级人才培养方案(高职).pdf VIP
- 2021年10月青岛市建设工程材料价格及造价指数(可搜索)(1).pdf VIP
- 变形监测技术试题及答案.docx VIP
- DB62T 2528.5-2021 动物疫病监测规范 第5部分:免疫抗体监测.pdf VIP
- 2024年秋季新人教版七年级上册英语全册教案.docx
- 《杂草学》教学大纲.doc VIP
- 脑部抗衰护理方案.pptx VIP
文档评论(0)