计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
软件设计师(中级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
问答题【说明】函数int Toplogical(LinkedWDigraph G)的功能是对图G中的顶点进行拓扑排序,并返回关键路径的长度。其中图G表示一个具有n个顶点的AOE一网,图中顶点从1~n依次编号,图G的存储结构采用邻接表表示,其数据类型定义如下: typedef struct Gnode /*邻接表的表结点类型*/ int adivex; /*邻接顶点编号*/ int weight; /*弧上的权值*/ bstmct Gonde*nextare; /*指示下一个弧的结点*/ Gnode; typedef struct Adjlist /*邻接表的头结点类型*/ char vdata; /*顶点的数据信息*/ struct Gnode*Firstadj; /*指向邻接表的第1个表结点*/ Adjlist; typedef struct LinkedWDigraph /*图的类型*/ int n, e; /*图中顶点个数和边数*/ struct Adjlist head; /*指向图中第1个顶点的邻接表的头结点*/ LinkedWDigraph; 【函数】 int Toplogical(LinkedWDigraph G) Gnode *p; int j,w,top=0; int *Stack,*ve,*indegree; ve=(int *)mallloc(G.n+1)* sizeof(int); indegree=(int *)malloc((G.n+1)*sizeof(int));/*存储网中个顶点的入度*/ Stack=(int *)malloc((G.n+1)*sizeof(int)); /*存储入度为0的顶点的编号*/ if(!ve‖!indegree‖!Stack) exit(0); for(j=1;j<=G.n;j++) ve[j]=0; indegree[j]=0; /*for*/ for(j=1;j<=G.n;j++) /*求网中各顶点的入度*/ p=G.head[j].Firstadj; while(p) (1) ; p=p->nextarc; /*while*/ /*for*/ for(i=1;j<=G.n;j++) /求网中入度为0的顶点并保存其编号*/ if(!indegree[j]) Stack[++top]=j; while(top>0) w= (2) ; printf("%c", G.head[w].vdata); p=G.head[w].Firstadj; while(p) (3) ; if(!indegree[p->adjvex]) Stack[++top]=p->adjvex; if( (4) ) ve[p->adjvex]=ve[w]+p->weight; p=p->nextarc; /*while*/ return (5) ; /*Toplogical*/
进入题库练习
问答题[问题4](2分) 说明[问题3]中绘制1层数据流图时要注意的问题。
进入题库练习
问答题【说明】 某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统功能如下。 (1)浏览客户信息:任何使用Internet的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。 (2)登录:电话公司授予每个客户一个帐号。拥有授权帐号的客户,可以使用系统提供的页面设置个人密码,并使用该帐号和密码向系统注册。 (3)修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。(4)删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。系统采用面向对象方法进行开发,在开发过程中认定出的类见表13-3。 表13-3开发过程中认定的类 编号 类名 描述 1 InternetClient 网络用户 2 CustomerList 客户信息表,记录公司所有客户的信息 3 Customer 客户信息,记录单个客户的信息 4 CompantCustomer 公司客户 5 InternalClient 公司的管理人员
进入题库练习
问答题 阅读下列说明,回答问题1至问题3,将解答填入对应栏内。 【说明】 快速排序是一种典型的分治算法。采用快速排序对数组A[p..r]排序的3个步骤如下。 1.分解:选择一个枢轴(pivot)元素划分数组。将数组A[p..r]划分为两个子数组 (可能为空)A[p..q-1]和A[q+1..r],使得A[q]大于等于A[p..q-1)中的每个元素,小于 A[q+1..r]中的每个元素。q的值在划分过程中计算。 2.递归求解:通过递归的调用快速排序,对子数组A[p..q-1]和A[q+1..r]分别排序。 3.合并:快速排序在原地排序,故不需合并操作。
进入题库练习
问答题[说明] 以下JAVA程序实现了在接口interface iShape2D的定义和应用,仔细阅读代码和相关注释,将程序补充完整。 [代码6-1] interface iShape2D //定义接口 (1) (2) (3) //实现CRectangle类 int width, height; (4) CRectangle (int w,int h) width=w; height=h; public void area ( ) //定义area( )的处理方式 System. out.println ("area="+width*height); (5) //实现CCircle类 double radius; (6) CCircle (double r) radius=r; public void area ( ) //定义area( )的处理方式 System.out.println ("area="+pi*radius*radius); [代码6-2] public class app10_4 public static void main(String args[]) CRectangle rect=new CRectangle (5,10); rect.area ( ); //调用CRectangle类里的area ( ) method CCircle cir=new CCircle (2.0); cir.area ( ); //调用CCircl类里的area ( ) method
进入题库练习
问答题[说明]某汽车维修站拟开发一套小型汽车维修管理系统,对车辆的维修情况进行管理。1.对于新客户及车辆,汽车维修管理系统首先登记客户信息,包括:客户编号、客户名称、客户性质(个人、单位)、折扣率、联系人、联系电话等信息;还要记录客户的车辆信息,包括:车牌号、车型、颜色、车辆类别等信息。一个客户至少有一台车。客户及车辆信息如表1所示。表12.记录维修车辆的故障信息。包括:维修类型(普通、加急)、作业分类(大、中、小修)、结算方式(自付、三包、索赔)等信息。维修厂的员工分为:维修员和业务员。车辆维修首先委托给业务员。业务员对车辆进行检查和故障分析后,与客户磋商,确定故障现象,生成维修委托书。如表2所示。3.维修车间根据维修委托书和车辆的故障现象,在已有的维修项目中选择并确定一个或多个具体维修项目,安排相关的维修工及工时,生成维修派工单。维修派工单如表3所示。4.客户车辆在车间修理完毕后,根据维修项目单价和维修派工单中的工时计算车辆此次维修的总费用,记录在委托书中。根据需求阶段收集的信息,设计的实体联系图(见图1)和关系模式(不完整)如下所示。图2-1中业务员和维修工是员工的子实体。表1表2[概念结构设计-图1][逻辑结构设计]客户((5),折扣率,联系人,联系电话)车辆(车牌号,客户编号,车型,颜色,车辆类别)委托书((6),维修类型,作业分类,结算方式,进厂时间,预计完工时间,登记日期,故障描述,总费用)维修项目(维修项目编号,维修项目,单价)派工单((7),工时)员工((8),工种,员工类型,级别)
进入题库练习
问答题【问题4】 为提交SQL语句的执行效率,可在相应的表上创建索引。根据问题3中的SQL语句,除主键和外键外,还需要在哪个表的哪些属性上创建索引,应该创建什么类型的索引,请说明原因。
进入题库练习
问答题【说明】某音像制品出租商店欲开发一个音像管理信息系统,管理音像制品的租借业务。需求如下:1.系统中的客户信息文件保存了该商店的所有客户的用户名、密码等信息。对于首次来租借的客户,系统会为其生成用户名和初始密码。2.系统中音像制品信息文件记录了商店中所有音像制品的详细信息及其库存数量。3.根据客户所租借的音像制品的品种,会按天收取相应的费用。音像制品的最长租借周期为1周,每位客户每次最多只能租借6件音像制品。4.客户租借某种音像制品的具体流程如下。(1)根据客户提供的用户名和密码,验证客户身份。(2)若该客户是合法客户,查询音像制品信息文件,查看商店中是否还有这种音像制品。(3)若还有该音像制品,且客户所要租借的音像制品数小于等于6个,就可以将该音像制品租借给客户。这时,系统给出相应的租借确认信息,生成一条新的租借记录并将其保存在租借记录文件中。(4)系统计算租借费用,将费用信息保存在租借记录文件中并告知客户。(5)客户付清租借费用之后,系统接收客户付款信息,将音像制品租借给该客户。5.当库存中某音像制品数量不能满足客户的租借请求数量时,系统可以接受客户网上预约租借某种音像制品。系统接收到预约请求后,检查库存信息,验证用户身份,创建相应的预约记录,生成预约流水号给该客户,并将信息保存在预约记录文件中。6.客户归还到期的音像制品,系统修改租借记录文件,并查询预约记录文件和客户信息文件,判定是否有客户预约了这些音像制品。若有,则生成预约提示信息,通知系统履行预约服务,系统查询客户信息文件和预约记录文件,通知相关客户前来租借音像制品。
进入题库练习
问答题[说明]已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万~10万元(不包括10万元)的采购单,董事长可以审批10万~50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。采用责任链设计模式(ChainofResponsibility)对上述过程进行设计后得到的类图如下图所示。[C++程序]#include<string>#include<iostream>usingnamespacestd;classPurchaseRequest{public:doubleAmount;//一个采购的金额intNumber;//采购单编号stringPurpose;//采购目的};classApprover//审批者类{public:Approver(){successor=NULL;}virtualvoidProcessRequest(PurchaseRequestaRequest){if(successor!=NULL){successor→______;}}voidSetSuccessor(Approver*aSuccessor){successor=aSuccessor;}private:______successor;};classCongress:publicApprover{public:voidProcessRequest(PurchaseRequestaRequest){if(aRequest.Amount>=500000){/*决定是否审批的代码省略*/}else______ProcessRequest(aRequest);}};classDirector:publicApprover{public:voidProcessRequest(PurchaseRequestaRequest){/*此处代码省略*/}};classPresident:publicApprover{public:voidProcessRequest(PurchaseRequestaRequest){/*此处代码省略*/}};classVicePresident:publicApprover{public:voidProcessRequest(PurchaseRequestaRequest){/*此处代码省略*/}};voidmain(){CongressMeeting;VicePresidentSam;DirectorLarry;PresidentTammy;//构造责任链Meeting.SetSuccessor(NULL);Sam.SetSuccessor(______);Tammy.SetSuccessor(______);Larry.SetSuccessor(______);PurchaseRequestaRequest;//构造一采购审批请求cin>>aRequest.Amount;//输入采购请求的金额______.ProcessRequest(aRequest);//开始审批return;
进入题库练习
问答题某汽车停车场欲建立一个信息系统,已经调查到的需求如下:(1)在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机、一台读卡器和一个车辆通过传感器,示意图如图1所示。图1停车示意图(2)当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。(3)在停车场内分布着若干个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。(4)当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。(5)系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示“车位已满”信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表所示的类/用例/状态列表、如图2所示的用例图、如图3所示的初始类图以及如图4所示的描述入口自动栏杆行为的UML状态图。图2用例图图3初始类图图4入口护栏的状态图类/用例/状态列表用例名说明类名说明状态名说明Carentry汽车进入停车场CentralComputer停车场信息系统Idle空闲状态,汽车可以进入停车场Carexit汽车离开停车场PaymentMachine付款机器Disable没有车位RepoitStatistics记录停车场的相关信息CarPark停车场,保存车位信息AwaitEntry等待汽车进入Barrier自动护栏AwaitTicketTake等待打印停车卡Carentrywhenfull没有车位时,汽车请求进入停车场EntryBarrier入口的护栏AwaitEnable等待停车场内有空闲车位ExitBarrier出口的护栏
进入题库练习
问答题阅读下列说明,根据要求回答问题1~问题3。[说明]某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。[需求分析结果]1.登记参赛球队的信息。记录球队的名称、代表地区、成立时间等信息。系统记录球队的每个队员的姓名、年龄、身高、体重等信息。每个球队有一个教练负责管理球队,一个教练仅负责一个球队。系统记录教练的姓名、年龄等信息。2.安排球队的训练信息。比赛组织者为球队提供了若干个场地,供球队进行适应性训练。系统记录现有的场地信息,包括:场地名称、场地规模、位置等信息。系统可为每个球队安排不同的训练场地,如表3-9所示。系统记录训练场地安排的信息。{{B}}表3-9训练安排表{{/B}}{{B}}球队名称{{/B}}{{B}}场地名称{{/B}}{{B}}训练时间{{/B}}解放军一号球场2008-06-0914:00-18:00解放军一号球场2008-06-1209:00-12:00解放军二号球场2008-06-1114:00-18:00山西一号球场2008-06-1009:00-12:003.安排比赛。该赛事聘请有专职裁判,每场比赛只安排一个裁判。系统记录裁判的姓名、年龄、级别等信息。系统按照一定的规则,首先分组,然后根据球队、场地和裁判情况,安排比赛(每场比赛的对阵双方分别称为甲队和乙队)。记录参赛球队、比赛时间、比分、场地名称等信息,如表3-10所示。{{B}}表3-10比赛安排表{{/B}}A组:{{B}}甲队…乙队{{/B}}{{B}}场地名称{{/B}}{{B}}比赛时间{{/B}}{{B}}裁判{{/B}}{{B}}比分{{/B}}解放军…北京一号球场2008-06-1715:00李大明天津…山西一号球场2008-06-1719:00胡学梅B组{{B}}甲队…乙队{{/B}}{{B}}场地名称{{/B}}{{B}}比赛时间{{/B}}{{B}}裁判{{/B}}{{B}}比分{{/B}}上海…安徽二号球场2008-06-1715:00丁鸿平山东…辽宁二号球场2008-06-1719:00郭爱琪4.所有球员、教练和裁判可能出现重名情况。[概念模型设计]根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下。1.实体联系图(图3-20)2.关系模式教练(教练编号,姓名,年龄)队员(队员编号,姓名,年龄,身高,体重,{{U}}(a){{/U}}球队(球队名称,代表地区,成立时间,{{U}}(b){{/U}}场地(场地名称,场地规模,位置)训练记录({{U}}(c){{/U}})裁判(裁判编号,姓名,年龄,级别)比赛记录({{U}}(d){{/U}})
进入题库练习
问答题阅读下列说明和C++代码,回答下列问题。[说明]在超市销售管理系统中通常需要根据顾客需求打印购物小票,在购物小票中体现所购买的物品名称、数量、单价及总价等信息,以及购物时间、收银员号码等基本信息。而且有的需要打印票据的头信息(如欢迎辞等),有的需要打印票据的页脚信息(如促销打折广告提示信息等),有的只需要打印票据的内容。并且这些信息的内容及打印位置也需要根据具体情况而发生变动,相当于是对购物小票的额外装饰了。以上这些功能采用装饰器(Decorator)设计模式来设计,得到的类图如图7-15所示。以下C++代码可为购物小票动态添加各种抬头和注释信息。[C++代码]#include<iostream.h>classcxiaopiaopublic:______=0;;classcjutixiaopiao:______public:voidDaYinXiaoPiao()cout<<"票据正文"<<endl;;classczhuangshixiaopiao:____________:cxiaopiao*xpobj;public:czhuangshixiaopiao(cxiaopiao*obj)xpobj=obj;______=0;;classheaderxiaopiao:publicczhuangshixiaopiaopublic:headerxiaopiao(cxiaopiao*obj):czhuangshixiaopiao(obj)voidDaYinXiaoPiao()cout<<"抬头"<<endl;xpobj->DaYinXiaoPiao();;classfooterxiaopiao:publicczhuangshixiaopiaopublic:footerxiaopiao(cxiaopiao*obj):czhuangshixiaopiao(obj)voidDaYinXiaoPiao()xpobj->DaYinxiaoPiao();cout<<"脚注"<<endl;;intmain()czhuangshixiaopiao*xiaopiao=newheaderxiaopiao(newfooterxiaopiao(newcjutixiaopiao));xiaopiao->DaYinXiaoPiao();cout<<endl;return0;装饰器(Decorator)模式是一种______型设计模式,其设计意图是:______。
进入题库练习
问答题[说明]某客户信息管理系统中保存着以下两类客户的信息。(1)个人客户。对于这类客户,系统保存了其客户标识(由系统生成)和基本信息(包括姓名、住宅电话和E-mail)。(2)集团客户。集团客户可以创建和管理自己的若干名联系人。对于这类客户,系统除了保存其客户标识(由系统生成)之外,也保存了其联系人的信息。联系人的信息包括姓名、住宅电话、E-mail、办公电话及职位。该系统除了可以保存客户信息之外,还具有以下功能。(1)向系统中添加客户(addCustomer)。(2)根据给定的客户标识,在系统中查找该客户(getCustommer)。(3)根据给定的客户标识,从系统中删除该客户(removeCustomer)。(4)创建新的联系人(addContact)。(5)在系统中查找指定的联系人(getContact)。(6)从系统中删除指定的联系人(removeContact)。该系统采用面向对象方法进行开发。在面向对象分析阶段,根据上述描述,得到如下表所示的类及类的说明。类及类的说明类名说明CustomerInformationSystem客户信息管理系统IndividualCustomer个人客户InstitutionalCustomer集团客户Contact联系人描述该客户信息管理系统的UML类图如下图所示。
进入题库练习
问答题[说明]以下VisualBasic代码实现了系统登录时对用户进行合法性检查。界面如图9-6所示。阅读下面代码,将(n)处代码补充完整。[代码7-1]BeginVB.Formform1BackColor=&H00808080&Caption="系统登录"//...窗体描述(略)BeginVB.Labe1Labe12Backstyle=0'TransparentCaption="密码:"//…窗体描述(略)EndBeginVB.Labe1Labe11Backstyle=0'TransparentCaption="操作员:"//...窗体描述(略)End//...窗体描述(略)End[代码7-2]DimTIMAsIntegerDimmydbAsDatabaseDimmyrsAsRecordsetDimsq1AsStringPrivateSubFormACdvate()Setmydb=Workspaces(0).OpenDatabase(App.Path&"/CIUID.mdb")'打开数据库sq1="select操作员fromqxsz"Setmyrs=mydb.OpenRecordset(sq1)If(1)Thenmyrs.MoveLastIf(2)Thenmyrs.MoveFirstFori=0TOmyrs.RecordCount-1(3)(4)NextiIf(5)Thenmaster.Listlndex=0myrs.Closemydb.Closemaster.SetFocusEndSub[代码7-3]PrivateSubCmdok_Click()'确认操作员和密码DimMESSAGEAsStringIfmaster.Text<>'''ThenSetmydb=Workspaces(0).OpenDatabase(App.Path&"/CIUID.mdb")Setmyrs=mydb.OpenRecordset("qxsz",dbOpenDynaset)myrs.Findfirst"操作员="+Chr(34)+master.Text+Chr(34)+""'查找操作员If(6)ThenMsgBox("无此操作员!")ElseIfpassword.Text=myrs.Fields("密码")Then'确认密码MsgBox"系统登录成功!"'系统登录成功ElseIfTIM=3ThenMESSAGE=MsgBox("密码输入错误,请向系统管理员查询!",0,"")IfMESSAGE=vbOKThenEndEndIfMsgBox("密码错误,请重新输入密码!")TIM=TIM+1'密码输入错误次数password.SetFocusEndIfEndIfEndIfEndSub
进入题库练习
问答题[说明]职工信息管理系统是用于对职工相关信息进行检索、统计、工资管理、内部调动管理等的系统。利用该系统,人事科可以对本单位职工信息进行管理,根据不同命令对信息进行增、删、改、内部调动,打印人事表格,进行统计、检索。人事科输入的系统命令需要合法性检查才能被接受、处理。系统命令包括档案维护、数据检索、统计报表、打印命令、代码维护。人事科的输入信息包括个人资料、检索选项、统计选项、代码资料、新增档案字段、档案修改资料等条目。完整的个人资料应包括职工的档案编号、姓名、工作单位、性别、出生日期、技术职称以及学历。通过系统授权,用户可以进行对职工信息数据进行查询检索,检索的条件可以是姓名、工作单位、,性别、技术职称等组合。通过系统授权,超级用户还可以对职工档案进行维护。当超级用户需要对档案进行维护时,输入档案维护命令,得到合法性确认后,可以对系统数据库档案信息进行维护,否则将拒绝执行。档案维护操作可以是增加档案、修改档案、删除档案、增加档案字段中的任何一种操作。档案维护成功后要及时更新职工信息数据文件,保存维护结果。职工管理信息系统的顶层图如图12-1所示;职工管理信息系统的第0层DFD图如图12-2所示,其中,加工3的细化图如图12-3所示,加工3.2的细化图如图12-4所示。[数据流图12-1][数据流图12-2][数据流图12-3][数据流图12-4]
进入题库练习
问答题[问题3]请根据说明写出“实验室课题信息”数据字典条目的定义。实验室课题信息=_____________________________。图8-4实验室信息管理系统顶层DFD图图8-5实验室信息管理系统0层DFD图
进入题库练习
问答题[说明]下面的流程图(如图3所示)用N-S盒图形式描述了数组A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下:[流程图][算法说明]将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数intp(intA[],intlow,inthieh)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数voidsort(intA[],intL,intH)的功能是实现数组A中元素的递增排序。[算法]voidsort(intA[],intL,intH){if(L<H){k=p(A,L,R);//p()返回基准数在数组A中的下标sort({{U}}(4){{/U}});//小于基准敷的元素排序sort({{U}}(5){{/U}});//大于基准数的元素排序}}
进入题库练习
问答题 阅读下列说明和图,回答问题1到问题3,将解答填入对应栏内。 [说明] 操作系统中,死锁(Deadlock)是指多个进程在运行的过程中因争夺资源而造成的一种僵局。当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 面对死锁问题有两个解决方案:预防死锁和避免死锁。 预防死锁是一种较简单和直观的事先预防方法。该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或多个,以此来预防死锁的发生。预防死锁由于较易实现,已被广泛应用,但由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量的降低。 避免死锁同样是属于事先预防的策略,但它无须事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。 银行家算法(Banker's algorithm)是Dijkstra于1965年提出的一个经典的避免死锁的算法。形象地描述银行发放贷款不能使有限可用资金匮乏而导致整个银行无法运转的思路,也就是说每次请求贷款,银行要考虑他能否凭着贷款完成项目,并还清贷款使银行运转正常。令Request(i)是进程P(i)请求向量,如果Request(i)[j]=k则进程P(i)希望请韵类资源k个。具体算法步骤如下: (1)如果Request(i)>Need(i)则出错(请求量超过申报的最大量),否则转到(2); (2)如果Request(i)>Available则P(i)等待,否则转(3); (3)系统对P(i)所请求的资源实施试探分配,并更改数据结构中的数值; (4)Available=Available-Request(i); A1location(i) =Allocation(i) +Request(i); Need(i)=Need(i)-Request(i); (5)执行安全性算法,如果是安全的,则承认试分配,否则废除试分配,让进程P(i)继续等待。 所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次运行完成,这种进程序列{P1,P2,…,Pn)就是安全序列。如果存在这样一个安全序列,则系统是安全的;如果系统不存在这样一个安全序列,则系统是不安全的。
进入题库练习
问答题{{B}}阅读下列说明,回答问题。{{/B}} 【说明】 现有事务T1,T2、L3它们对数值型数据A执行的操作分别如下: T1;将A加1。 T2:将A加倍。 T3:输出A的值,并将A置为1。
进入题库练习