资源简介

基于linux的设备分配及磁盘调度。 设计内容: 1、参考操作系统有关设备分配的分配策略,模拟给出设备请求到分配的过程,对于外部存储器设备,分配后要模拟出它的的I/O过程,调用磁盘调度算法。 2、设备分配的过程中,要给设备分配设备控制器,通道都要有。 3、系统的设备最少要有3种,控制器每台设备最少对应1个和通道系统最少有3个。 3、磁盘调度算法要用先来先服务,电梯调度和循环扫描算法(算法可以选择) 4、设备管理要有设备控制表,设备分配表,通道控制表,控制器控制表等。 设计要求: 要求在屏幕上输出各设备的分配过程及信息,如果用到磁盘调度算法时,输出磁盘调度算法的调度顺序及平均寻道长度等,I/O时的寻道内容(磁道号)可手工给出。..

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#define  MAX   100
#define maxsize 1000 //定义最大数组域
typedef struct pcb/*进程*/
{
int pcbID; /*进程名称*/
struct pcb *next;
}PCB;
 
typedef struct chct//通道控制表
{
    int chctID;
    int status;//设备状态
    PCB *block;//阻塞队列
}CHCT;
 
typedef struct coct//控制器控制表
{
    int coctID;
    int status;//设备状态
    CHCT *chct;//控制器所连接的通道
    PCB *block;//阻塞队列
    struct coct *next;//控制器队列
}COCT;
 
typedef struct dct//设备控制表
{
    int dctID;
    int status;//设备状态
    int processid;//占用进程ID
    PCB *block;//阻塞队列指针
    COCT *coct;//与设备控制器相关连的控制器控制表
    struct dct* next;//同类设备的不同设备
}DCT;
typedef struct sdt//系统设备表
{
    char type;//系统设备表类型
    char name[MAX];//系统设备表名称
    DCT *dct;//DCT设备控制表
    struct sdt *next;//驱动入口地址
}SDT;
/*设置全局变量   3个通道、3个设备控制器、4个设备*/
CHCT *CH1*CH2*CH3;//两个通道ch1ch2
COCT *coct_head;//控制器控制表头部
SDT *sdt_head;
void init()
{
    PCB *ch1pcbblock*ch2pcbblock*ch3pcbblock*co1pcbblock
    *co2pcbblock*co3pcbblock
    *d1pcbblock*d2pcbblock
    *d3pcbblock*d4pcbblock;//各个设备的等待队列
    COCT*CO1*CO2*CO3;
    DCT *dct1*dct2*dct3*dct4;
    SDT *sdt1*sdt2*sdt3*sdt4;
    CH1=(CHCT*)malloc(sizeof(CHCT));
    CH2=(CHCT*)malloc(sizeof(CHCT));
    CH3=(CHCT*)malloc(sizeof(CHCT));
    CH1->status=0;
    CH2->status=0;
    CH3->status=0;
    CH1->chctID = 1;
    CH2->chctID = 2;
    CH3->chctID = 3;
    ch1pcbblock=(PCB*)malloc(sizeof(PCB));
    ch2pcbblock=(PCB*)malloc(sizeof(PCB));
    ch3pcbblock=(PCB*)malloc(sizeof(PCB));
    ch1pcbblock->next=NULL;
    ch2pcbblock->next=NULL;
    ch3pcbblock->next=NULL;
    CH1->block=ch1pcbblock;
    CH2->block=ch2pcbblock;
    CH3->block=ch3pcbblock;
    coct_head=(COCT*)malloc(sizeof(COCT));
    coct_head->next=NULL;
    CO1=(COCT*)malloc(sizeof(COCT));
    CO2=(COCT*)malloc(sizeof(COCT));
    CO3=(COCT*)malloc(sizeof(COCT));
    CO1->status=0;
    CO2->status=0;
    CO3->status=0;
    coct_head->next=CO1;
    CO1->next=CO2;
    CO2->next=CO3;
    CO3->next=NULL;
    co1pcbblock=(PCB *)malloc(sizeof(PCB));
    co1pcbblock->next=NULL;
    co2pcbblock=(PCB *)malloc(sizeof(PCB));
    co2pcbblock->next=NULL;
    co3pcbblock=(PCB *)malloc(sizeof(PCB));
    co3pcbblock->next=NULL;
    CO1->coctID = 1;
    CO2->coctID = 2;
    CO3->coctID = 3;
    //随机分配起始时的通道和控制的连接情况
    CO1->chct=CH1;
    CO2->chct=CH1;
    CO3->chct=CH2;
    CO1->block=co1pcbblock;
    CO2->block=co2pcbblock;
    CO3->block=co3pcbblock;
 
    d1pcbblock=(PCB *)malloc(sizeof(PCB));
    d2pcbblock=(PCB *)malloc(sizeof(PCB));
    d3pcbblock=(PCB *)malloc(sizeof(PCB));
    d4pcbblock=(PCB *)malloc(sizeof(PCB));
    d1pcbblock->next=NULL;
    d2pcbblock->next=NULL;
    d3pcbblock->next=NULL;
    d3pcbblock->next=NULL;
 
    dct1=(DCT *)malloc(sizeof(DCT));
    dct2=(DCT *)malloc(sizeof(DCT));
    dct3=(DCT *)malloc(sizeof(DCT));
    dct4=(DCT *)malloc(sizeof(DCT)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6455  2019-01-05 12:38  16140Y06班第五组基于Linux的设备分配及磁盘调度\1614010923+王楚+任务书.rar

     文件     600167  2019-01-05 12:39  16140Y06班第五组基于Linux的设备分配及磁盘调度\1614010923+王楚+说明书.rar

     文件       6702  2019-01-05 11:56  16140Y06班第五组基于Linux的设备分配及磁盘调度\1614010940+刘树敏+任务书.zip

     文件     109221  2019-01-05 12:53  16140Y06班第五组基于Linux的设备分配及磁盘调度\1614010940+刘树敏+说明书.zip

     文件       6454  2019-01-05 10:59  16140Y06班第五组基于Linux的设备分配及磁盘调度\1614010947+王康+任务书.rar

     文件      68569  2019-01-05 12:38  16140Y06班第五组基于Linux的设备分配及磁盘调度\1614010947+王康+说明书(1).rar

     文件       6455  2019-01-05 12:38  16140Y06班第五组基于Linux的设备分配及磁盘调度\1614010951+王强+任务书.rar

     文件     297624  2019-01-05 12:38  16140Y06班第五组基于Linux的设备分配及磁盘调度\1614010951+王强+说明书.rar

     文件      20070  2019-01-04 07:23  16140Y06班第五组基于Linux的设备分配及磁盘调度\基于Linux的设备分配及磁盘调度源代码.cpp

     目录          0  2019-01-05 12:53  16140Y06班第五组基于Linux的设备分配及磁盘调度

----------- ---------  ---------- -----  ----

              1121717                    10


评论

共有 条评论