《2022年2022年进程调度+C语言+操作系统实验 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年进程调度+C语言+操作系统实验 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 操作系统原理实验报告- 1 - 操作系统原理实验进程调度实验报告1 目的与要求 : 1)本实验目的是通过对进程调度算法的实现和实验模拟,加深对操作系统进程调度操作功能和进程调度算法的完整理解,培养和提高学生对操作系统开发的兴趣,以及进程调度程序的开发与应用能力;2)理论上必须深刻理解优先权调度算法和时间片轮转调度算法的基本思想和原理;3)独立使用C或 VC+ 编程语言编写优先权调度
2、或时间片轮转算算法调度模拟程序;4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)5)于 2009 年 10 月 15 日以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交) 。2 实验内容或题目1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。4)本次实验内容(项目)的详细说明以及要求请参见实验指导书。3 实验步骤与源程序#include #i
3、nclude 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 操作系统原理实验报告- 2 - #include void Check(); typedef struct node char name10; int span;/轮转时间int take;/占用时间int used;/已用的时间int need;/还需要的时间char status;/状态struct node *next; PCB; PCB *ready,*fin
4、ish,*tail,*rear; void Print(PCB *p) while(p!=NULL) printf(%3s%5d%5d%5d%5d%5cn,p-name,p-used,p-need,p-take,p-span,p-status); p=p-next; void Creat(int N) PCB *p; int time; char na10; ready=NULL; /*就绪队列头指针*/ finish=NULL; /*完成队列头指针*/ tail=NULL; rear=NULL; printf(Enter name and time of round process n);
5、for(int i=1;iname,na); p-span=2; p-take=0; p-used=0; p-need=time; p-status=J; p-next=NULL; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 操作系统原理实验报告- 3 - if(ready=NULL)ready=p;tail=p; elsetail-next=p;tail=p; printf(运行结果n); void Print1() /
6、输出 ready 与 finish队列PCB *p; p=ready; printf(name,used,need,take,span,staten); Print(p); p=finish; Print(p); void Run() Print1(); ready-used+=1; ready-need-=1; ready-take+=1; ready-status=R; if(ready-need!=0)/进程时间need 片是否为0 if(ready-takespan) /* 占用时间是否到轮转时间,没到就继续,到了就排到就绪队列尾*/ Run(); else tail-next=rea
7、dy;ready=ready-next;tail=tail-next; tail-status=J;tail-take=0;tail-next=NULL; Check(); else/进程撤销,放入撤销队列 if(finish=NULL) finish=ready;rear=finish; else rear-next=ready;rear=rear-next; ready=ready-next;rear-next=NULL;rear-status=F;rear-take=0; Check(); /Check();由于上多次文调用Run本身递归,此句也会被多调用,产生在结束时的冗余结果; 名师
8、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - 操作系统原理实验报告- 4 - void Check() if(ready!=NULL) Run(); else Print1(); main() int N=0; printf(输入进程数目:); scanf(%d,&N); Creat(N); Check(); 4 测试数据与实验结果(可以抓图粘贴)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 操作系统原理实验报告- 5 - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -