• 大小: 464KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-12-20
  • 语言: 其他
  • 标签: 广工  

资源简介

代码加文档,一共9个实验 实验一 进程调度 实验二 作业调度 实验三 动态分区分配方式的模拟 实验四 多级反馈调度队列调度算法 实验五 最低松弛度调度算法模拟及其应用 实验六 银行家算法 实验七 死锁检测算法 实验八 页面置换算法 实验九 磁盘调度算法

资源截图

代码片段和文件信息

// OperatingSystem.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“

#include “stdio.h“
#include “stdlib.h“ 

#define getpch(type) (type*)malloc(sizeof(type))

struct pcb { /* 定义进程控制块PCB */
char name[10];
int reachTime; //到达时间
int ntime; //需要运行的时间 
int rtime; //已用CPU的时间 
char state;
struct pcb* link;
}*ready = NULL *p *job = NULL; //ready是就绪队列 p是当前运行的进程 job是作业调度序列 

typedef struct pcb PCB;

int restTime(PCB *pr) {
return pr->ntime - pr->rtime;
}

void insertToJob() { //对作业调度序列中的作业按到达时间升序排列 
PCB *first *second;
int insert = 0;
if ((job == NULL) || (p->reachTime < job->reachTime)) { /*到达时间最早者作为队首*/
p->link = job;
job = p;
}
else { /* 作业比较到达时间插入适当的位置中*/
first = job;
second = first->link;
while (second != NULL) {
if (p->reachTime < second->reachTime) { /*若插入作业比当前作业到达时间早*/
/*插入到当前进程前面*/
p->link = second;
first->link = p;
second = NULL;
insert = 1;
}
else { /* 插入进程优先数最低则插入到队尾*/
first = first->link;
second = second->link;
}
}
if (insert == 0) first->link = p;
}
}

void insertToReady() { /* 建立按进程尚需运行时间(需要运行的时间-已用CPU时间)进行排列函数 把p插进ready*/
PCB *first *second;
bool insert = false;
if ((ready == NULL) || (restTime(p) < restTime(ready))) { /*尚需运行时间最小者作为队首*/
p->link = ready;
ready = p;
}
else { /* 进程比较尚需运行时间插入适当的位置中*/
first = ready;
second = first->link;
while (second != NULL) {
if (restTime(p) < restTime(second)) { /*若插入进程比second进程尚需运行的时间少插入到当前进程前面*/
insert = true;
p->link = second;
first->link = p;
second = NULL;
}
else { /* 选择下一个进程进行比较*/
first = first->link;
second = second->link;
}
}
if (!insert) first->link = p; //插入到队尾
}
}

void jobDispatch(int time) { //根据到达时间把作业分配PCB 放到进程就绪队列中 
while (job != NULL) {
if (job->reachTime == time) { //作业可以分配PCB 
p = job;
job = job->link; //
insertToReady(); //插入进程就绪队列
}
else {
break;
}
}
}

int jobLength() {
int len = 0;
PCB *pr = job;
while (pr != NULL) {
len++;
pr = pr->link;
}
return len;
}

void input() { /* 建立进程控制块函数*/
int i num;
printf(“请输入进程数: “);
scanf(“%d“ &num);

char c;
for (i = 0; i < num; i++) {
printf(“\n输入第%d个进程的信息:\n“ i + 1);

p = getpch(PCB); //为PCB分配空间
while ((c = getchar()) != ‘\n‘ && c != EOF) {
;
}
printf(“输入进程名:“);
scanf(“%s“ p->name);

printf(“输入进程到达时间:“); //@
scanf(“%d“ &p->reachTime);

printf(“输入进程运行时间:“);
scanf(“%d“ &p->ntime);
printf(“\n“);

p->rtime = 0;
p->state = ‘w‘;
p->link = NULL;

insertToJob(); //插入到作业队列中 
}
}
int readyLength() { //计算就绪队列中进程数 
int len = 0;
PCB* pr = ready;
while (pr != NULL) {
len++;
pr = pr->link;
}
return(len);
}
void display(PCB * pr) { /*建立进程显示函数用于显示当前进程*/
printf(“%10s%10s%13s%10s%10s\n“ “qname“ “state“ “reachTime“ “needTime“ “runtime“); //
printf(“%10s“ pr->name);
printf(“%10c“ pr->state);
pr

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

     文件       4927  2017-12-09 21:02  操作系统实验\实验1代码\ShortestFirst.cpp

     文件        219  2017-11-16 22:52  操作系统实验\实验1代码\stdafx.cpp

     文件        234  2017-11-16 22:52  操作系统实验\实验1代码\stdafx.h

     文件        240  2017-11-16 22:52  操作系统实验\实验1代码\targetver.h

     文件        502  2017-11-21 19:28  操作系统实验\实验2代码\jcb.h

     文件       6068  2017-11-21 22:30  操作系统实验\实验2代码\JobDispatch.cpp

     文件        215  2017-11-20 16:59  操作系统实验\实验2代码\stdafx.cpp

     文件        327  2017-11-21 21:52  操作系统实验\实验2代码\stdafx.h

     文件        240  2017-11-20 16:59  操作系统实验\实验2代码\targetver.h

     文件      11075  2017-11-26 21:05  操作系统实验\实验3代码\DynamicPartition.cpp

     文件        360  2017-11-24 20:56  操作系统实验\实验3代码\partition.h

     文件        220  2017-11-23 11:40  操作系统实验\实验3代码\stdafx.cpp

     文件        331  2017-11-23 22:02  操作系统实验\实验3代码\stdafx.h

     文件        240  2017-11-23 11:40  操作系统实验\实验3代码\targetver.h

     文件        482  2017-12-09 19:11  操作系统实验\实验4代码\MultiLevedFeedbackQueue.h

     文件       5910  2017-12-09 19:49  操作系统实验\实验4代码\MultilevedFeedBackQueueScheduling.cpp

     文件        237  2017-12-08 10:05  操作系统实验\实验4代码\stdafx.cpp

     文件        438  2017-12-08 10:07  操作系统实验\实验4代码\stdafx.h

     文件        240  2017-12-08 10:05  操作系统实验\实验4代码\targetver.h

     文件       2875  2017-12-08 09:25  操作系统实验\实验5代码\LLF.cpp

     文件        207  2017-12-02 14:21  操作系统实验\实验5代码\stdafx.cpp

     文件        363  2017-12-02 15:41  操作系统实验\实验5代码\stdafx.h

     文件        240  2017-12-02 14:21  操作系统实验\实验5代码\targetver.h

     文件        316  2017-12-02 18:56  操作系统实验\实验5代码\task.h

     文件       4981  2017-12-02 14:16  操作系统实验\实验6代码\Banker.cpp

     文件         90  2017-12-01 19:21  操作系统实验\实验6代码\banker.h

     文件        210  2017-12-01 18:51  操作系统实验\实验6代码\stdafx.cpp

     文件        390  2017-12-01 19:17  操作系统实验\实验6代码\stdafx.h

     文件        240  2017-12-01 18:51  操作系统实验\实验6代码\targetver.h

     文件       3457  2017-12-02 14:19  操作系统实验\实验7代码\DeadlockDetection.cpp

............此处省略27个文件信息

评论

共有 条评论