您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页调度机实习报告

调度机实习报告

来源:步遥情感网


处理器调度 实习报告

一、实习题目

第二题:设计一个按时间片轮转法实现处理器调度的程序。

二、结构及说明

程序采用结构体来定义进程控制块PBC单元,整个控制块利用单向循环链表。 typedef struct tagPCB //进程控制块PBC

{ char name; struct tagPCB *next; int demand_time; int used_time; char status;

}PBC;

定义链首指针head,当前指针p; 利用时钟时间差来模拟时间片。

即:quantum = current_time – last_time; 在模拟运行中,给定时间片为1s。 三、流程图

四、源程序

#include \"stdafx.h\" #include \"time.h\" #include \"stdlib.h\" #include \"iostream.h\"

//-------------------------------------------

typedef struct tagPCB //进程控制块PBC { char name; //进程名 struct tagPCB *next; //下个进程 int demand_time; //需求时间 int used_time; //已用时间 char status; //进程状态 }PBC;

PBC *head,*p; //全局变量:链首指针,活动指针 time_t timep;

long current_time,last_time; //时间控制变量 int n,i;

//---------------------------------------//函数声明 int init_link(); int enter_PBC();

int processing_PBC();

//---------------main--------------------//主函数 int main(int argc, char* argv[]) { cout<<\"输入需执行的进程数:\"; init_link(); cin>>n;//scanf(\"%d\ for (i=0;inext))) //时间控制循环 { current_time = time(&timep); if (current_time - last_time >=1) { processing_PBC(); last_time = current_time; } } printf(\"Hello GHouan!\\n\"); return 0; }

//------------------------------------------

int init_link() /*链表初始化:仅含头指针的循环链表*/ {

head = (PBC *)malloc(sizeof(PBC)); head->demand_time = 0; //无意义 head->used_time = 32768; //无意义 head->status = 'N'; //无意义 head->next = head; p = head; return 0; }

int enter_PBC() /*进程进入PBC链表*/ { char c; int n; PBC *temp; temp = (PBC *)malloc(sizeof(PBC)); cout<<\"进程名:\"; cin>>c; temp->name = c; cout<<\"需要运行时间:\"; cin>>n; temp->demand_time = n; temp->used_time = 0; temp->status = 'R'; p->next = temp; temp->next = head; p = temp; return 0; };

int processing_PBC() /*进程运行模拟*/ { if (head == p->next) //跳过链首 { p = head; } if (p->next->status == 'E') //状态改变则退出链表 { PBC *q; q = p->next; cout<<\"进程\"<name<<\"退出队列\"<next = q->next; free(q); //释放内存 return 0; } (p->next->used_time)++; //模拟时间片分配时间并运行 cout<<\"进程\"<<(p->next)->name<<\"运行时间+1\"<if ((p->next)->used_time == (p->next)->demand_time) { p->next->status = 'E'; //若达到所需时间则改变状态 } p = p->next; return 0; };

五、运行参数及结果 初始态参数: K1 a K2 b K2 K3 2 4 0 0 R R

PCB1

PCB2 输入需执行的进程数:5

进程名:a

需要运行时间:2 进程名:b

需要运行时间:4 进程名:c

需要运行时间:1 进程名:d

需要运行时间:5 进程名:e

需要运行时间:3

终止态参数: K1 a K2

b K2 K3 2 4 2 4 E E

PCB1

PCB2 进程a时间+1

进程b时间+1 进程c时间+1 进程d时间+1 进程e时间+1 进程a时间+1 进程b时间+1

K3 c K4 1 0 R PCB3 K3 c K4 1 1 E PCB3 K4 d K5 5 0 R PCB4 K4 d K5 5 5 E PCB4 K5

e K1 3 0 R PCB5 K5 e K1 3 3 E PCB5

进程c退出队列 进程d时间+1 进程e时间+1 进程a退出队列 进程b时间+1 进程d时间+1 进程e时间+1 进程b时间+1 进程d时间+1 进程e退出队列 进程b时间+1 进程d时间+1 进程b退出队列 进程d时间+1 进程d退出队列

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务