《《操作系统》课程实验报告--线程与进程的创建.docx》由会员分享,可在线阅读,更多相关《《操作系统》课程实验报告--线程与进程的创建.docx(6页珍藏版)》请在第一文库网上搜索。
1、操作系统课程实验报告实验题目:线程与进程的创建实验概述【实验目的及要求】1 .在Iinux下编写一个应用程序,命名为an_ch2_1bo这个程序不断地输出如下行:ThoseoutputcomefromChi1dj系统时间另外写一个应用程序,命名为an_ch2_1ao这个程序创建一个子进程,执行an_ch2_1bo这个程序不断地输出如下行:ThoseoutputcomefromChi1d,系统时间观察程序运行的结果,并对你看到的现象进行解释。2 .Iinux环境下编写一个控制台应用程序,程序中有一个共享的整型变量shared_var,初始值为0;创建一个线程并使其立即与主线程并发执行。新创建的线
2、程与主线程均不断地循环,并输出shared_var的值。主线程在循环中不断地对shared_var进行加1操作,即每次循环shared_var被加1;而新创建的线程则不断地对shared_var进行减1操作,即每次循环shared_var被减1。观察程序运行的结果,并对你看到的现象进行解释。【实验环境】操作系统:1iniIXmint编译环境:gcc实验内容【实验过程】一、实验步骤:在IinUX下编写一个应用程序,命名为an_ch2_1b。这个程序不断地输出如下行:ThoseoutputcomefromChi1d,系统时间另外写一个应用程序,命名为an_ch2_1ao这个程序创建一个子进程,执行
3、an_ch2_1bo这个程序不断地输出如下行:ThoseoutputcomefromChi1d,系统时间2o在IinUX环境下编写一个控制台应用程序,程序中有一个共享的整型变量shared_var,初始值为0;创建一个线程并使其立即与主线程并发执行。新创建的线程与主线程均不断地循环,并输出Share(1Var的值。主线程在循环中不断地对sharedvar进行加1操作,即每次循环sharedvar被加1;而新创建的线程则不断地对sharedvar进行减1操作,即每次循环sharedvar被减Io二、源代码:实验1/an_ch2_1b.c#inc1ude#inc1udeintmain()whi1e
4、(1)now;time(&now);printf(Thoseoutputcomefromchi1dz%snzasctime(1oca1time(8now);return0;)/an_ch2_1a.c#inc1ude#inc1ude/!inc1udeintmain()pid_tpid=fork();char*argv=an_ch2_1b,NU11;switch(pid)case0:execvp(./an_ch2_1bzargv);break;case-1:printf(forkerrorn);break;defau1t:printf(inparentprocessn);break;)实验2:/t
5、hreadExamp1e.c#inc1ude#inc1ude#inc1udeintshared_var=O;voidthread()whi1e(1)printf(inchi1dpthreadshared_var=%d.n,-shared-var);us1eep(100);)intmain(intargc,char*argv)pthread_tid;intret=0;ret=pthread_create(&id,NU11,(void*)thread,NU11);if(ret!=O)printf(Createpthreaderror!n);return0;)whi1e(1)printf(inmai
6、nthreadzshared_var=%d.n/+shared_var);us1eep(200);)returnO;)五,实验结果与分析Termina1-+Thoseoutputcomefromchi1d,SunNov2914:45:412015Thoseoutputcomefromchi1d,SunNov2914:45:412015Thoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015ZnThoseoutputcomefromchi1d,SunNov2914:45
7、:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutp
8、utcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d.SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,Su
9、nNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutputcomefromchi1d,SunNov2914:45:412015/nThoseoutput/nThoseoutputcomeIfromchi1d,SunNov2914:45:412015实验现象分析:程序an_ch2_1a通过调用程序an_ch2_1b
10、完成操作,an_ch2_1b通过系统调用,获取系统时间并打印之。实验2:Termina1inmainthread,shared,var=-6055.inchi1dpthreadshared,var=-6056.inmainthread,shared,var=-6055.inchi1dpthreadshared,var=-6056.inchi1dpthreadshared-var=-6057.inmainthread,shared.var=-6056.inchi1dpthreadshared,var=-6057.inmainthread,shared,var=-6056.inchi1dpthre
11、adshared,var=-6057.inchi1dpthreadshared.var=-6058.inmainthread,shared,var=-6057.inchi1dpthreadshared-var=-6058.inchi1dpthreadshared.var=-6059.inmainthread,shared,var=-6058.inchi1dpthreadshared.var=-6059.inmainthread,shared,var=-6058.inchi1dpthreadshared.var=-6059.inchi1dpthreadshared.var=-6060.inmai
12、nthread,shared-var=-6059.inchi1dpthreadshared.var=-6060.inmainthread,shared,var=-6059.inchi1dpthreadshared,var=-6060.inchi1dpthreadshared,var=-6061.inmainthread,shared,1实验现象分析:程序中有一个共享的整型变量Shared_var,线程在循环中不断地对Shared_var进行加1操作,即每次循环ShareC1Var被加1;而新创建的线程则不断地对shared.var进行减1操作,主次线程并发执行,当执行到SIeePo时,进入阻塞状态。1 .创建进程:fork()2 .在新创建的进程中装载新程序:execpv()3 .创建线程:pthread_create()4获取系统时间:time()5exec()函数族:execv1pe当函数带有V时,参数使用Char*口形式当函数带有I时,参数使用Char*,char*,形式当函数带有P时,参数使用fi1ename参数,路径在环境变量里找当函数带有e时,参数使用Path参数,表示执行文件的路径指导教师评语及成绩评语:成绩:批阅日期:指导教师签名: