已阅读5页,还剩104页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 进程和作业管理 2 进程的基本概念 3 进程的概念 程序的顺序执行 程序 指令或语句序列 体现了某种算法 所有程序是顺序的 顺序环境 在计算机系统中只有一个程序在运行 这个程序独占系统中所有资源 其执行不受外界影响 在单道程序工作环境中 我们把一个 程序 理解为 一个在时间上按严格次序前后相继的操作序列 4 程序的顺序执行 例如 再如 s1 a x y s2 b a 5 s3 c b 1 5 顺序执行的程序具有特性 顺序性 程序在处理机上执行时 其操作只能严格按照所规定的顺序执行 资源独占 程序在执行过程中独占全部资源 资源状态的改变只与程序本身有关 而与外界环境无关 结果的无关性 程序执行的结果与其执行的速度无关 而不论是连续还是间断地执行 二是只要程序的初始条件不变 当重复执行时 一定能得到相同的结果 以上特性可归结为顺序程序的封闭性和可再现性 6 程序的并发执行 为了提高计算机的利用率 运行速度和系统的处理能力 在计算机中广泛使用并行处理技术 程序的并发执行是现代操作系统的一个基本特征 7 并发活动 进程的引入 程序并发执行 定义 若干个程序段同时在系统中运行 这些程序的执行在时间上是重迭的 一个程序段的执行尚未结束 另一个程序段的执行已经开始 8 并发活动 进程的引入 一 一个循环程序顺序执行的誊抄算法1 输入 f输出 g while f不为空 input output 由这个程序完成誊抄工作是不会出错的 9 并发活动 进程的引入 二 两个程序并发执行完成誊抄设有一台标准输入设备 键盘 和一台标准输出设备 显示器或打印机 输入程序负责从标准设备中读取一个字符 送缓冲区中 输出程序从缓冲区中取数据 送标准设备输出 10 并发活动 进程的引入 算法 2 cobeginwhile 不为结束符 输入程序段 input 从标准输入设备读入一个数据 send 将读入的数据送到bufferf while buffer不为空 输出程序段 receive 从bufferf中取数据 output 送打印机输出 coend 11 并发活动 进程的引入 这两个程序段并发执行时可能出现如下情况 1 输出程序运行的速度比输入程序快时 有些输出会重复 如输入送入了一个字符 A 输出取出打印 A 当输入还未送入新的数据 输出程序已执行 又取出 A 打印 这样 A 的输出就重复了 出错 2 输入程序执行的速度比输出程序快时 有些数据会丢失 如输入程序送入一个字符 B 紧接着 当输出程序还未取走字符 B 又送入字符 N 这时输出程序取走的是 N B 就丢失了 12 并发活动 进程的引入 三 三个并发执行程序的誊抄get程序负责从输入序列f中读取字符并送到缓冲区s中 copy程序把缓冲区s中的数据复制到缓冲区t中去 put程序从缓冲区t中取出数据打印 13 程序并发执行的特点 1 失去了程序的封闭性 开放性 如果程序执行的结果是一个与时间无关的函数 即具有封闭性 若一个程序的执行可改变另一个程序的变量 象二个并发程序完成誊抄的例子 程序执行的结果不仅依赖于程序的初始条件 还依赖于程序执行时的相对速度 在这种情况下就失去了程序的封闭性 14 程序并发执行的特点 2 程序与计算不再一一对应 动态性 在程序顺序执行时 一个程序总是对应一个具体的计算 但在程序的并发执行时 可能有多用户共享使用同一个程序 但处理 计算 的对象却是不同的 例如 在多用户环境下 可能同时有多个用户调用C语言的编译程序 这就是典型的一个程序对应多个用户源程序的情况 15 程序并发执行的特点 3 程序并发执行的相互制约在多道程序设计的环境下 程序是并发执行的 即系统中有多道程序在 同时 执行 这些程序之间要共享系统的资源 程序之间有合作 通信 的关系 合作与竞争产生一系列的矛盾 这些矛盾实际上是一种相互制约 有直接的 也有间接 16 并发执行的特征 不可再现性间断性 相互约束性 执行 暂停 执行 例如 通信性例如 并发性资源的共享和争夺 17 程序的并发执行 资源共享所谓资源 是指计算机处理一个任务或一个作业时的所有硬设备和软设备所谓资源共享 是指计算机中并发执行的多个程序交替使用计算机资源操作系统是用来实现对计算机资源进行管理的大型系统程序 其基本特征之一就是资源共享 18 进程的定义和性质 进程是可并发执行的程序在给定数据集合上的一次执行过程 是系统进行资源分配和调度的一个独立的基本单位和实体 是指执行一个映象程序的总环境 进程是操作系统中最基本 重要的概念 是多道程序系统出现后 为了刻画系统内部出现的动态情况 描述系统内部各道程序的活动规律引进的一个概念 所有多道程序设计操作系统都建立在进程的基础上 19 程序与进程的比较 动态性和静态性进程是程序的执行过程 属于动态的概念 一个进程可以看成是一个动作序列 而每个动作则是由执行一段指令序列 程序 实现的 其结果是提供了某种系统功能 进程的动态性不仅表现为 程序的执行 而且还表现在它是动态地产生和消亡 程序是一组有序静态指令和数据的集合 用来指示处理机的操作 属于静态的概念 20 程序与进程的比较 一对多关系一个进程可以涉及到一个或几个程序的执行一个程序可以对应一个或多个进程 即同一程序段可以在不同数据集合上运行 可构成不同的进程 例如打印输出程序段 例如同一高级语言编译程序与多个用户源程序并发性进程能真实地描述并发执行 而程序就不具有这种鲜明特征进程是一个能独立调度并能和其他进程并行执行的单位 它能确切地描述并发活动 而程序段通常不能作为独立调度执行的单位 21 程序与进程的比较 进程具有创建其他进程的功能通常情况下进程都是由其父进程创建的 而祖先进程是在系统初始活动时由启动程序建立的 系统中所有进程的活动均受操作系统或父进程控制 不断地转变状态 直至完成任务后被撤消一般的程序不具备创建其他程序的功能操作系统中的每一个程序都是在一个进程现场中运行的 22 进程的特征 动态性 进程 由创建而产生 由调度而执行 因得不到资源而暂停执行 由撤消而消亡 而程序是静态的 并发性独立性P130制约性结构性 23 进程的类型 进程族父 子进程的关系 进程控制运行方式资源共享 1 系统进程与用户进程2 父进程和子进程系统或用户首先创建的进程称为父进程在父进程下面的进程称为子进程 24 进程的状态和转换 25 进程的状态和转换 三态模型 一个进程从创建而产生至撤销而消亡的整个生命周期 可用一组状态加以刻划 按进程在执行过程中的状况至少定义三种不同的进程状态 运行态 running 就绪态 ready 等待态 blocked 注意 在任何时刻 任何进程都处于且仅处于某一个状态 26 进程状态变化图 运行 就绪 阻塞 进程调度程序把处理机分配给进程 时间片用光 进程因某事件 如等待I O完成 变成阻塞状态 某事件被解除 如I O完成 27 进程的状态和转换 三态模型 运行状态 进程正在处理机上运行的状态 该进程已经获得必要的资源 也获得了处理机 用户程序正在处理机上运行阻塞状态 进程等待某种事件完成 例如 等待I O操作完成 而暂时不能运行的状态 此时 即使分配给它处理机 它也不能运行 就绪状态 等待处理机的状态 该进程运行所需要的其他资源都得到满足 但因处理机个数少于进程个数 该进程不能运行 必须等待分配处理机资源 28 进程状态变化 运行态 等待态等待使用资源或某事件发生 等待态 就绪态资源得到满足或事件发生 运行态 就绪态运行时间片到 出现有更高优先权进程 就绪态 运行态CPU空闲时选择一个就绪进程 29 五态模型 增加两个已经证明很有用的状态 新建和退出新建状态 对应进程刚被创建的状态 为一个新进程创建必要的管理信息 它并没有被提交执行 而是在等待操作系统完成创建进程的必要操作 退出状态 进程的终止 首先 等待操作系统进行善后 然后 退出主存 进入终止态的进程不再执行 但依然临时保留在系统中等待善后 一旦其他进程完成了对终止态进程的信息抽取之后 系统将删除该进程 30 五态模型 31 五态模型的进程状态转换 NULL 新建态 创建一个子进程 新建态 就绪态 系统完成了进程创建操作 且当前系统的性能和内存的容量均允许 运行态 终止态 一个进程到达自然结束点 或出现了无法克服的错误 或被操作系统所终结 或被其他有终止权的进程所终结 终止态 NULL 完成善后操作 就绪态 终止态 某些操作系统允许父进程终结子进程 等待态 终止态 某些操作系统允许父进程终结子进程 32 进程状态的队列模型 单一阻塞队列 处理器 就绪队列 阻塞队列 允许进入 分派 释放 超时 等待事件 事件发生 33 进程状态的队列模型 多条阻塞队列 处理器 就绪队列 事件1队列 允许进入 分派 释放 超时 等待事件1 事件1发生 事件2队列 等待事件2 事件2发生 事件n队列 等待事件n 事件n发生 34 进程队列的组织方式 见书130线性方式链接方式 35 例 一个只有一个处理机的系统中 OS的进程有运行 就绪 阻塞三个基本状态 假如某时刻该系统中有10个进程并发执行 在略去调度程序所占用时间情况下试问 1 系统中处于运行态的进程数最多有几个 最少有几个 2 系统中处于就绪态的进程数最多有几个 最少有几个 3 系统中处于阻塞态的进程数最多有几个 最少有几个 因为系统中只有一个处理机 所以某时刻处于运行态的进程数最多只有一个 而最少可能为0 此时其它10个进程一定全部排在各阻塞队列中 在就绪队列中没有进程 而某时刻处于就绪态的进程数最多只有9个 不可能出现10个情况 因为一旦CPU有空 调度程序马上调度 当然这是在略去调度程序调度时间时考虑 处于阻塞态的进程数最少是0个 36 进程结构 37 进程控制块 PCB 为了刻画进程的动态变化 通常把进程表示为程序段 私有数据块和进程控制块 程序部分描述进程本身所要完成的功能私有数据块是程序操作的对象进程控制块是在进程建立时构成的 当进程存在于系统时 进程控制块就代表了这个进程 PCB是记录型数据结构 是OS为了反映进程的动态特性 便于系统控制和描述进程的活动过程而专门定义的一种数据结构 进程控制块包含进程标识符信息 处理机状态信息 进程调度信息 进程控制信息 38 进程控制块 PCB 进程标识符信息用于唯一地标识一个进程 分由用户使用的外部标识符和被系统使用的内部标识号 常用的标识信息有进程标识符 父进程的标识符 用户进程名 用户组名等 处理机状态信息进程调度信息进程状态进程优先级进程调度所需的其它信息事件 阻塞原因 39 进程控制块 PCB 进程控制信息进程调度相关信息 如进程状态 等待事件和等待原因 进程优先级 队列指引元等 进程组成信息 如正文段指针 数据段指针 进程间通信相关信息 如消息队列指针 信号量等互斥和同步机制 进程在二级存储器内的地址信息 CPU资源的占用和使用信息 如时间片余量 进程己占用时间 进程己执行时间总和 记帐信息 进程特权信息 如在内存访问和处理器状态方面的特权 资源清单 包括进程所需全部资源 已经分得资源 如主存资源 I O设备 打开文件表等 40 进程控制块 PCB 的作用 进程控制块是进程存在的标志 当系统或父进程创建一进程时 实际上就是为其建立一个进程控制块 进程控制块是进程的惟一代表 它包含了进程状态调度和控制这个进程所需要的全部信息 操作系统根据进程控制块所提供的信息对进程实行调度和管理 进程控制块是操作系统中的重要数据结构 程序段 进程控制块和数据块是构成进程结构的三要素 41 进程管理 42 进程控制 进程控制的职能是对系统中的全部进程实行有效的管理 其主要表现在对一个进程进行创建 撤销以及在某些进程状态间的转换控制 通常允许一个进程 父进程 创建和控制另一个进程 子进程 创建父进程的进程称为祖父进程 子进程又可创建孙进程 从而形成了一个树结构的进程家族 使进程控制更为方便灵活 为实现父进程对子进程的控制而引进进程控制原语 43 进程控制 44 原语 引进原语的主要目的是为了实现过程的通信和控制 在操作系统中 某些被进程调用的操作 例如队列操作 检查启动外设操作等 一旦开始执行 就不能被中断 否则会出现操作错误 造成系统混乱 原语通常由若干条指令所组成 用来实现某个特定的操作 通过一段不可分割的或不可中断的 不考虑高级中断 程序实现其功能 45 原语 原语和广义指令 系统调用 都能被进程所调用 差别在于原语有不可中断性 它是通过在其执行过程中关闭中断实现的 且一般由系统进程调用广义指令都是借助中断进入管态程序 然后转交给相应的系统进程实现其功能 例如文件的建立 打开 关闭 删除等广义指令 进程控制原语 创建原语 撤销原语 阻塞原语唤醒原语 46 元语举例 在UNIX系统中进程控制的系统调用有 fork 创建子进程sleep 进程睡眠exit 进程终止wait 父 等待子进程终止wakeup 进程唤醒 47 进程的创建 48 进程的创建 在UNIX系统中用户键入一个命令 如date ps ls shell就创建一个进程 一个程序 可执行的 如果可分成几个程序段 并且这些程序段可并发执行 用户程序可使用创建程序的系统调用创建多个进程 每个进程执行一个程序段 例如 放VCD程序 进程创建类似于人出生后要到派出所报户口 49 进程的创建 创建进程的主要任务 为进程建立一个进程控制块 PCB 具体步骤 1 申请一空闲PCB 2 在PCB中填入相关信息 初始化 3 将该进程置为就绪状态 分配除CPU以外的其它资源 4 将PCB插入到就绪队列中 等待调度获得CPU 50 进程的创建 进程创建系统调用 create name priority start addr UNIX系统 fork 51 撤消进程 进程完成其任务 希望终止时 调用撤消进程的系统调用 进程撤消原语 撤消进程 相当于一个人死亡后 家人要去派出所消户口 常见撤消元语举例 一般操作系统 进程撤消的系统调用是 killUNIX系统中是exit 52 撤消进程 撤销进程的实质 撤销PCB具体操作 1 找到要撤销进程的PCB 2 从队列中撤销该进程及其所有子孙进程 3 释放资源 并撤销其PCB 说明 被撤销进程不会自己撤销自己 而是由其父进程或祖先进程调用撤销原语实现 53 撤消进程 54 撤消进程 55 进程睡眠 阻塞 阻塞原语把进程从执行状态转换为阻塞状态引起阻塞的可能原因 1 请求系统服务 2 启动设备操作 3 新数据尚未到达 4 无新工作可做 56 进程睡眠 阻塞 具体操作 1 中断CPU执行 2 把CPU的当前状态保存到PCB的现场信息中 3 把进程的当前状态置为等待 阻塞状态 4 将进程的PCB插入到该事件的等待队列中 57 进程唤醒 一个正在运行的进程会因等待某事件 例如 等待打印机 的发生 由运行状态转换成阻塞状态 当它等待的事件发生后 这个进程将由阻塞状态转换成就绪状态 这种转换由进程唤醒操作完成 调用进程唤醒操作一般在中断处理 进程通信等过程中 例如 打印机完成中断处理程序 在完成了打印完成的操作后 就去检查等待打印机的队列 若不为空 则调用进程唤醒操作 唤醒一个 或多个 等待打印机的进程 58 进程唤醒 唤醒原语将进程从阻塞状态转换成就绪状态 具体操作 1 在等待队列中找到该进程 置其当前状态为就绪状态 2 将进程从等待队列中撤消 并插入到就绪队列中 等待调度 59 进程唤醒 进程唤醒原语的形式 wakeup chan 其中 chan唤醒进程阻塞的原因 算法 wakeup输入 chan 等待的事件 阻塞原因 输出 无 找到chan的等待队列的指针 for 该队列不为空 从队列中移出一个进程 置进程状态为 就绪 并加入到就绪队列 60 进程唤醒 进程由执行状态到阻塞状态 是进程自己调用阻塞原语完成 进程由阻塞状态到就绪状态 是另一个发现者进程调用唤醒原语实现的 一般这个发现者进程是与被唤醒进程合作的共行进程 61 进程挂起 当一个处在运行状态的进程 因等待某个事件的发生 如等待打印机 而不能继续运行时 将调用进程挂起系统调用 把进程的状态置为阻塞状态 并调用进程调度程序 等于让出处理机 在UNIX系统中进程挂起调用sleep chan pri 62 进程挂起 进程从运行状态转换成阻塞状态是由进程挂起原语实现的 因此 调用进程挂起操作是在进程处于运行状态下执行的 它的执行将引起等待某事件的队列的改变 例如 进程是因等待打印机而进入阻塞状态 则该进程将加入到等待打印机的队列 进程挂起系统调用的算法和队列变化如下 63 进程挂起 进程挂起的内部调用形式 UNIX系统 sleep chan pri 其中 chan进程挂起 睡眠 的原因 pri进程被唤醒后的优先级一般调用形式 susp chan 其中 chan进程等待的原因 64 进程挂起 65 进程挂起 66 睡眠 与 挂起 的主要区别 挂起 是人的干预 将指定进程挂起睡眠 是本进程自身进入 睡眠 状态被挂起进程PCB的非常驻部分要交换到磁盘对换区 激活原语主要工作 把进程PCB非常驻部分调进内存 修改它的状态 挂起等待态改为等待态 挂起就绪态改为就绪态 排入相应队列中 挂起原语既可由进程自己也可由其他进程调用 但激活原语却只能由其他进程调用 67 进程的协调 68 进程的互斥与同步 两种形式的制约关系a 互斥关系间接相互制约关系 进行竞争 独占分配到的部分或全部共享资源 互斥 协调的任务 保证诸进程能互斥地访问临界资源 例如 A B进程互斥使用打印机 b 同步关系直接相互制约关系 等待来自其他进程的信息 同步 协调的任务 保证相互合作的诸进程在执行次序上的协调 不会出现与时间有关的差错 例如 A B两个进程合作写数据 读数据 69 互斥的基本概念 在计算机中 有许多资源 例如打印机 磁带机等硬设备和变量 队列等数据结构 一次只能允许一个进程使用 如果有多个进程同时使用就会引起竞争 即互斥 因此 必须保护这些资源 避免同时访问 把那些某段时间内只允许一个进程使用的资源称为临界资源 由于资源共享关系而产生的进程之间的制约同步关系叫做互斥 一次只允许一个进程使用 以互斥关系使用的共享资源叫做临界资源 70 互斥的基本概念 临界区 criticalsection 进程中访问临界资源的一段代码 进入区 entrysection 在进入临界区之前 检查可否进入临界区的一段代码 如果可以进入临界区 通常设置相应 正在访问临界区 标志临界区 criticalSection 退出区 exitsection 用于将 正在访问临界区 标志清除 剩余区 remaindersection 代码中的其余部分 71 互斥的基本概念 Mutual exclusion EntrySection CriticalSection ExitSection RemainderSection 72 同步机制遵循的原则 空闲让进 有效利用临界资源 忙则等待 保证诸进程互斥访问临界资源 有限等待 避免进程陷入 死等 让权等待 避免进程陷入 忙等 73 解决进程互斥的方法 1 软件的方法 2 硬件方法 3 利用P V操作实现进程互斥 74 3 利用P V操作实现进程互斥 1965年荷兰学者Dijkstra提出 所以P V分别是荷兰语的test proberen 和increment verhogen 是一种卓有成效的进程同步机制 每个信号量s除一个整数值s count 计数 外 还有一个进程等待队列s queue 其中是阻塞在该信号量的各个进程的标识 信号量只能通过初始化和两个标准的原语来访问 作为OS核心代码执行 不受进程调度的打断 初始化指定一个非负整数值 表示空闲资源总数 又称为 资源信号量 若为非负值表示当前的空闲资源数 若为负值其绝对值表示当前等待临界区的进程数 二进制信号量 binarysemaphore 只允许信号量取0或1值 75 利用P V操作实现进程互斥 信号量和P V操作信号量 是表示资源的实体 是一个与队列有关的整型变量 其值仅能由P V操作改变 公用信号量 通常用于实现进程之间的互斥 初值为1 它所联系的一组进程均可对其实施P V操作 私用信号量 一般用于进程间的同步 初值为0或为某个正整数n 仅允许拥有它的进程对其实施P V操作 二元信号量 一般信号量 76 利用P V操作实现进程互斥 P操作和V操作定义 P143 P操作 P S 1 S S 1 2 若S 0 则该进程继续执行 若S 0 则该进程被阻塞 并将它插入S信号量的队列中等待 直到有其它进程在S上执行V操作为止 77 利用P V操作实现进程互斥 V操作 V S 1 S S 1 2 若S 0 则该进程继续执行 若S 0 释放S信号量队列上的一个等待进程 使之进入就绪队列 然后 执行本操作的进程继续执行 78 说明 信号量S的值表示某类资源的数量 S 0 表示尚有资源可以分配 S 0 其绝对值表示等待队列中进程的数目 每执行一次P操作 意味着要求分配一个资源 每执行一次V操作 意味着释放一个资源 P操作可能会引起进程的阻塞 V操作不会引起本身进程状态的变化 但可能唤醒其他进程 使其从阻塞状态转变到就绪状态 79 用P V操作实现进程之间的互斥 设S为一互斥使用的公用信号量 初值为1 进程A B竞争进入临界区的程序如下 80 说明 为临界资源设置一个互斥信号量mutex MUTualExclusion 其初值为1 在每个进程中将临界区代码置于P mutex 和V mutex 原语之间 必须成对使用P和V原语 遗漏P原语则不能保证互斥访问 遗漏V原语则不能在使用临界资源之后将其释放 给其他等待的进程 P V原语不能次序错误 重复或遗漏 81 进程的同步 进程的同步是指进程之间直接的协同工作关系 是一些进程相互合作 共同完成一项任务 例 P145 解决进程同步的方法 P V操作设立私有信号量 82 用P V操作实现进程间的同步 A B两个进程分别对缓冲区进行写和读 设两个私有信号量S1和S2 初值S1 0 S2 1 S1 0 没装满信息 S1 1 已装满信息 S2 0 缓冲区不为空 S2 1 缓冲区为空 S2 S1 83 用P V操作实现进程间的同步 P V操作的顺序与信号量的设置初值有关 p147 84 生产者 消费者问题 问题描述 若干进程通过有限的共享缓冲区交换数据 其中 生产者 进程不断写入 而 消费者 进程不断读出 共享缓冲区共有N个 任何时刻只能有一个进程可对共享缓冲区进行操作 生产者可以按自己的步调产生项目并保存在缓冲区中 消费者以类似的方法进行 但必须确保它不会从一个空的缓冲区中读 因此 消费者在开始进行之前应该确保生产者在它前面已经生产 缓冲区只能以互斥方式使用 85 生产者 消费者问题 分析生产者与生产者之间 互斥消费者与消费者之间 互斥生产者与消费者之间 即有同步又有互斥设置信号量 设初始缓冲池为空 共有n个缓冲区 用于互斥的公共信号量 s 1生产者的私有信号量 empty n消费者的私有信号量 full 0实际上 full和empty同一个含义 full empty N设立IN和OUT作为指向可用缓冲区的指针 86 生产者 消费者问题 87 生产者 消费者问题 如果生产者总能够保持在消费者之前 消费者很少会被阻塞 因此 两者都可以正常运行 但是仍有缺陷 例如如果缓冲区为空时消费者曾经进入过临界区 那么任何一个生产者都不能往缓冲区中添加项 系统发生死锁 这体现了信号量的微妙之处和产生正确设计的困难之处 每个进程中各个P操作的次序是重要的 先检查资源数目 再检查是否互斥 否则可能死锁 88 例 桌上有一空盘 允许存放一只水果 父亲可向盘中放苹果 也可放桔子 儿子专等吃盘中的桔子 女儿专等吃盘中的苹果 规定当盘空时一次只能放一只水果供吃者取用 请用P V原语实现父亲 儿子 女儿三个并发进程的同步 分析同步 互斥关系 父亲和儿子之间 同步父亲和女儿之间 同步儿子和女儿之间 互斥 互斥取盘中的水果 89 例 设置三个信号量S So Sa S表示盘子是否为空 初值为1 So表示盘中是否有桔子 初值为0 Sa表示盘中是否有苹果 初值为0 Father while 1 P s 将水果放入盘中 if 放入的是桔子 V So elseV Sa Son while 1 P So 从盘中取出桔子 V S 吃桔子 Daughter while 1 P Sa 从盘中取出苹果 V S 吃苹果 90 信号量同步的缺点 同步操作分散 信号量机制中 同步操作分散在各个进程中 使用不当就可能导致各进程死锁 如P V操作的次序错误 重复或遗漏 易读性差 要了解对于一组共享变量及信号量的操作是否正确 必须通读整个系统或者并发程序 不利于修改和维护 各模块的独立性差 任一组变量或一段代码的修改都可能影响全局 正确性难以保证 操作系统或并发程序通常很大 很难保证这样一个复杂的系统没有逻辑错误 91 例 进程同步和互斥 用P V操作实现下述问题的解 桌上有一个盘子 可以存放一个水果 父亲总是放苹果到盘子中 而母亲则总是放香蕉到盘子中 一个儿子专等吃盘子中的香蕉 而一个女儿专等吃盘子中的苹果 92 苹果香蕉问题 解法 公共信号量 互斥 Empty 来实现放苹果的互斥 初值 1私有信号量 同步 Apple 初值为0Banana 初值为0 93 苹果香蕉进程示意图 94 例 进程同步和互斥 某寺庙 有小和尚 老和尚若干 有一水缸 由小和尚提水入水缸老和尚饮用 水缸可容纳10桶水 水取自同一井中 水井径窄 每次只能容一个桶取水 水桶总数为3个 每次入 取缸水仅为一桶 且不可同时进行 试给出有关取水 入水的算法示意图 95 打水 饮水问题分析 两个进程 1 小和尚取水2 老和尚 需要互斥使用临界资源 1 水井信号量 mutex1初值 12 水缸信号量 mutex2初值 1 同步使用的信号量 1 水桶个数 count初值 32 入缸的水量 桶数 empty初值 103 出缸的数量 桶数 full初值 0 96 打水进程 饮水进程 临界资源缸 水桶数 临界资源井 mutex2 count empty full mutex1 97 打水进程P V操作示意图 P empty 看水缸满否 满则阻塞打水进程 P count P mutex1 从井中取水 V mutex1 P mutex2 送水入缸 V mutex2 V count V full 申请打水的桶 互斥使用水井 即不允许两和尚同时打水 互斥使用水缸 归还水桶 水缸又多一桶水 和尚i 1 2 3 98 P full 看水缸是否有水 无水则阻塞饮水进程 P count P mutex2 从缸中取水 V mutex2 V empty V count 申请取水的桶 互斥使用水缸 归还水桶 水缸少了一桶水 饮水进程P V操作示意图 饮水 和尚 1 2 3 99 例进程互斥和同步 哲学家甲请哲学家已 丙 丁到某处讨论问题 约定全体到齐后开始讨论 在讨论的间隙4位哲学家进餐 每人进餐时都需要使用刀 叉各一把 餐桌上的布置如图所示 请用信号量及PV操作说明这4位这些家的同步 互斥过程 食品 甲0 丁3 丙2 已1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年博白县中小学教师招聘笔试备考试题及答案解析
- 2025年谷城县教师招聘参考题库及答案解析
- 2025年安义县中小学教师招聘笔试备考试题及答案解析
- 2025年兴安市教师招聘笔试参考试题及答案解析
- 2025年虚拟数字人直播脚本技术支持协议
- 长春大学《电气测试技术》2024-2025学年第一学期期末试卷
- 2025年中级护师考试(专业知识)训练题后附答案
- 上海市宝山区建峰高中2025-2026学年高一上生物期末质量跟踪监视试题含解析
- 2025年虚拟社交软件开发保密协议
- 2025年松潘县中小学教师招聘笔试参考试题及答案解析
- 云南动物科学真题及答案
- 城市社区服务系统建设方案
- 企业转让协议合同范本
- 2025至2030中国冷冻机油行业项目调研及市场前景预测评估报告
- 第1课 求助是一种智慧教学设计-2025-2026学年小学地方、校本课程黑教版生命教育
- 人工智能+行动中国式现代化背景下智慧旅游发展研究报告
- 高速公路环保知识培训课件
- 骑手安全知识培训内容课件
- 小班教学培训课件
- 汇川技术团队介绍
- (2025年标准)股东决策协议书
评论
0/150
提交评论