当前位置:文档之家› 操作系统课程设计实验报告

操作系统课程设计实验报告

河北大学工商学院
课程设计
题目:操作系统课程设计
学部信息学部
学科门类电气信息
专业计算机
学号2011482370
姓名耿雪涛
指导教师朱亮
2013 年6月19日
主要内容
一、设计目的
通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。

二、设计思想
实现一个模拟操作系统,使用VB、VC、CB等windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。

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

设计模板如下图:
注:本人主要涉及设备管理模块
三、设计要求
设备管理主要包括设备的分配和回收。

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

⑵采用死锁的预防方法来处理申请独占设备可能造成的死锁。

⑶屏幕显示
注:屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。

设备管理模块详细设计
一、设备管理的任务
I/O设备是按照用户的请求,控制设备的各种操作,用于完成I/O 设备与内存之间的数据交换(包括设备的分配与回收,设备的驱动管理等),最终完成用户的I/O请求,并且I/O设备为用户提供了使用外部设备的接口,可以满足用户的需求。

二、设备管理函数的详细描述
1、检查设备是否可用(主要代码)
public bool JudgeDevice(DeviceType type)
{
bool str = false;
switch (type)
{
case DeviceType.a:
{
{
str = true;
}
break;
}
case DeviceType.b:
{
if (table[1].total > 0)
{
str = true;
}
break;
}
case DeviceType.c:
{
if (table[2].total > 0)
{
str = true;
}
break;
}
}
return str;
}
注意:只有当设备处于可用状态时,那么用户发出的I/O请求才可以及时给出回应,如果在用户发出请求的时候,当前没有空闲的设备,那么用户只能等待,只有当设备回收以后有空闲设备的时候才可以继续完成用户的I/O请求,因此,这一部分相当重要。

2、设备的分配(主要代码)
public int Allocate(DeviceType type)
{
int k = 0;
switch (type)
{
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;
}
case DeviceType.c:
{
table[2].total--;
break;
}
}
return k;
}
这一部分定义了三类共六个设备,分别是A类型的三个,B类型的两个,C类型的一个。

3、设备的回收(主要代码)
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;
}
}
}
}
每次占用完了某一个或多个I/O设备,都要对其进行设备的回收,以便后续使用。

三、屏幕显示
1、当刚刚开机后,没有任何操作,那么此时的屏幕显示为下图:
注:模拟操作系统分为进程管理、文件管理、内存管理、设备管理四个主要部分。

进程管理分别为就绪队列和阻塞队列,来显示进程名、优先级、以及阻塞原因;文件管理包含命令接口和计算机磁盘(C、D 磁盘),绿色表示系统使用的磁盘,深蓝表示已使用的内存,灰色表示还未使用,有三个相关进程(111.exe、aaa.exe、ddd.exe);内存管理有32个panel,蓝色表示空闲块,红色表示占用块,黄色表示运行块;设备管理包6个设备,初始状态为空闲,显示使用的进程和时间。

此时磁盘中没有任何文件,用户没有任何请求,所以I/O设备全部出于空闲状态,所有设备未被占用,此时内存中也没有任何进程数据,当然,cpu也处于空闲状态。

2、运行一个进程:
111.exe进程占用四个panel,从第二个块开始运行,占用A1设备,进入阻塞状态,等待IO输入输出,当前进程为闲逛进程;运行第三个
块,开始执行111.exe进程,文件内容为:
i++i++;i++;i++;!a8;i++;i++;i++;i++;!c5;i++;i++;end;
运行第四个块,进入到阻塞状态,然后等待IO的输入和输出;
执行结束以后,系统释放内存。

3、同时运行多个进程
此时,111.exe进程占用设备A1,aaa.exe进程占用设备A2,他们在等待I/O输入输出。

四、I/O设备使用说明
在进程创建后,系统就为该进程分配了它所需要的各种资源,包括有些进程需要占用I/O设备进行输入输出,当用户进程发出I/O请求时,如果此时有空闲的设备,那么进程就可以直接占用该设备,直到该进程运行完释放所有的资源为止。

如果所有的设备都被占用,此时还有进程进行I/O请求时,那么此进程就会等待资源的分配。

总结
这次的课程设计我们是四个人组成一个小组,每个人负责一个模块。

当然,无论是哪一个模块,我们都先商量好怎么做,之后我们单独进行自己模块的编写,最后我们四个人将程序归并到一起,完成了此次操作系统的课程设计。

在这次实践中,我感受到了一个团队团结起来做事是多么的强大,在一个好的团队了,分工明确,大家相互交流,做出的事就会更好。

课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.
本模拟操作系统由四人组合完成:
李帮(进程管理模块)、耿雪涛(设备管理模块)
杨新宇(存储管理模块)、郁海涛(文件管理模块)。

相关主题