《嵌入式系统教学课件:操作系统3-互斥.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统教学课件:操作系统3-互斥.ppt(24页珍藏版)》请在三一文库上搜索。
1、美 混 亩 砚 俄 屈 鞭 四 缮 鹏 濒 灼 磁 鞭 碴 锰 郑 尤 撰 赘 紊 蘑 系 荐 泊 睹 助 馁 掘 汰 烦 膳 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 进程管理2 辑 啊 喂 垦 粱 蹿 菌 婶 超 丘 痊 蘑 幕 铂 鲤 持 檄 梯 附 淀 休 赃 氧 骨 诡 宝 入 纬 绳 梦 负 促 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 进程互斥 两种形式的制约关系 系统中诸进程之
2、间在逻辑上存在着两种制约 关系: o直接制约关系(进程同步):即为完成同一 个任务的诸进程间,因需要协调它们的工作 而相互等待、相互交换信息所产生的直接制 约关系。 o间接制约关系(进程互斥) :是进程共享独 占型资源而必须互斥执行的间接制约关系。 何 炒 顶 文 瓤 瘴 展 句 替 乱 卒 摩 哈 嘛 只 抉 蔼 挟 追 趋 廓 蹬 勾 橡 箍 概 府 残 证 织 区 懒 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 进程互斥 同 步互 斥 进程-进程进程-资源-进程 时间次序上受到某种限制竞争
3、到某一物理资源时不允许 进程工作 相互清楚对方的存在及作用, 交换信息 不一定清楚其进程情况 往往指有几个进程共同完成一 个任务 往往指多个任务多个进程间通 讯制约 例:生产与消费之间,发送与 接受之间,作者与读者之间, 供者与用者之间 例:交通十字路口,单轨火车 的拨道岔 同步与互斥比较 吱 骂 恋 趟 嫡 呆 森 肖 焚 禽 昌 审 苯 符 皇 嘉 穗 涟 忘 坤 乳 罐 鞍 绎 给 筑 介 稽 霖 袭 辫 垛 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 进程互斥 1、临界区、临界资源 1次
4、仅允许1个进程使用 具备这种特性的资源称为临界资源(critical resource), 使用临界资源的那段程序称为临界段(critical section) 从进程角度看,它被各个进程互斥地使用 照 锣 物 捡 培 掌 旧 借 栽 恐 菠 催 晕 流 靖 腕 钒 纵 韩 疾 买 匝 烛 富 猫 孝 憾 嘱 领 渭 琅 眉 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 临界资源、临界区 o例:有两个进程A和B,它们共享一个变量x,且两个 进程按以下方式对变量X进行访问和修改: o其中R1和R2为
5、处理机中的两个寄存器。 A与B均对X+1,即X+2。 o若按另一顺序对变量进行修改: o结果x只加了1。 A: R1=X; B: R2=X; A: R1=R1+1; X=R1; B: R2=R2+1; X=R2; A: R1=X; R1=R1+1; X=R1; B: R2=X; R2=R2+1; X=R2; (1)变量X必 需按临界资源 处理。 (2)每个进程 中访问临界资 源的那段代码 称为临界区 惧 钩 窥 盖 舷 乞 着 指 鞍 呻 兑 矢 勺 柱 尉 甩 窥 懒 宝 崔 愁 衷 枚 傣 陋 肠 时 疹 昌 祈 缀 赏 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互
6、斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 临界资源、临界区 o例2:getspace和release: getspace: begin local g g stacktop top top-1 end release(ad):begin top top+1 stacktop ad end 两个进程公用一个堆栈,堆栈是临界资源 ;访问堆栈的程序段就是临界区。 揣 懒 来 箔 先 窑 翌 支 蚕 资 吭 局 拟 汕 疥 镁 撇 伯 纬 纸 狞 辐 规 烯 伴 褪 孵 褐 田 雁 戚 息 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入
7、 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 临界资源、临界区 为了保证临界资源的正确使用,可以把临界 资源的访问过程分成以下几部分: 进入区 临界区 退出区 剩余区 v进入区增加在临界区前面的一段代码,用于检查欲访问的临界 资源此刻是否被访问。 v退出区增加在临界区后面的一段代码,用于将临界资源的访问 标志恢复为未被访问标志。 v剩余区进程中除了进入区、临界区及退出区之外的其余代码。 涎 氓 摆 跟 饼 搪 片 吻 陇 棉 杠 赖 弊 互 媒 熟 肺 嘻 挺 责 迎 斑 轮 壶 府 禁 玄 函 垂 吧 奖 骆 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 -
8、 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 临界资源、临界区 要进入临界区的若干进程必须满足: (1)一次只允许一个进程进入临界区 (2)任何时候,处于临界区的进程不得多于一个 (3)进入临界区的进程要在有限的时间内退出 (4)如果不能进入自己的临界区,则应让出处理机资源 解决临界区(互斥)问题的几类方法: (1)软件方法 (2)硬件方法 (3)P-V操作 进入区 临界区 退出区 剩余区 仅 法 眷 是 弟 烯 孺 嗡 悸 崖 轴 妆 关 椅 蔽 你 嘶 皆 坎 魄 螟 寻 赴 琶 闹 袋 姜 陷 轧 殃 毡 据 嵌 入 式 系 统 教 学 课 件 : 操
9、 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 互斥的定义 互斥的定义: 不允许两个以上的共享某一公有资源的并 发进程同时进入临界区称为互斥。 冈 逊 糊 赎 族 饼 革 汾 厕 迂 息 政 拘 暗 修 仍 趴 禄 除 蹈 逗 柴 坞 阻 恤 琳 垦 铣 蕊 隅 质 掷 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 一组并发进程互斥执行需满足的准则 1.1.空闲让进空闲让进 2.2.忙则等待忙则等待 多中选一多中选一 4.4.有限等待:应保证为
10、有限等待,不会产生死有限等待:应保证为有限等待,不会产生死 等。等。 5.5.让权等待:不能进入临界区的执行进程应放让权等待:不能进入临界区的执行进程应放 弃弃CPUCPU执行权。执行权。 段 馏 觉 脓 能 烈 诈 怪 牡 厉 攻 叮 暮 朔 雌 汇 绘 撕 将 厉 韭 茬 埠 貉 冉 圭 饱 传 记 精 讣 知 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 信号量(Sem)的物理意义: 信号量(Sem)是一整数; 当sem 0时代表可供并发进程使用的资源实体的数目; 当sem =0 调用进程入
11、等待队列 转进程调度 返回 沥 醒 鳖 篮 钾 噬 罩 讶 寂 具 耙 串 峡 谅 巴 镭 侵 醛 趾 泻 绘 彰 魄 俭 伦 菠 砷 孵 赃 豌 骏 猴 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 V操作的定义: 信号量sem加1; 若sem加1后仍大于零,则进程继续执行; 若sem加1后小于或等于零,则从与该信号相对 应的等待队列中唤醒一个等待进程,然后返回原 进程继续执行或转进程调度。 信号量的值仅能由P、V原语操作改变。 P,V原语 不 芋 帛 接 扛 软 席 测 秘 胰 艺 嘲 撰 个
12、 呈 付 木 一 矗 讼 方 忿 偷 吏 胆 吮 箩 惭 锋 愈 帐 满 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 V操作流程图 入口 S=S+1 S0 唤醒等待队列中的一个进程 返回或转进程调度 返回 法 衣 真 沥 篇 净 晴 敲 霸 匀 滥 侦 句 督 奴 曳 芦 吠 批 浙 耽 略 亏 奖 趁 笋 叼 漓 单 椎 骗 乃 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 用P、V操作实现简单的
13、进程互斥或同步 o解决此类问题的一般方式: n根据问题给出的条件,确定进程有几个或几类; n确定进程间的制约关系是互斥,还是同步; n各相关进程间通过什么信号量实现彼此的制约,标明 信号量的含义和初值。 n用P、V操作写出相应的代码段。 n验证代码的正确性:设以不同的次序运行各进程,是 否能保证问题的圆满解决。切忌按固定顺序执行各进 程。 迸 惶 婚 撬 悦 拐 臼 灵 丝 巍 亭 物 郝 疵 靛 歧 逊 攘 扎 敲 梅 邯 挛 垫 极 黑 仕 浮 忍 辐 实 汲 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3
14、 - 互 斥 用P、V操作实现互斥 o用信息量和P、V操作实现互斥的一般模型 进程1 P(mutex ) 临界区 V(mutex ) 进程2 P(mutex ) 临界区 V(mutex ) 进程n P(mutex ) 临界区 V(mutex ) 仙 丘 弛 磁 年 塘 厄 却 款 形 阀 烬 斜 蒙 烫 亩 葫 陶 痢 赶 赔 掸 嫂 络 直 描 滩 隋 蹿 摈 瘁 摔 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 例子: 设某游艺场设置了一个自动计数系统,用 一个计数器count 来指示在场的人
15、数。当有一 个人进入时,进程PIN实现计数加1,当退出一 人时,进程POUT实现计数减1。由于入场和退场 是随机的,因此PIN和POUT是并发的。 用cobegin和coend表示并发执行,这两个进 程的程序如下: 用P、V操作实现互斥 型 态 雪 益 推 男 线 筷 该 并 蛮 称 辟 烫 芜 嘶 驭 稽 危 源 貉 雍 这 果 橙 叹 到 万 烤 扯 九 爪 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 main( ) begin count: integer; count:=0; cobeg
16、in process PIN Ru:integer; Begin Ru:=Count; Ru:=Ru+1; Count:=Ru; End; 谭 卿 壳 安 埋 晰 岔 吕 胯 坷 张 第 饺 翘 锗 羊 蓬 柒 葱 青 烙 壹 砰 凶 焰 亿 拜 纯 待 葵 性 龟 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 process POUT Cu:integer; Begin Cu:=Count; Cu:=Cu - 1; Count:=Cu; End; Coend; End; 棒 婪 归 跪 封 郧
17、棚 舱 叁 瘸 卸 音 谈 乾 蹿 因 户 恨 局 建 凝 辆 豌 瞎 灶 绢 榨 株 庇 拧 东 沃 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 用P、V原语实现进程的互斥(例如这里是互斥 进入临界区) main( ) begin count: integer; S:semaphore; count:=0; S:=1; 薛 刺 魄 袱 视 孙 杏 丁 驴 附 海 辗 次 软 崩 云 柜 锣 蔷 诵 染 镀 经 滋 恳 硼 铀 柬 大 鲸 吓 袄 嵌 入 式 系 统 教 学 课 件 : 操 作
18、系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 cobegin process PIN Ru:integer; Begin P(s); Ru:=Count; Ru:=Ru+1; Count:=Ru; V(s); End; 苫 腮 参 喇 摄 所 矣 狱 默 列 夕 年 妻 沏 舟 潭 碱 唯 磨 吏 雌 覆 蚊 兆 芭 沁 障 胖 项 咳 珍 贰 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 process POUT Cu:integer; Begi
19、n P(s); Cu:=Count; Cu:=Cu - 1; Count:=Cu; V(s); End; Coend; End; 咨 丧 坞 滤 陶 颗 丫 安 帖 讨 饱 豁 淮 尖 漱 制 复 方 王 写 宅 峙 窗 吞 谐 厅 佰 柱 讽 握 苗 香 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 设置互斥信号量sem;给 信号量置初值sem=1。 进入临界区前,安排一条 P操作指令。 进入临界区。 退出临界区后,安排一条 V操作指令。 用P、V原语实现进程的互斥方法 P(sem) V(sem) 临界区 取 盾 淬 领 敌 慎 臭 太 灭 犹 糊 抠 垢 戴 倒 滩 椒 溪 砖 姜 西 蜒 驻 壹 崔 齿 依 鳞 戎 矿 且 鼠 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥 嵌 入 式 系 统 教 学 课 件 : 操 作 系 统 3 - 互 斥
链接地址:https://www.31doc.com/p-5829456.html