Linux进程创建与进程通信实验指导书.doc_第1页
Linux进程创建与进程通信实验指导书.doc_第2页
Linux进程创建与进程通信实验指导书.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一、Linux进程创建与进程通信实验目的1. 熟悉有关Linux系统调用;2. 学习有关Linux的进程创建,理解进程创建后两个并发进程的执行;3. 通过系统调用wait()和exit(),实现父子进程同步;4. 掌握管道、消息缓冲等进程通信方法并了解其特点和使用限制。实验内容1. 父进程创建子进程实现父进程创建一个子进程,返回后父子进程分别循环输出字符串“The parent process.”及“The child process.”5次,每次输出后使用sleep(1)延时一秒,然后再进入下一次循环。给出源程序代码和运行结果。2. 父子进程同步 修改上题程序,使用exit()和wait()实现父子进程同步,其同步方式为父进程等待子进程的同步,即:子进程循环输出5次,然后父进程再循环输出5次。给出源程序代码和运行结果。3. Linux管道通信 编写一个程序,实现以下功能。给出源程序代码和运行结果。(1)父进程使用系统调用pipe()创建一个无名管道;(2)创建两个子进程,分别向管道发送一条信息后结束;子进程1发送:Child 1 is sending a message to parent!子进程2发送:Child 2 is sending a message to parent!(3)父进程从管道中分别接收两个子进程发来的消息并显示在屏幕上,父进程结束。两个子进程发送信息没有先后顺序要求。4. Linux消息缓冲通信 编写一个程序,实现以下功能。给出源程序代码和运行结果。 (1)父进程创建一个消息队列和一个子进程,由子进程发送消息,父进程等待子进程结束后接收子进程发来的消息,并显示消息内容。以“end”作为结束消息。 (2)分别编写发送进程和接收进程,由发送进程发送消息,接收进程接收消息。采用先执行发送进程后执行接收进程的方式同步。以“end”作为结束消息。 (3)模拟C/S通信,要求如下。(选做) 模拟客户端(client端)程序client,其功能如下。a) 显示下列服务功能菜单:Enter your choice:1. Save money2. Take moneyb) 接收用户键入的功能号进行选择;c) 将用户键入的功能号作为一条信息发送至消息队列,然后结束。模拟服务器端(Server端)程序server,其功能如下。a) 从消息队列接收Client端发来的一条消息;b) 根据消息作如下处理。若消息为“1”,则创建子进程1,由子进程1加载服务模块save,该模块的作用为显示以下信息:Your money was saved!若消息为“2”,则创建子进程2,由子进程2加载服务模块take,该模块的作用为显示以下信息:Please take your money!c) 等待子进程终止后,Server进程删除消息队列,然后结束。实验提示:1. C编译器gcc的使用GCC(GNU Compiler Collection)是目前Linux下最常用的C语言编译器,能够编译用CC+等语言编写的程序。通过GCC源码文件生成可执行文件的过程要经过4个阶段,分别是预处理、编译、汇编和链接。格式:gcc 【选项】 源文件 【目标文件】如不使用任何参数将生成一个名为a.out的文件,执行时输入./a.out(./表示在当前路径下)。2. 进程控制的系统调用fork系统调用创建新的子进程格式: pid=int fork()fork调用返回时,系统中已有两个用户级环境完全相同的进程存在,这两个进程从fork调用中得到的返回值不同,其中子进程得到的返回值为零,父进程得到的返回值是新创建子进程的进程标识号。3.进程通信的系统调用 pipe系统调用格式: int pipe (filedes)int filedes 2; 消息机制Msgid=msgget(key,msgflg)key_t key;int msgflg;Msgctl(msgid, cmd, buf)int msgid, cmd;msgqid_ds #buf;msgsnd(msgid, msgp, msgsz, msgflg)int msgid;struct msgbuf *msgp;int msgsz, msgflg;msgrcv (msgid, msgp, msgsz, msgtyp, msgflg );int msgid;struct msgbuf *msgp;int msgsz;long msgtyp;int msgflg;注:系统调用详细说明和使用示例可参考ppt资料。实验要求:1. 观察实验结果,分析结果产生原因。2. 实验结束一周后需提交实验报告和源程序文件。实验思考:1. 实验中如何实现的父子进程的同步?2. 管道通信的读写进程之间必须满足什么关系?3. 在使用消息缓冲通信进行通信时,发送和接收者之间的同步机制由谁提供?4. 消息缓冲通信与管道通信有何不同?当两个独立进程之间需传递大量信息时,应该使用哪一种通信方式?参考资料:【1】操作系统教程与实验,胡明庆等编著,清华大学出版社。【2】计算机操作系统教程-核心与设计原理,范策等编著,清华大学出版社。学习网站:红帽中国门户网站:;Fedora门户网站:;中国Linux公社:/cms/index.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论