设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx
- 文档编号:15802181
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:17
- 大小:191.85KB
设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx
《设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《设备管理算法实验报告计算机操作系统教程第三版Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
通常,它与下述四个因素有关:
(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申请使用设备。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设备管理 算法 实验 报告 计算机 操作系统 教程 第三