欢迎来到天天文库
浏览记录
ID:49599160
大小:242.00 KB
页数:9页
时间:2020-03-03
《实验4 Linux进程管理.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验4Linux进程管理1.实验目的(1)加深对进程概念的理解,明确进稈和稈序的区别。(2)进一步认识并发执行的实质。(3)分析进程争用资源的现象,学习解决进程互斥的方法。(4)了解Linux系统屮进程通信的基木原理。2.实验内容(1)进程创建编写一段程序,使用系统调用fo「k()创建两个了进程(所用头文件stdio.h)o当此程序运行时,在系统屮有一个父进稈和两个了进稈活动。让父进程在屏幕上显示一个字符”旷,子进程分别显示字符5"和请问:(a)理论上屏幕结果是什么?(b)实际运行程序多次,观察记录屏幕结
2、果,与理论是否相符,为什么?(c)根据所分析的原因,请修改程序实证理论。初始程序:#includemain(){intpl,p2;/*创建子进程pl*//*创建子进程p2*/while((pl=fork())==-1);if(pl==0)putchar(*b*);else{while((p2=fork())==-1);if(p2==0)putcharCc*);elseputcharCa*);(a)理论结果:a(b)实际运行程序多次,观察记录屏幕结果,与理论是否相符,为什么?不相符bca,
3、bac,abc,都有可能出现(b)根据所分析的原因,请修改程序实证理论。使用循环#includemain(){intpl,p2,i;while((pl=fork())==-1);/*创建子进程pl*/if(pl==0)for(i=0;i<500;i++)putchar(*b');else{while((p2=fork())==-1);/*创建子进程p2*/if(p2==0)for(i=0;i<500;i++)putchar(*c*);elsefor(i=0;i<500;i++)putch
4、ar('a');}}结果出现各种结果。⑵进程控制修改己编写的程序,将进程的输出由单字符改为一句话,再观察程序执行时屏幕上出现的现象并冋答问题:(a)理论上屏幕结果是什么?(b)实际运行稈序多次,观察记录屏幕结果,与理论是否相符,为什么?(c)根据所分析的原因,请修改程序实证理论。(d)如果在程序中使用系统调用1ockf()来给每个进程加锁,可实现进程Z间的互斥,观察并分析出现的现象。(所用头文件stdio.hb改为Thisadaughter,c改为Thisisason9a改为Thisisaparento#
5、includemain()intpl,p2;while((pl=fork())==-1);/*创建子进程pl*/if(pl==0)printf(HThisisadaughterAn");else{vvhile((p2=fork())==-1);/*创建子进程p2*/if(p2==0)printf(MThisisason.M);elseprintf(HThisisaparent.'T);}}(a)理论上屏幕结果Thisisadaughter.Thisisason.Thisisapa
6、rent.(b)实际运行程序多次,观察记录屏幕结果,与理论是否相符,为什么?不相符。实际上Thisisaparent…Thiisason…Thisisadaughter..或Thisisason...Thisisaparent…Thisisadaughter...都有可能。原因函数字符屮内部字符顺序输出不变。但由于进程并发执行的调度顺序和父子进程抢占处理机问题,输出字符申的顺序和先后随着执行的不同而发牛变化。(0)修改程序。使用循环:#includemain()intpl,p2,i;w
7、hile((pl==fork())==-1);讦(pl==0)for(I=();I<500;I++)printf(8、••..daughter(b)如果在程序中使用系统调用lockf()来给每个进程加锁,可实现进程之间的互斥,观察并分析出现的现象。(所用头文件Stdio.h)#includemain(){intpl,p2,I;while((p1==fork())==-1);if(pl二=0);lockf(l,l,0);for(I=0;Iv500;I++)printf(i4son%d,,,i);lockf(1,0,0);e
8、••..daughter(b)如果在程序中使用系统调用lockf()来给每个进程加锁,可实现进程之间的互斥,观察并分析出现的现象。(所用头文件Stdio.h)#includemain(){intpl,p2,I;while((p1==fork())==-1);if(pl二=0);lockf(l,l,0);for(I=0;Iv500;I++)printf(i4son%d,,,i);lockf(1,0,0);e
此文档下载收益归作者所有