1、操作系统原理第一次实验内容linux下的c编程选一编辑程序编写c语言源程序,如vi。源程序的扩展名为.c用linux下的编译器gcc编译成目标文件,执行。例:用vi编辑c源程序test.c如下 #include int main(void) printf(hello world!);格式: gcc optionsfilenamesoptions:共有100多个,大多数很少用到常用:(1)c只把源代码(.c文件)编译成目标代码(.o文件)。例:$gcc -c test.c 将test.c编译成目标文件test.o(2)-ofile1file2 将文件file2编译成可执行文件file1例:$gc
2、c -o test test.c(3)-v 得到所用的gcc版本的相关信息例:$gcc -v(4)-S 为c程序文件产生汇编语言(.s文件)文件后停止编译例:$gcc -S test.c 得到test.s的目标文件实验一 进程管理、管道通信实验名称:进程管理、管道通信实验目的:1、 熟悉linux下利用gcc、gdb编译、调试C程序2、 掌握进程的概念,明确进程的含义3、 认识并了解并发执行的实质4、 掌握进程间无名管道的通信实验准备:1、 预习linux下利用gcc编译c程序。2、 参考课件及资料掌握进程的创建过程。3、 参考课件及资料掌握进程的并发执行。4、 参考课件及资料掌握进程间无名管
3、道的通信实验内容:内容一:敲通如下程序,分析运行结果。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!);内容二:编写程序,用系统调用fork()创建两子进程。父进程显示50次字符串“father”,子进程1显示50次字符串“son”,子进程2显示50次字符串“daughter”。观察并记录屏幕上显示结果,分析原因。(提示:可在各进程中加入sleep,观察结果分析原因)内容三:敲通如下程序,写出运行结果,分析程
4、序功能。#include void *ptest(void *arg)printf( This is the new thread! );return(NULL);main() pthread_t tid;printf( This is the parent process ! );pthread_create(&tid,NULL,ptest,NULL);sleep(1);return;内容四:编写程序,显示连续3个fork()最多能创建几个进程。 内容五:敲通管道通信(课件)例题,写出运行结果,分析程序功能内容六:编写一程序,建立一个管道。同时,父进程生产子进程P1,P2,这两个子进程分别向管道中写入各自的字符串,父进程分别读出它们,并显示出来。(可参考计算机操作系统教程 张尧学著 第三章第七节进程通信中的进程通信实例之管道例2)实验总结:实验课上,老师留的很多时间供我们完成实验,同学们都很积极参与,这次实验让我掌握和熟悉了进程管理和管道通信的使用,这次实验中反了很多小错误,最后在同学的帮助下顺利完成,感谢同学的的帮助,下次实验争取不犯错误,顺利完成