日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统笔记(6):RR轮转调度算法

發(fā)布時間:2023/12/20 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统笔记(6):RR轮转调度算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這比起說是操作系統(tǒng)實驗,不如說是一個模擬算法而已,
當然目標是為了讓大家更清楚地了解RR輪轉(zhuǎn)調(diào)度算法原理

原理上,書上課上都講過,實現(xiàn)方式上推薦直接模擬一個隊列(本來就應(yīng)該是這樣實現(xiàn)的)http://c.biancheng.net/view/1247.html

下面詳解一下模擬過程:

這里宏變量TIMESLICE決定輪轉(zhuǎn)的一次時間片長度單位
首先讀入數(shù)據(jù),
n為總的進程數(shù)量,
arr數(shù)組中存放各進程到達時刻
use數(shù)組中存放各進程需要的服務(wù)時間

que隊列,h、t是隊列頭尾下標,當然由于設(shè)計成循環(huán)隊列,要對隊列長取模才是實際的下標。

nowT為當前時刻,arrPtr為依次到達的進程下標
run為上一時間單位運行的進程下標

在具體模擬中while(nowT<=1000)
首先判斷有無新進程到達,有的話依次加入到隊列尾部
隨后如果上一個進程未結(jié)束,是被別的進程搶占了,那么它自己還需要的服務(wù)時間不為0,那么放回隊列尾。
后取出隊列頭代表的進程,分別處理 能在一個時間片內(nèi)做完和不能的情況
當然取不出來就空過一個時間單位。

#include<stdio.h>#define F(i,a,b) for(int i=a;i<=b;i++) #define MAXN 500 #define TIMESLICE 1 int main(){int n;scanf("%d",&n);int arr[MAXN];int use[MAXN];F(i,1,n){scanf("%d%d",arr+i, use+i);}int h=0,t=0;int que[MAXN];int nowT=0;int arrPtr = 1;int run=0;while(nowT <= 1000){while(arr[arrPtr]<=nowT && arrPtr<=n){ //先看有無當前時刻到達的新進程,加入隊列printf("its %d now\n", nowT);printf("at time %d process %d has arraived\n",arr[arrPtr], arrPtr);que[t % MAXN] = arrPtr;arrPtr++;t += 1;}if (run!=0){ //新進程加入后再把老進程加入隊列if(use[run]){que[t] = run;t += 1;}} if(h == t) {nowT++;continue;}//隊列為空,沒有進程要調(diào)度,空過printf("its %d now the que is :",nowT);F(i,h,t-1){printf(" %d ",que[i % MAXN]);}printf("\n");run = que[h % MAXN];h += 1;if(use[run]<TIMESLICE){printf("now processing %d for %d tick\n", run,use[run]);nowT += use[run];use[run] = 0;}else{printf("now processing %d for %d tick\n", run,TIMESLICE);use[run] -= TIMESLICE;nowT += TIMESLICE;}}return 0; }

測試

輸入數(shù)據(jù)如下:

輪轉(zhuǎn)時間片為1個單位時

輪轉(zhuǎn)時間片為3個單位時

兩者自然都是20時刻結(jié)束調(diào)度

結(jié)語

RR算法用隊列直接模擬是相對很簡單的,也很適合在考試時使用,但是其它的調(diào)度算法就不一定了,需要用輔助的數(shù)組存儲信息之類的,符合原理地適時調(diào)整吧~

總結(jié)

以上是生活随笔為你收集整理的操作系统笔记(6):RR轮转调度算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。