收藏 分享(赏)

经典民事案例228例(最高人民法院公报摘录).doc

上传人:黄嘉文 文档编号:2365155 上传时间:2020-07-09 格式:DOC 页数:1063 大小:2.74MB
下载 相关 举报
经典民事案例228例(最高人民法院公报摘录).doc_第1页
第1页 / 共1063页
经典民事案例228例(最高人民法院公报摘录).doc_第2页
第2页 / 共1063页
经典民事案例228例(最高人民法院公报摘录).doc_第3页
第3页 / 共1063页
亲,该文档总共1063页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、time_reach; road_car(roads,cars):x; task_car(points,cars):y; task_aim(point_aim,cars):y1;ENDSETSDATA:d=0 40 60 75 90 200 100 160 80 40 0 65 40 100 50 75 110 100 60 65 0 75 100 100 75 75 75 75 40 75 0 100 50 90 90 150 90 100 100 100 0 100 75 75 100 200 50 100 50 100 0 70 90 75 100 75 75 90 75 70 0 70

2、 100 160 110 75 90 75 90 70 0 100 80 100 75 150 100 75 100 100 0;m=3;timea=1 4 1 4 3 2 5 1.5;timeb=4 6 2 7 5.5 2.5 8 4;q=2 1.5 4.5 3 1.5 4 2.5 3;s=1 2 1 3 2 2.5 3 0.8;capacity=8;time_between=0 0.8 1.2 1.5 1.8 4 2 3.2 1.6 0.8 0 1.3 0.8 2 1 1.5 2.2 2 1.2 1.3 0 1.5 2 2 1.5 1.5 1.5 1.5 0.8 1.5 0 2 1 1.8

