《进程通信》PPT课件

《进程通信》PPT课件

ID:39725514

大小:275.42 KB

页数:35页

时间:2019-07-10

《进程通信》PPT课件_第1页
《进程通信》PPT课件_第2页
《进程通信》PPT课件_第3页
《进程通信》PPT课件_第4页
《进程通信》PPT课件_第5页
资源描述:

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

1、进程通信(communication低级通讯-------信号机制高级通讯(管道,IPC,Scoket)1进程间通信的类型低级通信:只能传递状态和整数值(控制信息),包括进程互斥和同步所采用的信号量和管程机制。优点的速度快。缺点是:传送信息量小:效率低,每次通信传递的信息量固定,若传递较多信息则需要进行多次通信。编程复杂:用户直接实现通信的细节,编程复杂,容易出错。高级通信:能够传送任意数量的数据,包括三类:共享存储区、管道、消息。返回1.低级通信和高级通信22.直接通信和间接通信直接通信:信息直接传递给接收方,如管道。在发送时,指定接

2、收方的地址或标识,也可以指定多个接收方或广播式地址;在接收时,允许接收来自任意发送方的消息,并在读出消息的同时获取发送方的地址。间接通信:借助于收发双方进程之外的共享数据结构作为通信中转,如消息队列。通常收方和发方的数目可以是任意的。33.高级通信的特征通信链路(communicationlink):点对点/多点/广播单向/双向有容量(链路带缓冲区)/无容量(发送方和接收方需自备缓冲区)数据格式:字节流(bytestream):各次发送之间的分界,在接收时不被保留,没有格式;报文(datagram/message):各次发送之间的分界,

3、在接收时被保留,通常有格式(如表示类型),定长/不定长报文,可靠报文/不可靠报文。收发操作的同步方式发送阻塞(直到被链路容量或接收方所接受)和不阻塞(失败时立即返回)接收阻塞(直到有数据可读)和不阻塞(无数据时立即返回)由事件驱动收发:在允许发送或有数据可读时,才做发送和接收操作4低级通讯-----信号机制一个进程向另一个进程或进程组(或自己)发送(kill系统调用):发送者必须具有接收者同样的有效用户ID,或者发送者是超级用户身份某些键盘按键,如:中断字符(通常是Ctrl+C或Del)、暂停字符(如Ctrl+Z)硬件条件,如:除数为零

4、、浮点运算错、访问非法地址等异常条件软件条件,如:Socket中有加急数据到达1.信号类型52.对信号的处理进程可以设置信号处理例程(signal系统调用),在接收到信号时就被调用,称为"捕获"该信号。信号处理例程的参数是接收到信号的编号。进程也可以忽略指定的信号(SIG_IGN)。只有SIGKILL信号(无条件终止进程)和SIGSTOP(使进程暂停)不能被忽略。在库函数system()的实现中,通过fork和exec加载新程序之后,在父进程中对SIGINT和SIGQUIT都要忽略,然后wait直到子进程终止,才恢复对SIGINT和SI

5、GQUIT的原有处理例程。进程创建后为信号设立了默认处理例程(SIG_DFL),如:终止并留映象文件(core)6信号的接收Signal(signame,function)function(SIG_DFL,SIG_IGN,user_function)SIG_DFL---系统默认处理方式SIG_IGN----忽略该信号(除SIGSTOP,SIGKILL)User_functiong----按用户指定的处理方式处理,主要针对SIGUSR1,SIGUSR2(16,17号)信号,其它信号如忽略可按此方式处理。7信号的发送按约定的事件发送(按键,

6、硬件,函数)通过kill函数直接发送信号给指定的进程。kill(pid,sig)------programkill–signamepid-------terminal8例1#include#includestaticvoidsig_usr(int);intmain(void){signal(SIGUSR1,sig_usr);signal(SIGUSR2,sig_usr);for(;;)pause();}staticvoidsig_usr(intsign){if(sign==SIGUSR1)print

7、f("receiveSIGUS1");elseif(sign==SIGUSR2)printf("receiveSIGUS2");elseprintf("receiveother");return;a.out&Kill–USR1pidnumKill–USR2pidnum9例2#include#include#includevoidwaiting(),stop();intwait_mark;main(){intp1,p2;signal(SIGINT,SIG_IGN);sign

8、al(SIGQUIT,SIG_IGN);while((p1=fork())==-1);if(p1>0){while((p2=fork())==-1);if(p2>0){wait_mark=1;signal(

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

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

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