北邮-操作系统-实验2-代码--进程管理-实验报告(共6页).docx
《北邮-操作系统-实验2-代码--进程管理-实验报告(共6页).docx》由会员分享,可在线阅读,更多相关《北邮-操作系统-实验2-代码--进程管理-实验报告(共6页).docx(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上实验2 进程管理(1) 进程的创建:编写一段程序,使用系统调用fork() 创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。实验代码:#include #include main()pid_t pid1,pid2;pid1=fork();if(pid1=0)putchar(b);else if(pid10)return -1;elsepid2=fork();if(pid2=0)putchar(c);else if(pi
2、d20)return -1;else putchar(a);运行结果bca(会出现acb等任意的排列),如图分析原因进程执行并发,输出排列是随机的,fork()创建进程所需的时间一般多于输出一个字符的时间,所以输出a较晚,但各个进程的时间片的获得却不是一定是顺序的。(2)进程的控制修改已经编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。实验代码#include #include main()pid_t pid1,pid2;pid1=fork();if(pid1=0)printf(this is process b.n);else if(p
3、id10)return -1;elsepid2=fork();if(pid2=0)printf(this is process c.n);else if(pid20)return -1;else printf(this is father process.n);运行结果this is father process.this is process c.this is process b.分析原因由于函数printf()输出的字符串之间不会被中断,因此,每个字符串内部的字符顺序输出时不变。但是,由于进程并发执行时的调度顺序会不同,输出字符串的顺序和先后随着执行的不同而发生变化。后建的进程c可以在进
4、程b之前完成。父进程需要创建进程,执行输出较晚,这与打印单字符的结果相同。(3)进程通信a) 编写一段程序,使其实现进程的软中断通信。要求:使用系统调用fork() 创建两个子进程,再用系统调用signal() 让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill() 向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child Process 1 is killed by Parent!Child Process 2 is killed by Parent!父进程等待两个子进程终止后,输出如下的信息后终止:Parent Process i
5、s killed!实验代码#include#include#includevoid waiting();void stop();void alarming();int wait_mark;main() int pid1,pid2;pid1=fork(); if(pid10) pid2=fork(); if(pid20) wait_mark=1; signal(SIGINT,stop);/*接收到c信号,转stop*/ signal(SIGALRM,alarming);/*接受SIGALRMwaiting();*/ while(wait_mark!=0); kill(pid1,16);/*向pi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮 操作系统 实验 代码 进程 管理 报告
限制150内