设备管理(2)

2019-04-13 22:45

case 'c': //申请 return 1; case 'C': return 1;

case 'd': //删除 return 2; case 'D': return 2;

case 'a': //添加 return 3; case 'A': return 3;

case 'f': //释放 free return 4; case 'F': return 4; case 'q': return -1; case 'Q': return -1; case 'p': return 5; case 'P': return 5;

default: return 0; } }

voidinit(vector&SDT_table) {

SDT_table[0].equipmentID=\

SDT_table[0].type='2'; //鼠标是第二类设备 SDT_table[0].dct=m; //设备的DCT表位置 SDT_table[1].equipmentID=\SDT_table[1].type='1'; SDT_table[1].dct=k;

SDT_table[2].equipmentID=\SDT_table[2].type='3'; SDT_table[2].dct=p;

SDT_table[3].equipmentID=\SDT_table[3].type='4'; SDT_table[3].dct=t;

h1->blockqueue=NULL; h1->channelID=\通道1\ h1->state=true; h1->use=NULL;

h2->blockqueue=NULL; h2->channelID=\通道2\ h2->state=true; h2->use=NULL;

c1->blockqueue=NULL;

c1->controllerID=\控制器1\ c1->state=true; c1->front=h1; c1->use=NULL;

c2->blockqueue=NULL; c2->controllerID=\控制器2\ c2->state=true; c2->front=h1; c2->use=NULL;

c3->blockqueue=NULL;

c3->controllerID=\控制器3\ c3->state=true; c3->front=h2; c3->use=NULL;

k->blockqueue=NULL; k->equipmentID=\

k->state=true; //可用 k->type='1'; k->front=c1; k->use=NULL;

m->blockqueue=NULL; m->equipmentID=\m->state=true; m->type='2'; m->front=c1; m->use=NULL;

p->blockqueue=NULL; p->equipmentID=\p->state=true; p->type='3'; p->front=c2; p->use=NULL;

t->blockqueue=NULL; t->equipmentID=\t->state=true; t->type='4'; t->front=c3; t->use=NULL; }

int main() {

charcmd;

DCT *temp_dct; COCT *temp_coct; CHCT *temp_chct; int l=0; string ID; string name;

vectorSDT_table(4); //设备表 vectorDCT_table(4); //设备

vectorCOCT_table(3); //控制器表

// vector::size_typesize_SDT_table; //设备表长度 init(SDT_table); //设备表的初始化 DCT u=*k;

DCT_table.push_back(u); u=*m;

DCT_table.push_back(u); u=*p;

DCT_table.push_back(u); u=*t;

DCT_table.push_back(u); COCT cu=*c1;

COCT_table.push_back(cu); cu=*c2;

COCT_table.push_back(cu); cu=*c3;

COCT_table.push_back(cu);

cout<<\目前设备:K:键盘(1) M:鼠标(2) P:打印机(3) cout<<\操作指令C 申请使用设备。\cout<<\操作指令D 删除设备。\cout<<\操作指令A 添加设备。\cout<<\操作指令F 释放设备。\while(l!=-1) {

cout<<\cin>>cmd;

T:显示器(4)\ l=check(cmd); if(l==0) {

cout<<\指令错误请重新输入。\continue; }

else if(l==1) //申请使用设备 {

cout<<\想要使用的设备名:\cin>>ID;

cout<<\申请设备的进程名:\cin>>name;

PCB *head=new PCB; //申请PCB的创建和链接 head->equipment=name; head->ID=ID;

head->next=NULL;

bool find=false;

vector::iterator ator0;

for(ator0=SDT_table.begin();ator0!=SDT_table.end();ator0++) {

if(ator0->equipmentID==ID) {

find=true; //有该设备 break; } } if(!find) {

cout<<\没有该设备,请重新输入操作指令。\continue; }

temp_dct=ator0->dct;

if(!temp_dct->state) //设备忙 {

cout<<\该设备目前处于忙状态,已经把请求加入等待队列。\if(!temp_dct->blockqueue) //阻塞的队列为空 {

temp_dct->blockqueue=head; }

else //阻塞队列已经有内容 {

PCB* t=temp_dct->blockqueue;

while(t)

t=t->next; if(!t) {

temp_dct->blockqueue=NULL; } else

t->next=head; } }

else //设备空闲 {

temp_coct=temp_dct->front; temp_dct->state=false;

temp_dct->use=head; //添加正在占用设备的进程 if(!temp_coct->state) //控制器不可用 {

cout<<\目前该设备连接的控制器忙,已经把请求加入等待队列.\if(!temp_coct->blockqueue) //阻塞的队列为空 {

temp_coct->blockqueue=head; }

else //阻塞队列不空 {

PCB* t=temp_coct->blockqueue; while(t)

t=t->next; if(!t) {

temp_dct->blockqueue=NULL; } else

t->next=head; } }

else //控制器可用 {

temp_coct->state=false; //控制器置忙 temp_chct=temp_coct->front; temp_coct->use=head;

if(!temp_chct->state) //通道不可用 {

cout<<\目前该设备连接的通道忙,已经把请求加入等待队列.\


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

下一篇:2012年初级护士资格证考试《专业实践能力》模拟试卷及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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