4资源管理技术 主要內容:操作系统概述、并发程序开发技术、存储空间的组织、几种常见的操作系统 重点:同步、互斥、死锁、进程、重定位概念理解,并发程序设计技术 难点:进程间的通信 41概念 1操作系统的定义 操作系统是计算机系统中直接控制和管理(手段)各种软硬件资源对象),以方便用户充分而有效地利用 这些资源(目标)的程序的集合(实体) 2操作系统的目标 1)方便性:提供给用户易用统一的手段 2)有效性: 有效地控制各种软硬件资源,使之得到充分利用(保持忙碌和有序占用) 合理组织系统工作流程,改善系统性能(提高系统效率) 为用户方便的使用计算机提供良好的环境(提高用户使用效率) 3)可扩充性:模块化,易添加和修改 4)开放性例:网络时代的操作系统 对应用程序最大可能的提供开放统一的环境 应用程序能方便地移植和互操作。 3操作系统的作用 是用户和计算机系统之间的接口 接口位置:位于用户与计算机硬件系统之间 接口作用 从用户角度:用户可以通过各种接口,获得访问、使用系统资源的能力 从系统角度:系统在有序管理计算机硬件系统前提下,向用户提供调用接口 操作系统是系统资源管理者 系统资源:处理机(CPU)、存储器、LO设备及信息(软件——一程序和数据)。 处理机管理:纪录处理机状态,按策略分配处理机 存储器管理:纪录存储器使用情况,按策略分配,保护信息不受破坏 I/O管理:按要求和策略分配设备,优化设备调度,提高设备使用效率。 信息管理:以文件方式组织信息。方便的查询和保护 412操作系统的发展历史 ■1.3操作系统的发展历史 1从人工操作到机器自动处理 人工操作缓慢 机器按照事先编辑好的过程完成任务的转换 减少两个作业之间的人工干预,由系统自动调度作业逐个投入运行 从联机ⅣO到脱机IO CPU速度迅速提高而IO设备依然缓慢,CPU化大量时间等待设备 输入输出在外围机控制下进行 3.从单道程序处理到多道程序同时处理
4 资源管理技术 主要内容:操作系统概述、并发程序开发技术、存储空间的组织、几种常见的操作系统 重点:同步、互斥、死锁、进程、重定位概念理解,并发程序设计技术 难点:进程间的通信 4.1 概念 1 操作系统的定义 操作系统是计算机系统中直接控制和管理(手段)各种软硬件资源(对象),以方便用户充分而有效地利用 这些资源(目标)的程序的集合(实体). 2 操作系统的目标 1)方便性:提供给用户易用统一的手段 2)有效性: 有效地控制各种软硬件资源,使之得到充分利用(保持忙碌和有序占用) 合理组织系统工作流程,改善系统性能(提高系统效率) 为用户方便的使用计算机提供良好的环境(提高用户使用效率) 3) 可扩充性: 模块化,易添加和修改 4)开放性例:网络时代的操作系统 对应用程序最大可能的提供开放统一的环境, 应用程序能方便地移植和互操作。 3 操作系统的作用 ◼ 是用户和计算机系统之间的接口 接口位置:位于用户与计算机硬件系统之间。 接口作用: 从用户角度:用户可以通过各种接口,获得访问、使用系统资源的能力。 从系统角度:系统在有序管理计算机硬件系统前提下,向用户提供调用接口 ◼ 操作系统是系统资源管理者 系统资源:处理机(CPU)、存储器、I/O 设备及信息(软件——程序和数据)。 处理机管理:纪录处理机状态,按策略分配处理机。 存储器管理:纪录存储器使用情况,按策略分配,保护信息不受破坏。 I/O 管理:按要求和策略分配设备,优化设备调度,提高设备使用效率。 信息管理:以文件方式组织信息。方便的查询和保护。 4.1.2 操作系统的发展历史 ◼ 1.3 操作系统的发展历史 1.从人工操作 到 机器自动处理 人工操作缓慢 机器按照事先编辑好的过程完成任务的转换 减少两个作业之间的人工干预,由系统自动调度作业逐个投入运行 2. 从联机 I/O 到 脱机 I/O CPU 速度迅速提高而 I/O 设备依然缓慢, CPU 化大量时间等待设备 输入输出在外围机控制下进行 3. 从单道程序处理 到 多道程序同时处理
413操作系统的分类 单道批处理系统 作业成批进入系统后备队列 按照一定的策略调度一个作业在系统中运行 背景: 系统资源十分昂贵 输入速度与CPU的速度不匹配 联机单道批处理没有解决IO与CPU速度不匹配问题 脱机单道批处理可以使CPU与IO并行工作,提高效率 单道批处理 单道批处理 用户程序一O中断请求 监督程序中断处理 其它 O操作VO启动o完成 食统方 作业 单道程序系统 单道批处理系统特点 输出井其它 ◆内存中只保持一道作业运行 单道批处理系统 ◆作业完成顺序与其进入内存的顺序直接相关 2多道批处理系统 作业成批进入系统后备队列 按照一定的策略调度多个作业在系统中运行 进一步提高系统吞吐量和利用率 O中断请求 多道批处理 用户程序 监督程序 E批进入 O操作 O完成 单道程序系统 输出井其它 程序A和B 程序A 单蚍处统 都得到了 推进并发 程序B 作业 成批进入 多道并发执行 OS调度 VO A VO B 目输入 输出井其它 多道程序系统 多批处系能 多道批处理对资源利用率的提高: 提高CPU,内存,1O设备的利用率 多道批处理系统的特点 多道性 无序性:作业进入内存的顺序与作业完成的顺序不直接相关。 需要进行两级调度 高级调度:选取多个作业进入内存
4.1.3 操作系统的分类 1 单道批处理系统 作业成批进入系统后备队列 按照一定的策略调度一个作业在系统中运行 背景: 系统资源十分昂贵 输入速度与 CPU 的速度不匹配 联机单道批处理没有解决 I/O 与 CPU 速度不匹配问题 脱机单道批处理可以使 CPU 与 I/O 并行工作,提高效率 单道批处理 其它 作业 成批进入 输入井 输出井 其它 传统方式 单道批处理系统 低速 高速 ◼ 单道批处理系统特点: ◆内存中只保持一道作业运行 ◆作业完成顺序与其进入内存的顺序直接相关 单道批处理 单道程序系统 用户程序 监督程序 I/O操作 I/O中断请求 I/O完成 t1 t2 中断处理 I/O启动 2 多道批处理系统 作业成批进入系统后备队列 按照一定的策略调度多个作业在系统中运行 进一步提高系统吞吐量和利用率 单道程序系统 用户程序 监督程序 I/O操作 I/O中断请求 I/O完成 多道程序系统 程序A 程序B OS调度 I/O A I/O B t1 t1 t2 t2 程序A和B 都得到了 推进,并发 并行 多道批处理 其它 作业 成批进入 输入井 输出井 单道批处理系统 高速 其它 作业 成批进入 输出井 多道批处理系统 多道并发执行 输入井 多道批处理对资源利用率的提高: 提高 CPU, 内存, I/O 设备的利用率 多道批处理系统的特点: 多道性: 无序性: 作业进入内存的顺序与作业完成的顺序不直接相关。 需要进行两级调度 高级调度: 选取多个作业进入内存
低级调度:在内存中的多个作业之间完成处理机使用权的切换 小结:批处理系统的特点: 资源利用率高,吞吐量大:能根据作业对系统资源的需求和系统当前状态,充分调度资源。 无交互能力:作业进入系统后,系统自动调度,管理员或用户不干预系统的调度情况 ■分时系统解决人机交互,进行及时响应,共享主机 分时系统实现:按时间片轮转:时间片:作业使用CPU的时间;时间片中断处理 将时间片划分很小,从一个较长时间看,每一个用户都似乎独享主机 例:电影胶片每秒播放25帧图象。即每幅图象占用0.04秒 若将帧速率提高一倍,就可以在屏幕的上下两方同时播放两部电影 时间片的选择:几十到几百毫秒之间 太大:及时交互性效果不明显 太小:作业频繁切换,增加系统开销 ■实时系统 分时系统的响应往往要等待一个循环周期。 实时系统必须在规定的时间内对用户请求或外部事件及时响应 实时控制:实时采集现场数据,完成自动化控制例:导弹导航 特点:响应速度足够快可靠性高 实时信息査询:根据用户要求进行信息检索和处理例:远程订票系统 特点:强大的文件系统或数据库;操作简便、安全、查询快速 15操作系统的特征 并发性、共享性、虚拟性和异步性 1.5.1程序执行的并发性:可以大大提高资源利用率 并行:在某一时刻同时发生 并发:在一段时间内同时发生 1.52资源的共享性 系统中的资源可供多个并发执行的程序共同使用 互斥共享 某些资源只能互斥访问,如打印机。 系统在一段时间内让多个程序分别访问了互斥资源是为共享 时访问 某些资源允许多个程序同时访问,如屏幕 系统并发调度多个程序共享资源 ■共享性与并发性的关系—互为条件 (共享)对资源进行有效的管理,使得一个作业在访问I/O设备而不使用CPU时,其他作业 可以使用CPU—一并发执行 (并发)程序并发执行,系统资源在一段时间内为多个程序共同访问,资源得到了共享—资 源的共享 1.5.3对象的虚拟性 虚拟:把一个物理实体通过一定的技术变成若干个逻辑上的对应物 1.54、程序执行的异步性(不确定性) 程序之间是以异步的方式推进的 异步、不确定
低级调度: 在内存中的多个作业之间完成处理机使用权的切换 小结:批处理系统的特点: 资源利用率高,吞吐量大: 能根据作业对系统资源的需求和系统当前状态,充分调度资源。 无交互能力: 作业进入系统后,系统自动调度,管理员或用户不干预系统的调度情况 ◼ 分时系统:解决人机交互,进行及时响应,共享主机 分时系统实现:按时间片轮转: 时间片:作业使用 CPU 的时间; 时间片中断处理 将时间片划分很小,从一个较长时间看,每一个用户都似乎独享主机 例:电影胶片每秒播放 25 帧图象。即每幅图象占用 0.04 秒 若将帧速率提高一倍,就可以在屏幕的上下两方同时播放两部电影 时间片的选择:几十到几百毫秒之间。 太大:及时交互性效果不明显 太小:作业频繁切换,增加系统开销 ◼ 实时系统 分时系统的响应往往要等待一个循环周期。 实时系统必须在规定的时间内对用户请求或外部事件及时响应 实时控制: 实时采集现场数据,完成自动化控制 例:导弹导航 特点: 响应速度足够快 可靠性高 实时信息查询: 根据用户要求进行信息检索和处理 例:远程订票系统 特点: 强大的文件系统或数据库; 操作简便、安全、查询快速 1.5 操作系统的特征 并发性、共享性、虚拟性和异步性 1.5.1 程序执行的并发性: 可以大大提高资源利用率 并行:在某一时刻同时发生 并发:在一段时间内同时发生 1.5.2 资源的共享性 系统中的资源可供多个并发执行的程序共同使用 互斥共享: 某些资源只能互斥访问,如打印机。 系统在一段时间内让多个程序分别访问了互斥资源是为共享 同时访问: 某些资源允许多个程序同时访问,如屏幕。 系统并发调度多个程序共享资源 ◼ 共享性与并发性的关系——互为条件 (共享)对资源进行有效的管理,使得一个作业在访问 I/O 设备而不使用 CPU 时,其他作业 可以使用 CPU——并发执行 (并发)程序并发执行,系统资源在一段时间内为多个程序共同访问,资源得到了共享——资 源的共享 1.5.3 对象的虚拟性 虚拟:把一个物理实体通过一定的技术变成若干个逻辑上的对应物。 1.5.4、程序执行的异步性(不确定性) 程序之间是以异步的方式推进的。 异步、不确定
可能程序完成的顺序与程序进入内存(系统)的顺序不同 不可预知:程序何时执行、何时暂停、推进进度、完成时间等 422进程 2.22进程的特征 动态性:生命期 并发性:进程执行时间的重叠(宏观) 独立性:资源分配与调度时相对独立 异步性:“走走停停”,不可预知 结构性:进程的结构——进程的“映像 .3进程的状态与转换 (1)三种基本的进程状态 犹绪态:进程已获得除CPU以外的其他资源 执行态:进程获得CPU正在运行的状态 阻塞态:进程因等待某事件而暂时不能运行的状态 进程的状态转换 进程状态转换 新进程)接纳中断或成(结東 进程状态转换 时间片用完 ◆进程在状态转换的过程中推进完毕 动官 万事具备 获得cPU 只欠“东风 执行 正在运行断新状态一就绪 接纳 进入就绪队列 就绪一执行进程调度 分配cPU 进程调度 执行一轴東完成 释放资源 O完成或 O请求或 享件发生 等待某事件 执行一就绪时间片到时系统剥夺cPU 欠缺某些条件 执行一阻塞 O请求 进程放弃cPU 等待某事件进入阻塞等特队列 状态转换原因图 阻塞—就绪阻塞事件释放进程进入就绪队 (3)挂起状态 什么是挂起状态: 将进程置于静止状态 正在执行的进程暂停执行 就绪的进程暂不接受调度 阻塞的进程即使阻塞事件释放也不能继续执行 引入挂起状态的原因 人为:观察的需要 系统:检测的需要,调节系统负荷
可能程序完成的顺序与程序进入内存(系统)的顺序不同 不可预知:程序何时执行、何时暂停、推进进度、完成时间等 4.2.2 进程 2.2.2 进程的特征 动态性:生命期 并发性:进程执行时间的重叠(宏观) 独立性:资源分配与调度时相对独立 异步性:“走走停停”,不可预知 结构性:进程的结构——进程的“映像” 2.2.3 进程的状态与转换 (1)三种基本的进程状态 就绪态:进程已获得除 CPU 以外的其他资源。 执行态:进程获得 CPU 正在运行的状态 阻塞态:进程因等待某事件而暂时不能运行的状态 21 进程的状态转换 新进程 就绪 执行 结束 阻塞 接纳 进程调度 中断或 时间片用完 完成 I/O请求或 等待某事件 I/O完成或 事件发生 状态转换原因图 万事具备, 只欠“东风” CPU 获得CPU 正在运行 欠缺某些条件 23 进程状态转换 ◼ 进程状态转换 ◆进程在状态转换的过程中推进完毕 新状态 就绪 事件 动作 接纳 进入就绪队列 就绪 执行 进程调度 分配CPU 执行 结束 完成 释放资源 执行 阻塞 时间片到时 高优先中断 系统剥夺CPU 执行 就绪 I/O请求 等待某事件 进程放弃CPU 进入阻塞等待队列 阻塞 就绪 阻塞事件释放 进程进入就绪队列 (3)挂起状态 什么是挂起状态: 将进程置于静止状态 正在执行的进程暂停执行 就绪的进程暂不接受调度 阻塞的进程即使阻塞事件释放也不能继续执行 引入挂起状态的原因 人为:观察的需要 系统:检测的需要,调节系统负荷
进程的挂起状态 ■两种挂起状态 ◆静止就绪与静止阻塞 ◆一般情况下,挂起状态的进程将从内存移到外存 引入挂起状态后的系统状态转换 23进程的控制 2.3.1进程控制块( Process Control block) 系统为了管理进程设置的一个专门的数据结构进程控制块,用它来记录进程的外部特征,描述进程的 运动变化过程 234进程与程序 1、静与动 程序是指令的集合,是静态概念 进程是程序的执行过程,是动态概念 2、记录与过程 程序可作为软件资源长期保存 进程只是一次短暂活动或过程 3、对应关系 个程序可对应多个进程 个进程可包含多段程序 所以,不能以进程执行的程序来识别进程。识别进程,控制进程的关键是掌握PCB 24、线程的基本概念 24l、引入线程的原因 系统在调度一个进程的同时还涉及资源的分配与状态转换等一系列动作 如果在调度一个线程时不涉及资源的管理,调度过程会大大加快 242线程 线程是进程内的一个可调度实体、是一个执行单元、轻量进程 一个进程可建立多个线程,这些线程共享进程拥有的全部资源 多个线程之间并发执行,切换时快速简便 线程具有进程的四个特征:动态性、并发性、(运行)独立性、异步性 如:在 Windows系统中,各进程独立使用各自的4GB容量的内存空间,而同一进程的多个线程则共享 个4GB空间。 例:进程1需要访问1000号单元的内容,进程2也需要访问1000号单元的内容,他们访问的并不是同 个单元。而进程1的两个线程访问1000号单元,则是同一个单元 243线程与进程的比较
25 进程的挂起状态 ◼ 两种挂起状态 ◆静止就绪与静止阻塞 ◆一般情况下,挂起状态的进程将从内存移到外存 ◼ 引入挂起状态后的系统状态转换 就绪 执行 阻塞 静止 阻塞 静止 就绪 2.3 进程的控制 2.3.1 进程控制块(Process Control Block) 系统为了管理进程设置的一个专门的数据结构进程控制块,用它来记录进程的外部特征,描述进程的 运动变化过程。 2.3.4 进程与程序 1、静与动 程序是指令的集合,是静态概念 进程是程序的执行过程,是动态概念 2、记录与过程 程序可作为软件资源长期保存 进程只是一次短暂活动或过程 3、对应关系 一个程序可对应多个进程 一个进程可包含多段程序 所以,不能以进程执行的程序来识别进程。识别进程,控制进程的关键是掌握 PCB 2.4、线程的基本概念 2.4.1、引入线程的原因 系统在调度一个进程的同时还涉及资源的分配与状态转换等一系列动作 如果在调度一个线程时不涉及资源的管理,调度过程会大大加快。 2.4.2 线程 线程是进程内的一个可调度实体、是一个执行单元、轻量进程。 一个进程可建立多个线程,这些线程共享进程拥有的全部资源 多个线程之间并发执行,切换时快速简便。 线程具有进程的四个特征:动态性、并发性、(运行)独立性、异步性 如:在 Windows 系统中,各进程独立使用各自的 4GB 容量的内存空间,而同一进程的多个线程则共享一 个 4GB 空间。 例:进程 1 需要访问 1000 号单元的内容,进程 2 也需要访问 1000 号单元的内容,他们访问的并不是同一 个单元。而进程 1 的两个线程访问 1000 号单元,则是同一个单元。 2.4.3 线程与进程的比较
(1)调度 同一进程的多线程间调度时,不引起进程的切换 不同进程的线程间调度,需要进程切换 (2)并发性 个进程的多个线程之间可并发执行 (3)资源的拥有 线程不拥有系统资源,不拥有代码段、数据段 (4)系统开销 线程:系统仅为其保存少量寄存器内容 进程:整个当前CPU环境,资源清单等 死锁: 当两个或两个以上进程因竞争资源而无休止地处于相互等待状态 死锁将使进程己占用的资源的不到利用 严重情况下,死锁“蔓延”开,会导致“死机” 死锁 4.3死锁问题( dead lock) a例:进程1 进程2 P(s2) P(s2)十P(s1) 临界区 2临界区 v(s2) v(s2) 状态就绪执行阻塞 状态就绪执行阻塞 43.1死锁产生的必要条件 死锁和“资源”密切相关 1)资源访问的互斥条件 2)请求和保持条件 进程在需要时才申请资源——进程对资源的申请是分步的 进程在申请新资源时,对旧资源仍然保持占用 ◆3)不剥夺条件 资源一旦获得后在V(s)之前不放弃 ◆4)环路等待条件
(1)调度 同一进程的多线程间调度时,不引起进程的切换 不同进程的线程间调度,需要进程切换 (2)并发性 一个进程的多个线程之间可并发执行 (3)资源的拥有 线程不拥有系统资源,不拥有代码段、数据段。。。 (4)系统开销 线程:系统仅为其保存少量寄存器内容 进程:整个当前 CPU 环境,资源清单等 死锁: 当两个或两个以上进程因竞争资源而无休止地处于相互等待状态 死锁将使进程已占用的资源的不到利用 严重情况下,死锁“蔓延”开,会导致“死机” 死锁 ◼ 4.3死锁问题(dead lock) ◼ 例: P( s1 ) P( s2 ) 临界区 V( s2 ) V( s1 ) P( s2 ) P( s1 ) 临界区 V( s1 ) V( s2 ) ...... ...... ...... ...... 进程1 进程2 就绪执行阻塞 就绪执行 s1 s2 状态: 状态: 阻塞 死锁 4.3.1 死锁产生的必要条件 ◆ 死锁和“资源”密切相关 ◆ 1)资源访问的互斥条件 ◆ 2)请求和保持条件 进程在需要时才申请资源——进程对资源的申请是分步的 进程在申请新资源时,对旧资源仍然保持占用 ◆ 3)不剥夺条件 资源一旦获得后在 V(s)之前不放弃 ◆ 4)环路等待条件
死锁产生的必要条件 预防死锁 4)环路等待条件 预防 ◆存在进程资源环形链 ◆破坏死锁产生的四个条件的一个或几个 1)破坏互斥条件 c互斥访问是大部分资源的固有属性 ◆2)破坏请求和保持条件 c资源预分配,资源利用率低 ◆3)破坏不剥夺条件 c阻塞进程释放所有的资源,进程先前工作白费 ◆4)破坏环路等待条件 从资源出发的箭头表示已分配该资源 c资源按序分配,资源利用率低,进程受限 从进程出发的箭头表示进程正在申请资源 死锁的检测 资源分配图的化简 433死锁的检测 ■死锁检测法—资源图的化简 1)在图中找出一个不阻 资源分配图 寥,又不孤立的结点 c结点 2)削去该结点的所有 小进程结点 nP°边,使结点成为预立结 资源结点(同类资源形成一个结点)[ c有向线段 n3)继续步骤1直到所有 的结点都成为孤立结 进程正申请一个资源 点,或找不到可简化的 进程已获得一个资源 若资源分配图能被完全简化,则当前状态不存在死锁 反之,存在死锁进程,即那些非孤立结点 423进程之间的通信 进程同步问题的提出:进程异步推进可能造成混乱,混乱可能导致不可再现 进程同步目标:维持进程并发性以提高系统效率 进程间相互合作,资源有效共享(结果可再现) 进程间的两种主要关系 进程间的关系与进程间的独立性 进程间的关系是在进程间相对独立的前提下发展的 独立获得资源,独立调度
死锁产生的必要条件 ◼ 4)环路等待条件 ◆存在进程——资源环形链 Proc1 s2 Proc2 s1 Proc1 Proc3 Proc2 s2 s3 s1 从进程出发的箭头表示进程正在申请资源 从资源出发的箭头表示已分配该资源 预防死锁 ◼ 4.3.2 解决死锁的方法之一——预防 ◆破坏死锁产生的四个条件的一个或几个 ◆1)破坏互斥条件 互斥访问是大部分资源的固有属性 ◆2)破坏请求和保持条件 资源预分配,资源利用率低 ◆3)破坏不剥夺条件 阻塞进程释放所有的资源,进程先前工作白费 ◆4)破坏环路等待条件 资源按序分配,资源利用率低,进程受限 死锁的检测 ◼ 4.3.3 死锁的检测 ◆资源分配图 结点: ❖进程结点 ❖资源结点(同类资源形成一个结点) 有向线段: ❖进程正申请一个资源 ❖进程已获得一个资源 P1 P1 P1 资源分配图的化简 ◼ 死锁检测法——资源图的化简 P1 P2 r1 r2 P1 P2 ◼ 1)在图中找出一个不阻 塞,又不孤立的结点 ◼ 2)削去该结点的所有 边,使结点成为孤立结 点 ◼ 3)继续步骤1直到所有 的结点都成为孤立结 点,或找不到可简化的 结点 若资源分配图能被完全简化,则当前状态不存在死锁。 反之,存在死锁进程,即那些非孤立结点。 4.2.3 进程之间的通信 进程同步问题的提出:进程异步推进可能造成混乱,混乱可能导致不可再现 进程同步目标: 维持进程并发性以提高系统效率 进程间相互合作, 资源有效共享(结果可再现) 进程间的两种主要关系 进程间的关系与进程间的独立性 进程间的关系是在进程间相对独立的前提下发展的 独立获得资源, 独立调度
进程间的同步关系(一) 进程间的同步关系(二) 司机 售禀员 打印进程1 打印进程2 正常行车 售票 到站停车子作 开车门 [获得打印数据 获得打印教据 检查车况 L维持秩序 打印 匚打印 匚开车关车门 w娃回的同步关系( 完成教据计算 打印进程 [计算结果送到Bue 通知计算进 圆通知打印进程打印回合作送下一个数 从 Buffer中取数 打印 进程间的同步关系 相互合作:司机与售票员,计算者与打印者, 竞争资源计算者与打印者,多个打印者 司机 售票员 同步实现初探(二) 打印进程1 打印进程2 正常行车 匚售票 获得打印数据 获得打印数据 到站停车 开车门是 否 打印机可用? 丁印机可用? 匚检查车况 是 是 维持秩序 投置打印机为不可用 设置打印机为不可用 步 互斥
进程间的同步关系(一) 正常行车 到站停车 开车 售票 开车门 关车门 司机 售票员 合作 合作 检查车况 维持秩序 获得打印数据 进程间的同步关系(二) 打印进程1 打印进程2 打印 打印 互斥 获得打印数据 进程间的同步关系(三) 计算进程 打印进程 计算结果送到Buffer 从Buffer中取数 Buffer 互斥 完成数据计算 打印 通知打印进程打印 通知计算进程 合作 送下一个数 进程间的同步关系 相互合作: 司机与售票员, 计算者与打印者, 竞争资源: 计算者与打印者, 多个打印者 正常行车 到站停车 开车 售票 开车门 关车门 司机 售票员 同步 同步 到站停车否 是 检查车况 否 维持秩序 关车门 是 同步实现初探(二) 打印进程 1 打印进程 2 打印 打印 互斥 获得打印数据 获得打印数据 打印机可用? 设置打印机为不可用 是 否 打印机可用? 设置打印机为不可用 是 否
同步实现初探(三) 进程间的同步关系 计算进程 打印进程 m进程同步时面临的两种主要关系 完成数据计寞 互斥 十算结果送到 Buffer 相互合作 司机与售纂员 向打印进发情号杀 算者与打印者 fer] 竞争资源 通知其丛 Buffer里取数 多个打印者 互斥 从Bue中取数」 合作 打印 事件、设备等抽象为资源 向计算进程发信号: 对进程间关系的处理变为对资源的访问方式 L通知其向Butr送数 312临界资源与临界区 (1)临界资源 次只允许一个进程访问的资源 资源状态为临界:0或1 (2)临界区 每个进程用于访问临界资源的那段程序 临界区 改变资源 阻塞等待 临昇区 状态 临界区 资源释放 出E 唤醒等待 进程1 进程2 313同步机制应遵循的原则 (1)空闲让进:当资源空闲时,应当允许访问资源的进程进入临界区 (2)忙则等待:当资源被占用时,应使申请访问该资源的进程等待,等待使用者归还资源 (3)让权等待:在进程等待资源时,从执行态转为阻塞态,应当让出CPU的使用权。系统将把CPU分 配给其它进程使用,以提高系统效率 (4)有限等待:系统应保证等待的进程能在有限的时间内获得资源,继续执行,以防止无限等待浪费该 进程已占用的资源 314临界资源锁机制(靠锁实现资源的共享管理) 例:商场的试衣间(是互斥资源,是临界资源,是共享资源) 每个顾客必须遵循以下过程使用试衣间 观察锁状态→关锁→使用试衣间→开锁
同步实现初探(三) 计算进程 打印进程 计算结果送到Buffer 从Buffer中取数 Buffer 互斥 互斥 向打印进程发信号 通知其从Buffer里取数 Buffer空? 否 是 完成数据计算 打印 向计算进程发信号 通知其向Buffer送数 Buffer空? 否 是 合作 进程间的同步关系 ◼ 进程同步时面临的两种主要关系 司机与售票员 多个打印者 计算者与打印者 事件、设备等抽象为资源 对进程间关系的处理变为对资源的访问方式 3.1.2 临界资源与临界区 (1)临界资源 一次只允许一个进程访问的资源 资源状态为临界:0 或 1 (2)临界区 每个进程用于访问临界资源的那段程序 临界区 进入区 临界区 退出区 进入区 临界区 退出区 ... ... ... ... ... ... ... ... 阻塞等待 资源释放 改变资源 状态 释放资源 唤醒等待 进程 进程 1 进程 2 3.1.3 同步机制应遵循的原则 (1) 空闲让进:当资源空闲时,应当允许访问资源的进程进入临界区 (2) 忙则等待:当资源被占用时,应使申请访问该资源的进程等待,等待使用者归还资源 (3) 让权等待:在进程等待资源时,从执行态转为阻塞态,应当让出 CPU 的使用权。系统将把 CPU 分 配给其它进程使用,以提高系统效率. (4) 有限等待:系统应保证等待的进程能在有限的时间内获得资源,继续执行,以防止无限等待浪费该 进程已占用的资源. 3.1.4 临界资源锁机制 (靠锁实现资源的共享管理) 例:商场的试衣间( 是互斥资源, 是临界资源, 是共享资源) 每个顾客必须遵循以下过程使用试衣间: 观察锁状态→关锁→使用试衣间→开锁
锁机制实现 临界资源锁机制 L=0打开状态,资源空闲 :一圈 进程 m锁变量L L=1关闭状态,资源忙 check: if(L==1 check: if(L==1) goto check; 每个进程必须按照以下过程操作资源 goto chec else l= 1 else = 1 临界区}[L=0 临界区 临界 unlock(L; 锁操作的一般模型(Pi:进程i;C(i):Pi的临界区) lock( L) unlock( L) PJ lock( L) unlock( L) 出了问题的锁 锁与中断 进程1 秀【的进程2剪 通过开、关中断,保证关锁操作不被打断 关中断 check: if(L== 1) Check: if (L==1) goto check;问题出在9 o check 开中断 else l= 1 判断状态后seL=1 是 临界区 数变状态前 临界区 被打断 unlock(L) unlock (L) 开中断 出现问题的锁 信号量机制 锁操作特点 32进程同步的信号量机制( semaphore) 锁操作的特点: ◆(1)信号量 现了进程互斥访间临开资源。 c信号量是对具体物理资源的抽象 ◆不巡循让权等特原则。—忙等 c不同类的资源用不同名称的信号量代表 c同类资源的个数用>0的信号量值表示 c信号量值为0或1的信号量表示临界资源 开中斷 □伯号量是比夏高的资源抽象力式 F中断
锁机制 ◼ 临界资源锁机制 锁 锁变量L 每个进程必须按照以下过程操作资源 L = 1 关闭状态,资源忙 L = 0 打开状态,资源空闲 抽象 … L=1 临界区 L=0 … 锁机制实现 ...... ...... check: if ( L = = 1){ goto check; else L = 1; 临界区 L 进程 1 进程 2 unlock( L ); ...... check: if ( L = = 1){ goto check; else L = 1; 临界区 unlock( L ); ...... 10 锁操作的一般模型 (Pi: 进程 i ; C( i ): Pi 的临界区) Pi:...... lock( L ) → C( i ) → unlock( L ) ......... Pj:...... lock( L ) → C( j ) → unlock( L ) ......... 出了问题的锁 ...... ...... check: if ( L = = 1){ goto check; else L = 1; 临界区 unlock( L ); ...... check: if ( L = = 1){ goto check; else L = 1; 临界区 unlock( L ); ...... 出现问题的锁 进程 1 进程 2 L 10 尚未执行 问题出在? 判断状态后 改变状态前 被打断 锁与中断 ◼ 通过开、关中断,保证关锁操作不被打断 L==0? L=1 关中断 开中断 开中断 是 否 锁操作特点 ◼ 锁操作的特点: ◆实现了进程互斥访问临界资源。 ◆不遵循让权等待原则。——忙等 L==0? L=1 关中断 开中断 开中断 是 否 信号量机制 ◼ 3.2 进程同步的信号量机制(semaphore) ◆(1)信号量 信号量是对具体物理资源的抽象 不同类的资源用不同名称的信号量代表 同类资源的个数用> 0的信号量值表示 信号量值为 0 或 1 的信号量表示临界资源 信号量是比锁更高级的资源抽象方式