77范文网 - 专业文章范例文档资料分享平台

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

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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

3.3 cpu模块 3.3.1 功能

进程对设备的调用,当进程使用设备时,检查设备是否空闲。如果空闲,则调用该设备;如果设备正被使用,则将该进程阻塞到该设备的阻塞队列中,等到设备空闲时,再被唤醒,调用设备。

3.3.2 数据结构

一个设备的枚举类型DeviceType,一个cpu函数。

Cpu函数中调用Equipment模块中的函数对设备进行检测。如果设备空闲,就调用该设备;如果设备真在被使用,则该进程被阻塞到该设备的阻塞队列中。

3.3.3 算法

通过调用Equipment模块中的函数对设背进行检测:如果设备空闲,则使用该设备;如果设备正在工作,则进程被阻塞。

3.4 form1模块 3.4.1 功能

界面管理

4

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

图3-2

启动进程,如果要使用设备,按先来先服务的算法调用设备。此模块中有

一个设备调用函数public int Allocate(DeviceType type),根据设备的物理名调用设备,并将信息显示显示到界面中。

3.4.2 算法

先来先服务(FCFS, First Come First Service)分配算法:

每一设备有一队列管理,当多个作业或任务对同一设备提出I/O请求时,该算法把请求的先后次序排成一个等待该设备的队列,设备分配程序把设备分配给队列中的第一各作业。

四 程序设计与实现

4.1 程序流程图

5

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

执行的进程根据设备的物理名调用设设备a是否空闲 N 将该进程放到设备a的阻塞队列中 Y 设备b是否空闲 N 将该进程放到设备b的阻塞队列中 Y 设备c是否空闲 N 将该进程放到设备c的阻塞队列中 Y 进程结束,回收设图4-1

4.2 基本思想

进程调用设备。先调用A类设备, A类设备一共有三个,如果有空闲的设备,

则进程就可调用;否则将进程阻塞到设备A的阻塞队列中,等待设备,等到A类设备有空闲设备时,就唤醒该进程,在断点处继续进行程序。再调用B类设备, B类设备一共有两个,如果有空闲的设备,则进程就可调用;否则将进程阻塞到设备B的阻塞队列中,等

6

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

待设备,等到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 bool JudgeDevice(DeviceType type) 检查类型为type的设备是否可用 public int Allocate(DeviceType type) 分配设备,返回第几个设备被占用 public void DeAllocate(DeviceType type, int a) 回收设备

4.4 实验部分代码

namespace WindowsApplication2 { public partial class Form1 : 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 int[total];

for (int i = 0; i < total; i++) //初始化每个设备

{ useState[i] = 0;

7

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

} } }

public class Device

{ private DeviceTable[] table = new DeviceTable[3]; //三种设备 private static Device device = new Device(); public Device()

{ InitDevice();//初始化设备

}

private void InitDevice() //设备初始化,A设备3个,B设备2个,C设备1个

{ table[0] = new DeviceTable(DeviceType.A, 3); table[1] = new DeviceTable(DeviceType.B, 2); table[2] = new DeviceTable(DeviceType.C, 1); } //

/////////////////检查类型为type的设备是否可用////////////////////// //

public bool JudgeDevice(DeviceType type) { bool str = false; switch (type)

{ case DeviceType.A:

{ if (table[0].total > 0) { str = true; } break; }

case DeviceType.B:

{ if (table[1].total > 0) { str = true; } break; }

case DeviceType.C:

{ if (table[2].total > 0)

8

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统课程设计(设备管理)(2)在线全文阅读。

操作系统课程设计(设备管理)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/417066.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: