欢迎来到天天文库
浏览记录
ID:20452596
大小:65.32 KB
页数:4页
时间:2018-10-12
《操作系统实验报告-进程管理》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验名称:进程管理组别:合作者:日期:5/24一、预习:实验内容及要求(1)实验目的:1.加深对进程概念的理解,区分进程和程序的区别2.进-步了解进程并发执行的本质⑵.实验内容:1.创建进程编写一段程序,使用函数fork()创建两个子进程,执行该程序时,在系统中同时存在一个父进程以及两个子进程活动。此时,让每个进程在屏幕上S示一个字符:父进程显示字符“p”;子进程分别显示字符“a”和字符“b”。请观察并记录程序的执行结果,并分析具体原因。2.进程的控制(随机执行以及加锁执行)修改上述程序,将每个进程输岀结果修改为每个进程输fli几行字符(在此,
2、如果为第一个子进程,则连续输出10行"thefirstchildprocess";如果为第二个子进程,则连续输出10行“thesecondchildprocess”;如果为父进程,则连渎输出10行“theparentprocess’’),再观察程序的执行结果,并分析原因。然后,在上述程序屮使用函数k)ckf()给每个进程加锁(锁定屏幕输出),从而实现进程之间互斥,观察并分析结果。二、实验步骤及过程(可以附算法)1.进入vi编辑器,创建test.c文件localhostuitest.2.输入代码如下;putchar(a);else3、p2=fork())==-l);if(p2==0)putchar(:);else3.输入gcc-otesttest.c对test.c文件进行编译,输入./test对test.c文件进行执行,结果如下。[huy@localbostgcc-otesttest.c[hwy(?localhost~]$./testabc4.创建te.c文件localhost~]$vite.i5.输入代码如下;h>for(i=0;i<5;i++)printf(Thef-rt!!'});else{while((p24、=fork())==-l);if(p2==8)for(i=9:i<5;i++)printf(pidprose:;s);elsefor(i=9:i〈5;i++)printf(hepTheTheTheTheTheTheTheTheTheTheprosessprosessprosessprosess4.输入gcc-otete.c对te.c文件进行编译,输入./te对te.c文件进行执行,结果如下[buy6localhostgcc一otete.c[buy@localbost]$./tefirstproses5、sfirstprosessfirstprosessfirstprosessfirstprosesssecondprosesssecondsecondsecondsecondTheparentprosessTheparentprosessTheparentprosessTheparentprosessTheparentprosess5.加入lockf()函数代码如下for(i=;i<5;i++){lockf(1,1,8);printf(;lockf(1,6,B);>else6、i=B;i<5;i++){lockf(1,1,G);printf(jose3);lockf(HE);}elsefor(i=t;i<5;i++){lockf(l,l,);printf(ow]);lockf(1,3,G);>yreturn:;4.再次编译并执行;XX[hwyP1oca1host~]$./teThefirstprosessThefirstprosessThefirstprosessThefirstprosessThefirstprosessTheparentprosessTheparentprosessTheparentprosess7、TheparentprosessTheparentprosess[huyPlocalhost~]$ThesecondprosessThesecondprosessThesecondprosessThesecondprosessThesecondprosess三、实验结果及分析(可另加附页)通过本次实验了解了进程的进本操作,还有儿个函数的基本调用,有fork()函数,lockf函数四、教师评价指导教师签名:
3、p2=fork())==-l);if(p2==0)putchar(:);else3.输入gcc-otesttest.c对test.c文件进行编译,输入./test对test.c文件进行执行,结果如下。[huy@localbostgcc-otesttest.c[hwy(?localhost~]$./testabc4.创建te.c文件localhost~]$vite.i5.输入代码如下;h>for(i=0;i<5;i++)printf(Thef-rt!!'});else{while((p2
4、=fork())==-l);if(p2==8)for(i=9:i<5;i++)printf(pidprose:;s);elsefor(i=9:i〈5;i++)printf(hepTheTheTheTheTheTheTheTheTheTheprosessprosessprosessprosess4.输入gcc-otete.c对te.c文件进行编译,输入./te对te.c文件进行执行,结果如下[buy6localhostgcc一otete.c[buy@localbost]$./tefirstproses
5、sfirstprosessfirstprosessfirstprosessfirstprosesssecondprosesssecondsecondsecondsecondTheparentprosessTheparentprosessTheparentprosessTheparentprosessTheparentprosess5.加入lockf()函数代码如下for(i=;i<5;i++){lockf(1,1,8);printf(;lockf(1,6,B);>else6、i=B;i<5;i++){lockf(1,1,G);printf(jose3);lockf(HE);}elsefor(i=t;i<5;i++){lockf(l,l,);printf(ow]);lockf(1,3,G);>yreturn:;4.再次编译并执行;XX[hwyP1oca1host~]$./teThefirstprosessThefirstprosessThefirstprosessThefirstprosessThefirstprosessTheparentprosessTheparentprosessTheparentprosess7、TheparentprosessTheparentprosess[huyPlocalhost~]$ThesecondprosessThesecondprosessThesecondprosessThesecondprosessThesecondprosess三、实验结果及分析(可另加附页)通过本次实验了解了进程的进本操作,还有儿个函数的基本调用,有fork()函数,lockf函数四、教师评价指导教师签名:
6、i=B;i<5;i++){lockf(1,1,G);printf(jose3);lockf(HE);}elsefor(i=t;i<5;i++){lockf(l,l,);printf(ow]);lockf(1,3,G);>yreturn:;4.再次编译并执行;XX[hwyP1oca1host~]$./teThefirstprosessThefirstprosessThefirstprosessThefirstprosessThefirstprosessTheparentprosessTheparentprosessTheparentprosess
7、TheparentprosessTheparentprosess[huyPlocalhost~]$ThesecondprosessThesecondprosessThesecondprosessThesecondprosessThesecondprosess三、实验结果及分析(可另加附页)通过本次实验了解了进程的进本操作,还有儿个函数的基本调用,有fork()函数,lockf函数四、教师评价指导教师签名:
此文档下载收益归作者所有