《2023年计算机操作系统银行家算法实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年计算机操作系统银行家算法实验报告.pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机操作系统实验报告一、实验名称:银行家算法二、实验目的:银行家算法是避免死锁的一种重要方法,通过编写一个简朴的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实行方法。三、问题分析与设计:1、算法思绪:先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可运用的。若请求合法,则进行预分派,对分派后的状态调用安全性算法进行检查。若安全,则分派;若不安全,则拒绝申请,恢复到本来的状态,拒绝申请。2、银行家算法环节:(1)假如R eques t i or=Need,则转向环节(2);否贝1J,认为犯错,由于它所需要的资源数已超过它所宣布的最大
2、值。(2)假如 Reque s tor=Av a i 1 ab 1 e,则转向环节(3);否贝!1,表达系统中尚无足够的资源,进程必须等待。(3)系统试探把规定的资源分派给进程Pi,并修改下面数据结构中的数值:A v a i 1 a b le=Av a i 1 a b 1 e-R e q ues t i;Allo c a tion=A 1 location+R eques t;Nee d=N e ed-R e quest;(4)系统执行安全性算法,检查本次资源分派后,系统是否处在安全状态。3、安全性算法环节:(1 )设立两个向量工作向量W orko它表达系统可提供进程继续运营所需要的各类资源数
3、目,执行安全算法开始时,W o rk=Alloca t ion;布尔向量Finish。它表达系统是否有足够的资源分派给进程,使之运营完毕,开始时先做Fin i shi=false,当有足够资源分派给进程时,令 F i nish i =t r ue0(2)从进程集合中找到一个能满足下述条件的进程:Finish i=false(2)Ne e dor=Wor k如找到,执行环节(3);否则,执行环节(4)。(3)当进程P获得资源后,可顺利执行,直至完毕,并释放出分派给它的资源,故应执行:W o r k=W o r k+A l l o c a t i o n;F i ni s h i =t r u e
4、;转向环节(2)。(4)假如所有进程的F i ni s h i =t r ue,则表达系统处在安全状态;否则,系统处在不安全状态。四.程序源代码:#i n c 1 ud e#d e f i ne W 5最大进程数W=5#d e f i n e R 3最大资源总数=3i nt A v a i l a b l e 3 ;/可运用资源向量i nt M a x 5 3 ;/最大需求矩阵i nt A l l o c a t i o n 5 3 ;/分派矩阵i nt N e e d 5 3 ;需求矩阵i nt R e q ue s t 3 ;/进程请求向量v o i d d i s p o s e()p
5、r i nt f (请输入可运用资源向量A v a i 1 a b l e (格式:a,b ,c)n );s c a n f (%d,%d,%d”,&A v a i la b 1 e 0 ,&A v a i la b l e 1 ,&.Av a i 1 a b 1 e 2 );p r i n t f (请输入最大需求数M a x (格式:a,b,c)n );f o r(i n t j =0;j 5 ;j+)(p ri n tf (进程%d:n”,j);s c a n f (%d,%d,%d”,&M a x j 0 ,&M a x j 1 ,&M a x j 2):)p ri n t f (请输
6、入分派数A llo c a ti o n(格式:a,b,c)n );f o r(j=0;j 5 ;j+)p ri n tf (进程dn ,j);s c a n f (%d,%d,%d”,&A 1 1 o c a t i o n j 0,&A 1 1o c a ti o n j l,&A llo c a ti o n j 2);输入 M a x 5 3 ,A v a i la b le5 3 ,A llo c a t i o n 5 3 f o r(j=0;j 5;j+)f o r(i n t i =0;i 3;i+)N e e d j i =M a x j i -A 1 1 o c a t i
7、 o n j i ;求出N e e d 5 3)ma i n()(p r i n t f (银行家算法 n );d i s p o s e();p ri n t f (安全性检查n);i n t W o rk 3 ;系统可提供进程继续运营所需的各类资源数c h a r F i n i s h 5 ;表达系统是否有足够的资源分派f o r(i n t i=0;i 5;i+)F i n i s h i=,f ;f o r(i n t k=0;k 3;k +)W o r k k =A v a i 1 a b l e k ;i n t q5 ;f o r(i n t x=0;x 5 0;x+)p ri
8、 n tf (请输入一个序列:n );s c a n f(,z%d,%d ,%d,%d,%d”,&q 0 ,&q 1 ,&q2 ,&qf o r(i=0;i 5 ;i +)i f (N eedqi 0 =W o r k 0 )&(N e edqi 1=Wo r k 1)&(N ee d qi 2 =W o r k 2 )/比较N eed i j 与 W o rk E j (。f o r(k=0;k 3;k+)s W o rk k =W o rk k +A llo c a ti o n q i k ;F i n i s h i =t;i f (F i n i s h 0=t )&(F i n i
9、 s h 1 =t )&(F i n is h 2 =t )&(F i n i s h 3 =t )&(F i n i s h 4 =t )/通过F i n i s h i 判断系统是否安全 b r e a k ;e 1 s e%ri n tf (此序列不是安全序列,请重新输入一个序列!n );i f (x=4 9)r et u rn 0;p ri n tf (这个系统安全!n );i n t a;p ri n tf (请输入 R equ e s t 进程:n );s c a n f (%d ,&a );p ri n tf (该进程 R equ es t(a,b,c)n );s c a n f
10、 (%d,%d,%d”,&R equ e s t 0 ,&R eq u e s t l,&R e q u e st 2 );/输入请求量 R equ es t 3 i f (R e q u es t0=N ee d a 0 )&(R equ e s t 1 =N e e da l)&(R e q u es t 2=N ee d a 2)判断 R e q u es t i =N e e da i i f (R e q u es t 0 =N e ed a 0 )&(R equ es t 0=:Ne eda 1 )&(R eq u e s t 0 =N e e d a 2 )判断 R eq u e
11、s t i A v a i l a b l e a i 6 o f o r(i n t k=0;k 3;k+)!o A v a i la b lek =A v a i la b 1 e k -R equ es tk ;。Al l o c a t i o n a k =A 1 1 o c a ti o n a k +R eq u es tk ;N eed a k =N e eda k -R equ es t k ;。/假如上述判断成功,则修改相应的A v a i la b le k ,A 1 1o c a t i o n a k ,N eed a k“p ri n tf (资源分派成功!n);遴荐0:7,5,3进程1:3,2,2进程2:9,0,2进程3:2,2,2进程4:4,3,2,患入分配数A llo cat ion 格式:a,b,c0,1,0进程12,0,0进程23,0,2进程32,1,1进程47,4,3安全性检查请输入一个序列:1 3 4,2,0这个系统安全?请输/Request 进程:该进程Requesta.b-c 工,0,2资源分配成功,
限制150内