《2023年-操作系统课程设计设备管理.docx》由会员分享,可在线阅读,更多相关《2023年-操作系统课程设计设备管理.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、操作系统课程设计(设备管理)目录一引言11.1 课程设计题目11.2 课程设计的目的11. 3小组人数11.4 编程语言11.5 课程设计内容11.6 界面设计如图1二课程设计任务及要求22.1设计任务22. 2设计要求2三算法及数据结构23.1算法的总体思想(流程)23. 2 Equipment 模块33. 2. 1 功能33. 2. 2数据结构33. 3 cpu 模块43. 3. 1 功能43. 3. 2数据结构43. 3. 3 算法4public class Device private DeviceTable table 二 new DeviceTable3 ;/三种设备private
2、 static Device device = new Device();public Device() InitDeviceO ;初始化设备private void InitDevice ()3个,B设备2个,C设备1个 table0二 tablel= table2二new DeviceTable(DeviceType. A,new DeviceTable (DeviceType. B,new DeviceTable(DeviceType. C,设备初始化,A设备3);2);1);/检查类型为type的设备是否可用 /public bool JudgeDevice(DeviceType ty
3、pe) bool str = false;switch (type) case DeviceType. A: if (table0. total 0) str = true;) break;)case DeviceType. B: if (tablel. total 0) str = true;) break;)case DeviceType. C: if (table2. total 0) str = true;break; return str;/分配设备,返回第几个设备被占用 /public int Allocate (DeviceType type) int k = 0;switch
4、(type)使用switch语句选择分配设备不同函数 case DeviceType. A: table0. total-;for (int i = 0; i 3; i+) if (table0. useStatei二二 0) table0. useStatei = 1;k = i;break; break;)case DeviceType. B: tablel. total-;for (int i = 0; i 2; i+)(if (table0. useStatei = 0) table0. useStatei = 1;k = i;break;)break;case DeviceType.
5、 C: table2. total-;break;return k;/ 回收设备 /public void DeAllocate(DeviceType type, int a) switch (type) case DeviceType. A: table0. total+;table0. useStatea = 0;break;)case DeviceType. B: table1. total+;table1 useStatea = 0;break;case DeviceType.C: table2. total+;table2 useStatea = 0;break;)public Fo
6、rml() InitializeComponent();/ 分配设备时的颜色变化 /private void button7_Click(object sender, EventArgs e)Anum-;string resultl 二;Device dl = new Device ();int ml = dl. Allocate (DeviceType. A);resultl = Convert. ToString(ml);switch (Anum) case 2:this.buttonl. BackColor = Color. Red;break;case 1:this. button2.
7、 BackColor = Color.Red;break;case 0:this. button3. BackColor = Color.Red;break;default:MessageBox. Show(无设备可分配);break;private void button8_Click(object sender, EventArgs e) Bnum-;string result2 = ;Device d2 = new Device ();int m2 = d2. Allocate (DeviceType. B);switch (Bnum) case 1:this. button4. Bac
8、kColor = Color. Red;break;case 0:this. button5. BackColor = Color. Red;break;default: MessageBox. Show(无设备可分配); break;result2 = Convert. ToString(m2);)private void button9_Click(object sender, EventArgs e)Cnum-;string results 二;Device dl = new Device ();int m3 = dl. Allocate (DeviceType. C);if (Cnum
9、 = 0) this. button6. BackColor = Color.Red; elseMessageBox. Show (无设备可分配);results = Convert. ToString(m3);)4. 5运行截图屏幕显不主存使用情况示意图,哪些主存块已分配,哪些主存块未分配,以不同的颜 色表示,灰色表示设备空闲,红色表示设备已分配初始化为所有设备都是空闲状态,如下图所示口z? Forml进程名:所需设备名:所需设备数:| D |日回收设备名回收设备数分酉e设备人 分配设笛b分酉e设备c回收设备A回收设备B回收设备C图4-2分配设备A正常情况下,如图所示:口y Forml进程名
10、:所需设备名:A所需设备数:2设备名: 状态:Al:I-A2:A3:B2:Cl回收设备名回收设备数。回 应:分酉I设备A分酉1设备B分酉1设备C回收设爸A回收设备B回收设备C分配设备A非正常情况下,例如需要设备数超过实际有的设备数时,如图所示:进程名:所需设备名:所需设备额:设备名:A1:A2:A3:B1:B2;C1:状态:图4-43个设备A都被分配出去,回收设备A时正常情况如下图所示:吧 Forml0r = | 回 | 国回收设备名A回收设备数1分配设备A分配设备B分酉己设备C回收设备A回收设备B回收设备C4.6使用说明设备管理主要包括设备的分配和回收。1 .设备的模拟模拟系统中有A、B、C
11、三种独占型设备,A设备3个,B设备2个,C设备1 个。2 .数据结构因为模拟系统比较小,因此只要设备表设计合理既可。3 .设备分配采用先来先服务策略。4 .设备回收回收设备后,要注意唤醒等待设备的进程。5 .屏幕显示屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在 等待使用该设备。其中灰色表示设备空闲,红色表示设备已被分配。五总结设备管理主要监视所有设备的状态,制定分配策略,完成设备的分配和回收,合 理的控制I/O的控制过程,最大限度的实现CPU与设备、设备与设备之间的把并行工 作。通过对这次操作系统课程设计的亲自参与和操作,使我深刻体会到了:只要你想做只 要你想学没有弄
12、不懂得事情,工程里面也不能不在乎细节,等等。感觉很受益匪浅。懂得 了操作系统包括的四部分内容:文件管理和用户接口、存储管理、设备管理、进程管理之 间的内在联系。加深了我对这门课程的理解。锻炼了自己在考虑全局也不是细节的能力。 通过这次实验,再一次熟悉并深入掌握了程序设计语言和界面设计。同时,我也深深体会 到了团队的重要性,如果没有同组人的互相鼓励和督促我跟本不能很快的完成任务。一滴 水的力量是有限的,但汇聚成溪流将是美丽的。虽然我们每个人的力量都是有限的,但是 激烈的讨论、相互的鼓励使我们在实践中成长。感谢和我一起面对的同伴们,因为有你们 我才变得勤奋。更感谢给予我们谆谆教导的老师,在我们犹豫
13、困惑时给予我们指导,谢谢 您!六参考文献刘振鹏、王煜、张明 操作系统(第三版)北京:中国铁道出版社3. 4 forml 模块44. 4. 1 功能43.4.2 算法5四程序设计与实现54. 1程序流程图54. 2基本思想64. 3定义的公共变量或数据结构74. 4实验部分代码75. 5运行截图124.6使用说明15五总结15六参考文献15-引言1.1 课程设计题目实现一个模拟操作系统。1.2 课程设计的目的通过模拟操作系统原理的实现,加深对操作系统工作原理理解,进一步了解操作系统 的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。1.3 小组人数建议34人一组共同完成模拟系统的实现
14、。1.4 编程语言建议使用VC、VB、C#、Java等Windows环境下的程序设计语言,以借助这些语言环 境来模拟硬件的一些并行工作。1.5 课程设计内容模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、 设备管理、文件管理和用户接口四部分。1.6 界面设计如图系统时间。CPU.正在运行进程2时间片。用户命令接口裂就绪队列, 进程名。等待队列。 进程名, 等待时间,执行进程V中间结果磁盘目录结构正在执行的指令。主存用户区使用情况,设备使用情况:是否分配,占用进 程,等待进程。进程 执行 完 显示 结果U磁盘使用情况图1.1二课程设计任务及要求1.1 设计任务设计一个
15、设备管理分配程序,按先来先服务的算法,对设备进行分配。2. 2设计要求设备管理主要包括设备的分配和回收。(1)模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。(2)因为模拟系统比较小,因此只要设备表设计合理即可。(3)采用先来先服务分配策略,采用设备的安全分配方式。(4)屏幕显示每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。三算法及数据结构3.1算法的总体思想(流程)设备管理的功能是按照设备的类型和系统采用的分配策略,为请求I/O进程分 配一条传输信息的完整通路。合理的控制I/O的控制过程,可最大限度的实现CPU 与设备、设备与设备之间的并行工作
16、。1 .监视所有设备。为了能对设备实施有效的分配和控制,系统能获取设备的状 态。设备状态保存在设备控制表(DeviceTable)中,并动态的记录状态的变化及 有关信息。2 .制定分配策略。按先来先服务的算法,进行设备分配。3 .设备的分配。把设备分配给进程。4 .设备回收。当进程运行完毕后,要释放设备,则系统必须回收,一边其他进程使用。图3. 13. 2 Equ i pment 模块功能记录设备的状态及相关信息 检查设备是否被调用 对设备进行分配进程结束对设备进行回收3. 2. 2数据结构一个 DeviceTable 类、一个 DeviceTable 函数。DeviceTable是设备分配表
17、,说明设备的分配状况,是否被占用。Device类说明了设备是如何使用的。每个设备是否被使用,哪个 进程在使用该设备,哪些进程在等待使用该设备。DeviceTable 设备名设备状态设备总数Device检查设各是否可用设备分配设备回收3. 3.1功能进程对设备的调用,当进程使用设备时,检查设备是否空闲。如果空闲, 则调用该设备;如果设备正被使用,则将该进程阻塞到该设备的阻塞队列中,等 到设备空闲时,再被唤醒,调用设备。3. 3. 2数据结构一个设备的枚举类型De viceType, 一个cpu函数。Cpu函数中调用Equipment模块中的函数对设备进行检测。如果设备空闲, 就调用该设备;如果设
18、备真在被使用,则该进程被阻塞到该设备的阻塞队列中。3. 3. 3算法通过调用Equipment模块中的函数对设背进行检测:如果设备空闲,则使用该设备;如果设备正在工作,则进程被阻塞。3. 4 forml 模块功能界面管理吧 Forml状态:回收设备名回收设备数进程名:所需设备名:所需设备数:设备名:A1:A2:A3:B1:B2;C1;分酉e设“分酉e设备b:右酉己设管c回收设备A 回收设备B |回收设备1 图3-2启动进程,如果要使用设备,按先来先服务的算法调用设备。此模块中有 一个设备调用函数public int Allocate(DeviceType type),根据设备的物理名调用设备,
19、并将信息 显示显示到界面中。3. 4. 2算法先来先服务(FCFS, First Come First Service)分配算法:每一设备有一队列管理,当多个作业或任务对同一设备提出I/O请求时, 该算法把请求的先后次序排成一个等待该设备的队列,设备分配程序把设备分 配给队列中的第一各作业。程序设计与实现图4-14. 2基本思想进程调用设备。先调用A类设备,A类设备一共有三个,如果有空闲的设备, 则进程就可调用;否则将进程阻塞到设备A的阻塞队列中,等待设备,等到A类设备有空 闲设备时,就唤醒该进程,在断点处继续进行程序。再调用B类设备,B类设备一共有 两个,如果有空闲的设备,则进程就可调用;否
20、则将进程阻塞到设备B的阻塞队列中,等待设备,等到B类设备有空闲设备时,就唤醒该进程,在断点处继续进行程序。最后调用 C类设备,C类设备只有一个,C设备是临界资源,如果C设备空闲,则进程就可调用; 否则将进程阻塞到设备C的阻塞队列中,等待设备,等到C设备空闲,就唤醒该进程,在 断点处继续进行程序。4. 3定义的公共变量或数据结构Anum, Bnum, Cnum分别表示设备A, B, C空闲数目public enum DeviceType枚举型的数据类型列举出三种设备public struct DeviceTable定义一设备表的结构体public class Device 设备类public b
21、ool JudgeDevice(DeviceType type)检查类型为 type 的设备是否可用public int Allocate(DeviceType type)分配设备,返回第几个设备被占用public void DeAllocate(DeviceType type, int a)回收设备4.4实验部分代;namespace WindowsApplication2 public partial class Forml : Form public static int Anum = 3, Bnum = 2, Cnum = 1;public enum DeviceType A,B,C, )public struct DeviceTable public DeviceType deviceType;public int total;public int useState;/0空闲,1占用public DeviceTable(DeviceType type, int total)定义个构造函数 this, total = total;deviceType = type;useState = new inttotal;for (int i = 0; i total; i+)初始化每个设useStatei = 0;