版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 研发试验突发安全事故应急预案
- 健康管理师二级《理论知识》模拟考试试卷附答案
- 体育专业课程体系优化设计方案
- 水库大坝运行维护技术手册
- 2026广东江门市康复医院招聘2人(第二期)备考题库含答案详解(夺分金卷)
- 2026山东东营港经济开发区所属学校第二次招聘教师2人笔试题库(真题汇编)附答案详解
- 2026年云南交通技师学院银龄技师招募12人考前冲刺试卷及完整答案详解【历年真题】
- 山东德州经开区抬头寺中学2026-2027学年物理八上期末综合测试模拟试题含解析
- 自贡市大安区2027届六上数学期末调研试题含解析
- 2026年高职(铁道信号自动控制)信号控制技术综合测试试题及答案
- 重庆市“五方面人员”选拔考试题型及答案(完整版)
- 2026江苏南通市海门区招聘区镇(街道)专职安全巡查员第二批49人考试参考题库及答案详解
- 2026年度驻马店市消防救援支队招聘消防文员35名笔试备考题库及答案详解
- 2025年国企资金管理岗招聘笔试试题及答案
- 项目管理及监理一体化服务合同模板
- 特种门窗安装施工工艺流程
- JJF(石化)085-2023开路式红外可燃气体探测器校准规范
- 移民信访工作制度
- 中国重症康复指南(2025版)
- 老年三叉神经痛手术麻醉的麻醉管理
- 小学生中医药科普知识讲座
评论
0/150
提交评论