操作系统课程设计(设备管理)

更新时间:2024-03-24 09:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河北大学工商学院操作系统课程设计

操作系统课程设计(设备管理)

目 录

一 引言 ......................................... 1

1.1课程设计题目 .................................. 1 1.2课程设计的目的 ................................. 1 1.3小组人数 ...................................... 1 1.4编程语言 ...................................... 1 1.5课程设计内容 .................................. 1 1.6界面设计如图 .................................. 1

二 课程设计任务及要求 ............................ 2

2.1设计任务 ...................................... 2 2.2设计要求 ...................................... 2

三 算法及数据结构 ................................ 2

3.1算法的总体思想(流程) .......................... 2 3.2 Equipment模块 ................................. 3 3.2.1 功能 ....................................... 3 3.2.2 数据结构 .................................... 3 3.3 cpu模块 ...................................... 4 3.3.1 功能 ....................................... 4 3.3.2 数据结构 .................................... 4 3.3.3 算法 ....................................... 4

I

河北大学工商学院操作系统课程设计

3.4 form1模块 .................................... 4 3.4.1 功能 ....................................... 4 3.4.2 算法 ....................................... 5

四 程序设计与实现 ............................... 5

4.1 程序流程图 .................................... 5 4.2 基本思想 ..................................... 6 4.3 定义的公共变量或数据结构 ........................ 7 4.4 实验部分代码 .................................. 7 4.5 运行截图 .................................... 12 4.6 使用说明 .................................... 15

五 总结 ........................................ 15 六 参考文献 .................................... 15

II

河北大学工商学院操作系统课程设计

一 引言

1.1课程设计题目

实现一个模拟操作系统。

1.2课程设计的目的

通过模拟操作系统原理的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。

1.3小组人数

建议3~4人一组共同完成模拟系统的实现。

1.4编程语言

建议使用VC、VB、C#、Java等Windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。

1.5课程设计内容

模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。

1.6界面设计如图

图1.1

1

河北大学工商学院操作系统课程设计

二 课程设计任务及要求

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.设备回收。当进程运行完毕后,要释放设备,则系统必须回收,一边其他进

程使用。

2

河北大学工商学院操作系统课程设计

图3.1

3.2 Equipment模块 3.2.1 功能

记录设备的状态及相关信息 检查设备是否被调用 对设备进行分配

进程结束对设备进行回收

3.2.2 数据结构

一个DeviceTable类、一个DeviceTable函数。

DeviceTable是设备分配表,说明设备的分配状况,是否被占用。

Device类说明了设备是如何使用的。每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。

3

河北大学工商学院操作系统课程设计

{ str = true; } break; } }

return str; } //

////////////分配设备,返回第几个设备被占用//////////////////////// //

public int Allocate(DeviceType type) { int k = 0;

switch (type) //使用switch语句选择分配设备不同函数 { case DeviceType.A: { table[0].total--;

for (int i = 0; i < 3; i++) { if (table[0].useState[i] == 0) { table[0].useState[i] = 1; k = i; break; } } break; }

case DeviceType.B: { table[1].total--;

for (int i = 0; i < 2; i++) {

if (table[0].useState[i] == 0) { table[0].useState[i] = 1; k = i; break; } } break; }

9

河北大学工商学院操作系统课程设计

case DeviceType.C: { table[2].total--; break; } } return k; } //

//////////////////////////回收设备//////////////////////////// //

public void DeAllocate(DeviceType type, int a) { switch (type)

{ case DeviceType.A: { table[0].total++;

table[0].useState[a] = 0; break; }

case DeviceType.B: { table[1].total++;

table[1].useState[a] = 0; break; }

case DeviceType.C: { table[2].total++;

table[2].useState[a] = 0; break; } } }

}

public Form1()

{ InitializeComponent(); } //

10

河北大学工商学院操作系统课程设计

///////////////////// 分配设备时的颜色变化//////////////////// //

private void button7_Click(object sender, EventArgs e) { Anum--;

string result1 = \ Device d1 = new Device();

int m1 = d1.Allocate(DeviceType.A); result1 = Convert.ToString(m1); switch (Anum) { case 2:

this.button1.BackColor = Color.Red; break; case 1:

this.button2.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.BackColor = Color.Red; break; case 0:

this.button5.BackColor = Color.Red; break;

11

河北大学工商学院操作系统课程设计

default:

MessageBox.Show(\无设备可分配\ break; }

result2 = Convert.ToString(m2); }

private void button9_Click(object sender, EventArgs e) { Cnum--;

string result3 = \ Device d1 = new Device();

int m3 = d1.Allocate(DeviceType.C); if (Cnum == 0)

{ this.button6.BackColor = Color.Red; } else

{ MessageBox.Show(\无设备可分配\ }

result3 = Convert.ToString(m3);

}

} }

4.5 运行截图

屏幕显示

主存使用情况示意图,哪些主存块已分配,哪些主存块未分配,以不同的颜色表示,灰色表示设备空闲,红色表示设备已分配

初始化为所有设备都是空闲状态,如下图所示

12

河北大学工商学院操作系统课程设计

图4-2

分配设备A正常情况下,如图所示:

图4-3

13

河北大学工商学院操作系统课程设计

分配设备A非正常情况下,例如需要设备数超过实际有的设备数时,如图所示:

图4-4

3个设备A都被分配出去,回收设备A时正常情况如下图所示:

图4-5

14

河北大学工商学院操作系统课程设计

4.6 使用说明

设备管理主要包括设备的分配和回收。 1. 设备的模拟

模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。

2. 数据结构

因为模拟系统比较小,因此只要设备表设计合理既可。 3. 设备分配

采用先来先服务策略。 4. 设备回收

回收设备后,要注意唤醒等待设备的进程。 5. 屏幕显示

屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。其中灰色表示设备空闲,红色表示设备已被分配。

五 总结

设备管理主要监视所有设备的状态,制定分配策略,完成设备的分配和回收,合理的控制I/O的控制过程,最大限度的实现CPU与设备、设备与设备之间的把并行工作。

通过对这次操作系统课程设计的亲自参与和操作,使我深刻体会到了:只要你想做只要你想学没有弄不懂得事情,工程里面也不能不在乎细节,等等。感觉很受益匪浅。懂得了操作系统包括的四部分内容:文件管理和用户接口、存储管理、设备管理、进程管理之间的内在联系。加深了我对这门课程的理解。锻炼了自己在考虑全局也不是细节的能力。通过这次实验,再一次熟悉并深入掌握了程序设计语言和界面设计。同时,我也深深体会到了团队的重要性,如果没有同组人的互相鼓励和督促我跟本不能很快的完成任务。一滴水的力量是有限的,但汇聚成溪流将是美丽的。虽然我们每个人的力量都是有限的,但是激烈的讨论、相互的鼓励使我们在实践中成长。感谢和我一起面对的同伴们,因为有你们我才变得勤奋。更感谢给予我们谆谆教导的老师,在我们犹豫困惑时给予我们指导,谢谢您!

六 参考文献

刘振鹏、王煜、张明 《操作系统》(第三版)北京:中国铁道出版社

15

本文来源:https://www.bwwdw.com/article/nj78.html

Top