预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共26页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

操作系统实验报告姓名:学号:完成时间:2012年11月22日目录:实验一:UNIX/LINUIX入门…………………………………………………………………………………………..1实验二:进程管理……………………………………………………………………………………………………….3实验三:线程的管理…………………………………………………………………………………………………..10实验四:利用信号实现进程间通信…………………………………………………………………….……..15实验五:基于消息队列和共享内存的进程间通信……………………………………………….…...18实验六:一个进程启动另一个程序的执行…………………………………………………………..……23实验一UNIX/LINUIX入门一、实验目的了解UNIX/LINUX运行环境,熟悉UNIX/LINUX的常用基本命令,熟悉和掌握UNIX/LINUX下c语言程序的编写、编译、调试和运行方法。二、实验内容1、熟悉UNIX/LINUX的常用基本命令如ls、who、pwd、ps等。2、练习UNIX/LINUX的文本行编辑器vi的使用方法3、熟悉UNIX/LINUX下c语言编译器cc/gcc的使用方法。用vi编写一个简单的显示“Hello,World!”c语言程序,用gcc编译并观察编译后的结果,然后运行它。三、实验要求按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。四、实验设计代码如下:#include<stdio.h>voidmain(){printf("helloworld");}五、运行结果1六、收获及机会此次实验让我熟悉了Liunx下的文本行编辑器vi和c语言编译器cc/gcc的使用方法。七、参考资料《实验指导书》2实验二进程管理一、实验目的加深对进程概念的理解,明确进程与程序的区别;进一步认识并发执行的实质二、实验内容(1)进程创建编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示“a“;子进程分别显示字符”b“和字符“c”。试观察记录屏幕上的显示结果,并分析原因。(2)进程控制修改已编写的程序,将每一个进程输出一个字符改为每一个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。(3)进程的管道通信编写程序实现进程的管道通信。使用系统调用pipe()建立一个管道,二个子进程P1和P2分别向管道各写一句话:Child1issendingamessage!Child2issendingamessage!父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,再接收P2)。三、实验要求按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。四、实验设计(1)进程创建使用fork()创建两个子进程,父进程等待两个子进程执行完在运行。(2)进程控制使用fork()创建两个子进程,父进程等待两个子进程分别输出一句话在运行。(3)进程的管道通信建立一个管道。在程序中先建立一个子进程,然后向管道中输入数据,然后从子进程中退出到父进程,读出管道数据,然后再建立一个子进程,写入数据,再读出,即可。代码如下:进程创建:#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<string.h>#include<errno.h>#defineINPUT0#defineOUTPUT13voidmain(){pid_tpid[2];//定义两个子进程pid[0]=fork();//创建第一个子进程if(pid[0]<0){//判断是否创建成功printf("ForkFailed");exit(-1);}elseif(pid[0]==0){printf("b\n");}else{pid[1]=fork();//创建另一子进程if(pid[1]<0){printf("ForkFailed");exit(-1);}elseif(pid[1]==0){printf("c\n");}else{