• / 6
  • 下载费用:10 金币  

操作系统原理第一次实验.doc

关 键 词:
操作系统原理第一次实验.doc
资源描述:
1实验一 进程管理、管道通信1.实验名称:进程管理、管道通信二.实验目的:1、 熟悉 linux 下利用 gcc、gdb 编译、调试 C 程序2、 掌握进程的概念,明确进程的含义3、 认识并了解并发执行的实质4、 掌握进程间无名管道的通信三.实验准备:1、 预习 linux 下利用 gcc 编译 c 程序。2、 参考课件及资料掌握进程的创建过程。3、 参考课件及资料掌握进程的并发执行。4、 参考课件及资料掌握进程间无名管道的通信。四.实验内容:内容一:敲通如下程序,分析运行结果。#include main(){int i;while((i=fork())==-1); //创建一个子进程,直到创建成功为止 printf(“i=%d“,i);if(i)printf(“It is a parent process!“);else printf(“It is a child process!“);}分析:多次的运行结果不同,执行一次程序,i 的值就依次增加,每次增加 2,但后面的字符串不变。执行 while((x=fork())==-1);后,父进程创建一子进程,子进程复制了父进程的资源,成为独立于父进程的一个进程,并且子进程的 fork()返回值为 0,父进程的 fork()返回值为刚创建的子进程号。系统先运行子进程,输出 It is a parent process!,进入该分支后,因出现 IO 中断,子进程释放CPU,进入阻塞状态,处于就绪状态的父进程得到 CPU 继续执行,进入else 分支,输出 It is a child process!。2图一内容二:编写程序,用系统调用fork()创建两子进程。父进程显示50次字符串“father”,子进程1显示50次字符串“son”,子进程2显示50次字符串“daughter”。观察并记录屏幕上显示结果,分析原因。(提示:可在各进程中加入sleep,观察结果分析原因)#include main(){int i,p1,p2;while((p1=fork())==-1); //创建一个子进程 p1if(p1==0)for(i=0;i#include void *ptest(void *arg){printf(“ This is the new thread!“ );return(NULL);}main()4{ pthread_t tid;printf(“ This is the parent process !“ );pthread_create(sleep(1);return;}分析:进入主程序时输出“This is the parent process !”,用创建线程的函数,该函数中主席了指针 ptest 指向的函数,而后输出“This is the new thread!”返回值为空,程序休眠后结束程序。图三内容四:敲通管道通信(课件)例题,写出运行结果,分析程序功能#include #include void main(){int x,fd[2];char buf[30],s[30];pipe(fd);while((x=fork())==-1);if(x==0){sprintf(buf,“This is an example\n“);write(fd[1],buf,30);exit(0);5}else{wait(0);read(fd[0],s,30);printf(“%s“,s);}}分析:创建管道 fd,创建进程,进程标识符为 x。如果调用子进程则向缓冲区里写入字符串“This is an example”,然后从 buf 里向 pipe 里写入30 个字符然后退出子进程,而后调用父进程从该缓冲区里读出 30 个字符并且显示出来。如果先调用父进程则父进程会被要求等待,从 pipe 里读出的内容为空,直到调用子进程完成整个写入输出的过程。图四内容五:编写一程序,建立一个管道。同时,父进程生产子进程P1,P2,这两个子进程分别向管道中写入各自的字符串,父进程分别读出它们,并显示出来。#include #include main(){int p1,p2,fd[2],i=0;char s1[50],s2[50];pipe(fd); //父进程建立管道while((p1=fork())==-1); //创建子进程 p1,失败时循环if(p1==0) //由子进程 p1 返回,执行子进程 p1for(i=0;i3;i++){sprintf(s1,“I am child1\n“);write(fd[1],s1,50); //把 s1 中的 50 个字符写入管道6}else{wait(0);read(fd[0],s1,50);read(fd[0],s2,50);printf(“%s
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:操作系统原理第一次实验.doc
链接地址:https://www.weizhuannet.com/p-8127571.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

微传网博客

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开