电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

时间片轮转调度算法

时间片轮转调度算法_第1页
1/6
时间片轮转调度算法_第2页
2/6
时间片轮转调度算法_第3页
3/6
时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法是时间片调度。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则 CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则 CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,,当进程用完它的时间片后,它被移到队列的末尾。 一 基本原理 在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把 CPU分配给队首进程,并令其执行一个时间片.时间片的大小从几 ms到几百 ms.当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片.这样就可以保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间片的处理机执行时间。 二 C语言仿真 这里我们不讨论时间片的确定问题,我们只是针对这个算法进行一下模拟。 这我假设有 5个进程,时间片的大小为 2,程序如下: #include #include #define MAX 5 //进程数量 #define RR 2 //时间片大小 /*时间片轮转算法*/ struct pro { int num; int arriveTime; int burst; int rt; //记录进程被运行的次数 struct pro *next; }; int TOTALTIME; //记录所有进程的总时间 int i; //函数声明 struct pro* creatList(); void insert(struct pro *head,struct pro *s); struct pro* searchByAT(struct pro *head,int AT); void del(struct pro* p); int getCount(struct pro *head,int time); struct pro* searchEnd(struct pro *head); void move(struct pro *headF,struct pro *headT,int n); struct pro* creatList() //创建链表,按照进程的到达时间排列,记录所有进程的信息 { struct pro *s; struct pro* head=(struct pro*)malloc(sizeof(struct pro)); head->next=NULL; TOTALTIME=0; for(i=0;inum)); printf("请输入到达时间:\n"); scanf("%d",&(s->arriveTime)); printf("请输入运行时间:\n"); scanf("%d",&(s->burst)); TOTALTIME+=s->burst;...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

时间片轮转调度算法

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部