实验一-进程控制实验..docx

上传人:太** 文档编号:48673332 上传时间:2022-10-06 格式:DOCX 页数:4 大小:12.83KB
返回 下载 相关 举报
实验一-进程控制实验..docx_第1页
第1页 / 共4页
实验一-进程控制实验..docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《实验一-进程控制实验..docx》由会员分享,可在线阅读,更多相关《实验一-进程控制实验..docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验一进程控制一、实验目的:加深对进程概念的理解,明确进程和程序的区别;掌握Linux操作系统的进程创立和终 止操作,体会父进程和子进程的关系及进程状态的变化;进一步认识并发执行的实质,编写 并发程序。二、实验平台:虚拟机:VMWare9以上操作系统:Ubuntu 12.04以上编辑器:Gedit | Vim编译器:Gcc三、实验内容:(1)编写一段程序,使用系统调用fork()创立两个子进程,当此程序运行时,在系统中 有一个父进程和两个子进程活动。让每一个进程在屏幕上显示“身份信息”:父进程显示 uParent process! PID=xxxl PPID=xxx2”;子进程显示“Child

2、x process! PID=xxx PPID=xxx”。 多运行几次,观察记录屏幕上的显示结果,并分析原因。说明:XXX1为进程号,用getpid。函数可获取进程号;xxx2为父进程号,用getppid。函数可获取父进程号;Childx中x为1和2,用来区别两个子进程;wait()函数用来防止父进程在子进程终止之前终止。程序源码:#include#include#include#define NUM 2int main(void)(pid_t pidl,pid2;if(pidl=fork()0)printf(创立进程1失败)elseif(pidl=O)子进程1执行printf(nChildl

3、 process: );printf(nPID=%d PPID=%d nn,getpid(),getppid();sleep(2);elseif(pid2=fork()/Desktop$ gcc testl.c -o testwhtcmisswhtcmiss-VirtualBox/Desktop$ ./testChild2 process: PID=2527 PPID=2525Child 1 process: PID=2526 PPID=2525Parent process: PID=2525 PPID=2127whtcmisswhtcmiss-VirtualBox/Desktop$ ./te

4、stChild2 process: PID=2530 PPID=2528Childl process: PID=2529 PPID=2528Parent process: PID=2528 PPID=2127whtcmisswhtcmiss-VirtualBox/Desktop$ ./testChild2 process: PID=2533 PPID=2531Child 1 process: PID=2532 PPID=2531Parent process: PID=2531 PPID=2127实验结果分析:第一次程序运行结果,两个子进程的PPID都是2525,是由同一个进程创立。而父进程 P

5、ID是2525,父进程PPID是2127,说明父进程也是一系统进程的子进程。第二次程序运行结果,父进程PID是2528, PPID是2127,说明父进程是由同一进程创 建的,父进程也是以子进程的方式存在,且进程ID是逐渐递增的。(2) fork。和exec()系列函数能同时运行多个程序,利用上述函数将下面单进程顺序执行 的程序single改造成可并发执行3个进程的程序multi_process.c;并用time命令获取程序的执 行时间,比拟单进程和多进程运行时间,并分析原因。/single.c#include #define NUM 5int main(void)(void print_msg

6、(char *m);print_msg(Good ”);print_msg(n Morning ”);print_msg(n007nn); 将007替换为本人学号return 0;)void print_msg(char *m)(int i;for(i = 0; iNUM; i+) printf(n%sm);fflush(stdout);sleep(l);)编译运行方法:#gcc single.c -o single#time ./single单线程执行结果:whtcmisswhtcmiss-VirtualBox:/Desktop$ gcc single.c o single whtcmiss

7、whtcmiss-VirtualBox:/Desktop$ time ./singleGood Good Good Good Good Morning Morning Morning Morning Morning 2013008244 19 201300824419 201300824419 201300824419 201300824419real0m15.010suser0m0.001ssys0m0.002swhtcmisswhtcmiss-VirtualBox:/Desktop$ |多线程代码:#multi_process.c#include #include#include#define NUM 5 int main(void) (pid_t pid3;int i;for(i=l;iO05suser0mO000ssysOmOeOOOs实验分析:第二个实验结果,第二个程序的多线程因为是并发执行,而且是有三 个线程,所以在时间上几乎是单线程的1/3,而且因为是并发的,所以打印结果 是无序的。实验总结

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