清华大学操作系统讲义第03讲_进程间通信.ppt

清华大学操作系统讲义第03讲_进程间通信.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
清华大学操作系统讲义第03讲_进程间通信

进程间的同步是指多个进程中发生的事件 存在某种时序关系,因此在各个进程之间 必须协同合作,相互配合,使各个进程按 一定的速度执行,以共同完成某一项任务。 进程的互斥实质上也是一种同步关系,进程互斥 可以看作是一种特殊的进程同步。 为便于区分,把进程同步特指为对执行顺序严格 要求的同步问题。 同步:合作。 互斥:竞争。 基于信号量的进程同步 【例子1】 司机与售票员 while(上班时间) { P(S_DoorClose); 发动汽车; 正常运行; 到站停车; V(S_Stop); } 公车司机 while(上班时间) { 关闭车门; V(S_DoorClose); 售票; P(S_Stop); 打开车门; } 售票员 semaphore S_DoorClose; // 初始为0 semaphore S_Stop; // 初始为0 先关门 后开车 先停车 后开门 下次课将介绍若干个经典 的IPC问题,请提前预习 相关的内容,即教材上的 第2.4小节。 下 课 啦 ! * * 第 三 讲 操作系统与系统编程 谌 卫 军 清华大学软件学院 2004年春季 第二章 进程管理 进程(Process) 线程(Thread) 进程间通信 经典的IPC问题 进程间高级通信 进程调度 2.3 进程间通信 进程间通信(InterProcess Communi- cation,IPC):进程之间的信息交流 与协调。 如果两个并发运行的进程之间没有任何关联关系 (直接的或间接的),那么无须通信; 如果两个并发运行的进程之间存在着某种关联关 系(直接的或间接的),那么可能需要通信。例 如:两个进程使用相同的一个共享文件。 需要讨论的问题: 进程间如何来通信呢,如何来相互传递信息呢? 当两个或多个进程在进行一些关键性的临界活动 时(如对共享资源的访问),如何确保它们不会 相互妨碍 —— 进程互斥问题; 当进程之间存在着某种依存关系时,如何来调整 它们的运行次序 —— 进程同步问题。 问题2和3是目标,问题1是手段。问题2和3同样适 用于线程,相同的问题,相同的解决方案。 2.3.1 进程的互斥 【例子】 后台打印程序 (两个进程同时想要访问共享数据) 后台程序 4 7 share.txt 进程间传递信 息的一种方式. 4 7 share.txt … next_free_slot = in; // 7 … 第一步:进程A 中断 … next_free_slot = in; // 7 第二步:进程B prog.n 6 7 8 file_b write “file_b” to item 7 next_free_slot ++; // 8 update in; … 8 第三步:进程A write “file_a” to item 7 next_free_slot ++; // 8 update in; … file_a out in 竞争状态(race condition): 两个或多个进程对同一共享数据同时进行读写 操作,而最后的结果是不可预测的,它取决于 各个进程具体运行情况。 解决之道: 在同一时刻,只允许一个进程访问该共享数据, 即如果当前已有一个进程正在使用该数据,那么 其他进程暂时不能访问。这就是互斥的概念。 竞争状态问题的抽象描述 把一个进程在运行过程中所做的事情分为两类: 进程内部的计算或其他的一些事情,肯定不会 导致竞争状态的出现; 对共享内存或共享文件的访问,可能会导致竞 争状态的出现。我们把完成这类事情的那段程 序称为“临界区”,把需要互斥访问的共享资源 称为“临界资源”。 如果我们能设计出某种方法,使得任何两个进程 都不会同时出现在临界区中,就可以避免竞争状 态的出现。 实现互斥访问的四个条件 任何两个进程都不能同时进入临界区; 不能事先假定CPU的个数和运行速度; 当一个进程运行在它的临界区外面时, 不能妨碍其他的进程进入临界区; 任何一个进程进入临界区的要求应该在 有限时间内得到满足。 基于临界区的互斥访问 (本图摘自Andrew S. Tanenbaum: “Modern Operating Systems”,下同) 2.3.2 基于占线等待的互斥实现 方法1. 关闭中断 把关闭中断的权力授予用户进程,是很不聪明 的。而且假设系统有多个CPU,则此法无效; 对内核进程而言,是一种方便有效的办法。 结论:适用于内核进程,但不适用于用户进程,不

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档