?? cpu.cpp
字號:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#define N 2
/*Define Process Structure*/
typedef struct _proc {
char name[32];
int run_time;
int req_time;/*required time*/
int pri;/*priority*/
enum {
READY = 0X01,END
}state;/*process state*/
struct _proc *next;
}PROC;
int g_TotalTimeSlices = 0;
PROC *g_Head = NULL, *g_Curr = NULL;
/*Define five process: Initialize*/
void Init()
{
int i=0;
PROC *p, *p0;
g_Head = (PROC*)malloc(sizeof(PROC));
g_Head->next = NULL;
if(i==0)
{p = (PROC*)malloc(sizeof(PROC));
printf("Please enter the %d program's\n name\t req_time(所需要的時(shí)間)\t priority(在時(shí)間片輪換法中無意義)\n" ,i+1);
cin>>p->name>>p->req_time>>p->pri;
p->run_time =0;
p->state =PROC.READY;
p->next = NULL;
g_Head->next = p;
p0 = p;
i=1;
}
for(i=1;i<N;i++)
{p = (PROC*)malloc(sizeof(PROC));
printf("Please enter the %d program's\n name\t req_time(所需要的時(shí)間)\t priority(在時(shí)間片輪換法中無意義)\n" ,i+1);
cin>>p->name>>p->req_time>>p->pri;
p->run_time =0;
p->state =PROC.READY;
p->next = NULL;
p0->next = p;
p0 = p;}
p0->next = g_Head;
}
/*Print process information*/
void PrintInfo()
{
int i=0;
PROC *p;
p = g_Head->next;
printf("Time : %d\t Process Information\n", g_TotalTimeSlices);
printf("name run_time req_time pri state\n");
printf("------------------------------------\n");
while(p!=g_Head){
printf("%4s %8d %8d %3d %5s\n", p->name, p->run_time, p->req_time,
p->pri, p->state == PROC.READY? "READY" : "END");
p = p->next;
}
printf("Current process is %s\n", g_Curr->name);
printf("-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\n");
}
/*Process run*/
void Run()
{
PROC *p_temp = g_Head;
g_Curr = g_Head->next;
PrintInfo();
while(g_Head->next != g_Head){
g_TotalTimeSlices++;
g_Curr->run_time++;
if(g_Curr->run_time >= g_Curr->req_time){
g_Curr->state = PROC.END;
PrintInfo();
p_temp->next = g_Curr->next;
free(g_Curr);
g_Curr = p_temp->next;
}
else {
PrintInfo();
g_Curr = g_Curr->next;
p_temp = p_temp->next;;
}
if(g_Curr == g_Head){
g_Curr = g_Curr->next;
p_temp = p_temp->next;
p_temp->next = g_Curr;
}
}
}
int main(int argc, char* argv[])
{ Init();
Run();
free(g_Head);
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -