资源简介
代码加文档,一共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个文件信息
- 上一篇:微信公众平台开发发送客服消息
- 下一篇:lamescan3_r8_en
相关资源
- 西北农林科技大学操作系统实验一-
- 广东工业大学操作系统实验源码
- 广州大学--操作系统实验1-5实验报告
- 操作系统实验指导
- 操作系统实验,生产者与消费者问题
- 操作系统实验进程的创建源代码及文
- 上海大学操作系统2实验报告
- UCOSII实时操作系统实验
- 山东大学操作系统实验报告
- 操作系统实验完整版川大计科
- 杭电操作系统实验一--linux内核编译添
- 操作系统实验指导——基于Linux内核第
- 操作系统实验指导——基于Linux内核完
- 电子科技大学计算机操作系统实验代
- 计算机操作系统实验(5个详细实验)
- 广东工业大学操作系统实验程序及报
- 操作系统实验磁盘调度
- 操作系统实验报告-大作业模拟文件系
- 操作系统实验之动态分区算法首次适
- 操作系统实验多线程读者写者优先问
- 操作系统实验报告 安徽工业大学
- 《计算机操作系统实验指导》郁红英
- EOS 操作系统实验教程
- 向Linux内核增加一个系统调用
- 操作系统实验1进程控制与描述
- 哈工大 操作系统实验(全) 8次实验
- 重大软院操作系统实验三:线程同步
- 广工操作系统实验报告
- 重大软院操作系统实验二:线程调度
- 广工操作系统实验报告文档+代码+可执
评论
共有 条评论