欢迎来到天天文库
浏览记录
ID:45454271
大小:700.00 KB
页数:55页
时间:2019-11-13
《《UNIX进程的通信》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章UNIX系统的进程通信进程是在特定的环境中执行的进程执行中需要进行进程间的协调进程间的协调机制是进程通信本章描述UNIX进程通信的机制和方法进程通信基本概念进程通信随着相关技术的发展不断增加复杂化度、灵活性,通常包括控制信息传递和大批量信息传递。1.通信方式1)主从式-----通信进程间有主从之分2)会话式-----用请求/服务方式完成通信3)消息或邮箱机制-----通过消息缓冲或邮箱完成通信4)共享存储区通信-----通过共享缓冲区通信2.Unix中进程通信包括三种:.基本通信——用于传递进程间的控制信息;.管道通信——将管道文件作为通信的介质,传递进
2、程间的信息;.IPC(InterProcessCommuation)通信——用于进程间大量的数据传送。UNIX基本通信1.锁文件通信通信进程双方将某个文件的建立与撤消作为一个锁标志,即约定:在某个指定目录中(通常会是/tmp目录)查找是否有一个双方约定好的锁文件存在。存在时完成一种处理不存在时完成另一种操作例:两进程P1和P2试图访问一个不能同时进入的临界资源打印机时,设定一个锁文件,执行中:P1查询锁文件是否存在,若不存在P1创建锁文件lock_file,然后使用该资源;使用完后释放该资源并删除lock_file;如锁文件存在P1等待一个时间再进行锁文件的查询
3、。P2也执行与P1相似动作达到对共享临界资源的访问。可以用系统调用creat、unlink及库函数sleep完成2.用记录/文件锁定进行通信通过对文件或文件中的记录锁定实现通信,在UNIX中有一些加锁的系统调用和函数,可实现:建议型锁定-----文件/记录可被锁定,进程执行时访问判断锁定的位置,决定是否能执行相应的访问。例:多个进程对某文件都具有访问权,通过对文件锁定位置的判别,实现进程间的合作,并访问文件内容。这种锁对rogue(诬赖)进程没有控制。强制型锁定-----确定一个锁协议,提供附加的安全性。即对文件做每一个read及write系统调用时检测锁信息,
4、满足时访问,否则不能访问(包括rogue进程)。例:如某文本文件x.dat(不可执行),它对某进程组ID=12的进程开放,同时用chmod关闭进程组ID=12的执行位,构成强制型锁定。通过系统调用fcntl及库函数lockf可完成文件中记录的锁定。系统调用fcntl:功能:对文件或文件中部分内容进行锁定。头文件:,调用方式:intfcntl(intfid,intcmd,[*arg*]…);参数说明:fid——有效的整数,表示已打开的文件描述符cmd——整数值,说明fcntl完成的行为,在头文件fcntl.h中*arg*
5、——选项,若采用锁时引用了一个flock结构fcntl.h中定义的常量:F_SETLK:设置或删除一个锁定,行为基于flock结构F_SETLKW:与F_SETLK相同,但记录不可用时阻塞F_GETLK:通过flock结构返回锁定状态信息第三个参数引用的flock结构:typedefstructflock{shortl_type;/*锁定类型*/shortl_whence;/*开始位置*/off_tl_start;/*相对位移*/off_tl_len;/*长度(0=文件尾)*/longl_sysid;/分布的进程ID,适应分布体系*/pid_tl_pid;/与文
6、件相关的进程ID*/longpad[4];/*备用*/}flock_t;信号信号的概念signal函数发送一个信号kill,raisealarm和pause函数可靠的信号机制信号的概念Signal软中断处理异步事件的机制每个信号有一个名字(以SIG开头)定义为一个整数()如何产生一个信号按终端键,硬件异常,kill(2)函数,kill(1)命令,软件条件,...Linux/UNIX中的信号名称说明SIGABRT进程异常终止(调用abort函数产生此信号)SIGALRM超时(alarm)SIGFPE算术运算异常(除以0,浮点溢出等)SIGHUP
7、连接断开SIGILL非法硬件指令SIGINT终端终端符(Clt-C)SIGKILL终止(不能被捕捉或忽略)SIGPIPE向没有读进程的管道写数据SIGQUIT终端退出符(Clt-)SIGTERM终止(由kill命令发出的系统默认终止信号)SIGUSR1用户定义信号SIGUSR2用户定义信号SignalsinLinux/UNIX(cont’d)名称说明SIGSEGV无效存储访问(段违例)SIGCHLD子进程停止或退出SIGCONT使暂停进程继续SIGSTOP停止(不能被捕捉或忽略)SIGTSTP终端挂起符(Clt-Z)SIGTTIN后台进程请求从控制终端读SIG
8、TTOUT后台进程请求向
此文档下载收益归作者所有