河北大学工商学院操作系统课程设计I操作系统课程设计(设备管理)目录一引言.........................................11.1课程设计题目..................................11.2课程设计的目的.................................11.3小组人数......................................11.4编程语言......................................11.5课程设计内容..................................11.6界面设计如图..................................1二课程设计任务及要求............................22.1设计任务......................................22.2设计要求......................................2三算法及数据结构................................23.1算法的总体思想(流程)..........................23.2Equipment模块.................................33.2.1功能.......................................33.2.2数据结构....................................33.3cpu模块......................................43.3.1功能.......................................43.3.2数据结构....................................43.3.3算法.......................................4河北大学工商学院操作系统课程设计II3.4form1模块....................................43.4.1功能.......................................43.4.2算法.......................................5四程序设计与实现...............................54.1程序流程图....................................54.2基本思想.....................................64.3定义的公共变量或数据结构........................74.4实验部分代码..................................74.5运行截图....................................124.6使用说明....................................15五总结........................................15六参考文献....................................15河北大学工商学院操作系统课程设计1一引言1.1课程设计题目实现一个模拟操作系统。1.2课程设计的目的通过模拟操作系统原理的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。1.3小组人数建议3~4人一组共同完成模拟系统的实现。1.4编程语言建议使用VC、VB、C#、Java等Windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。1.5课程设计内容模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。1.6界面设计如图图1.1河北大学工商学院操作系统课程设计2二课程设计任务及要求2.1设计任务设计一个设备管理分配程序,按先来先服务的算法,对设备进行分配。2.2设计要求设备管理主要包括设备的分配和回收。(1)模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。(2)因为模拟系统比较小,因此只要设备表设计合理即可。(3)采用先来先服务分配策略,采用设备的安全分配方式。(4)屏幕显示每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。三算法及数据结构3.1算法的总体思想(流程)设备管理的功能是按照设备的类型和系统采用的分配策略,为请求I/O进程分配一条传输信息的完整通路。合理的控制I/O的控制过程,可最大限度的实现CPU与设备、设备与设备之间的并行工作。1.监视所有设备。为了能对设备实施有效的分配和控制,系统能获取设备的状态。设备状态保存在设备控制表(DeviceTable)中,并动态的记录状态的变化及有关信息。2.制定分配策略。按先来先服务的算法,进行设备分配。3.设备的分配。把设备分配给进程。4.设备回收。当进程运行完毕后,要释放设备,则系统必须回收,一边其他进程使用。河北大学工商学院操作系统课程设计3图3.13.2Equipment模块3.2.1功能记录设备的状态及相关信息检查设备是否被调用对设备进行分配进程结束对设备进行回收3.2.2数据结构一个DeviceTable类、一个DeviceTable函数。DeviceTable是设备分配表,说明设备的分配状况,是否被占用。Device类说明了设备是如何使用的。每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。河北大学工商学院操作系统课程设计43.3cpu模块3.3.1功能进程对设备的调用,当进程使用设备时,检查设备是否空闲。如果空闲,则调用该设备;如果设备正被使用,则将该进程阻塞到该设备的阻塞队列中,等到设备空闲时,再被唤醒,调用设备。3.3.2数据结构一个设备的枚举类型DeviceType,一个cpu函数。Cpu函数中调用Equipment模块中的函数对设备进行检测。如果设备空闲,就调用该设备;如果设备真在被使用,则该进程被阻塞到该设备的阻塞队列中。3.3.3算法通过调用Equipment模块中的函数对设背进行检测:如果设备空闲,则使用该设备;如果设备正在工作,则进程被阻塞。3.4form1模块3.4.1功能界面管理河北大学工商学院操作系统课程设计5图3-2启动进程,如果要使用设备,按先来先服务的算法调用设备。此模块中有一个设备调用函数publicintAllocate(DeviceTypetype),根据设备的物理名调用设备,并将信息显示显示到界面中。3.4.2算法先来先服务(FCFS,FirstComeFirstService)分配算法:每一设备有一队列管理,当多个作业或任务对同一设备提出I/O请求时,该算法把请求的先后次序排成一个等待该设备的队列,设备分配程序把设备分配给队列中的第一各作业。四程序设计与实现4.1程序流程图河北大学工商学院操作系统课程设计6图4-14.2基本思想进程调用设备。先调用A类设备,A类设备一共有三个,如果有空闲的设备,则进程就可调用;否则将进程阻塞到设备A的阻塞队列中,等待设备,等到A类设备有空闲设备时,就唤醒该进程,在断点处继续进行程序。再调用B类设备,B类设备一共有两个,如果有空闲的设备,则进程就可调用;否则将进程阻塞到设备B的阻塞队列中,等YNNNY执行的进程根据设备的物理名调用设备设备a是否空闲设备b是否空闲设备c是否空闲进程结束,回收设备Y将该进程放到设备a的阻塞队列中将该进程放到设备b的阻塞队列中将该进程放到设备c的阻塞队列中河北大学工商学院操作系统课程设计7待设备,等到B类设备有空闲设备时,就唤醒该进程,在断点处继续进行程序。最后调用C类设备,C类设备只有一个,C设备是临界资源,如果C设备空闲,则进程就可调用;否则将进程阻塞到设备C的阻塞队列中,等待设备,等到C设备空闲,就唤醒该进程,在断点处继续进行程序。4.3定义的公共变量或数据结构Anum,Bnum,Cnum分别表示设备A,B,C空闲数目publicenumDeviceType枚举型的数据类型列举出三种设备publicstructDeviceTable定义一个设备表的结构体publicclassDevice设备类publicboolJudgeDevice(DeviceTypetype)检查类型为type的设备是否可用publicintAllocate(DeviceTypetype)分配设备,返回第几个设备被占用publicvoidDeAllocate(DeviceTypetype,inta)回收设备4.4实验部分代码namespaceWindowsApplication2{publicpartialclassForm1:Form{publicstaticintAnum=3,Bnum=2,Cnum=1;publicenumDeviceType{A,B,C,}publicstructDeviceTable{publicDeviceTypedeviceType;publicinttotal;publicint[]useState;//0——空闲,1——占用publicDeviceTable(DeviceTypetype,inttotal)//定义一个构造函数{this.total=total;deviceType=type;useState=newint[total];for(inti=0;itotal;i++)//初始化每个设备{useState[i]=0;河北大学工商学院操作系统课程设计8}}}publicclassDevice{privateDeviceTable[]table=newDeviceTable[3];//三种设备privatestaticDevicedevice=newDevice();publicDevice(){InitDevice();//初始化设备}privatevoidInitDevice()//设备初始化,A设备3个,B设备2个,C设备1个{table[0]=newDeviceTable(DeviceType.A,3);table[1]=newDeviceTable(DeviceType.B,2);table[2]=newDeviceTable(DeviceType.C,1);}///////////////////检查类型为type的设备是否可用////////////////////////publicboolJudgeDevice(DeviceTypetype){boolstr=false;switch(type){caseDeviceType.A:{if(table[0].total0){str=true;}break;}caseDeviceType.B:{if(table[1].total0){str=true;}break;}caseDeviceType.C:{if(table[2].total0)河北大学工商学院操作系统课程设计9{str=true;}break;}}returnstr;}//////////////分配设备,返回第几个设备被占用//////////////////////////publicintAllocate(DeviceTypetype){intk=0;switch(type)//使用switch语句选择分配设备不同函数{caseDeviceType.A:{table[0].total--;for(inti=0;i3;i++){if(table[0].useState[i]==0){table[0].useState[i]=1;k=i;break;}}break;}c