2022年2022年进程调度程序设计 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年2022年进程调度程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年进程调度程序设计 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 1 页 共 11 页一.设计目的:通过课程设计,加深对操作系统对程序执行的理解,掌握操作系统的多程序运行原理,能模拟操作系统设计相应的进程调度算法,掌握操作系统的基本原理及功能,具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。二.设计内容:1、设计进程控制块PCB表结构,分别适用于可强占的优先数调度算法和循环轮转调度算法。2、建立进程就绪队列。对两种不同算法编制入链子程序。3、编制两种进程调度算法:1)可强占的优先进程调度;2)循环时间片轮转调度4、设计操作系统运行的指令。三设计过程1、实现功能1、设计进程控制块PCB表结构,分别适用于可强占的优先数调度算法和循环轮转调度
2、算法。2、建立进程就绪队列。对两种不同算法编制入链子程序。3、编制两种进程调度算法:1)可强占的优先进程调度;2)循环时间片轮转调度4、设计操作系统运行的指令。2、设计思路1、本程序用两种算法对多个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。2、为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。3、在优先数算法中,优先数的值为31 与运行时间的差值。进程每执行一次,优先数减1,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行
3、了1 个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。4、设计程序指令,MOV n /把整数 n 赋给累加器A SAV m /把累加器A的值存入地址M 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -第 2 页 共 11 页ADD n /从累加器A的值减去整数n,结果送到累加器A。SUB n /从累加器 A的值减去整数n,结果送到累加器A。MUL n /从累加器 A的值乘以整数n,结果送到累加器A。DIV n /从累加器 A的值除以整数n,结果送到累加器A。JEQ m /F为 0 跳转到 m JLG m /F大于 0 跳转到 m
4、JLE m /F大于等于 0 跳转到 m JMP m /无条件跳转到m OUT port /累加器的内容输出到端口port。port 为 0,指显示器3、算法和流程图可强占优先调度算法实现过程流程图:强占优先调度算法实现过程流程图名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 11 页 -第 3 页 共 11 页循环轮转算法实现过程流程图:循环轮转算法实现过程流程图四.设计总结:通过该课程设计,加深了对系统进程调度机制的理解。在抢占方式中实践了“抢占”必须遵循的原则:优先权原则,短进程优先原则,时间片原则。认识了几种进程调度算法的优缺点以及应用范围。加强C的编程能力。名师资料总结
5、-精品资料欢迎下载-名师精心整理-第 3 页,共 11 页 -第 4 页 共 11 页参考文献1 Abraham Silberschatz.操作系统概念(第 8 版 影印版).北京:高等教育出版社,2010.2 Gary Nutt(著),潘登(译).Linux操作系统内核实习.北京:机械工业出版社,2004.3 于渊.自己动手写操作系统(影印版).电子工业出版社,2005名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 11 页 -第 5 页 共 11 页附录程序源代码:1、程序头文件#ifndef _VIRTUAL_KERNEL_#define _VIRTUAL_KERNEL_#
6、include iostream.h#include string.h#include stdio.h#include time.h#include#define NOP 00/空指令:消耗一个机器周期#define MOV 01/传送指令:立即数赋值给寄存器A#define ADD 02/加法指令:寄存器A 加立即数#define OUT 80/输出指令:寄存器 A 的值输出到端口(端口号 01-表示显示器)#define MAX_PID 10/系统并发运行的进程数的最大值/定义 PCB 结构类型struct PCB int A;/累加器 A int PC;/程序计数器PC char*add
7、r;/程序加载起始地址int length;/程序大小int runtime;int waittime;int state;int pname;int pri;/优先级数struct PCB*next;pcbsMAX_PID;/*运行指针*/struct PCB*running;/*高优先级就绪队列头指针*/struct PCB*Hready;/*低优先级队列头指针*/struct PCB*Lready;/*等待队列头指针*/struct PCB*wait;int sig=0;int cur_pid;/当前 _进程号int readyNum=MAX_PID;/*以下是函数说明*/*利用循环实现
8、延迟*/void delay();void proc(struct PCB*running);/*将 node 插入到 head所指示的队列的尾部*/void InsertIntoQueueTail(struct PCB*head,struct PCB*node);/*进程调度函数*/int proc_switch();/*进程等待函数*/void proc_wait();/*进程唤醒函数*/int proc_wakeup();名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 11 页 -第 6 页 共 11 页void initSystem(void);/初始化系统int loa
9、dProgram(char*name);/加载应用程序int exeInstruction(int pid);/执行指令void removeFromQueue(struct PCB*head,struct PCB*node);#endif 2、程序文件#include vknl.h int main(int argc,char*argv)int i;if(argc!=2)argv1=app1.bin;/默认应用程序initSystem();for(i=0;i0;)switch(sig)case 0:/*无进程等待调度,打印信息并返回*/if(!proc_switch()printf(No P
10、rocess to run,press any key to return:n);getchar();exit(-1);break;case 1:proc_wait();break;case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:proc(running);break;default:printf(nerror!);exit(-1);return 0;/退出虚拟内核名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 11 页 -第 7 页 共 11 页/初始化系统void initSyst
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年进程调度程序设计 2022 进程 调度 程序设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内