《经典IPC问题》PPT课件

《经典IPC问题》PPT课件

ID:41283597

大小:364.06 KB

页数:50页

时间:2019-08-21

《经典IPC问题》PPT课件_第1页
《经典IPC问题》PPT课件_第2页
《经典IPC问题》PPT课件_第3页
《经典IPC问题》PPT课件_第4页
《经典IPC问题》PPT课件_第5页
资源描述:

《《经典IPC问题》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2.3.4信号量(Semaphore)1965年由著名的荷兰计算机科学家Dijkstra提出, 其基本思路是用一种新的变量类型(semaphore) 来记录当前可用资源的数量。有两种实现方式:1)semaphore的取值必须大于 或等于0。0表示当前已没有空闲资源,而正数表 示当前空闲资源的数量;2)semaphore的取值可 正可负,负数的绝对值表示正在等待进入临界区 的进程个数。信号量是由操作系统来维护的,用户进程只能通 过初始化和两个标准原语(P、V原语)来访问。 初始化可指定一个非负整数,即空闲资源总数。P、V原语作为操作系统内核代码的一部分,是一 种不可分割的原子操作(ato

2、micaction),在其 运行时,不会被时钟中断所打断;P、V原语包含有进程的阻塞和唤醒机制,因此 在进程等待进入临界区时不会浪费CPU时间;P原语:P是荷兰语Proberen(测试)的首字母。 申请一个空闲资源(把信号量减1),若成功, 则退出;若失败,则该进程被阻塞;V原语:V是荷兰语Verhogen(增加)的首字母。 释放一个被占用的资源(把信号量加1),如果 发现有被阻塞的进程,则选择一个唤醒之。信号量和P、V原语的实现信号量结构体类型的定义typedefstruct {intcount;//计数变量structPCB*queue;//进程等待队列}semaphore;P原语

3、:申请一个资源P(semaphoreS) {--S.count;//表示申请一个资源;if(S.count<0)//表示没有空闲资源;{该进程进入等待队列S.queue末尾;阻塞该进程;调用进程调度器;} }V原语:释放一个资源V(semaphoreS) {++S.count;//表示释放一个资源;if(S.count<=0)//表示有进程被阻塞;{从等待队列S.queue中取出一个进程;把该进程改为就绪状态,插入就绪队列} }Windows2000CreateSemaphore(创建信号量)WaitForSingleObject(P操作)ReleaseSemaphore(V操作)C

4、OS-IIosSemCreate(创建信号量)osSemPend(P操作)osSemPost(V操作)利用信号量来实现进程互斥intcount;//共享变量(临界资源)semaphoremutex;//互斥信号量,初始化为??非临界区P(mutex);临界区V(mutex);非临界区P1非临界区P(mutex);临界区V(mutex);非临界区P2非临界区P(mutex);临界区V(mutex);非临界区P32.3.5进程的同步进程间的同步是指多个进程中发生的事件存在某种时序关系,因此在各个进程之间必须协同合作,相互配合,使各个进程按一定的速度执行,以共同完成某一项任务。同步:合作。互

5、斥:竞争。只考虑基于信号量的同步问题。如何实现A先执行,然后B执行?A;V(S);进程P1P(S); B;进程P2配对先后S初始值为0….A(先);….进程P1信号量S初始值为??….B(后);….进程P2while(1){….A;V(S);….}进程P1S初始值为1while(1){….P(S);B;….}进程P2【例子1】合作进程的执行次序用进程流图来描述各进程合作完成某一任务的次序,其规则如下:用信号量及P、V操作来描述左图1、说明进程的同步关系进程P1、P2可并行执行,P3的执行必须等待P1、P2都完成后才能开始执行。几个同步关系?2、设置信号量,说明含义、初值。S13=0表示

6、进程P1尚未执行完成;S23=0表示进程P2尚未执行完成;main(){//均初始化为0semaphoreS13,S23;cobeginP1;P2;P3;coend}3.写出程序描述P1()//进程P1{…V(S13);}P2()//进程P2{…V(S23);}P3()//进程P3{P(S13);P(S23);…}【例子2】司机与售票员while(上班时间){发动汽车;正常运行;到站停车;}while(上班时间){关闭车门;售票;打开车门;}公车司机售票员1、说明进程的同步关系只有关闭车门以后,才能启动汽车;只有停车以后,才能打开车门。while(上班时间){ P(S_DoorClos

7、e);发动汽车;正常运行;到站停车;V(S_Stop);}公车司机while(上班时间){关闭车门;V(S_DoorClose);售票;P(S_Stop);打开车门;}售票员semaphoreS_DoorClose;//初始为0semaphoreS_Stop;//初始为0先关门 后开车先停车 后开门2、设置信号量,说明含义、初值。3.写出程序描述【例子3】共享缓冲区的合作进程的同步设有一个缓冲区buffer,大小为一个字节。Compute进程不

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。