1、计算机操作系统 II实验报告第 1 页 共 9 页实验 1 进程管理班级 通信 07A-2 学号 07101060227 姓名 王彬 实验目的1、加深对进程概念的理解,明确进程和程序的区别。2、进一步认识并发执行的实质。3、分析进程争用资源的现象,学习解决进程互斥的方法。实验要求按以下实验内容完成各题目,并把编译、运行过程中出现的问题以及解决方法填入实验报告中,按时上交。实验学时 2 学时。实验内容一、进程的创建编写一段程序,使用系统调用 fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符:父进程显示字符“a” ;子进程显示字符“b
2、”和字符“c” 。试观察记录屏幕显示结果,并分析原因。【程序】#includevoid main( )int p1,p2;while(p1=fork( )=-1); /*创建子程序 p1*/if (p1=0) /*子程序创建成功*/putchar(b);elsewhile(p2=fork( )=-1);/*创建另一个子程序*/if(p2=0) /*创建成功*/putchar(c);elseputchar(a); /*父进程执行*/计算机操作系统 II实验报告第 2 页 共 9 页【运行结果】bacbca分析:从进程并发执行来看,输出以上两种结果的情况都有可能原因:fork()创建进程所需要的时
3、间要多于输出一个字符的时间,在主进程创建进程 2 的同时,进程 1 就输出了 b,而进程 2 和主程序的输出次序是随机的。由于 fork()函数属于 linux 的函数,从 windows 下调用是不可能的,所以这里只存在理论值。计算机操作系统 II实验报告第 3 页 共 9 页二、实现银行家算法假定系统有四个进程 p1,p2,p3,p4,三种类型的资源 R1,R2,R3,数量分别为 9,3,6,在 T0 时刻的资源分配情况如下:进程 申请 已分 还需要 剩下 最大Max Allocation need available R1/R2/R3P1 3/2/2 1/0/0 2/2/2 1/1/2
4、9/3/6P2 6/1/3 5/1/1 1/0/2 P3 3/1/4 2/1/1 1/0/3 P4 4/2/2 0/0/2 4/2/0 并按照每一步计算并分析其检测过程,.可使用资源向量 available。设系统中有 M 种同类资源availabei表示可使用的第 i 类同类资源的个 数,其初始值分别表示了系统中 M 种同类资源的个数。 2分配矩阵 allocation 设系统中有 N 个进程,allocationji表示迸程 j 已分配到第 i 类资源的个数。3.最大需求矩阵 max_need max_needNM表示进程 j 对第 i 类资源的最大需求量。 4需求矩阵 need need
5、NM表示系统中备个进程尚需备类资源的数量,才能完成其任务。 5.完成标志 finish finishN分别作为每一个进程在安全检查期间是否能完成其任务的标志。 其中 needji=max_needji-allocationji #include #include const int m=3; const int n=4; int MaxAvailablem=9,3,6 ; int Maxnm=3,2,2,6,1,3,3,1,4,4,2,2 ; int Allocationnm=1,0,0,5,1,1,2,1,1,0,0,2 ; int Availablem=1,1,2; int Neednm;
6、 struct Request int p; int km; ; Request r; 计算机操作系统 II实验报告第 4 页 共 9 页/int Neednm= 2,2,2,1,0,2,1,0,3,4,2,0; bool safe() int Workm; for(int i=0;iWorkj) break; if(j=m) for(int ix=0;ixNeedr.pi) break; if(iAvailablei) break; if(imax_needji 显示进程 j 所需资源超过其最大值; return(False); l for(jj=0;jjworkii completed=0
7、;/*无足够资源, 不能完成其任务*/ break; if(completed)/*进程 jj 能顺利完成其任务*/ for(ii=o;iiM;ii+)/*释放其所有资源*/ workii+=allocationji; finishjj=1;/*设置“能运行完 “标志*/ break; if(jj=N)/*安全,实际分配资源*/ 实际分配资源; return(True); l if(!completed)/*尚有未能设置“能运行完“标志进程*/ availablei+;/*不安全,拒绝分配*/ allocationj i-; needji+; 阻塞申请者进程; 计算机操作系统 II实验报告第 8 页 共 9 页return(False); 计算机操作系统 II实验报告第 9 页 共 9 页三、对本次实验的总结通过本次实验,加深对进程概念的理解,基本明确进程和程序的区别,并在实验中进一步认识并发执行的实质。最后进行了分析进程争用资源的现象,学习解决进程互斥的方法,对本课程的学习十分有益!