3、 1.8 3 1.8 2 2 2 0 2 1.5 1.5 2 4 1 2 1 2 0 1.4 1.8 1.5 2 1.5 1.5 1.8 1.5 1.4 0 1.4 2 3.2 2.2 1.5 1.8 1.5 1.8 1.4 0 2 1.6 2 1.5 3 2 1.5 2 2 0;ENDDATAmin=sum(roads(i,j):d(i,j)*sum(cars(k):x(i,j,k);for(road_car:bin(x);for(task_car:bin(y);for(task_aim:bin(y1);sum(point_aim(i):q(i)*sum(cars(k)|k#eq#1:y1(

4、i,k)=capacity;sum(point_aim(i):q(i)*sum(cars(k)|k#eq#2:y1(i,k)=capacity;sum(point_aim(i):q(i)*sum(cars(k)|k#eq#3:y1(i,k)sum(point_aim(i):timea(i);for(reach(j):time_reach(j)sum(point_aim(j):timeb(j);END13知,下纵梁受门架传递的向下的力,同时受到行走和基础千斤的支撑。门架传递的竖向压力为F=4724/8=591kN。基础斤采用的是1088的无缝钢管(45钢),钢管截面积为2.513-3210m,能

5、够提供的支撑力为F=2.513250=628kN。 4排门架有4排基础千斤,且中间2排门架通过下纵梁将压力直接传到千斤上,下纵梁两端还有行走,因此对下纵梁在竖向并无弯矩作用,不再对弯曲应力和挠度进行计算。因此下纵梁主要是受到门架作用下的正压力,根据圣维南原理,集中力作用下的力的影响只在一定范围存在。 为安全起见,假设力只作用在于门架接触面的范围内,即两块0.476m长的筋板两根0.25m长的腹板承受压力。 腹板的受力面积为A=20.0120.25+20.4760.01=1.552-2210m 门架立柱传递的力为 F=4724/8=591kN -2s=F/A=591(1.55210)=44.2M

6、pas=108MPa 所以下纵梁强度满足要求。 五、丝杆千斤的检算 丝杆千斤容易发生的破坏为压杆失稳,即无缝钢管受力弯曲导致丝杆千斤的破坏。本节主要分析无缝钢管压杆的稳定性,来验证丝杆千斤的受力是否满足要求。台车千斤主要有两种:基础千斤和侧向千斤。基础千斤较短,工作长度仅为450,不易发生压杆失稳,因此主要分析侧向千斤的压杆稳定性。 侧向千斤的稳定性 在门架检算时,已得到侧向千斤所受轴力为153KN。采用的是896的无缝钢管,单独受力的侧向千斤最长工作长度为1.72m。 根据路桥施工计算手册第12章1.2节表12-2 轴心受压稳定性计算公式为 N/A m1N/A=153/1.734=88.2M

7、Pa m由长细比=l/r 00.544220.5r=(I/A)=0.0491(.089-.077)/(0.0445-0.0385=0.029m =l/r=1.72/0.029=59.3,查表得=0.8 01=0.8125=100 MPa,可得N/A 1m1因此侧向千斤压杆稳定性满足要求。 六、总结 关于混凝土载荷的计算方法有多种,本文采用的是载荷偏大 的计算方法。力学分析过程中所采用的受力模型均采用结果偏于安全的简化方法计算。本文分析了台车的主要受力部件和容易破坏的部位,经过以上分析,各个部件均能够满足受力要求,因此本台车能够满足正常施工的受力要求。 银行家死锁避免算法模拟 一 课程设计目的

8、通过本次实验掌握银行家死锁避免算法的基本思想。当进程提出资源申请时,能够用该算法判断是否拒绝进程请求。 二 课程设计摘要 银行家算法: 我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现

9、存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。 四课程设计原理分析 在多道程序系统中,虽可借助于多个进程的并发执行,来改善系统的资源利用率,提高系统的吞吐量,但可能发生一种危险死锁。所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵局状态时,若无外力作用,它们都将无法再向前推进。为保证系统中诸进程的正常运行,应事先采取必要的措施,来预防死锁。最有代表性的避免死锁的方法,是Dijkstra的银行家算法。 死锁: 死锁的产生,必须同时满足四个条件,第一个为互斥条件,即一个资源每次只能由一个进程占用;第二个为请求和保持条件,指

10、进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占有,此时请求进 1 程阻塞,但又对自己已获得的其他资源保持不放;第三个为非剥夺条件,即在出现死锁的系统中一定有不可剥夺使用的资源;第四个为循环等待条件,系统中存在若干个循环等待的进程,即其中每一个进程分别等待它前一个进程所持有的资源。防止死锁的机构只能确保上述四个条件之一不出现,则系统就不会发生死锁。 银行家算法原理: 银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。通过这个算法可以用来解决生活中的实际问题,如银行贷款等

11、。 银行家算法,顾名思义是来源于银行的借贷业务,一定数量的本金要应多个客户的借贷周转,为了防止银行家资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待资源,则进程都无法继续执行下去的死锁现象。把一个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。“资源需求总量”表示进程在整个执行过程中总

12、共要申请的资源量。显然,每个进程的资源需求总量不能超过系统拥有的资源总数, 银行算法进行资源分配可以避免死锁. 算法思想: 将一定数量的资金供多个用户周转使用,当用户对资金的最大申请量不超过现存资金时可接纳一个新客户,客户可以分期借款,但借款总数不能超过最大的申请量。银行家对客户的借款可以推迟支付,但是能够使客户在有限的时间内得到借款,客户得到所有的借款后能在有限的时间内归还。 用银行家算法分配资源时,测试进程对资源的最大需求量,若现存资源能满足最大需求就满足当前进程的申请,否则推迟分配,这样能够保证至少有一个进程可以得到所需的全部资源而执行到结束,然后归还资源,若OS能保证所有进程在有限的时

13、间内得到所需资源则称系统处于安全状态。 2 五.算法实现 1.程序流程图: 2.算法描述: 银行家算法的设计思想是:当用户申请一组资源时,系统必须做出判断;如果把这些资源分出去,系统是否还处于安全装他。若是,就可以分出这些资源;否则,该申请暂不能满足。 3 3.数据结构描述:(n表示系统中进程的数目,m表示资源的分类数。) 3.1. Available是一个长度为m的向量,它表示每类资源可用的数量。Available j=k,表示rj类资源可用的数量为k。 3.2.Max是一个nm矩阵,它表示每个进程对资源的最大需求。Max i,j=k,表示进程pi至多可以申请k个rj类资源单位。 3.3.

14、Allocation是一个nm矩阵,它表示当前分给每个进程的资源数目。Allocation i,j=k,表示进程pi当前分到k个rj类资源。 3.4. Need是一个nm矩阵,它表示每个进程还缺少多少资源。Needi,j=k,表示进程pi尚需k个rj类资源才能完成其任务。显然Needi,j= Max i,j- Allocation i,j。 这些数据结构的大小和数值随时间推移而改变。 4.系统所执行的安全性算法描述如下: 4.1.设置2个向量:工作向量Work:它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work = Available。 Finis

15、hi :它表示系统是否有足够的资源分配给进程,使之完成运行。开始时先做Finishi=true。 4 4.2.从进程集合中找到一个满足下述条件的进程:Finishi=flase;Needi,jWorkj;若找到,则执行步骤3,否则,执行步骤4。 4.3.当进程pi获得资源后,可顺利执行,直至完成,并释放分配给它的资源。 4.4.如果所有进程的Finishi=true都满足。则表示系统处于安全状态;否则,系统处于不安全状态。 六.程序源代码 #include #include #include using namespace std; #define False 0 #define True 1

16、 int Max100100=0;/各进程所需各类资源的最大需求 int Avaliable100=0;/系统可用资源 char name100=0;/资源的名称 int Allocation100100=0;/系统已分配资源 int Need100100=0;/还需要资源 int Request100=0;/请求资源向量 int temp100=0;/存放安全序列 int Work100=0;/存放系统可提供资源 int M=100;/作业的最大数为100 int N=100;/资源的最大数为100 void showdata()/显示资源矩阵 int i,j; cout系统目前可用的资源A

17、valiable:endl; for(i=0;iN;i+) coutnamei ; coutendl; 5 for (j=0;jN;j+) coutAvaliablej ;/输出分配资源 coutendl; cout Max Allocation Needendl; cout进程名 ; for(j=0;j3;j+) for(i=0;iN;i+) coutnamei ; cout ; coutendl; for(i=0;iM;i+) cout i ; for(j=0;jN;j+) coutMaxij ; cout ; for(j=0;jN;j+) coutAllocationij ; cout

18、; for(j=0;jN;j+) coutNeedij ; coutendl; int changdata(int i)/进行资源分配 int j; for (j=0;jM;j+) Avaliablej=Avaliablej-Requestj; Allocationij=Allocationij+Requestj; Needij=Needij-Requestj; return 1; int safe()/安全性算法 int i,k=0,m,apply,Finish100=0; int j; int flag=0; Work0=Avaliable0; Work1=Avaliable1; Work

19、2=Avaliable2; for(i=0;iM;i+) 6 apply=0; for(j=0;jN;j+) if (Finishi=False&Needij=Workj) apply+; if(apply=N) for(m=0;mN;m+) Workm=Workm+Allocationim;/变分配数 Finishi=True; tempk=i; i=-1; k+; flag+; for(i=0;iM;i+) if(Finishi=False) cout系统不安全endl;/不成功系统不安全 return -1; cout系统是安全的!endl;/如果安全,输出成功 cout分配的序列:;

20、for(i=0;iM;i+)/输出运行进程数组 couttempi; if(iM-1) cout; coutendl; return 0; void share()/利用银行家算法对申请资源对进行判定 char ch; int i=0,j=0; ch=y; cout请输入要求分配的资源进程号(0-M-1i;/输入须申请的资源号 cout请输入进程 i 申请的资源:endl; for(j=0;jN;j+) coutnamejRequestj;/输入需要申请的资源 7 for (j=0;jNeedij)/判断申请是否大于需求,若大于则出错 cout进程 i申请的资源大于它需要的资源; cout 分

21、配不合理,不予分配!Avaliablej)/判断申请是否大于当前资源,若大于则 /出错 cout进程i申请的资源大于系统现在可利用的资源; cout 分配出错,不予分配!endl; ch=n; break; if(ch=y) changdata(i);/根据进程需求量变换资源 showdata();/根据进程需求量显示变换后的资源 safe();/根据进程需求量进行银行家算法判断 void addresources()/添加资源 int n,flag; coutn; flag=N; N=N+n; for(int i=0;in;i+) coutnameflag; coutAvaliablefla

22、g+; showdata(); safe(); void changeresources()/修改资源函数 cout系统目前可用的资源Avaliable:endl; for(int i=0;iN;i+) coutnamei:Avaliableiendl; cout输入系统可用资源Avaliable:Avaliable0Avaliable1Avaliable2; cout经修改后的系统可用资源为endl; for (int k=0;kN;k+) coutnamek:Avaliablekendl; showdata(); safe(); void delresources()/删除资源 char

23、ming; int i,flag=1; coutming; for(i=0;iN;i+) if(ming=namei) flag=0; break; if(i=N) cout该资源名称不存在,请重新输入:; while(flag); for(int j=i;jN-1;j+) namej=namej+1; Avaliablej=Avaliablej+1; N=N-1; showdata(); safe(); void addprocess()/添加作业 int flag=M; M=M+1; cout请输入该作业的最大需求量Maxendl; for(int i=0;iN;i+) coutnamei

24、Maxflagi; Needflagi=Maxflagi-Allocationflagi; showdata(); safe(); 9 int main()/主函数 int i,j,number,choice,m,n,flag; char ming; cout*资源管理系统的设计与实现*endl; coutn; N=n; for(i=0;in;i+) cout资源i+1ming; namei=ming; coutnumber; Avaliablei=number; coutendl; coutm; M=m; cout请输入各进程的最大需求量(m*n矩阵)Max:endl; for(i=0;im

25、;i+) for(j=0;jMaxij; do flag=0; cout请输入各进程已经申请的资源量(m*n矩阵)Allocation:endl; for(i=0;im;i+) for(j=0;jAllocationij; if(AllocationijMaxij) flag=1; Needij=Maxij-Allocationij; if(flag) cout申请的资源大于最大需求量,请重新输入!n; while(flag); showdata();/显示各种资源 10 safe();/用银行家算法判定系统是否安全 while(choice) cout*银行家算法演示*endl; cout

26、1:增加资源 endl; cout 2:删除资源 endl; cout 3:修改资源 endl; cout 4:分配资源 endl; cout 5:增加作业 endl; cout 0:离开 endl; cout*endl; coutchoice; switch(choice) case 1: addresources();break; case 2: delresources();break; case 3: changeresources();break; case 4: share();break; case 5: addprocess();break; case 0: choice=0;

27、break; default: cout请正确选择功能号(0-5)!endl;break; return 1; 调试及运行结果: 检测结果如下: 1.假设系统只有一种资源a,剩余数量为2,分配情况如下: 进程 需求总量 已占资源 还需数量 0 8 4 4 1 4 2 2 2 9 2 7 11 2.假设系统只有一种资源a,剩余数量为2,分配情况如下: 进程 需求总量 已占资源 还需数量 0 8 3 5 1 4 2 2 2 9 4 5 12 注:“系统不安全”表示此种情况是银行家算法也解不了的死锁。 3.假设系统有2种资源a,b,a的剩余数量为4,b的剩余数量为3,分配情况如下: 需求总量 已占资源 还需数量 进程 a b a b a b 13 0 8 7 2 2 6 5 1 9 9 2 1 7 8 2 5 6 2 4 3 2 七.实验总结 通过本次试验,加深了自己对于死锁问题和银行家算法的理解。 对于银行家算法的思想有了更加深刻的认识,并且意识到银行家算法并不是能避免所有的死锁,可以称这种情况为潜在的死锁。 14

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他文案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报