1408091036-林轶锽-处理器管理-优先数调度算法实验

上传人:回**** 文档编号:120357667 上传时间:2022-07-17 格式:DOCX 页数:11 大小:102.57KB
返回 下载 相关 举报
1408091036-林轶锽-处理器管理-优先数调度算法实验_第1页
第1页 / 共11页
1408091036-林轶锽-处理器管理-优先数调度算法实验_第2页
第2页 / 共11页
1408091036-林轶锽-处理器管理-优先数调度算法实验_第3页
第3页 / 共11页
点击查看更多>>
资源描述
江西师范大学计算机信息工程学院学生实验报告专业_计算机科学与技术正大班_ _ 姓名_林轶锽_ 学号_ 日期_ .06.15课程名称操作系统实验室名称X-4313实验名称解决器管理-优先数调度算法指引教师谢旭升成绩1、 实验目的进程调度:在多道程序或者多任务系统中,同步处在就绪态的进程有若干个。在单解决器系统中,处在运营态的进程最多只有一种,也就是说能运营的进程数远不不小于就绪态进程个数,因此必须进行进程调度,按照一定的调度算法,即根据某种原则或方略从就绪态队列中选中进程占用解决器。本实验规定学生设计一种优先数调度算法来模拟实现解决器调度过程。2、 实验原理和内容实验内容:1、进程的优先数由顾客自己指定,并且优先数值越小,优先级越高,调度时,总是选择优先级高的进程占用CPU;估计运营时间可由设计者任意指定一种时间值;2、根据需要,设计一种队首指针指向5个进程(进程名为A,B,C,D,E)构成的就绪队列中的第一种进程,再设一种目前指针指向目前正在运营的进程。3、进程调度时,采用静态优先调度。4、用非抢占式方式分派解决器。5、规定所设计的程序必须有输出语句,用于输出进程调度和运营一次后进程的变化。例如:每次被选中的进程名,就绪队列中进程的排队状况,进程控制块的动态变化。实验环节:1.建立进程控制块:输入进程相应信息(进程名,进程状态,估计运营时间和进程的优先数)。2.创立进程链表,并按照优先数进行排序输出。 3.按照优先数高者优先占用CPU的原则,进行进程调度,输出目前正在执行的进程控制块信息及在就绪队列中的进程信息。3、 程序及运营成果(或实验数据记录及分析)4、具体实现代码:#include #include typedef struct node char p_name20; /进程名 int p_priority; /进程的优先数 int p_needTime; /估计运营的时间 int p_runTime; /进程运营时间 char p_state; /进程的状态 struct node* next; /链接指针PCB;typedef PCB* list;void HighPriority();void RoundRobin();void Information(); /进入演示程序char Choice(); /演示最高优先数优先算法list SortList(PCB* HL);int main() Information(); char choice = Choice(); switch(choice) case 1: system(cls); HighPriority(); break; default: break; system(pause); return 0;void Information() printf( 按回车键进入演示程序); getchar(); system(cls);char Choice() printf(nn); printf( 1.演示最高优先数优先算法。); printf( 按1继续:); char ch = getchar(); return ch; system(cls);void HighPriority() int i = 0; int cases = 0; list processes, pt,p,psorted; list ap = NULL; /ap指向pt的前一种节点 /pt作为临时节点来创立链表,使用for语句,限制进程数为5个 processes = pt = (list)malloc(sizeof(PCB); for (; i != 5; +i) p = (list)malloc(sizeof(PCB); printf(进程号No.%d:n, i); printf(输入进程名:); scanf(%s, p-p_name); printf(输入进程优先数:); scanf(%d, &p-p_priority); printf(输入进程运营时间:); scanf(%d, &p-p_needTime); p-p_runTime = 0; p-p_state = W; p-next = NULL; pt-next = p; pt = p; printf(nn); getchar(); /接受回车/processes作为头结点来存储链表 processes = processes-next; psorted = processes; while (1) +cases; pt = processes; /对链表按照优先数排序 /psorted用来寄存排序后的链表 psorted = SortList(psorted); printf(The execute number: %dnn, cases); printf(* 目前正在运营的进程是:%sn, psorted-p_name); psorted-p_state = R; printf(qname state super ndtime runtimen); printf(%st%ct%dt%dt%dtnn, psorted-p_name, psorted-p_state, psorted-p_priority, psorted-p_needTime, psorted-p_runTime); pt-p_state = W; psorted-p_runTime+; psorted-p_priority-; printf(* 目前就绪状态的队列为:nn); /pt指向已经排序的队列 pt = psorted-next; while (pt != NULL) printf(qname state super ndtime runtimen); printf(%st%ct%dt%dt%dtnn, pt-p_name, pt-p_state, pt-p_priority, pt-p_needTime, pt-p_runTime); pt = pt-next; /pt指向已经排序的链表,判断链表与否有已用时间啊等于需要时间的 pt = psorted; while (pt != NULL) if (pt-p_needTime = pt-p_runTime) if (ap = NULL) pt = psorted-next; psorted = pt; else ap-next = pt-next; ap = pt; pt = pt-next; if (psorted-next = NULL) break; getchar(); list SortList(list HL) list SL,r,t,cp,ap; SL = (list)malloc(sizeof(PCB); SL = NULL; r = HL; while (r != NULL) t = r-next; cp = SL; ap = NULL; while (cp != NULL) if (r-p_priority cp-p_priority) break; else ap = cp; cp = cp-next; if (ap = NULL) r-next = SL; SL = r; else r-next = cp; ap-next = r; r = t; return SL;
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 各类标准


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!