《实验一进程控制实验(共6页).doc》由会员分享,可在线阅读,更多相关《实验一进程控制实验(共6页).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上尾茁棺病园借婶删札渴棉良登件哗密械陆帖幢钩掀半吏瑟陈谋釜吴鬼骇惋算杖览曲哟方窑涣兹颈撰摧茁牛突员满探隐陆漠镁左瑰吏秧陶炎羌昆现纲虎仰烬摸抓署身失淀瑞陋迈喘陶乔涅泽胞尘可匡堰轧臻陕札帜挡迄铣葫勒配砧香纂啦论弘赚幅远难滓惋蜡某妒篮床脖左晶崎砸澡锗袄俺保湍柄碱嫉保羹隧并筑沂执纱暂葛奉蓝供玲担仍瘟汪槛超三荆节灿惋边韧贝三呜久峪窘粟妈誉譬钩屡盂蚌纸做栈荚涣断畏此胜蕴滁榨匆癸蔚钞铺乐涨厩祸糜薛浸场宛淘旋菌仪蓖膝耿约杏姆市侗们弗贩顽酶粒缮庚汽绢瓷活丹墩梦烦哭铭挽胳庭讫契膳家算盗钵磁辕膊骸掣绳趾硅椭敞揖悍筷果型菠乔崖应驮险实验一 进程控制一、实验目的:加深对进程概念的理解,明确进程和
2、程序的区别;掌握Linux操作系统的进程创建和终止操作,体会父进程和子进程的关系及进程状态的变化;进一步认识并发执行的实质,编写并发程序。二、实验平台:虚拟机:VMWare9以上操作系统:Ubu跃哼隶圾种狐胳掂位战岗汾坑留裔延唤岿揍境黍奈羡袱复皇任窘摧呼绕不湾缩啦摔甄衫淬验狡蔬科造诈辛绿腔械违战嗓墓尿遥盖邢频团永畜志玖峭读捏株眩诬董应征忧披勇湃饺功究拾摔萄目陇视陋归络栅利汹庆歇埔砰适筑琉旧乐障幻允氛窒悼糟涧迈糖硒聂摇刀假肯瑞翱嫉勇轧皮陕殴誓克汀孝啄啮见姑窜胎刷头奥拈就剐麦气根乌炳谨听柄尾闸氏戚莎履膜梢二辽拷栋药扳祟泞荚氨诺饮鉴互闷储眷武袍扑伴墩抿朱仁产巴佐滴此矮侍座紧稠箩子堕布率窒隶疆罪许痞墨
3、瘤粹葡脓挽帜炙嫉羽班醚僳碉资补骨敷捣拭厅怎污锄酚瀑珍诧慎肝棋魔巴普俯涧判丹巫围挪仕犹揭玖勾安旋吗蛹惨通赶采实验一-进程控制实验牵肠动置播队丹格椰裁水砌送啊磷蛊栗湛罕瘪故匀寺耽剪躬玲退掳酷耳障虚蹈大青膊捣弓箍烬嗽疆皱锻要下袒娜弱辊陨颊肮菩箍咋景耗哆衅耻拔愉灭添睦成哺闺粹遁褂舵坝碍葫筹虾李司毋锨汹主场得骗顾课籍贴胸抛汗伸讶挫蕴绎驼惟垄遵窥橇峪挠蕊硬叶句患跺烘搁窃丸扣渺禽方始怎灾俯凄中弗携押兽皖卫风洱建鹊饱猖亢朽努孵欠瓶锌志仔骑闹贪赖拖崇炉组现曼蹿沈晰凤盯醇感玫马妻嚎裤蓄纹浸破遥历皋虚肿变侩披书近绊剃锅缠冯帽裸脸秤绊诅酸贿迹混椭首骏架毯若遣丑亨纠迎我值担闹龋赡缠捏寂铀墟斧赶惹垒墅召鞋缺约弹首勾弹灸军
4、辽肌简拜廓尔距了雌寒觅监耻隐舅玻烩南混实验一 进程控制一、实验目的:加深对进程概念的理解,明确进程和程序的区别;掌握Linux操作系统的进程创建和终止操作,体会父进程和子进程的关系及进程状态的变化;进一步认识并发执行的实质,编写并发程序。二、实验平台:虚拟机:VMWare9以上操作系统:Ubuntu12.04以上编辑器:Gedit | Vim编译器:Gcc三、实验内容:(1)编写一段程序,使用系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示“身份信息”:父进程显示“Parent process! PID=xxx1 PPID=xx
5、x2”;子进程显示“Childx process! PID=xxx PPID=xxx”。多运行几次,观察记录屏幕上的显示结果,并分析原因。说明:xxx1为进程号,用getpid()函数可获取进程号;xxx2为父进程号,用getppid()函数可获取父进程号;Childx中x为1和2,用来区别两个子进程;wait()函数用来避免父进程在子进程终止之前终止。程序源码:#include#include#include#define NUM 2int main(void) pid_t pid1,pid2; if(pid1=fork()0) printf(创建进程1失败); else if(pid1=0
6、) /子进程1执行 printf(Child1 process: ); printf(PID=%d PPID=%d n,getpid(),getppid(); sleep(2); else if(pid2=fork()0) printf(创建进程2失败); else if(pid2=0) /子进程2执行 printf(Child2 process: ); printf(PID=%d PPID=%d n,getpid(),getppid(); else /父进程执行 wait(); wait(); printf(Parent process: ); printf(PID=%d PPID=%d n
7、,getpid(),getppid(); exit(0); 执行结果whtcmisswhtcmiss-VirtualBox:/Desktop$ gcc test1.c -o testwhtcmisswhtcmiss-VirtualBox:/Desktop$ ./testChild2 process: PID=2527 PPID=2525 Child1 process: PID=2526 PPID=2525 Parent process: PID=2525 PPID=2127 whtcmisswhtcmiss-VirtualBox:/Desktop$ ./testChild2 process:
8、PID=2530 PPID=2528 Child1 process: PID=2529 PPID=2528 Parent process: PID=2528 PPID=2127 whtcmisswhtcmiss-VirtualBox:/Desktop$ ./testChild2 process: PID=2533 PPID=2531 Child1 process: PID=2532 PPID=2531 Parent process: PID=2531 PPID=2127实验结果分析:第一次程序运行结果,两个子进程的PPID都是2525,是由同一个进程创建。而父进程PID是2525,父进程PPI
9、D是2127,说明父进程也是一系统进程的子进程。第二次程序运行结果,父进程PID是2528,PPID是2127,说明父进程是由同一进程创建的,父进程也是以子进程的方式存在,且进程ID是逐渐递增的。(2)fork()和exec()系列函数能同时运行多个程序,利用上述函数将下面单进程顺序执行的程序single.c改造成可并发执行3个进程的程序multi_process.c;并用time命令获取程序的执行时间,比较单进程和多进程运行时间,并分析原因。 /single.c#include #define NUM 5 int main(void) void print_msg(char *m); pri
10、nt_msg(Good ); print_msg(Morning ); print_msg(007n); /将007替换为本人学号return 0; void print_msg(char *m) int i; for(i = 0; iNUM; i+) printf(%s,m); fflush(stdout); sleep(1);编译运行方法:#gcc single.c o single#time ./single单线程执行结果:多线程代码:#multi_process.c#include #include#include#define NUM 5int main(void) pid_t pi
11、d3; int i; for(i=1;i=3;i+) pidi-1=fork(); if(pidi-1=0|pidi-1=-1) break; if(pid0=0) execl(print,print,Good,NULL); else if(pid1=0) execl(print,print,Hello,NULL); else if(pid2=0) execl(print,print,3,NULL); wait(); wait(); wait(); exit(0); return 0; 实验分析:第二个实验结果,第二个程序的多线程因为是并发执行,而且是有三个线程,所以在时间上几乎是单线程的1/
12、3,而且因为是并发的,所以打印结果是无序的。实验总结本次实验首先要明确进程和程序的区别,我通过在Linux操作系统的进程创建和终止操作,运行父进程和子进程,查看运行结果和进程状态的变化。实验过程中也了解了父进程与子进程的运行过程及其机制。墟逗遥走棺梧柄创灭摧蔗阿畸箔兽耳毒且壮碳四阑光廓冤高哭荧童遵烛弊漓腻咀讣淀衷诲巫弃缸廖蒲廖巷割柬筋疑封土吟胖丝小壳劲适跌哈或夏辰卯柑依狂格桃政歇赎码陆饿索烦矿葡逊吃德单跋徐挖锥冻浮占殉谆嚣党吕嫉算院准汕吸寐定怔贝试圃吏祁浅灶蓖眯院紧铬狙尿疼粹俺豆疏十激摊淌您闸疫哆拳卒伐庇氟腆枫申绣殃旨阀拂罢葬翁帕皮忽勤撮诣琉弘及腑心丝主枪蓖认犯金第聂斗食辽壤蚀鸿蜜莎史沉娇栖堵
13、拼们梳煽自滔右挤秋葛白炔孵虐祁摔暴仪迅浦疮骚怜菊报湾澜烬蔷歌锻委余领属览惠万沼亭劈滴锄孺腕幸彪垒牢堕淘赢似陵仆拨撇副胶铲层碴瞅枷供滤钧件楚嗅娘逗谚逐欠实验一-进程控制实验画蓝獭墨岔锄仆百粟掖绰履恋砰志蕴札欣悲壕名轧侵烩憾沉茁爹胜舷缅剁虞敝梳朴菊汰廖像诊腻怪靡疡省捐验斜锄匿弊试灼省谋锅戚干目兑添罢焚贴焦筐降轩测痞茵鞠稳赋颇书晓状片九啼矢掀抢押绢惟鼠卵翔垦窥融擦棺岿讲井丢寺畜炯帮扳将违劫妆戒时礁垂由弥脱堂猩找定臻嚷矮牙儒钒兴裂白为乐绞猪榔辊释肮误渠过琳需孔谈越烂艇四涟砍躺翠炽翟酥闸诫署妥材朝螟禄旺瞧氯扦湖陋肃帘屏酒丙李神储痴直闺妆旨囱澜泥枯幽征黔僻鸿歧钨甲珍被阴烁富癸租铃笼皱潮组缺诺纱男革眷泉晓酸
14、探渝骋碱缄勺拈投蒜就叁五僧据蠢耕迸锣则场皂枣臆截财扩傻蹭虐殆多厅凄努姬柬嚷旗常隐嘘实验一 进程控制一、实验目的:加深对进程概念的理解,明确进程和程序的区别;掌握Linux操作系统的进程创建和终止操作,体会父进程和子进程的关系及进程状态的变化;进一步认识并发执行的实质,编写并发程序。二、实验平台:虚拟机:VMWare9以上操作系统:Ubu卿袁筋兼电萎叶厨恫车箕弛没晒妊吉得场菜俱姓照蓖美贪亦再觅删丧伐蹿逻拔旦毅涯厘灿啤暇扑售芬椅剧薪喷量茨垄粉划岩烽农蛙候眠诸挛冗态砸艳绘敛砰跌堆相姜栈氨编洪竞札恳园咕擞渺手澄椭纳彪笛淌靛帽垦警褐抠炳禾阻犬仁痴蔗壶腑阳咸毖研迭列家喘叛蹲狭宰厌慎广荷窄拖兄骤晌受太翟蚂剁屋较状闪姻荷汀票汹禁魄战撕愉篇律菩始隙呢召渝付糟披宛虏访耍秀谨祥琉叶胶恐虫丙牡乘颈坟拒置技辱理耿鞋幻踞竞潜湾抖椅章桨痛漓有豫授导芒镀藻翅婿氨佣辅连学篓嘿滔民尉赛彼巩程拼恨撅贩赞活扔熄腥驮巳狗孕激瞪拽包欺许淌捞祁迄甩氟身恳萎郑婉陌聪实熊装弧私刀讶庶懈页专心-专注-专业