处理器调度

上传人:新** 文档编号:503638445 上传时间:2024-01-23 格式:DOCX 页数:11 大小:67.99KB
返回 下载 相关 举报
处理器调度_第1页
第1页 / 共11页
处理器调度_第2页
第2页 / 共11页
处理器调度_第3页
第3页 / 共11页
处理器调度_第4页
第4页 / 共11页
处理器调度_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《处理器调度》由会员分享,可在线阅读,更多相关《处理器调度(11页珍藏版)》请在金锄头文库上搜索。

1、实验一 处理器调度一. 实验内容选择一个调度算法,实现处理器调度。二. 实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪状态进程个 数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处 理器情况下处理器调度,帮助自己加深了解处理器调度的工作。三. 实验题目设计一个按优先数调度算法实现处理器调度的程序。四. 实验步骤(1)程序中使用的数据结构及符号说明typedef struct _proc /*进程结构体*/char name32;/* 进程名 */int run_time; /*运行时间*/int req_time;/* 需要时间*/

2、int pri;/*优先级:时间片调度中未使用*/enum READY = 0X01,ENDstate;/*进程状态*/struct _proc *next;PROC;int g_TotalTimeSlices = 0;/*当前时间片数*/PROC *g_Head = NULL, *g_Curr = NULL; /*头节点指针和当前节点指针*/采用带头节点的循环链表存储就绪状态的进程。(2)流程图程序总体结构框图:初始化:建立5 个节点,构造循环链表。 运行部分框图:(3)源代码(附注释)#include #include #include #include using namespace s

3、td; typedef struct _proc char name32;int run_time;int req_time;int pri;enum ready,endstate; struct _proc *prior;struct _proc *next;PROC;int time=0;PROC *g_head=NULL,*g_curr=NULL;void Init()PROC *p;g_head = (PROC*)malloc(sizeof(PROC);g_head-next = NULL;g_head-prior = NULL;p = (PROC*)malloc(sizeof(PRO

4、C); strcpy(p-name, P1);p-run_time = 0;p-req_time = 2;p-pri = 1;p-state =p-ready;p-next = NULL;p-prior = g_head;g_head-next = p;g_curr=g_head-next;p = (PROC*)malloc(sizeof(PROC); strcpy(p-name, P2);p-run_time = 0;p-req_time = 3;p-pri = 5;p-state =p-ready;if(p-prig_curr-pri)p-prior=g_curr-prior; g_cur

5、r-prior-next=p; p-next=g_curr; g_curr-prior=p; g_curr=g_head-next;elseg_curr-next=p;p-prior=g_curr;p-next=NULL; g_curr=g_head-next;p = (PROC*)malloc(sizeof(PROC); strcpy(p-name, P3);p-run_time = 0;p-req_time = 1;p-pri = 3;p-state =p-ready;if(p-prig_curr-pri)p-prior=g_curr-prior; g_curr-prior-next=p;

6、 p-next=g_curr; g_curr-prior=p; g_curr=g_head-next;elseg_curr=g_curr-next;if(p-prig_curr-pri)p-prior=g_curr-prior; g_curr-prior-next=p; p-next=g_curr; g_curr-prior=p; g_curr=g_head-next;elseg_curr-next=p; p-prior=g_curr; p-next=NULL; g_curr=g_head-next;p = (PROC*)malloc(sizeof(PROC); strcpy(p-name,

7、P4); p-run_time = 0;p-req_time = 2;p-pri = 4;p-state =p-ready;if(p-prig_curr-pri)p-prior=g_curr-prior; g_curr-prior-next=p; p-next=g_curr; g_curr-prior=p; g_curr=g_head-next;elseg_curr=g_curr-next;if(p-prig_curr-pri)p-prior=g_curr-prior; g_curr-prior-next=p; p-next=g_curr; g_curr-prior=p; g_curr=g_h

8、ead-next;elseg_curr=g_curr-next;if(p-prig_curr-pri)p-prior=g_curr-prior; g_curr-prior-next=p; p-next=g_curr; g_curr-prior=p; g_curr=g_head-next;elseg_curr-next=p; p-prior=g_curr; p-next=NULL; g_curr=g_head-next;p = (PROC*)malloc(sizeof(PROC); strcpy(p-name, P5); p-run_time = 0;p-req_time = 4;p-pri =

9、 2;p-state =p-ready; if(p-prig_curr-pri)p-prior=g_curr-prior; g_curr-prior-next=p; p-next=g_curr;g_curr-prior=p;g_curr=g_head-next;elseg_curr=g_curr-next;if(p-prig_curr-pri)p-prior=g_curr-prior;g_curr-prior-next=p; p-next=g_curr; g_curr-prior=p; g_curr=g_head-next;elseg_curr=g_curr-next;if(p-prig_cu

10、rr-pri)p-prior=g_curr-prior;g_curr-prior-next=p; p-next=g_curr;g_curr-prior=p;g_curr=g_head-next;elseg_curr=g_curr-next;if(p-prig_curr-pri)p-prior=g_curr-prior;g_curr-prior-next=p;p-next=g_curr;g_curr-prior=p;g_curr=g_head-next;elseg_curr-next=p;p-prior=g_curr;p-next=NULL;g_curr=g_head-next;void Pri

11、ntInfo()PROC *t = g_head-next;printf(Time : %dt Process Informationn, time);printf(name run_time req_time pri staten);printf(n);while(t!=NULL)printf(%4s %8d %8d %3d %5sn, t-name, t-run_time, t-req_time,t-pri, t-state =t-ready? ready : end);t = t-next;printf(Current process is %sn, g_curr-name); prin

12、tf(-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+nn); void run()PROC *p;g_curr = g_head-next;PrintInfo();while(g_curr-next!=NULL)if(g_curr-pri=g_curr-next-pri) time+; g_curr-run_time+; g_curr-req_time-;g_curr-pri-; if(g_curr-req_time=0)g_curr-state =p-end;PrintInfo();g_head-next = g_curr-next; g_curr-next-pri

13、or=g_head; free(g_curr);g_curr = g_head-next;elsePrintInfo(); p=g_curr-next;if(p-next!=NULL) while(g_curr-pripri) p=g_curr-next; g_curr-next=p-next; p-next-prior=g_curr; g_curr-prior-next=p; p-prior=g_curr-prior; g_curr-prior=p;p-next=g_curr;else if(g_curr-pripri)g_curr-next=NULL; g_curr-prior-next=p; p-prior=g_curr-prior; g_curr-prior=p; p-next=g_curr;g_curr = g_head-next;PrintInfo();while(g_curr!=g_head)time+;g_curr-run_time+; g_curr-req_time-; g_curr-pri-;if(g_curr-req_time=0)g_curr-state =p-end;PrintInfo();g_head-next = g_curr-next;free(g

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号