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

2025-07-14

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

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


操作系统课程设计(设备管理)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2024 地域文化(岭南民间文化)--任务二(综合练习)

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219