进程调度C语言实现

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

#include

#include

#include

typedef struct ProcessNode{ // 进程结点的基本结构char name; // 进程名int service_time; // 服务时间

int arrive_time; // 到达时间

int priority; // 优先级

struct FCFS_time{ // 先到先服务

int finish_time; // 完成时间

int turnaround_time; // 周转时间

float weigtharound_time;// 带权周转时间

}FCFS_time;

struct SJF_time{ // 短作业优先

int finish_time;

int turnaround_time;

float weigtharound_time;

int flag;

}SJF_time;

struct RR_time{ // 时间片轮转的结点

int finish_time;

int turnaround_time;

float weigtharound_time;

int flag_time;// 赋值为进程的服务时间,为0 则进程完成}RR_time;

struct Pri_time{ // 优先权非抢占式

int finish_time;

int turnaround_time;

float weigtharound_time;

}Pri_time;

struct ProcessNode*next;

}ProcessNode,*Linklist;

void main()

{

int choice;

Linklist read_information();

Linklist FCFS_scheduling(Linklist head);

Linklist SJF_scheduling(Linklist head);

Linklist RR_scheduling(Linklist head);

Linklist Pri_scheduling(Linklist head);

head=read_information();// 读入进程的基本信息

do{

p=head->next;

printf("\n");

printf("\n");

printf(" 请在 1—5 之间选择 : ");

scanf("%d",&choice);

printf("\n");

printf("\n"); printf(" ********** 进程初始信息输出 ********** \n");

输出初始化后的进程基本信息 printf("\n");

printf(" 进程名称 ");

printf(" 到达时间 ");

printf(" 服务时间 ");

printf(" 优先级 ");

printf("\n");

while(p)

{

printf(" %c ",p->name);

printf(" %d ",p->arrive_time);

printf(" %d ",p->service_time); printf(" %d

",p->priority);

printf("\n");

p=p->next;

}

printf("\n");

printf(" ************************************ \n");//

输出进程的调用选择项 printf("\n");

printf("1 、FCFS---先- 到先服务

\n"); printf("2 、SJF 短作业优先

\n");

printf("3 、 RR ---- 时间片轮转 \n");

printf("4 、Pri ----- 优先权调度 \n");

printf("\n"); printf(" ************************************ \n");

{

case 1: FCFS_scheduling(head); break;

case 2: SJF_scheduling(head);

break;

case 3: RR_scheduling(head); break;

case 4: Pri_scheduling(head); break;

// case 5: exit();

}

}while(choice!=5);

Linklist read_information()// 进程读入函数{

int i;

int num;

// ProcessNode ; Linklist pro; Linklist p; Linklist head;

printf("\n");

printf(" ************ 进程调度算法************ \n");

printf("\n");

printf(" 请输入进程的个数:");

scanf("%d",&num);

printf("\n");

printf(" ************* 初始化信息************* \n");

printf("\n");

head=(Linklist)malloc(sizeof(ProcessNode));// 头结点head->next=NULL;

p=head;

for(i=1;i<=num;i++)

{

pro=(Linklist)malloc(sizeof(ProcessNode));// 创建进程结点

printf(" 输入第%d 个进程信息:\n",i);

相关文档
最新文档