基于反馈(Feed Back,FB)排队算法的CPU调度的模拟实现资料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JLU

《操作系统》课程设计[基于反馈(Feed Back,FB)排队算法的

CPU调度的模拟实现]

程序代码:

// 223.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include //Definitions for memory and string functions.

#include //Defines the ctype macros.

#include //memory management functions and variables.

#include

#include

#include //Definitions for low level I/O functions.

#include //Symbols and structures for process management.

#include //Direct MSDOS console input/output.

#include

#include // Struct and function declarations for dealing with time. #include //Defines structs, unions, macros, and functions for dealing //with MSDOS and the Intel iAPX86 microprocessor family.

// 函数结果状态代码

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

//////////////////////////////////////////

typedef int Status; //指定用Status和Boolean代表int类型

typedef int Boolean;

//////////////////////////////////////////

typedef struct QNode

{

char name[5];

int time;

int timeType;

struct QNode *next;

}QNode,*QueuePtr;

typedef struct

{

QueuePtr front;//队头指针

QueuePtr rear; // 队尾指针

}LinkQueue;

int count=0; //时间计数变量

LinkQueue qRun,qWait,qReady1,qReady2,qReady3,qReady4;

//////////////////////////////////////////////////////////////////////////

void menu1();

void menu2();

void gotoxy(int x,int y);

void clrscr(void); //清屏函数

void clreol(void); //在文本窗口中清除字符到行末

void clreoscr(void); //clear end of screen

Status InitQueue(LinkQueue &Q);

Status creatPro(LinkQueue &quePro);

void dealTime();

void runPro(void);

void run();

void wait();

void wake();

void endPro();

//////////////////////////////////////////////////////////////////////////

//DOS界面坐标定位函数/////////////////////////////////////////////////////

void gotoxy(int x,int y)

{

CONSOLE_SCREEN_BUFFER_INFO csbiInfo; //variablendklaration HANDLE hConsoleOut;

hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);

GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);

csbiInfo.dwCursorPosition.X = x; //cursorposition X koordinate festlegen

csbiInfo.dwCursorPosition.Y = y; //cursorposition Y koordinate festlegen

SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition); //den cursor an die festgelegte koordinate setzen

}

Status InitQueue(LinkQueue &Q)

{ // 构造一个空队列Q

if(!(Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode))))

exit(OVERFLOW);

Q.front->next=NULL;

return OK;

}

Status EnQueue(LinkQueue &Q,char e[5],int proTime,int tType)

{ // 插入元素e为Q的新的队尾元素

QueuePtr p;

if(!(p=(QueuePtr)malloc(sizeof(QNode)))) // 存储分配失败

相关文档
最新文档