《Linux内核与编程》PPT课件

《Linux内核与编程》PPT课件

ID:39358263

大小:199.84 KB

页数:36页

时间:2019-07-01

《Linux内核与编程》PPT课件_第1页
《Linux内核与编程》PPT课件_第2页
《Linux内核与编程》PPT课件_第3页
《Linux内核与编程》PPT课件_第4页
《Linux内核与编程》PPT课件_第5页
资源描述:

《《Linux内核与编程》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验三 使用Linux高级IPC陈毅东提纲结束进程间通信概述目标问题——哲学家进餐问题问题描述错误与不好的解法并行度较高的解法Linux高级IPC机制概述SystemV信号灯SystemV共享内存区实现的其他问题实习题进程间通信概述(1):引子#include #include intresult; main() { pid_tpid; result=0; pid=fork(); if(pid<0)exit(-1);if(pid){ pid=fork(); if(pid<0)exit(-1); if(pid==0){ slee

2、p(3); result=result+20; exit(0); } }else{ sleep(3); result=result+10; exit(0); } while(wait((int*)0)!=-1); printf("%d",result); exit(0); }输出结果是什么?进程间通信概述(2)进程是相互独立的,进程间的通信需要专门的机制。进程之间的通信可以经由文件系统,但实际使用较为复杂(例如,需要锁机制)。UNIXIPC(InterProcessCommunication)机制是各种进程通信方式的统称。Linux下的进程通信手段基本上是从Unix平

3、台上的进程通信手段继承而来的。进程间通信概述(3)对于UNIX的发展,贝尔实验室和BSD在进程间通信方面的侧重点有所不同:贝尔实验室对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“SystemVIPC”,通信进程局限在单个计算机内;BSD则主要考虑跨计算机的进程间通信,形成了基于套接口(socket)的进程间通信机制。进程间通信概述(4)返回最初的UNIXIPCSystemVIPC基于Socket的IPCLinuxIPCPOSIXIPC最初的UnixIPC:信号、管道、FIFO;SystemVIPC:消息队列、信号量、共享内存区;POSIXIPC:消息队列、

4、信号量、共享内存区。哲学家进餐问题的描述五个哲学家围坐在一张圆桌周围,每个哲学家面前都有一碗米饭,相邻的两碗之间有一支筷子(如图)。哲学家的生活包含两种活动:即吃饭和思考。当一个哲学家觉得饿时,他就试图分两次去取他左边和右边的筷子,每次拿起一支,但不分次序。如果成功地获得了一双筷子,他就开始吃饭,吃完以后放下筷子继续思考。这样,问题就是,为每个哲学家写一段程序来描述其行为,要求不死锁。返回错误与不好的解法(1)解法一:可能进入“死锁”状态#defineN5voidphilosopher(inti){while(TRUE){think();take-chopstick(i)

5、;take-chopstick((i+1)%N);eat();put-chopstick(i);put-chopstick((i+1)%N);}}若每个哲学家进程都运行到此句后发生进程切换,则进入死锁。错误与不好的解法(2)#defineN5voidphilosopher(inti){while(TRUE){think();do{take-chopstick(i);if(can-take-chopstick((i+1)%N))break;elseput-chopstick(i);}while(TRUE);eat();put-chopstick(i);put-chopsti

6、ck((i+1)%N);}}解法二:可能进入“饥饿”状态不妨假设此函数能做到“测试且设置”。这种解法可能会造成下面情况:哲学家们不断地重复“拿起各自左边的筷子又放下”的动作,谁也不能进餐。注意:这时和解法一的状态不同,这时进程都没有阻塞。错误与不好的解法(3)#defineN5typedefintsemaphore;semaphoremutex=1;voidphilosopher(inti){while(TRUE){think();down(mutex);take-chopstick(i);take-chopstick((i+1)%N);eat();put-chopsti

7、ck(i);put-chopstick((i+1)%N);up(mutex);}}返回解法三:可行但效率低下本解法从理论上可行,但从实际角来看,有一局限性:同一时刻只能有一位哲学家进餐。而这里有五支筷子,实际上应能允许两位哲学家同时进餐。并行度较高的解法(1)#defineN5#defineLEFT(i+N-1)%N#defineRIGHT(i+1)%N#defineTHINKING0#defineHUNGRY1#defineEATING2typedefintsemaphore;intstate[N];semaphoremut

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

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

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