




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编人教版二年级语文教师教学研讨计划
- 园林景观工程冬季施工质量控制措施
- 护理患者转运流程
- 厂房建设分部分项施工方案及质量保证措施
- 服务业贯彻优化营商环境条例心得体会
- 城市燃煤电厂管线加固保护措施
- 康复科室健康教育工作计划
- 能源企业供应商管理办法范文
- 农业科研实习总结范文
- 【真题】人教版三年级下册期末测试数学试卷(含解析)2024-2025学年湖北省十堰市郧西县
- 2025至2030中国血栓弹性成像仪行业发展趋势分析与未来投资战略咨询研究报告
- 建筑工程管理考试模拟题及答案
- 2025年 老年人能力评估师三级考试模拟试卷附答案
- 浙江省“桐浦富兴”教研联盟2024-2025学年高一下学期6月学考模拟化学试卷(含答案)
- 肛周良性疾病诊疗要点
- 乡镇农村公墓管理制度
- 脓毒血症护理查房报告讲课件
- 不良网贷管理制度
- DL∕T 5452-2012 变电工程初步设计内容深度规定
- 【吉尔吉斯和国经商指南-法律篇】
- 百家丽-中国-照明电器有限公司的精益生产应用
评论
0/150
提交评论