操作系统实验-进程调度2.doc
文本预览下载声明
一)实验结果完整截图: 1
二)实验代码: 4
一)实验结果完整截图:
二)实验代码:
// dddddd.cpp : 定义控制台应用程序的入口点。
//
#include stdafx.h
#include stdio.h
#include stdlib.h
#include time.h
// 常量和状态定义
#define PRO_NUM 0x05//进程数目5
#define MAX_TIME 0xFF//最大时间
//状态宏
#define WAIT 0x01
#define RUN 0x02
#define FINISH 0x03
#define ID_ERROR 0x10
#define MIN_PRIOR 0xFF
#define MAX_PRIOR 0x00
//自定义数据类型
typedef unsigned int Uint32;
//PCB
struct PCB_Info
{
Uint32 s_id;
Uint32 s_static_prior;
Uint32 s_dynamic_prior;
Uint32 s_start_time;
Uint32 s_need_time;
Uint32 s_used_time;
Uint32 s_state;
};
//定义进程队列
PCB_Info g_queue[PRO_NUM];
//定义时间
Uint32 g_time;
//模拟进程执行函数
void Simulator();
//初始化进程函数
void Init_Process();
//初始化进程队列函数
void Init_Queue();
Uint32 Create_Process( Uint32 needtime);
void Run_Process();
Uint32 Get_PriProcess();
void Work_Proces(Uint32 id);
void Change_Process(Uint32 id);
void Print_state();
void End_Process();
void Init_process()
{
int i;
Uint32 id;
srand((unsigned)time(NULL));
//初始化进程队列函数
Init_Queue();
for(i = 0;iPRO_NUM; ++ i)
{
id = Create_Process(1 + rand() % 10);
if(id!=ID_ERROR)
{
printf(*******************************************\n);
printf(创建进程成功\n);
printf(ID:%d\n,id);
printf(在队列中优先级:%d\n,g_queue[id].s_static_prior);
printf(所处队列:%d\n,g_queue[id].s_dynamic_prior);
printf(到达时间:%d\n,g_queue[id].s_start_time);
printf(需要时间:%d\n,g_queue[id].s_need_time);
printf(已用CPU:%d\n,g_queue[id].s_used_time);
printf(状态:%d\n ,g_queue[id].s_state);
}
else
{
printf(进程创建失败\n);
}
}
}
void Init_Queue()
{
int i;
for(i=0;iPRO_NUM;++i)
{
g_queue[i].s_id = i;
g_queue[i].s_dynamic_prior = MIN_PRIOR;
g_queue[i].s_need_time=0;
g_queue[i].s_start_time=0;
g_queue[i].s_static_prior=MIN_PRIOR;
g_queue[i].s_used_time =0 ;
g_queue[i].s_state = FINISH;
显示全部