《微机与操作系统贯通教程》第4章:CPU与进程管理.ppt

上传人:max****ui 文档编号:8319281 上传时间:2020-03-28 格式:PPT 页数:38 大小:2.01MB
返回 下载 相关 举报
《微机与操作系统贯通教程》第4章:CPU与进程管理.ppt_第1页
第1页 / 共38页
《微机与操作系统贯通教程》第4章:CPU与进程管理.ppt_第2页
第2页 / 共38页
《微机与操作系统贯通教程》第4章:CPU与进程管理.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
新世纪高职高专实用规划教材微机与操作系统贯通教程 王宝军著清华大学出版社 微机与操作系统贯通教程王宝军著清华大学出版社 第4章CPU与进程管理 学习目的与要求CPU是微机系统中最珍贵的核心资源 而Intel80 x86系列CPU一直是微机市场中的主流产品 现代多任务操作系统中 CPU管理的主要任务是以进程为单位对CPU资源实施分配和有效管理 因而对CPU的管理可归结为对进程的管理 本章首先介绍8086 8088CPU的引脚信号 工作方式 操作时序以及80 x86CPU的性能特点 然后引入进程概念 介绍进程描述 基本状态 进程控制与通信 进程同步及其实现 死锁及其对抗等内容 通过本章的学习和上机操作 对80 x86CPU乃至微机的原理 工作特性以及多道程序环境下的进程管理等都将会有更深刻的理解 并能利用Windows任务管理器 系统监视器 系统信息查看和任务计划来监视 管理进程与任务 微机与操作系统贯通教程王宝军著清华大学出版社 4 180 x86CPU 主要内容 1 8086 8088引脚信号 2 8086 8088工作方式 3 8086 8088操作时序 4 80486和Pentium 重点关注 8086 8088引脚基本功能及最大和最小工作方式的连接 8086 8088总线读写访问周期及系统复位操作 微机与操作系统贯通教程王宝军著清华大学出版社 1 8086 8088引脚信号 一 1 8086 8088CPU芯片引脚图 CPU负责微机系统中绝大部分的控制与执行工作 其本身的工作效率基本上决定了整机的速度与性能 主要指标有 主频 外频 工作电压 制造工艺以及地址线宽度 数据线宽度 高速缓存 Cache 容量等 8086 8088CPU为双列直插式封装 共40个引脚的大规模集成芯片 由于引脚数目的限制 部分引脚具有双重功能 这部分引脚有两种工作方式 一种是分时工作 即在总线周期的不同时间其引脚功能不同 另一种是按不同模式进行工作 即在最小方式或最大方式下其引脚功能不同 说明 微机与操作系统贯通教程王宝军著清华大学出版社 1 8086 8088引脚信号 二 2 8086 8088主要引脚信号 AD15 AD0 地址 数据分时共用引脚A19 S6 A16 S3 地址 状态分时共用 S7 高8位数据线允许 状态共用CLK 时钟输入信号 由8284提供 读信号 读内存或I O设备 READY 准备就绪信号 输入 INTR 可屏蔽中断请求输入信号NMI 非屏蔽中断请求输入信号RESET 系统复位输入信号 测试输入信号 最小 最大方式选择信号Vcc 5V电源GND 接地信号 由于8086 8088既可以字操作 也可以字节操作 所以CPU连接的内存分为偶地址体和奇地址体 低8位数据线连接偶地址体 高8位数据线连接奇地址体 由AD0和组合选择 注意 微机与操作系统贯通教程王宝军著清华大学出版社 2 8086 8088工作方式 一 1 最小工作方式 当CPU只需连接小容量存储器和少量外部设备时 由于系统规模小 负载轻 可直接使用CPU控制信号线作为系统控制线 而不需要外接总线控制器 系统中的总线控制电路被减到最少 即工作在最小方式下 引脚接 5V 中断响应输出信号ALE 地址锁存输出信号 数据允许输出信号 数据发送与接收输出信号 内存与I O设备选择输出信号 写命令输出信号HOLD 总线保持请求输入信号HLDA 总线保持响应输出信号 微机与操作系统贯通教程王宝军著清华大学出版社 2 8086 8088工作方式 二 2 最大工作方式 如果8086 8088应用于中等规模或大型系统中 往往需要连接较大容量的内存和较多数量的外设 而且除了主处理器CPU外 还要求包含一个或多个协处理器 如8087等 从而构成多微处理器系统 以提高处理能力 此时 8086 8088按最大工作方式 引脚接地 与外部电路相连 通过8288总线控制器将CPU状态信号进行译码产生相应控制信号 既提高了总线负载能力 还可以使8087共享总线 微机与操作系统贯通教程王宝军著清华大学出版社 3 8086 8088操作时序 一 1 基本概念 计算机一旦加电 CPU所有操作都在时钟脉冲信号CLK的统一控制下进行 在8086 8088系统中 CLK信号由时钟发生器8284A产生 每个时钟脉冲都有相同的时间跨度 称为一个时钟周期 相应地 该CPU的时钟频率 1 T 也就是CPU的主频 CPU通过总线与内存或外设完成一次数据通信所需要的时间称为总线周期 或称为机器周期 一个基本总线周期由4个时钟周期 即4个T状态 组成 执行一条8086 8088指令所需的时间称为一个指令周期 对于那些通过总线访问数据的指令来说 一个指令周期由若干个总线周期组成 微机与操作系统贯通教程王宝军著清华大学出版社 3 8086 8088操作时序 二 2 总线读 写操作时序 8086在最大工作方式下 基本总线周期由4个时钟周期组成 称为T1 T2 T3 T4状态 但是 对于低速存储器或外设 可能在规定的时间内未能准备好CPU需要读取的数据 或者未能将CPU输出的数据写入完成 则可以在T3和T4状态之间插入一个或多个等待状态Tw T1状态 T2状态 T3状态 T4状态 Tw状态 由8086送出20位地址到A19 A16 AD15 AD0 锁存地址信息后输出到地址总线上 多路转换开关将AD15 AD0上的地址撤消 切换成数据总线 为读写数据做准备 采样READY或BUSY信号 若为有效则读入或写出数据 进入T4状态 若无效则插入等待周期Tw 完成本次总线数据传送 恢复各信号线的初始状态 准备执行下一个总线周期 微机与操作系统贯通教程王宝军著清华大学出版社 3 8086 8088操作时序 三 3 系统复位与启动操作 复位信号RESET用于初启或重启系统 有效的RESET信号是一个至少维持4个时钟周期的高电平 当RESET由高电平向低电平跳变时触发CPU内部复位逻辑电路 终结CPU的其他所有操作 进行一系列的复位操作 直到RESET变为低电平 一般历时7个时钟周期 在复位时 CPU内部各寄存器及指令队列被初始化 除CS为FFFFH外 其他所有寄存器全部清0 因此 复位后CPU读取的第一条指令存放在FFFF 0000H地址 即物理地址为FFFF0H 的单元中 显然这是ROMBIOS空间 FE000H起始的8KB 中的单元 通常该单元存放了一条无条件转移指令 使CPU转移到BIOS中的系统启动程序入口 随后启动计算机 由于复位时FLAG也被清0而处于关中断状态 IF 0 所以系统初始化时 系统软件应立即用STI指令来开放中断 计算机初启时也是先产生RESET信号使系统总清的 当电源达到额定电压值后 稳定的电源信号使RESET为低电平 在8086 8088获得巨大成功之后 Intel公司又相继推出了80286 80386 80486 Pentium Pentium Pentium Pentium 等一系列CPU 尽管著名的CPU生产商还有AMD Cyrix等多家 但IntelCPU一直是微机市场中的主流产品 下面重点介绍微处理器技术演变过程中取得突破性进展的Intel80486和PentiumCPU 微机与操作系统贯通教程王宝军著清华大学出版社 4 80486和PentiumCPU 一 1 80486CPU 首次集成浮点数值协处理器和一个8KB的代码 数据高速缓冲存储器 Cache 指令系统首次采用RISC 精简指令集计算机 思想设计 使80486既与以往的CISCCPU兼容 又具有RISC类微处理器的特色 核心指令只需1个时钟周期即可完成 在总线接口部件中设有突发式总线控制和Cache控制电路 支持CPU能在突发式总线周期中 几乎以每个时钟周期传送1个字 4B 的速度连续从主存或外部Cache读取指令或数据 送入内部Cache 重大技术改进 80486是Intel公司在80386基础上推出的第二代32位微处理器 其内部寄存器及外部数据总线 地址总线都是32位 由9大功能部件组成 总线接口部件 BIU 指令预取部件 指令译码器 算术与逻辑运算部件 ALU 浮点运算部件 分段部件 分页部件 8KBCache部件以及控制和保护部件 总线接口部件 指令预取部件 指令译码部件和执行部件构成了指令流水线 地址流水线具体体现在有效地址的形成 逻辑地址到线性地址的转换 线性地址到物理地址的转换三个动作的重叠进行中 内部结构与流水线技术 微机与操作系统贯通教程王宝军著清华大学出版社 4 80486和PentiumCPU 二 2 PentiumCPU PentiumCPU主要由总线接口部件 分页部件 片内Cache 控制部件 执行部件 浮点部件 分支目标缓冲器等部件组成 其主要技术特点是 内部采用32位结构 但其64位的外部数据总线及64位 128位 256位宽度可变的内部数据通道使CPU的内外部数据传输能力增强不少 采用超标量双流水线结构 U和V 这使得一个时钟周期内可执行2条指令 内部设置了程序和数据完全分开的两个8KBCache 减少了冲突 对MOV PUSH DEC INC等常用指令不用微程序而用硬件实现 采用分支预测技术 提高流水线效能 浮点运算执行过程分为8个流水步级 且常用的浮点指令也采用硬件实现 实地址模式 在加电或复位时被初始化为实地址模式 它与8086具有相同的存储空间和管理方式 最大寻址空间为1MB 保护模式 在保护模式下能支持4GB物理内存空间 并借助于存储管理部件MMU的功能将磁盘等存储设备有效地映射到内存 使程序可在64TB的虚拟存储器空间中运行 为现代多任务操作系统的顺利运行提供了强大的硬件基础 虚拟8086模式 这是实地址和保护模式的结合 可执行8086应用程序的同时使用分页技术 将1MB空间分为256个页面 每页4K 并映射到整个4GB的线性空间 基于80486的操作系统可以构筑多个MS DOS虚拟机 三种工作模式 微机与操作系统贯通教程王宝军著清华大学出版社 4 2进程的概念及描述 主要内容 1 进程概念的引入 2 进程的定义与描述 3 PCB的组织 4 进程状态及转换 重点关注 为何要引入进程概念以及进程的定义与描述方法 进程的状态及相互转换的条件 微机与操作系统贯通教程王宝军著清华大学出版社 1 进程概念的引入 进程概念的引入是由于多道程序运行环境的变化 多个程序同时驻留在系统中运行 而系统资源总是有限的 仅有的一个CPU必然要为系统中的多个程序分时轮流使用 因此 从宏观上看多个程序同时在系统中并行执行 但从微观上看每个程序都以 走走停停 的方式串行占用CPU而运行 而且操作系统处理着随时可能发生的外部事件 用户执行的某个程序跟其他哪些程序并发 何时被调度占有CPU执行 何时暂停 以怎样的速度向前推进 这些都是不确定的 正是由于多道程序环境有着并发性 随机性和资源共享的特点 如果操作系统 堆栈操作中入栈和出栈操作并发执行的实例 导致错误结果的根本原因在于入栈和出栈共享了一个堆栈资源S 使它们之间必然要受到执行速度的制约 操作系统必须采取措施来控制和协调资源的共享和竞争 以制约系统中并发程序的执行速度 为达到这个目的 必须引入能够动态描述程序执行过程 并用作资源分配基本单位的进程 不加以处理或设计不当 就有可能破坏程序运行结果的正确性 微机与操作系统贯通教程王宝军著清华大学出版社 2 进程的定义与描述 1 进程的定义 进程作为分配资源的基本单位 是一个具有独立功能的程序对某个数据集在处理器上的一次执行过程 2 进程的描述 从处理器活动的角度来看 操作系统要掌握系统中的每个进程 除了进程所包含的程序和数据外 还必须要有一个特殊的数据结构来描述进程的存在及其活动的过程 这个数据结构就是进程控制块 PCB ProcessControlBlock PCB是进程动态特征的集中反映 系统根据PCB感知进程的存在 通过PCB中所包含的各项参数的变化 掌握进程所处的状态以达到控制进程活动的目的 描述信息进程名或进程ID用户名或用户ID家族关系 控制信息进程当前状态进程优先级程序和数据指针各种计时信息通信信息 资源信息内存使用信息程序共享信息设备使用信息文件系统指针 现场信息为使进程能在被打断处恢复执行 必须保护当前进程的CPU现场 也称进程上下文 信息 进程PCB包含的信息 微机与操作系统贯通教程王宝军著清华大学出版社 3 PCB的组织 在创建进程时 首先需要创建其PCB 系统通过对PCB的操作为有关进程分配资源 从而使该进程得以被调度执行的可能 进程从PCB中记录的对应程序段起始地址开始执行 而进程被打断又恢复执行时也依赖于PCB中的现场信息 进程执行结束后 也是通过释放PCB来释放进程占有的各种资源 正因为操作系统中PCB的重要性 以及系统需要频繁地对PCB进行操作 所以几乎所有的多道程序操作系统中 一个进程的PCB结构都是全部或部分常驻内存的 为了统一管理 控制和调度进程 操作系统往往将系统中所有进程的PCB集中组织 典型的组织方法有表和队列 如果把系统中所有进程的PCB组织成一张二维表 存储在一个特定的内存区域 如图 a 所示 那么 系统依据最大吞吐能力来确定表中可容纳的PCB数目 也就表示系统最多能够运行的进程数 如果采用如图 b 所示的队列形式 则进程的PCB可以存放在内存任何位置 只需在PCB结构中增加一个指针变量 用它来指向下一个进程PCB的起始地址 微机与操作系统贯通教程王宝军著清华大学出版社 4 进程状态及其转换 从进程状态的相互转化中 我们也可以看出进程所具有的三个特征 动态性 进程是程序的一次执行过程 这一过程中其状态不断发生变化 并发性 多个进程宏观上同时执行 微观上轮流占有CPU而交替执行 异步性 每个进程的执行速度取决于自身与外界原因以及进程调度的策略 以不可预知的速度向前推进 占有CPU时间而正在运行的状态 具有运行所需的所有其它条件 只等待系统分配CPU时间的状态 等待某个事件的发生的状态 微机与操作系统贯通教程王宝军著清华大学出版社 4 3进程控制与通信 主要内容 2 时间片轮转法调度 3 优先级法调度算法 5 进程通信 1 进程控制原语 4 多级反馈队列调度 重点关注 原语的概念 进程调度及其原则 三种进程调度算法及其比较 进程通信的方法 微机与操作系统贯通教程王宝军著清华大学出版社 1 进程控制原语 一 1 什么是原语 任何一个进程从产生到消亡的整个过程都是由操作系统来控制的 操作系统通过调用具有特定功能的程序来实现进程的创建 撤消以及状态转换等 这些用于进程控制的程序不同于普通意义上的用户程序 它们是在系统态执行的 并在执行过程中不可中断的程序 这样的程序称为原语 2 进程的创建与撤消原语 进程创建 当调用进程创建原语来创建一个进程时 其主要步骤是 首先扫描系统中的PCB表 获取一个空记录 然后填入调用者提供的新进程描述参数 最后将代表新建进程的PCB插入到就绪队列之中 进程撤消 由于一个进程可能会有子进程存在 所以进程撤消需要一个递归的过程才能完成 首先 通过PCB表中的家族关系 审查该进程是否还有它的子孙进程 若有则必须先撤消所有的这些子孙进程 即要一直搜索到不再含有子进程的子进程为止 然后 调用子进程撤消原语 释放其占有的资源 清除其PCB结构中除进程ID外的所有内容 并通知父进程而进入死亡等待状态 如此逐级向上 直到释放了需要撤消的进程PCB后才算完成 微机与操作系统贯通教程王宝军著清华大学出版社 1 进程控制原语 二 3 进程的阻塞与唤醒原语 进程调度 按照某种算法从就绪队列中选择一个进程 将其PCB结构中的状态改变为运行状态 退出就绪队列 恢复该进程的现场参数 使其占有CPU时间而进入了运行状态 算法原则 体现进程之间的公平性和优先程度 考虑用户对系统响应时间的要求 有利于资源的均衡和高效率使用 尽可能提高系统吞吐量 4 进程调度原语 进程阻塞 阻塞一个进程时 由于该进程正处于运行状态 首先应该中断CPU和保存现场 然后把自己的状态改变为等待状态 并插入到其等待条件相应的等待队列中 最后转进程调度程序去选择新的就绪进程投入运行 进程唤醒 唤醒原语可以被系统进程调用 即由系统将 事件发生 这一消息通知等待进程而唤醒进程 也可以被事件发生进程调用 因为它与被唤醒进程之间是相互合作的关系 实现过程是 首先找到对应条件的等待队列 对该队列中的所有进程逐一唤醒 即置为就绪状态并插入到就绪队列中 然后 唤醒原语可能返回调用唤醒原语的进程 也可能转向进程调度 从就绪队列中选择一个进程运行 微机与操作系统贯通教程王宝军著清华大学出版社 2 时间片轮转法调度算法 将所有的就绪进程按到达的先后顺序排队 并将CPU的时间分成固定大小的时间片 进程调度程序每次总是从就绪队列中选取第一个进程投入运行 CPU时间片的选择至关重要 合理选择CPU时间片长度应考虑以下两个因素 系统的设计目标 用于工程运算的系统往往需要较长的时间片 因为这类进程主要是占CPU时间进行运算 而只有少量的I O工作 这样可以降低进程之间频繁切换所导致的系统开销 用于I O型工作的系统只需要较短的时间片 因为这类进程一般只需要很短的CPU时间完成少量的I O准备和善后工作 用于普通多用户联机操作的系统 其CPU时间片的长度则主要取决于用户响应时间 系统性能 计算机系统本身的性能也对时间片大小的确定产生影响 CPU时钟频率越快 单位时间内能够执行的指令数就越多 其时间片也就可以较短 CPU指令周期越长 程序的执行速度就越慢 时间片就需要较长 但是 较长的时间片又有可能影响用户响应时间 这就需要进行折中取值 在运算型进程和I O型进程较为均衡的系统中 时间片的确定十分为难 为此 很多实用系统中 采用了多值时间片的方法 即根据进程的不同类型而分配给它一个不同时间长度的时间片 当然这也增加了系统的复杂度 微机与操作系统贯通教程王宝军著清华大学出版社 3 优先级法调度算法 在时间片轮转法基础上 为进程设置不同优先级 就绪队列按进程优先级不同而排列 优先级调度算法每次从就绪队列中选取优先级最高的进程运行 1 静态优先级 静态优先级是在进程被创建时设定其优先级 并在整个生命期内保持不变 一般来说 进程的静态优先级确定原则有 根据进程类型来决定优先级 一般I O型进程比运算型进程优先级高 按作业的静态优先级作为它所属进程的优先级 2 动态优先级 动态优先级是在进程的生存期内 其优先级随着运行情况而不断地发生变化的 动态优先级的变化一般根据以下原则决定 一个进程已占有CPU而运行的时间越长 则该进程的优先级就会降低 一个进程未占有CPU而等待的时间越长 则该进程的优先级就会提高 结论 与静态优先级方法相比 动态优先级方法既考虑了不同用户进程的优先程度 同时兼顾了进程之间的公平性原则 但两种优先级法都缺乏多值时间片方法所具备的优点 即不同类型进程分配不同时间片以提高资源利用率 微机与操作系统贯通教程王宝军著清华大学出版社 4 多级反馈队列调度算法 多级反馈轮转法是一种综合的调度算法 在CPU时间片的选择上 引用了时间片轮转法中的多值时间片策略 而在进程优先级的确定上 又采取了动态优先级的策略 也就是说 多级反馈轮转法综合考虑了进程到达的先后顺序 进程预期的运行时间 进程使用的资源种类等诸多因素 多级反馈轮转算法的核心是就绪进程的组织采用了多级反馈队列 它将就绪进程按不同的时间片长度和不同的优先级排成多个队列 而且一个进程在其生存期内 将随着运行情况而不断地改变其优先级和分配的时间片长度 即调整该进程的队列 算法特点 较快的响应速度和短作业优先 输入 输出进程优先 运算型进程获得较长的时间片 体现了动态优先级的优点 微机与操作系统贯通教程王宝军著清华大学出版社 5 进程通信 进程通信是指进程之间传送数据 一般来说 进程间的通信为控制信息的传送和大批量数据传送两类 前者称为低级通信 后者称为高级通信 管道机制 微机与操作系统贯通教程王宝军著清华大学出版社 4 4进程同步和死锁 主要内容 2 信号量机制 3 互斥实现 5 死锁的产生及原因 6 对抗死锁 1 互斥与同步关系 4 同步实现 重点关注 进程之间的互斥与同步关系 死锁及其必要条件 利用信号量机制实现互斥与同步 对抗死锁的方法 微机与操作系统贯通教程王宝军著清华大学出版社 1 互斥与同步关系 一 多个进程的并发执行和系统资源的有限性必将导致资源的共享与竞争 从而使进程执行速度受到某种制约 互斥与同步就是两种不同的制约关系 操作系统必须采取某些策略对它们加以控制和协调 即实现进程的互斥与同步 从进程之间需要协调配合的广义上来说 互斥关系也属于同步关系的范畴 1 互斥关系 引入进程时所举的堆栈操作例子 其实就是因为入栈和出栈程序共享了一个堆栈资源S 使它们之间受到了执行速度上的制约 从而造成了可能出现的错误结果 为解决这一问题 先引入临界区和临界资源的概念 临界区 不允许多个并发进程交叉执行的程序段 临界资源 只允许有一个进程进入临界区使用的资源 对临界区管理的要求一次至多只允许一个进程进入临界区 不能让一个进程无限期地在临界区执行 不能强迫一个进程无限地等待进入它的临界区 什么是互斥关系对临界区的管理 实际上也就是表现为对互斥关系的实现 所谓互斥 就是指若干个共享某一资源的进程并发执行时 每次只允许一个进程进入临界区执行 或者说 互斥关系就是若干个并发进程在竞争进入临界区时相互之间所形成的排它性关系 微机与操作系统贯通教程王宝军著清华大学出版社 1 互斥与同步关系 二 2 同步关系 经典实例 生产者 消费者 问题 当生产者生产了一件物品存入缓冲器后 消费者进程才能从缓冲器中取用物品 反过来 也只有当消费者从缓冲器中取走了物品后 生产者才能再次将生产的物品存入缓冲器 因此 进程A和B之间是一种相互协作的关系 即进程A和B在并发执行时 各自的执行结果互为对方的执行条件 从而造成了它们在执行速度上的直接制约 如果不对进程A和B进行相互制约 就会造成错误的结果 什么是同步关系一般地 我们把若干个直接制约的并发执行相互发送消息而互相合作 互相等待 使得各进程按一定的速度执行的过程称为进程的同步 微机与操作系统贯通教程王宝军著清华大学出版社 2 信号量机制 信号量机制是由荷兰科学家E W Dijkstra提出的 用于实现进程互斥和同步的典型方法 即设置信号量并使用P V原语对信号量进行操作 信号量 信号量S Semaphore 是一个整数 当S 0时 表示可供并发进程使用的该类资源数 而当S 0时 表示正在等待使用该类资源的进程数 P V操作 P操作和V操作原语的实质是对信号量实现计数功能 以便根据信号量值的不同来改变进程的状态 信号量S的初值就是系统中具有该类临界资源的个数一次P操作就是申请一个临界资源的过程一次V操作就是释放一个临界资源的过程 说明 微机与操作系统贯通教程王宝军著清华大学出版社 3 互斥实现 方法 用一个信号量和若干个涉及共享公共资源的临界区联系起来 把信号量的初值设为1 任何一个进程要进入临界区前先调用P操作 执行完临界区的操作而退出时调用V操作 实例 利用信号量机制实现入栈和出栈进程的互斥 分析 当n个进程P1 P2 Pn要以独享方式使用某种资源 而这种资源只有m个 设n m 则信号量S的值必定在 m n m的范围内变化 当S m时 表示有m个可用资源尚未被申请使用 当0 S m时 表示有S个可用资源 已有m S个进程正在使用这种资源 当S 0时 表示m个资源已被m个进程全部占用 现无可用资源 当m n S 0时 表示m个资源已被m个进程全部占用 且有 S 个进程进入等待使用此种资源的状态 当S m n时 表示n个进程全部申请使用资源 m个资源已全部被m个进程占用 且有 m n 个进程进入等待使用此种资源的状态 微机与操作系统贯通教程王宝军著清华大学出版社 4 同步实现 方法 进程同步可通过一种消息机制来实现 用一个信号量S与一个消息联系起来 当S值为0时表示期望的消息尚未产生 当S值非0时表示期望的消息已经存在 事实上 调用P操作相当于发送消息 而调用P操作相当于测试自己所期望的消息是否已经到达 实例 利用信号量机制实现生产者和消费者进程的同步 分析 实现生产者和消费者进程之间的同步 需要定义两个信号量 SP 表示是否可以把物品存入缓冲器 由于缓冲器中只能存放一件物品 所以SP的初值设定为1 表示允许存放一件物品 SG 表示缓冲器中是否存有物品 显然 SG的初值应该为0 表示开始时缓冲器中没有物品 注意 在用信号量机制实现同步时 一定要根据具体问题来定义信号量及其相应的P V操作 一个信号量与一个消息联系在一起 有多个消息时必须定义多个信号量 微机与操作系统贯通教程王宝军著清华大学出版社 5 死锁的产生及原因 一 1 死锁的形成 实例一 某系统中有两个并发进程A和B 它们都要使用资源R1和R2 进程A和B各自占有了对方所需要的资源而又互不相让 造成它们都无法向前推进而永远处于等待状态 即死锁状态 实例二 经典的 五位哲学家吃通心面 问题 2 死锁的定义若系统中存在一组并发进程 它们中的每一个进程都占用了某种资源而又都在等待该组进程中另一个进程所占用的资源 从而造成资源既相互保持又相互等待 使该组进程都停止往前推进而陷入永久的等待状态 微机与操作系统贯通教程王宝军著清华大学出版社 5 死锁的产生及原因 二 3 产生死锁的原因和必要条件 产生死锁的根本原因是并发进程对有限资源的竞争 也就是说 若干个进程要求资源的总数多于系统能提供的资源数 使进程之间形成对资源的竞争 如果对进程竞争的资源管理或分配不当就会引起死锁 互斥使用资源 部分分配资源 非剥夺式分配 循环等待资源 四个必要条件产生死锁的四个必要条件但不是充分条件 即只要产生了死锁 则这四个条件一定同时成立 反之 这四个条件同时成立则并不是一定会产生死锁的 上述四个条件也不是完全独立的 例如 循环等待资源 就包含了 部分分配资源 条件 但 部分分配资源 条件存在时并不意味着 循环等待资源 条件一定成立 两者既不是完全独立 也不是等价的 即每一个资源一次只能分配给一个进程使用 进程每次申请部分资源 在等待新资源的同时不释放已占有的资源 任何进程不能剥夺其它进程所占有的资源 除非进程自己释放资源 存在一组进程 它们分别等待另一进程所占用的资源而形成循环链 微机与操作系统贯通教程王宝军著清华大学出版社 6 对抗死锁 一 1 死锁的预防 运行前 采用适当的资源分配策略来限制并发进程对资源的请求 打破产生死锁的四个必要条件中的任何一个或几个条件 就可以达到运行前预防死锁的目的 死锁预防策略都会使系统资源利用率在不同程度上有所降低 微机与操作系统贯通教程王宝军著清华大学出版社 6 对抗死锁 二 2 死锁的避免 运行中 在进程执行过程中动态申请资源时 操作系统通过某种算法测试系统状态是否安全 以决定是否把申请的资源分配给该进程 从而避免死锁发生 如果能保证所有进程在有限时间内得到需要的全部资源 即系统处于 安全状态 则可以把资源分配给申请者 否则就不把资源分配给申请者 因为不安全状态可能引起死锁 与运行前预防死锁策略相比 这种策略可以提高资源的利用率 是用于测试系统状态的经典算法 其基本思想是 当进程P向系统申请资源R时 测试所有并发进程对R的最大需求量 若把R分配给P 剩余R数量还能满足其中一个进程对R的最大需求 则表明系统是安全的 把R分配给P 否则就推迟分配 银行家算法 银行家算法实例分析 微机与操作系统贯通教程王宝军著清华大学出版社 6 对抗死锁 三 3 死锁的检测与恢复 死锁后 用银行家算法避免死锁发生是以增加系统时空开销为代价的 在一些不经常出现死锁的系统中 往往不采取死锁预防和避免措施 而是采用定时运行一个 死锁检测 程序 当检测到有死锁发生时再设法将其排除 恢复系统正常运行 系统中设置两张表格用来记录进程使用和等待资源的情况 定时扫描这两张表格 查看进程之间是否存在对资源的循环等待链 如果存在循环等待链 则表明进程之间已产生死锁 否则就没有产生死锁 死锁检测的方法 死锁检测实例分析 P1依次需要R1 R5 R3资源 P2依次需要R3 R4 R2资源 P3依次需要R2 R5资源 若系统调度顺序为 P1申请并得到资源R1和R5后被打断 调度到P2申请R3 R4 在P2得到R3 R4后又被打断 调度到P3申请R2 则P3得到R2后如图所示 从等待资源表第1项出发 P1等待R3 R3被P2占用 P2等待R2 R2被P3占用 P3等待R5 R5被P1占用 首尾相接表明存在循环等待链 即系统已发生死锁 当检测到死锁后 可以采用抢夺进程占用的资源 或强迫进程结束 或重新启动操作系统等方法来解除死锁 微机与操作系统贯通教程王宝军著清华大学出版社 第4章小结 一 CPU是微机的核心部件 其工作效率决定了整机的速度与性能 8086 8088为双列直插式封装的大规模集成芯片 其40个引脚中有许多是按分时或不同工作方式而具有双重功能 当CPU只需连接小容量存储器和少量外部设备时 可以工作于最小方式 当CPU应用于中等规模或大型系统需要连接较大容量的内存和较多数量的外设时 可以工作于最大方式而构成多微处理器系统 CPU主频的倒数即为时钟周期 一个基本总线周期由4个时钟周期组成 对于低速内存或外设 在规定时间内未能准备好数据的情况下自动在T3和T4状态之间插入等待状态Tw 从而兼容了对不同速度的内存或外设的访问 在8086 8088获得巨大成功之后 Intel公司又相继推出了80286 80386 80486 Pentium Pentium Pentium Pentium 等一系列CPU 其中 作为第二代32位微处理器的80486的重大突破是在CPU芯片内部集成了协处理器和8KBCache 并首次采用RISC设计思想 使其核心指令只需1个时钟周期即可完成 PentiumCPU虽然内部仍是32位结构 但其64位的外部数据总线使数据传输能力大大增强 并采用超标量U V双流水线结构 使得一个时钟周期内可执行2条指令 目前主流的IntelCPU都支持三种工作模式 即实地址模式 保护模式和虚拟8086模式 为了充分 有效地利用系统资源 现代操作系统都体现了并发执行以及资源共享 用户随机使用系统的特点 续 微机与操作系统贯通教程王宝军著清华大学出版社 第4章小结 二 我们由此引入了进程 用来动态地描述具有独立功能的程序段在某个数据集上的一次执行活动 也作为系统分配资源的基本单位 进程控制块PCB是系统感知进程存在的惟一标识 它包含了进程的描述信息 控制信息和资源信息 当然 作为一个进程实体 还包括该进程对应的程序段和数据段 任何一个实际系统中 并发执行的进程数一般总是多于CPU的个数 所有进程不可能同时占用CPU时间 所以进程具有三种基本状态 执行状态 就绪状态 等待状态 任何一个进程在其创建到被撤消的生命期内 其状态的变化由进程控制原语来实现 其中 进程调度算法常用的有时间片轮转法 优先级法 多级反馈轮转法等 它们在系统资源利用率 公平性 响应时间等方面各有偏颇或折中 总之 并发执行的多个进程总是走走停停的 它们在宏观上是并行的 而微观上看却是串行的 资源共享在有利于提高资源利用率的同时 必将带来并发进程对有限资源的竞争 互斥与同步就是资源竞争而引起的并发进程在执行速度上受到制约的两种关系 信号量机制就是实现进程互斥与同步的一种简单而有效的方法 然而 P V操作并没有解决因操作系统对资源动态分配的不当而可能产生的死锁状态 即若干个进程相互之间都无休止地等待对方释放自己所需资源的情形 于是 从产生死锁的根本原因以及四个必要条件出发 我们可以采用在运行前预防死锁 运行中避免死锁以及产生死锁后检测和解除死锁等多种策略来对抗死锁 王宝军著清华大学出版社 ThankYou
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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