文档介绍:操作系统实验报告徐州工程学院管理学院实验报告实验课程名称:计算机操作系统实验地点:南主楼七楼机房2014年2月至2014年4月专业信息管理与信息系统班级11信管2班学生姓名xxx学号指导老师刘一男实验报告实验项目:分时系统实验学时:2实验日期:2013-2-28实验要求:加深学生对多道系统中进程管理的理解,了解进程的各种状态及其转换过程,分时系统中时间片的设置及进程在时间片开始和结束时的调度过程。实验内容:(1)利用程序设计语言模拟分时系统中多个进程按时间片轮转调度算法进行进程调度的过程;(2)假设有五个进程A,B,C,D,E,它们的到达时间及要求服务的时间分别为:进程名ABCDE到达时间01234服务时间43424时间片大小为1,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。(3)修改时间片大小为2,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。(4)修改时间片大小为4,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。时间片的大小对计算机的性能产生什么影响?在时间片轮转算法中,时间片的大小对系统性能有很大的影响,如选择很小的时间片将有利于段作业,因为它能较快地完成,但会频繁地发生中断、进程上下文的切换,从而增加系统的开销,降低了CPU效率;反之,如选择太长的时间片,使得每个进程都能在一个时间片内完成,时间片轮转算法便退化为FCFS算法,无法满足交互式用户的需求。一个较为可取的大小是,时间片略大于一次典型的交互所需要的时间。这样可使大多数进程在一个时间片内完成。源代码:#include""#include""#include""#include"cstdlib"structprocess{ charname; intarri_time;//arrivedtime intserv_time;//serveredtime inthave_done_time;//已经运行时间 intdone_time;//完成时间 intturn_around_time;//周转时间 floatwei_turn_around_time;//带权周转时间 structprocess*next;};inttime=-1;inttime_slice=4;//时间片初始值为1Isempty(structprocess*head){ if(head->next==NULL) returntrue; elsereturnfalse;}voidpushline(structprocess*head,structprocess*rn){ if(rn==NULL) return; structprocess*x; x=head; while(x->next!=NULL) { x=x->next; } x->next=rn;}voidpopline(structprocess*head,structprocess**x){ if(!Isempty(head)) { *x=head->next; head->next=(*x)->next; (*x)->next=NULL; }}e(structprocess*head,structprocess*readyline){ structprocess*x; if(head->next==NULL) return; if(head->next->arri_time==time&&head->next!=NULL) { cout<<time<<"time"<<"anewprocessarrive"<<endl; popline(head,&x); pushline(readyline,x); }}voidmain(){ structprocess*head; structprocess*newnode; structprocess*tail; structprocess*readyline;//队列 readyline=(structprocess*)malloc(sizeof(process)); readyline->next=NULL; inti; structprocess*rightnow; structprocess*p; /*structprocess*n;*/ head=(structprocess*)malloc(sizeof(process)); if(!head) { cout<<"内存分配错误"<<endl; }