资源简介
基于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
- 上一篇:图像拼接技术及其实现
- 下一篇:NTSYS-PC分子生物学分析软件
相关资源
- 基于Linux系统的航班信息与订票系统
- C安全编码标准中文版
- 动态称重,四节称 源码,
- C程序设计第四版.谭浩强(带详细书签
- [BUPT]计算导论OJ上机题参考源代码 +
- STM32F103+四个VL53L0代码2020新.zip
- 高级语言程序设计.迟成文
- C程序设计语言第2版·新版习题解答
- 固高控制例程
- OpenGL编程指南原书第9版高清完整版
- STM32与ZigBee串口通信LCD显示程序
- stm32智能安防系统
- 华为公司各种设计规范
- 深入理解C指针(带书签完整版)
- OPENCV中团块跟踪
- 用51单片机与LCD12864实现俄罗斯方块游
- C程序设计语言(第2版 新版) 带书签
- 基于arm的开发
- STM32F103C8T6开发参考例程代码
- Linux设备驱动开发详解:基于最新的
- cmake-3.16.2-win32-x86.msi
- 深入理解计算机系统上交大课程材料
- IMXRT1064RM.pdf
- 《学习OpenCV(中文版)》-于仕琪
- 图解数据结构 使用C
- C指针基本概念核心技术及最佳实践
- STM32F407中文手册(完全版) 高清完整
- ANSI+C+标准详解
- Pointers on C 英文版
- cmake-3.16.0-rc1-win64-x64.msi
评论
共有 条评论