资源简介
本课程设计要求模拟实现一个的多道批处理系统的两级调度。作业调度分别采用最小作业优先算法,进程调度采用可抢占的优先级调度算法。
代码片段和文件信息
#include “stdio.h“
#include
#include
#define getpch(type) (type*)malloc(sizeof(type))
#define NULL 0
#define true 1
#define false 0
#define Free 0 //空闲状态
#define Busy 1 //已用状态
#define OK 1 //完成
#define ERROR 0 //出错
#define MAX_length 100 //最大内存空间为100KB
typedef int Status;
int neicui=100cidaiji=4now=0show=0;
struct pcb { /* 定义进程控制块PCB */
int ID; //进程号
char name[10]; //进程名
char state; //状态
int ntime; //运行时间
int hour; //到达时间 时
int minute; //到达时间 分
int rtime; //已运行时间
int super; //优先级
int nc; //需要内存
int cdj; //需要磁带机
struct pcb* link;
}*ready=NULL*wait=NULL*shuru=NULL*p;
typedef struct pcb PCB;
typedef struct freearea//定义一个空闲区说明表结构
{
int ID; //分区号
long size; //分区大小
long address; //分区地址
int state; //状态
}ElemType;
//线性表的双向链表存储结构
typedef struct DuLNode //double linked list
{
ElemType data;
struct DuLNode *prior; //前趋指针
struct DuLNode *next; //后继指针
}DuLNode*DulinkList;
DulinkList block_first; //头结点
DulinkList block_last; //尾结点
void disp(PCB * pr) /*建立进程显示函数用于显示当前进程*/
{
printf(“\n| 进程名 | 状态 | 到达时间 | 运行时间 | 优先级 | 已运行 | 需要内存 | 需要磁带机\n“);
printf(“| %s “pr->name);
printf(“| %c “pr->state);
printf(“| %d:%d “pr->hourpr->minute);
printf(“| %d “pr->ntime);
printf(“|%d “pr->super);
printf(“|%d “pr->rtime);
printf(“|%d “pr->nc);
printf(“|%d “pr->cdj);
printf(“\n“);
}
void check(){
pcb* pr;
int hmi;
h=now/100;
mi=now%100;
printf(“当前时间是:%d:%d\n“hmi);
printf(“剩余内存:%d\n“neicui);
printf(“剩余磁带机:%d\n“cidaiji);
if(ready!=NULL){
pr=ready->link;
printf(“\n正在运行的进程是:\n“);
disp(ready);
printf(“\n已就绪队列:\n“);
while(pr!=NULL){
disp(pr);
pr=pr->link;
}
}
if(wait!=NULL){
printf(“\n正在等待队列:\n“);
pr=wait;
while(pr!=NULL){
disp(pr);
pr=pr->link;
}
}
if(shuru!=NULL){
printf(“\n还没到达队列:\n“);
pr=shuru;
while(pr!=NULL){
disp(pr);
pr=pr->link;
}
}
if(ready==NULL&&wait==NULL&&shuru==NULL){
printf(“\n进程已经全部执行\n“);
printf(“\n 按任一键退出......\n“);
getchar();
}
printf(“\n\n“);
}
Status Initblock()//开创带头结点的内存空间链表
{
block_first=(DulinkList)malloc(sizeof(DuLNode));
block_last=(DulinkList)malloc(sizeof(DuLNode));
block_first->prior=NULL;
block_first->next=block_last;
block_last->prior=block_first;
block_last->next=NULL;
block_last->data.address=0;
block_last->data.size=MAX_length;
block_last->data.ID=0;
block_last->data.state=Free;
return OK;
}
//首次适应算法
Status First_fit(int IDint request)//传入作业名及申请量
{
//为申请作业开辟新空间且初始化
DulinkList temp=(DulinkList)malloc(sizeof(DuLNode));
temp->data.ID=ID;
temp->data.size=request;
temp->data.state=Busy;
DuLNode *p=block_first->next;
while(p)
{
if(p->data.state==Free && p->data.size==request)
{//有大小恰好合适的空闲块
p->data.state=Busy;
p->data.ID=ID;
return OK;
break;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-01-27 16:51 操作系统课程设计\
文件 735232 2014-01-07 21:35 操作系统课程设计\操作系统课程设计内容.doc
文件 197120 2014-01-27 16:51 操作系统课程设计\操作系统课程设计封面.doc
目录 0 2014-01-07 21:35 操作系统课程设计\源代码\
文件 8479 2014-01-07 21:35 操作系统课程设计\源代码\czxtKS.cpp
文件 192561 2014-01-07 21:35 操作系统课程设计\源代码\czxtKS.exe
相关资源
- 广工编译原理历年真题及答案
- 一种高增益CMOS两级运算放大器的设计
- 广工编译原理实验报告+可执行程序
- 广工人工智能作业--决策树
- 广工数据库课设
- 广工anyview7-9章参考答案
- 广工数据结构课程设计完整版
- 两道批处理系统的两级调度
- 广工计算机学院专项设计
- MapReduce下的k-means算法实验报告广工
- 操作系统实验报告-文件系统
- 广工云计算课程报告
- OPA2350两级运放,飞思卡尔智能车电磁
- 操作系统实验报告-动态存储管理
- 广工操作系统课程设计文档+代码+可执
- 广工选修新技术专题
- 广东工业大学2015年数字图像处理复习
- 广工人工智能——决策树实验报告.
- 广工anyview数据结构答案
- 广工操作系统课设代码及文档
- 广工新技术专题-识别CIFAR数据集
- 2015广工操作系统实验源代码报告
- 广工《算法和高级数据结构教程课程
- 广工《算法和高级数据结构教程》
- 广工计算机网络课程设计
- 广工最新2020操作系统课程设计
- 广工操作系统课设
- 池塘夜降彩色雨源码
- 广工探秘自动化课程选择题题目及答
- 广工高级数据库课程设计
评论
共有 条评论