修订计算机操作系统.ppt

上传人:sh****n 文档编号:7464231 上传时间:2020-03-21 格式:PPT 页数:46 大小:613KB
返回 下载 相关 举报
修订计算机操作系统.ppt_第1页
第1页 / 共46页
修订计算机操作系统.ppt_第2页
第2页 / 共46页
修订计算机操作系统.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
计算机操作系统 第三章进程管理 本章主要内容 续 3 7进程通信3 8死锁问题3 9线程 3 7进程通信 进程通信 communication 定义 简单地说 就是进程间的信息交换 分类 低级通信 进程间控制信息的交换 信号量及锁变量只能传递信号 没有数据转送能力 高级通信 进程间大批量信息 数据 的交换 高级通信的目的不是为了控制进程的执行速度 而是为了交换信息 进程通信 进程的通信方式 主从式主进程可自由使用从进程的资源或数据 从进程动作受主进程的控制 主进程和从进程关系固定 会话式使用进程在使用服务进程所提供的服务之前 必须得到服务进程的许可 服务进程根据使用进程的请求提供服务 但对所提供服务的控制由服务进程自身完成 通信时连接关系固定 进程通信 进程的通信方式 消息或邮箱机制消息 区别于命令或指令 一方面表示有大量信息 另一方面表示互相通信进程的平等 只要存在空缓冲区或邮箱 发送进程可发送消息 发送进程和接收进程之间没有直接联系 与会话式不同 存在缓冲区或邮箱存放消息 进程通信 进程的通信方式 共享存储方式不要求数据移动 两个需要互相交换信息的进程通过对同一共享数据区的操作来达到互相通信的目的 这个共享数据区是每个互相通信的进程的组成部分 进程通信 消息缓冲机制 消息缓冲机制的基本思想 根据生产者与消费者关系原理 利用内存的共用消息缓冲池实现进程之间的信息交换 消息缓冲区是指含有如下信息的缓冲区 指向发送进程的指针指向下一个消息缓冲区的指针消息长度消息正文消息缓冲区作为进程通信的一个基本单位 即每当发送进程欲发送消息时 便申请并形成一个消息缓冲区 并发送给指定的接收进程 进程通信 消息缓冲机制 消息缓冲机制的实现过程 发送进程在发送消息前 先在自己的内存空间设置一个始地址为a的消息发送区 把欲发送的消息填入其中 然后再用发送过程send B a 将其发送到缓冲区 接收进程则在接收消息之前 在自己的内存空间内设置一个始地址为b的消息接收区 然后用接收过程receive b 接收缓冲区内的消息 注 由于接收进程可能接收到多个进程发来的多个消息缓冲区 故它将所有的消息缓冲区连接成一个消息队列 其队列头由接收进程PCB中的消息队列头指针给出 进程通信 消息缓冲机制 消息缓冲机制的实现过程 进程通信 消息缓冲通信过程 消息缓冲机制 通信进程必须满足如下条件 在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时 应禁止其他进程对该消息缓冲区队列的访问 否则 将引起消息队列的混乱 同理 当接收进程正从消息队列中取消息缓冲区消息时 也应禁止其他进程对该队列的访问 间接制约设置公用信号量 mutex 其初值为1 当消息缓冲区队列中无消息存在时 接收进程不能接收到任何消息 直接制约设置私用信号量 SM为接收进程的私用信号量 表示等待接收的消息个数 其初值为0 进程通信 消息缓冲机制 进程之间通信的实现 进程通信 向系统申请一个消息缓冲区 将发送区消息m送入新申请的消息缓冲区 把消息缓冲区挂入接收进程的消息队列 摘下消息队列中的消息n 将消息n从缓冲区复制到接收区 释放缓冲区 开始 结束 开始 结束 P SM V SM Send m Receive n 邮箱通信 进程通信 邮箱通信的基本思想 邮箱通信是由发送进程申请建立一个与接收进程连接的邮箱 发送进程把消息送往邮箱 接收进程从邮箱取走消息 从而完成进程间信息交换 邮箱由邮箱头和邮箱体组成 其中邮箱头描述邮箱名称 邮箱大小 邮箱方向以及拥有该邮箱的进程名等 邮箱体主要用来存放消息 如图 设置邮箱的最大好处就是发送进程和接收进程之间没有处理时间上的限制 消息缓冲需要互斥使用消息队列 邮箱通信 进程通信 注 一个邮箱可以考虑成发送进程与接收进程之间的大小固定的私有数据结构 它不像缓冲区那样被系统内所有进程共享 进程通信 两通信进程之间的关系 发送进程发送消息时 邮箱中至少要有一个空格能存放该消息 接收进程接收消息时 邮箱中至少要有一个消息存在 即发送进程与接收进程间存在着直接制约 发送进程的私用信号量 nullnum表示邮箱中空格个数 初值为信箱的空格数n 接收进程的私用信号量 fullnum表示邮箱中消息个数 初值为0 邮箱通信 实现 两个进程通信 设发送进程调用过程deposit m 将消息发送到邮箱 接收进程调用过程remove m 将消息m从邮箱中取出 进程通信 deposit m beginlocalx nullnum 选择空格x将消息m放入空格x中置格x的标志为满 fullnum end remove m beginlocalx fullnum 选择满格x把满格x中的消息取出置格x标志为空 nullnum end 3 8死锁定义 定义 各并发进程彼此互相等待对方所拥有的资源 且这些进程在得到对方的资源之前不会释放自己所拥有的资源 从而造成并发进程不能继续向前推进的状态 若死锁只存在于部分进程中 称系统发生了局部死锁 若系统中所有进程都出现了死锁 则称系统发生了全局死锁 死锁 死锁的起因 死锁的起因是并发进程的资源竞争 而根本原因在于系统提供的资源个数少于并发进程所要求的该类资源数 死锁 系统资源不足 进程推进顺序非法 死锁发生的必要条件 互斥条件 一个资源在某一时刻只能分配给一个进程 若一个进程申请某资源时 该资源被另一进程占用 则申请者等待 直到占有者释放该资源时才可能获得 部分分配 进程在占用部分资源后 运行时还可以申请其余的资源 而且在申请其余资源时并不释放已占用的资源 死锁 死锁发生的必要条件 不剥夺条件 已分配给进程的资源不可被剥夺 只能被占有者自行释放 环路条件 系统中存在着一条由两个或两个以上的进程组成的循环链 链中的每个进程都在等待相邻进程已占用的资源 死锁 S3 P3 S1 P2 P1 S2 解决死锁的方法 预防采用某种策略使得死锁的必要条件在系统执行的任何时间都得不到满足 避免可称为动态预防 是指在系统分配资源时 根据资源的使用情况提前作出预测 从而避免死锁发生 检查与恢复是指系统设有专门的机构 死锁发生时 该机构能够检测到死锁发生的位置和原因 并能通过外力破环死锁发生的必要条件 从而使得并发进程从死锁状态中恢复过来 死锁 解决死锁的方法 预防死锁死锁产生的必要条件为解决死锁问题提供了思路 限制 互斥条件 然而对于临界资源必须互斥访问 这是某些资源使用时所必须要求的 如打印机 不能加以改变 所以不易有解决方案 死锁 解决死锁的方法 预防死锁限制 部分分配 一种实现方法是规定所有进程在开始执行前申请所需的全部资源 当所需资源全部可以使用时方可进行分配 这样 进程对资源的要求得到满足 它一定能够运行结束而释放已经占用的全部资源 只要有一种资源不能满足 则不进行分配 而将该进程阻塞 死锁 解决死锁的方法 预防死锁限制 部分分配 缺点 许多情况下 一个进程执行前不可能提出它需要的所有资源无论所需资源何时使用 一个进程只有在所有需要的资源得到满足后才开始执行对于不经常使用的资源 进程的生存过程期间一直占有它是一种浪费降低了进程的并发性 死锁 解决死锁的方法 预防死锁限制 不剥夺条件 采用剥夺算法 可以预防死锁的发生 但是系统中的资源有些是可剥夺的 有些是不可剥夺的 如采用剥夺算法对于CPU与存储器是可行的 而对于打印机等资源则是不合适的 所以只能对系统中的一部分资源采用这种方法 死锁 解决死锁的方法 预防死锁限制 环路条件 把所有资源分类按顺序排列 使进程在申请和保持资源时不形成环路 一个进程在拥有了某资源的前提下 它只能申请级别比所拥有资源更高的资源 同时在一个进程释放资源时 必须先释放级别高的资源 同时也只有释放了所拥有的高级别资源 才有可能获得低级别资源 这样就避免了环路的出现 这种方法限制了进程对资源的请求 对资源的分类编序也消耗一定的系统开销 死锁 解决死锁的方法 避免死锁避免死锁的做法是在进程每次提出资源请求时加以检测 若分配后系统可能会引起死锁 称系统处于不安全状态 这时对该进程的资源请求不予分配 将它放到等待队列中去 若分配后系统不会产生死锁 即系统是安全的 这时再根据该进程的资源请求予以分配 死锁 银行家算法进程申请系统的某种资源时 一次可以申请多个 为了避免死锁 可以采用银行家算法 执行前 各进程给出最大的资源需求 执行中 进程已分配资源与尚需资源之和就是最大的资源需求 例 假设系统有某种设备12台 在T0时刻 进程需求与分配情况如下 解决死锁的方法 死锁的检测和恢复 实现不作任何限制 检测时机 进程等待时 定时检测 资源利用率下降时 死锁的恢复办法较多 最简单的办法是终止各锁住进程 或按一定的顺序中止进程序列 直至已释放到有足够的资源来完成剩下的进程时为止 另外 也可以从被锁住进程强迫剥夺资源以解除死锁 死锁 3 9线程的引入 引入进程的操作系统特点 在引入进程概念的操作系统中 将进程作为一个独立运行的基本单位 这包括两层含义 只有进程可以被调度运行 只有进程才能拥有资源 资源利用 当进程被创建时 系统要为它分配PCB表及其它必要的资源 如内存等 当进程被撤消时 系统要收回这些资源及PCB表等 因此系统必须付出一定的开销 当进程运行时 进程的切换现象更会大量存在 由于要保留当前执行进程的CPU现场和为选中执行的进程重布现场 更需较大的开销 线程 线程的引入 很多时候 用户要完成的任务具有许多相似的性质 例如 一个Web服务器同时接受不同用户的页面请求 服务器处理这些请求是并发进行的 可以用创建父进程和多个子进程的方式来实现 随着用户数量增加 子进程数量将增加 进程的创建和切换过程越多 系统的开销越多 由于服务器的系统资源有限 服务器可以处理和支持的用户访问请求就有限 如何减少进程的创建和切换多带来的系统开销 线程 线程 线程的基本概念 线程是进程的一部分 又被称为轻权进程或轻量级进程 线程也是CPU调度的基本单位 一个没有线程的进程可以看作是单线程的 线程的基本概念 一个进程内拥有多个线程 则进程的执行不再是唯一线状的 它由多条线状执行过程组成 线程的引入 引入线程的好处使用线程的最大好处是在有多个任务需要处理机处理时 减少处理机的切换时间 而且 线程的创建和结束所需要的系统开销也比进程的创建和结束要小得多 最适合使用线程的系统是多处理机系统或网络系统或分布式系统 在多处理机系统中 同一用户程序可以根据不同的功能划分为不同的线程 放在不同的处理机上执行 在用户程序可以按功能划分为不同的小段时 单处理机系统也可以使用线程而简化程序结构和提高执行效率 线程的引入 3种典型应用服务器中文件管理或通信控制前后台处理 即把一个计算量大实时性要求不高的程序安排在处理机空闲时执行异步处理 程序中两个部分在执行上没有顺序规定 线程的引入 引入线程的操作系统将进程看作资源集合与线程集合的复合体 进程拥有资源 属于同一个进程的所有线程可以共享这些资源 此外 每个线程仅有较少的私用资源 如程序计数器 寄存器和栈等 每一个线程是一个动态对象 它表示进程中的一条控制线索 执行一系列指令操作 是一个相对独立的 可被调度运行的基本单位 线程 线程的引入 引入线程的操作系统在进程的地址空间中可以有多个线程 它们可以并发执行 这就需要一张单独的表来记录线程控制与管理等信息 这张表称为线程控制表 其中 每个线程占一项 以记录线程的程序计数器 寄存器的值及状态等信息 程序计数器可以使线程像进程一样被暂停执行和恢复执行 寄存器的值等可以保存线程暂停执行时的CPU状态 线程 线程的引入 引入线程的操作系统线程由创建而产生 由撤消而消亡 在生命期间 线程可以处于就绪状态 执行状态和阻塞状态三个基本状态中 这三个基本状态也像进程一样 会发生变迁 如就绪状态 执行状态 执行状态 阻塞状态 阻塞状态 就绪状态等 与进程的状态并不一定一一对应 线程 线程与进程的比较 调度在传统的操作系统中 拥有资源的基本单位和独立调度运行的基本单位都是进程 在引入线程的操作系统中 则把线程作为调度运行的基本单位 而把进程作为拥有资源的基本单位 在同一个进程中 线程的调度不会引起进程的调度 只有在由一个进程中的线程调度到另一进程中的线程时 才会引起进程的调度 线程 线程与进程的比较 并发在引入线程的操作系统中 不仅进程之间可以并发执行 而且属于同一个进程的多个线程之间也可以并发执行 因而使系统具有更好的并发性 可以更有效地使用系统资源和提高系统的吞吐量 线程 线程与进程的区别 拥有资源方面进程是资源管理的基本单位 它拥有自己的地址空间和各种资源 线程只是共享进程资源 仅拥有很少的一些私有资源 如程序计数器 寄存器和栈 线程表项等 线程 线程与进程的区别 资源利用率方面 以进程为单位进行处理机切换和调度时 由于设计到资源转移以及现场保护等问题 将导致处理机切换时间变长 资源利用率降低 以线程为单位进行处理机切换和调度时 由于不发生资源变化 特别是地址空间变化 处理机切换时间变短 从而处理机效率也较高 线程与进程的区别 响应速度方面 对用户来说 多线程可减少用户的等待时间 提高系统的响应速度 状态方面 线程和进程一样 都有自己的状态 也有相应的同步机制 不过由于没有单独的数据和程序空间 因此 线程不能象进程的数据和程序那样 交换到外存存储空间 因此 线程没有挂起状态 控制方面 进程的调度 同步等控制大多由操作系统内核完成 而线程的控制既可以由操作系统内核完成 也可以由用户控制进行 线程
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!