网站大量收购闲置独家精品文档,联系QQ:2885784924

三进程通信1..docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
三 进程通信 1.实验目的 (1) 认识并发进程的软中断通信。掌握使用软中断控制进程的编程技术。 (2) 掌握管道通信原理。 (3) 通过编写Linux消息发送和接收程序,了解和熟悉Linux消息通信机制 (4) 通过编写共享存储区的通信程序,理解Linux共享存储区机制。 2.实验类型:验证型 3.实验学时:4 4.实验原理和知识点 (1) 实验原理:程序的并发执行具有随机性和不可再现性。程序并发执行会导致资源共享和资源竞争,各程序向前执行的速度会受资源共享的制约。程序的动态执行过程用进程这个概念来描述。由于向前推进的速度不可预知,所以多个进程并发地重复执行,整体上得到的结果可能不同。但要注意,就其中某单个进程而言,其多次运行结果是确定的。并发运行的进程之间,可以通过信号进行同步,也可以通过管道、消息通信机制、共享存储机制进行通信。 (2) 知识点:进程、子进程、并发执行的特性;信号、软中断通信、同步;管道、管道通信;消息队列、消息缓冲、消息的创建、发送和接收;共享存储的创建、附接和断接。 5.实验环境(硬件环境、软件环境): (1)硬件环境:Intel Pentium III 以上CPU,128MB以上内存,2GB以上硬盘 (2)软件环境:Red Hat Linux 9.0以上版本操作系统。 6.实验内容及步骤: (1) 进程间通过系统调用signal()进行通信,通过系统调用wait()进行同步。通过运行结果的分析,认识并发进程的软中断通信。 (2) 使用系统调用pipe()建立一条管道,进程间通过管道交换信息。 (3) 使用系统调用msgget()、msgsnd()、msgrcv()、msgctl()编写消息发送和接收程序。 (54) 使用系统调用shmget()、shmat()、shmdt()、shmctl()编写共享存储区的通信程序。 (5) 记录实验结果。 7.思考与练习 (1) 试比较消息通信和共享存储通信的优劣 (2)采用消息通信机制,你能写一个客户/服务器通信程序吗? 2. 软中断通信 【预备知识】 (1) 信号 信号是一种软件中断,用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。 收到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类:第一种是类似中断的处理程序,对于需要处理的信号,进程可以指定处理函数,由该函数来处理。第二种方法是,忽略某个信号,对该信号不做任何处理,就象未发生过一样。第三种方法是,对该信号的处理保留系统的默认值,这种缺省操作,对大部分的信号的缺省操作是使得进程终止。进程通过系统调用signal来指定进程对某个信号的处理行为。 在进程表的表项中有一个软中断信号域,该域中每一位对应一个信号,当有信号发送给进程时,对应位置位。由此可以看出,进程对不同的信号可以同时保留,但对于同一个信号,进程并不知道在处理之前来过多少个。 每个信号都有一个名字,这些名字都以3个字符SIG开头。编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ~ 63的信号是后来扩充的,称做可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。表2.2是编号为1~20的信号。 表2.2 信号 信号名 信号值 默认动作 说明 SIGHUP 1 终止进程 通知同一会话内的各个作业, 这时它们与控制终端不再关联。 SIGINT 2 终止进程 当用户按中断键(Ctrl-C)时,终端驱动程序产生此信号,信号送到前台进程组的每个进程。 SIGQUIT 3 终止进程 当用户按退出键(Ctrl-\)时,终端驱动程序产生此信号,信号送到前台进程组的每个进程。 SIGILL 4 建立CORE文件 执行了非法指令。通常是因为可执行文件本身出现错误, 或者试图执行数据段。堆栈溢出时也有可能产生这个信号。 SIGTRAP 5 建立CORE文件 由断点指令或其它trap指令产生。由debugger使用。 SIGABRT 6 建立CORE文件 调用abort函数生成的信号。 SIGBUS 7 建立CORE文件 非法地址,包括内存地址对齐出错。它与SIGSEGV的区别在于后者是由于对合法存储地址的非法访问触发的(如访问不属于自己存储空间或只读存储空间)。 SIGFPE 8 建立CORE文件 在发生致命的算术运算错误时发出。不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误。 SIGKILL 9 终止进程 用来立即结束程序的运行。本信号不能被

文档评论(0)

fg09h0as + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档