第4章--进程同步与通信讲述.ppt

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

计算机操作系统 操作系统 操作系统 计算机操作系统 第四章 进程的同步与通信 第4章 进程的同步与通信 4.1 进程同步的基本概念 4.2 信号量机制 4.3 经典进程同步问题 4.4 管程机制 4.5 进程通信 4.6 UNIX信号量机制 4.7 UNIX管程通信 4.1 临界区 4.1.1 进程同步的基本概念 多道系统中,由于进程间的相互联系及资源共享,使进程间可能存在两种形式的制约关系: 1、间接制约/互斥关系; 2、直接制约/同步关系; 进程同步:两个进程所表示事件的发生有着某种时序上的关系。 4.1.2 临界资源(Critical Resource) 一次仅允许一个进程使用的资源称为临界资源。包括:慢速设备,共享的变量、数据结构、缓冲区等。 例如:两个进程对account变量异步修改,导致结果的不确定性。 结论: 4.1.3 临界区(Critical Section) 一、定义: 进程中访问临界资源的代码段称为~。 例:2个进程P1,P2分别对共享变量account执行加1和加2的操作,account 初始值为 0, account的结果为多少? P1,P2的执行顺序如下: 由于p1、p2语句执行的时间不同导致结果不同,产生了所谓与时间有关的错误。其原因是进程p1与p2在一段时间内都对临界资源即共享变量account进行了修改引起的。 多道系统中,像这种两个或多个进程并发地读写一个共享数据, 共享数据的值取决于最后访问它的进程的执行结果的情况称为竞态条件(Race condition)。 为保证对临界资源的互斥使用,在使用临界资源之前应先申请、判断。 一个访问临界资源的循环进程应为如下结构: 访问临界资源循环进程结构: While (1) { entry section; //进入区 critical section; //临界区 exit section; //退出区 remainder section;//剩余区 }; 4.1.4 同步机制应遵循的准则 为了保证进程互斥进入临界区,系统需设置专门的同步机制,同步机制应遵循4个准则: 4.1.5 解决进程互斥问题的软件方法 方法一、 设置标志位flag[i]来标识Pi是否在临界段中,flag[i] 初值为0,表示Pi未使用临界资源。 Pi结构:while (1) { while (flag[j]);//do nothing flag[i]=1; critical section; flag[i]=0; remainder section; }; 方法二 设一整型变量turn来标识何进程可进入临界区。初值设为i。 Pi结构: int turn=i; do { while (turni) ;//do nothing critical section; turn=j; remainder section; }while (1); 问题: 4.1.6 硬件方法解决互斥问题 硬件指令的特点:指令操作仅需一个指令周期。 一、检测和设置指令TS(Test-and-Set) 描述:int TS(int *lock ) { int t; t=*lock; *lock=1; return t; } lock:为临界段设置的公共变量。 Lock=0时,表示该资源空闲。 利用TS实现进程互斥 int lock=0; do { while (TS(lock)!=1); //进入区 critical section; //临界区 lock=0; //退出区 remainder section; //其它部分 }while(1); 4.2 信号量 信号量机制是1965年,由荷兰计算机科

文档评论(0)

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

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

1亿VIP精品文档

相关文档