版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上1 处理机调度1.1 实验内容及要求实验内容:按优先数调度算法实现处理器调度。实验要求:能接受键盘输入的进程数、进程标识、进程优先数及要求运行时间,能显示每次进程调度的情况:运行进程、就绪进程和就绪进程的排列情况。1.2 实验目的 本实验模拟在单处理器环境下的处理器调度,加深了解处理器调度工作。1.3 实验环境本实验的设计基于Windows7操作系统DevC+5.11环境,用C语言实现编程。1.4 实验思路(1) 每个进程用一个PCB来代表。PCB的结构为:进程名作为进程标识。优先数赋予进程的优先数,调度时总是选取优先数大的进程先执行。要求运行时间假设进程需要运行的单
2、位时间数。状态假设两种状态:就绪和结束,用R表示就绪,用E表示结束。初始状态都为就绪状态。指针按优先数的大小把5个进程连成队列,用指针指出下一个进程PCB的首地址。(2) 开始运行之前,为每个进程确定它的“优先数”和“要求运行时间”。通过键盘输入这些参数。(3) 处理器总是选择队首进程运行。采用动态改变优先数的办法,进程每运行1次,优先数减1,要求运行时间减1。(4) 进程运行一次后,若要求运行时间不等于0,则将它加入就绪队列,否则,将状态改为“结束”,退出就绪队列。(5) 若就绪队列为空,结束,否则转到(3)重复。1.5 数据结构与全局变量typedef struct pcbint pnam
3、e;/进程名int priority;/优先级int runTime;/所需时间int state;/状态struct pcb* next;/下一个进程控制块PCB; /进程控制块int num;/存储进程数PCB readyHead;/头结点,不存储进程PCB *readyEnd;/指向尾结点的指针1.6 函数说明(1)主函数main() 输入进程数并调createProcess()初始化进程;若有进程,则依次调用sortProcess()、runProcess()、printProcessLink()和printProcessInfo()。(2) 进程创建函数createProcess()
4、 输入进程标识、优先级和运行时间进行初始化。(3)进程排序函数sortProcess() 用冒泡排序算法根据进程的优先级进行降序排序,每次排序之后优先级最高的进程放在就绪队列首。(4)进程运行函数runProcess() 将数组首的进程优先级和所需时间减1; 若剩余所需时间为0,则PCB状态标记为E(结束)。(5)输出函数printProcessLink()和printProcessInfo() printProcessLink()输出进程链,printProcessInfo()输出进程控制块详细信息。1.7 运行结果表1.1进程数5序号优先级运行时间134252341415523对表1.1数
5、据的运行结果:1.8 实验心得指针操作是真的烦。1.9 实验代码#include <stdlib.h>#include <string.h>#include <stdio.h>#include <conio.h>#define N 32void createProcess();void sortProcess();void printProcessLink();void printProcessInfo();void runProcess();typedef struct pcbchar pnameN;/进程名 int priority;/进程优
6、先级 int runTime;/进程还需运行的时间片 char state;/R代表ready,E代表endstruct pcb* next;PCB;int num; /进程数 PCB readyHead;/头结点,不存储进程 PCB *readyEnd; /尾结点指针 int main()printf("*n");printf("*实习1-1 按优先级调度算法实现处理器调度*n");printf("*n");createProcess(); if(num=1)printProcessInfo();printf("%s st
7、artsn", readyHead.next->pname);printf("%s is running.n", readyHead.next->pname);printf("%s ends after %d slice(s).", readyHead.next->pname, readyHead.next->runTime);else while(readyHead.next!=NULL) sortProcess();printProcessInfo();printProcessLink();runProcess();
8、return 0; void createProcess()PCB *p, *prior;printf("How many process do you want to run:");scanf("%d", &num);while(num<=0)printf("Number is invalid. Input again:n");scanf("%d", &num);p = (PCB*)malloc(sizeof(PCB);prior = &readyHead;prior->nex
9、t=p;for (int i = 0; i < num; i+)printf("Input NO.%2d process name:", i+1);scanf("%s", p->pname);printf(" priority:");scanf("%d", &(p->priority);printf(" runTime:");scanf("%d", &(p->runTime);p->state = 'R'p->
10、;next = (PCB*)malloc(sizeof(PCB);prior=p;p=p->next;free(p);p = NULL;prior->next=NULL;readyEnd=prior; printf("n");void sortProcess()char nameN;int i,j, priorityNum, timeNum;PCB *p, *rear; for(p=readyHead.next; p!=NULL; p=p->next) for(rear=p->next; rear!=NULL; rear=rear->next)
11、 if(p->priority<rear->priority) strcpy(name, p->pname); priorityNum=p->priority; timeNum=p->runTime; strcpy(p->pname, rear->pname); p->priority=rear->priority;p->runTime=rear->runTime;strcpy(rear->pname, name);rear->priority=priorityNum;rear->runTime=time
12、Num; void printProcessLink()PCB *p=readyHead.next;printf("process link: n");while(p!=NULL)printf("%s",p->pname);p=p->next;if(p!=NULL) printf("->");printf("n");void printProcessInfo()PCB *p=readyHead.next;printf("process information before running
13、:n");printf("=n"); printf("NAME PRIORITY RUNTIME STATUS NEXTn"); printf("=n"); while(p!=NULL)printf("%-16s %-8d %-8d %-8s %sn",p->pname, p->priority, p->runTime, (p->state='R')?"ready":"end", p->next->pname);p=p->next;void runProcess()PCB *p=readyHead.next; printf("process run:n"); printf("%sn",p->pname);p->priority-;p->runTi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025安徽鸠控国有资本投资集团有限公司及二级公司招聘7人笔试历年参考题库附带答案详解
- 2025安徽蚌埠竞先数据服务有限公司招聘暨综合笔试历年参考题库附带答案详解
- 2025安徽核减或庐江县乡村振兴投资有限公司招聘工作人员(第二批)招聘笔试参考题库附带答案详解
- 2025安徽六安城市建设投资有限公司招聘与第一轮笔试历年参考题库附带答案详解
- 2025天津高速建设工程有限公司实习生招聘1人笔试历年参考题库附带答案详解
- 2025国能数智科技开发(北京)有限公司系统内招聘19人笔试历年参考题库附带答案详解
- 2025四川省煤炭产业集团有限责任公司招聘5人笔试历年参考题库附带答案详解
- 2025吉林省路桥工程(集团)有限公司西南地区项目部劳务派遣人员招聘13人笔试历年参考题库附带答案详解
- 2025北京中水科工程集团有限公司监测事业部实习生招聘笔试历年参考题库附带答案详解
- 基于物联网的校园武术比赛智能裁判与计分系统设计课题报告教学研究课题报告
- 妊娠期糖尿病管理知识试题及答案
- 外研版(三起)五年级英语上册教学计划(含进度表)
- 新课标小学语文六年级下册全册核心素养教案(教学设计)
- 教科版九年级物理上册专项突破提升检测(四)电磁学实验及作图含答案
- 解决劳资纠纷与调解制度
- 护理个人先进
- DB34-T 4877-2024 智慧检验检测实验室建设指南
- GB/T 32399-2024信息技术云计算参考架构
- 食堂设备使用及保养培训
- 村庄异地搬迁安置点项目可行性研究报告
- 《正常人体形态学》考试复习题库大全(含答案)
评论
0/150
提交评论