欢迎来到天天文库
浏览记录
ID:57648804
大小:35.00 KB
页数:9页
时间:2020-08-30
《用时间片轮转法调度虚拟进程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《操作系统课程设计》报告学号:姓名:班级:指导教师:报告日期:仅供个人学习参考一、课设目的通过对操作系统课程的学习,熟悉进程的概念、进程的管理与存储、进程的调度,通过实践深入理解进程的调度算法。二、课设任务要求编写一个程序,可以创建若干个虚拟进程,并对若干个虚拟进程进行调度,调度策略为时间片轮转法,主要任务包括:?进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描述文件,另外调度运行结果输出到一个运行日志文件;?设计PCB适用于时间片轮转法;?建立进程队列;?实现时间片轮转调度算法,尽量可视化的展示调度的动态过程。总结程序设计的开发过程:需求分析、系统设计、系统实现及文档的收集和
2、整理。三、实验方法与设计分析每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为输入进程的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间
3、还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。仅供个人学习参考重复以上过程,直到所要进程都完成为止四、程序流程图开始设置时间片选择增加进程是结束进程PCB顺序继续增加调度进程结束打印进程PCB顺序循环五、程序源代码#include"stdafx.h"#include#include#include#include#include#inclu
4、deusingnamespacestd;ofstreammyfile("bb.txt",ios::app
5、
6、ios::trunc);typedefstructnode{charname[10];/*进程名*/intround;/*进程分配的时间片*/intcputime;/*进程消耗的CUP时间*/intneedtime;/*进程需要的CUP时间*/intcount;/*进程运行时间*/charstate;/*进程的状态:'R':运行,'W':等待,'F':结束*/structnode*next;/*指向下一个进程的指针*/}PCB;PCB*finish,*ready,*t
7、ail,*run;/*指向三个队列的队首的指针,tail为就绪队列的队尾指针*/intN;/*定义进程的数目*/voidfirstin(void){if(ready!=NULL)仅供个人学习参考{run=ready;ready=ready->next;run->state='R';run->next=NULL;}else{run=NULL;}}voidprt1(chara){cout<<"name"<<"cputime"<<"needtime"<<"count"<<"round"<<"state"<8、"needtime";myfile<<"count";myfile<<"round";myfile<<"state"<name<<""<cputime<<""<needtime<<""<count<<""<round<<""<state<name<<"";myfile<cputime<<"";myfile<needtime<<"";myfile<count<<"";myfile<round<<"";myfile<9、state<next;}p=finish;while(p!=NULL){prt2(algo,p);p=p->next;}仅供个人学习参考getchar();}voidinsert
8、"needtime";myfile<<"count";myfile<<"round";myfile<<"state"<name<<""<cputime<<""<needtime<<""<count<<""<round<<""<state<name<<"";myfile<cputime<<"";myfile<needtime<<"";myfile<count<<"";myfile<round<<"";myfile<
9、state<next;}p=finish;while(p!=NULL){prt2(algo,p);p=p->next;}仅供个人学习参考getchar();}voidinsert
此文档下载收益归作者所有