设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx

上传人:b****5 文档编号:15802181 上传时间:2022-11-16 格式:DOCX 页数:17 大小:191.85KB
下载 相关 举报
设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx_第1页
第1页 / 共17页
设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx_第2页
第2页 / 共17页
设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx_第3页
第3页 / 共17页
设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx_第4页
第4页 / 共17页
设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx

《设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。

设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx

通常,它与下述四个因素有关:

  

(1)I/O设备的固有属性。

该设备仅适合于某进程独占还是可供多个进程共享;

  

(2)系统所采用的分配策略。

采用先请求先分配方式,还是按优先数最高者优先的方式;

  (3)设备分配中的安全性,不合理的设备分配有可能导致死锁的发生;

  (4)与设备的无关性。

用户程序与实际分配的物理设备无关。

设备分配技术

 

(1)独享分配

  由于某些设备要求人工干预,有些设备要求较长的预操作时间。

对它们采用独享分配方式。

 

(2)共享分配

   磁盘、磁鼓之类的外存储器,即具有很大的存储容量,其定位操作的时间又短,可为若干作业所共享。

 (3)虚拟分配

   采用SPOOLing技术。

把原为独享的设备改造成为可共享的设备。

I/O设备的分配算法

  I/O设备的分配可采用如下一些算法:

 

(1)先请求先服务。

当有多个进程对同一个设备提出I/O请求时,该算法要求把所有发出I/O请求的进程,按其发出请求的先后次序排成一个等待该设备的队列。

 

(2)优先权最高者优先。

优先权高的进程优先获得处理机,若对它的I/O请求,也赋予高的优先权,如果系统本身也希望使用某I/O设备而提出I/O请求,它应比通常用户的I/O请求具有更高的优先权。

对于优先权相同的I/O请求,则按先请求先分配的原则排队。

四、相关数据结构

1设备分配用数据结构

系统对外设的使用涉及以下数据结构:

设备控制表(DCT,DeviceControlTable):

每个设备一张,描述设备特性和状态。

反映设备的特性、设备和控制器的连接情况。

DCT的内容主要包括:

设备标识:

用来区别不同的设备。

设备类型:

反映设备的特性;

如:

块设备或字符设备。

设备地址或设备号:

统一内存编址或单独编址。

设备状态:

工作或空闲状态。

等待队列指针:

等待使用该设备的进程队列。

I/O控制器指针:

指向向该设备相连I/O控制器。

系统设备表(SDT,SystemDeviceTable):

系统内一张,反映系统中设备资源的状态,记录所有设备的状态及其设备控制表的入口。

SDT表项的主要组成:

DCT指针:

指向相应设备的DCT;

设备使用进程标识:

正在使用该设备的进程标识;

DCT信息:

为引用方便而保存的DCT信息,如:

设备标识、设备类型等;

控制器控制表(COCT,COntrollerControlTable):

每个设备控制器一张,描述I/O控制器的配置和状态。

如DMA控制器所占用的中断号、DMA数据通道的分配。

通道控制表(CHCT,CHannelControlTable):

每个通道一张,描述通道工作状态。

五、流程图

六、实验代码

#include"

iostream"

string"

vector"

usingnamespacestd;

typedefstructnode

{

stringID;

//进程名

stringequipment;

//申请的设备名

structnode*next;

}PCB;

typedefstruct

stringchannelID;

//通道标识符

boolstate;

//通道状态

PCB*use;

//正在使用该通道的进程

PCB*blockqueue;

//阻塞队首

}CHCT;

stringcontrollerID;

//控制器标示

//控制器状态

CHCT*front;

//通道表指针

//正在使用该控制器的进程

}COCT;

chartype;

//设备类型

stringequipmentID;

//设备名

//设备状态

COCT*front;

//控制器指针

//正在使用该设备的进程

}DCT;

DCT*dct;

//设备的DCT

}SDT;

DCT*k=newDCT;

//键盘的DCT

DCT*m=newDCT;

DCT*p=newDCT;

DCT*t=newDCT;

COCT*c1=newCOCT;

COCT*c2=newCOCT;

COCT*c3=newCOCT;

CHCT*h1=newCHCT;

CHCT*h2=newCHCT;

CHCT*h3=newCHCT;

intcheck(charcmd)

{

switch(cmd)

{

case'

c'

:

//申请

return1;

C'

d'

//删除

return2;

D'

a'

//添加

return3;

A'

f'

//释放

return4;

F'

q'

return-1;

Q'

p'

return5;

P'

default:

return0;

}

}

voidinit(vector<

SDT>

&

SDT_table)

SDT_table[0].equipmentID="

M"

;

SDT_table[0].type='

2'

//鼠标是第二类设备

SDT_table[0].dct=m;

//设备的DCT表位置

SDT_table[1].equipmentID="

K"

SDT_table[1].type='

1'

SDT_table[1].dct=k;

SDT_table[2].equipmentID="

P"

SDT_table[2].type='

3'

SDT_table[2].dct=p;

SDT_table[3].equipmentID="

T"

SDT_table[3].type='

4'

SDT_table[3].dct=t;

h1->

blockqueue=NULL;

channelID="

通道1"

state=true;

use=NULL;

h2->

通道2"

c1->

controllerID="

控制器1"

front=h1;

c2->

控制器2"

c3->

控制器3"

front=h2;

k->

equipmentID="

//可用

type='

front=c1;

m->

p->

front=c2;

t->

front=c3;

intmain()

charcmd;

DCT*temp_dct;

COCT*temp_coct;

CHCT*temp_chct;

intl=0;

stringname;

vector<

SDT_table(4);

//设备表

DCT>

DCT_table(4);

//设备

COCT>

COCT_table(3);

//控制器表

//vector<

size_typesize_SDT_table;

//设备表长度

init(SDT_table);

//设备表的初始化

DCTu=*k;

DCT_table.push_back(u);

u=*m;

u=*p;

u=*t;

COCTcu=*c1;

COCT_table.push_back(cu);

cu=*c2;

cu=*c3;

cout<

<

"

目前设备:

K:

键盘

(1)M:

鼠标

(2)P:

打印机(3)T:

显示器(4)"

endl;

c申请使用设备。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1