操作系统课程设计设备管理实现源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统课程设计设备管理实现源代
码
1
2
#include
#include "iostream.h"
#include "stdlib.h"
#include "string.h"
struct PCB{
int id;
char name[10];
int size;
struct PCB *next;
};
struct PCB *running;
struct PCB *ready;
struct PCB *blocked;
struct PCB *q;
struct PCB *p;
int id=1;
int size;
char name[10];
//////////////////////////////////////////////////////////////////////////////////////
struct DCT{ //设备
char name[10];
3
int busy;
PCB * occupied;
PCB * waiting;
struct DCT *next;
struct COCT* coct; //上级控制器
};
struct COCT{ //控制器
char name[10];
int busy;
PCB * occupied;
PCB * waiting;
struct COCT *next;
struct CHCT* chct; //控制器的上级通道
};
struct CHCT{ //通道
char name[10];
int busy;
PCB * occupied;
PCB * waiting;
struct CHCT *next;
4
};
//////////////////////////////////////////////////////////////////////////////////////
struct DCT * dcts;
struct COCT *cocts;
struct CHCT *chcts;
void enqueue(int id,char *name,int size,struct PCB *head){
struct PCB *node=(struct PCB *)malloc(sizeof(struct PCB));
node->next=0;
node->id=id;
strcpy(node->name,name);
node->size=size;
struct PCB *tmp=head;
while(tmp->next!=0)
tmp=tmp->next;
tmp->next=node;
}
struct PCB * dequeue(struct PCB *head){
struct PCB * tmp=head->next;
if(head->next!=0){
5