资源描述:
《实验3操作系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、计算机科学系实验报告(首页)课程名称操作系统实验名称进程控制一、实验目的(1)理解进程的同步、互斥、撤消等控制方法(2)学习进程间通过软中断传递控制信息的方法(低级通信)二、实验设备与环境PC机,windowsXP操作系统,LinuxVirtualMachine运行环境。三、实验内容、程序清单及运行结果实验内容:任务:并发进程间通过软中断传递控制信号,实现进程同步。#include#include#include〈unistd.h〉intmark;voidwaiting(),stop();main(
2、){intpl,p2;while((pl=fork())==-l);if(pl〉0){/*主进程的处理while((p2=fork())==-l);if(p2>0){/*主进程的处理mark=1;signal(SIGINT,stop);/*预设对SIGINT信号的处理过程*/waitingO;/*等待接收ctrl+c信号*/kill(pl,16);/*向pi发出信号16*/kill(p2,17);/*向p2发出信号17*/wait(O);/*同步,等待一个子进程正常结束的反馈信号*/wait(O);/*同步,等待另一个子进程正常结束的反
3、馈信号*/print(“parentsiskilled”);/*可以增K:这个输出内容,观察它的内容会不会被打断*/exit(O);}else{/*p2进程的处理*/mark=1;signal(17,stop);/*预设对17信号的处理过程*/signal(2,l);/*忽略ctrl+c*/waiting();/*等待信号17*/lockf(stdout,1,0);/*用上锁的方法实现S斥*/printf(“P2iskilledbyparent”);/*可以增长这个输出内容,观察它的内容会不会被打断*/lockf(stdout,
4、0,0);exit(0);/*P2正常结束*/else{/*pl进程的处理mark=1;signal(16,stop);signal(2,l);waitingO;/*等待信号16*/lockf(stdout,1,0);/*用上锁的方法实现互斥*/printf(“Pliskilledbyparent");/*可以增长这个输出内容,观察它的内容会不会被打断*/lockf(stdout,0,0);exit(O);/*P1正常结束*/voidwaitingO{while(mark!=O);voidstop(){mark=0;运行结果记录或截
5、图:EileEdityiewSearchDocumentsHelpOpenvSave合DieEditViewSearchTerminalHelp#include#include*includeintmark;voidwaiting!)vstop();voidoainO{intpl,p2;while((pl«fork()J«»-l):if(pl>0){Mtiile((p2»fork(
6、)«»l);1((p2>e){nark=l;signal(sigikt,stop);waiting
7、O;klU(plv16);kiU(p237);wait(e»;printfCparentsiskilled-);exit(B);}else{nark«l;signal(17#stop);signal(2,l);waitingO;lockf(stdout,lre);printfCP21$killedbyparent"
8、;lockf($tdout,Ore);exitW;}zshIzsh)[zsh^gdhz*1$./ex2ACP2iskilledbyparentPliskilledby
9、>arentparentsisKilled(2S
10、h®gdhz-J$./ex2ACP2iskilledbyparentPliskilledby(>arentparentsiskilled(zsh®gdhz-J$H./ex2ACP2iskilledbyparentPliskilledbyparentparentsiskilled[zsh^gdhz*JS!!./ex2ACP1iskilledbyparentP2iskilledbyparentparentsiskilled(zsh@gdhz*JS!!./ex2ACP2iskilledbyparentPliskilledbyparentpar
11、entsiskilledlzsh®gdhz-Js
12、CvWidth:8Ln26.Col18ex2.c(ex2.cX四、实验结论、思考题回答思考题:1在本程序中,进程的同步和互斥是如何实现的?上锁的方法实现互斥