当前位置:文档之家› 广工_操作系统_实验报告

广工_操作系统_实验报告

操作系统实验报告学院_____计算机学院_______ 专业______软件工程________ 班级______ ________ 学号_____ _______ 姓名_______ _________ 指导教师(2010年10 月)学号:姓名:协作者:________实验__一__题目__ 进程调度___第周星期___一、实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。

二、实验内容和要求编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。

·每个进程有一个进程控制块(PCB)表示。

进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行的时间、已用CPU时间、进程状态等。

·进程的优先数以及需要的运行时间事先由人为指定(也可以随机数产生)。

·如果运行一个时间片后进程的已占用CPU时间已达到所需要的运行时间,则撤销该进程,如果还未达到,则把它送回队尾。

三、实验主要仪器设备和材料实验环境硬件环境:IBM-PC 或兼容机软件环境:C语言编程环境四、实验原理及设计方案1、实验原理将程序顺序的输入进程队列后,开始执行程序,当运行了一个时间片后,如果进程所占的CPU时间达到所需的运行时间时,该进程完成,并撤销该进程,否则则把进程送回队尾。

2、设计方案用一个进程控制块(PCB)表示进程。

输入进程名称,优先级,运行时间后,通过模拟系统对进程采用“轮转法”调度,得到各个时间片进程的运行情况。

3、相关数据结构的说明struct pcb // 定义进程控制块 PCB{char name[10]; // 进程名称char state; // 进程当前状态int super; // 进程优先级int ntime; // 进程运行所需时间int rtime; // 进程已运行时间struct pcb* link; // 连接到队列中下一个进程的指针}4、程序流程图(详细)5、给出程序中源程序名和可执行程序名。

源程序名:pcb.cpp可执行程序名:pcb.exe输入数据:in.txt输出数据:out.txt6、程序清单(源程序中要附有详细的注释)#include <stdio.h>#define getpch(type) (type*)malloc(sizeof(type))struct pcb // 定义进程控制块PCB{char name[10]; // 进程名称char state; // 进程当前状态int super; // 进程优先级int ntime; // 进程运行所需时间int rtime; // 进程已运行时间struct pcb* link;}*ready,*p,*rear;typedef struct pcb PCB;void push() // 建立将进程按FCFS 排入队列的函数{rear->link = p;rear = p;p->link = NULL;p->state = 'w'; // 插入队尾后把状态改成'w'}void input() // 建立进程控制块函数{int i,num;printf(" 请输入进程数量");scanf("%d",&num);p=getpch(PCB); // 给p 分配空间for( i=0; i< num; i++){printf("\n 进程号No.%d ",i);p = getpch(PCB);printf(" 输入进程名:");scanf("%s",p->name);printf(" 输入进程优先等级:");scanf("%d",&p->super);printf(" 输入进程所需运行时间:");scanf("%d",&p->ntime);p->rtime = 0; // 为进程的已运行时间初始化为0p->state = 'w'; // 为进程的状态初始化为'w'p->link = NULL;push();}}void disp(PCB* pr) // 建立进程显示函数{printf("\n qname\tstate\tsuper\tndtime\truntime \n");printf("| %s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->super);printf("|%d\t",pr->ntime);printf("|%d\t",pr->rtime);printf("\n");}void check() // 建立进程查看函数{system("cls");PCB *pr;pr=ready->link;while(pr!=NULL) // 队列从头到尾显示进程{disp(pr);pr = pr->link;}}void destroy() // 建立进程撤消函数{disp(p);printf("\n 进程[%s] 已完成。

\n",p->name);free(p); // 释放p}void running() // 建立进程就绪函数{p->rtime++; // 已运行时间增加if(p->rtime == p->ntime) // 当已运行时间等于所需运行时间时{p->state = 'f'; // 状态更新为'f'ready->link = p->link;destroy(); // 调用destory()函数,释放pp = ready->link;system("pause"); // 暂停,可了解当前状态}else // 如果进程还没达到所需运行时间,则把进程送入队尾{ready->link = p->link;push();p = ready->link;}}int main() // 主函数{int t=0; // 定义t表示已用的时间片rear = getpch(PCB); // 为rear分配内存ready = rear; // 把ready指向rearinput(); // 输入进程p = ready->link;check();while(ready->link) // 当进程队列中还有进程时运行{t++;p->state = 'r'; // 将进程状态设置为readycheck();printf("第%d个时间片:",t);printf("正在运行\n");system("pause"); // 显示正在运行的进程队列running();check();printf("第%d个时间片:",t);printf("运行完成\n");system("pause"); // 显示运行完成后的进程队列}printf("\n全部进程已运行完成!\n");system("pause");return 0;}五、实验结果及分析1、运行结果(要求截图)(能动态说明执行结果)(要求截图尺寸大小适中)(1)输入数据(2)开始运行,进程队列如图(3)经过3个时间片,进程【333】完成(4)经过9个时间片,进程【555】完成(5)经过10个时间片,进程【111】完成(6)经过12个时间片,进程【444】完成(7)经过13个时间片,进程【222】完成(8)全部进程运行完成2、实验结果的分析及说明程序输出与编写程序的目的一致,直观的反应了轮转法进程调度的运行规则,显示了完成各个进程运行所需要的时间,以及各个进程完成的顺序。

六、调试总结及心得体会(调试过程中小结、所遇问题及解决方法、心得体会)整个调试过程中并未遇到太大的问题,程序编写过程也很顺利,运行程序模拟进程调度之后,更直观的了解了轮转法进程调度的过程。

七、思考题1、分析不同调度算法的调度策略,比较不同调度算法的优缺点,总结它们的适用范围。

答:动态有限权算法:动态优先权是指在创建进程时所创建的优先权,会随进程的推进或者等待时间的增加而改变,以便获得更好的调度性能。

处理机为每个进程分配一定的时间片,在就绪队列中,优先权高的进程将优先获得处理机,进程在进去运行完响应的时间片后,如没完成,优先权减1,从新回到就绪队列等待分配处理机。

时间片的轮转法:系统将所有进程排成一个队列,按照先来先服务的原则,对队列首的进程进行处理,每个进程在用完自己的时间片后,从新回到队尾进行排队。

每运行一次,进程的需要时间减1,直到就绪队列为空!学号:姓名:协作者:________实验__二__题目__ 作业调度___第周星期___一、实验目的本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。

二、实验内容和要求作业调度算法:采用基于先来先服务的调度算法。

可以参考课本中的方法进行设计。

对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。

三、实验主要仪器设备和材料硬件环境:IBM-PC或兼容机软件环境:C语言编程环境四、实验原理及设计方案1、实验原理采用多道程序设计方法的操作系统,在系统中要经常保留多个运行的作业,以提高系统效率。

作业调度从系统已接纳的暂存在输入井中的一批作业中挑选出若干个可运行的作业,并为这些被选中的作业分配所需的系统资源。

对被选中运行的作业必须按照它们各自的作业说明书规定的步骤进行控制。

2、设计方案(1)作业调度程序负责从输入井选择若干个作业进入主存,为它们分配必要的资源,当它们能够被进程调度选中时,就可占用处理器运行。

作业调度选择一个作业的必要条件是系统中现有的尚未分配的资源可满足该作业的资源要求。

但有时系统中现有的尚未分配的资源既可满足某个作业的要求也可满足其它一些作业的要求,那么,作业调度必须按一定的算法在这些作业中作出选择。

相关主题