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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

先来先服务调度算法(C++实现)

發(fā)布時間:2025/3/20 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 先来先服务调度算法(C++实现) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

算法思想:

先來先服務調度算法:

(1)假設系統(tǒng)中有5個進程,每個進程有一個進程控制塊(PCB)來標識。進程控制塊內容包括:進程名,鏈接指針,到達時間,估計運行時間,進程狀態(tài)。

進程名即進程標識。

鏈接指針:按照進程到達系統(tǒng)的時間將處于就緒狀態(tài)的進程連接成一個就緒隊列。指針指出下一個到達進程的進程控制塊地址。最后一個進程的鏈接指針為NULL。

估計運行時間:可由設計者任意指定一個時間值。

到達時間:進程創(chuàng)建時的系統(tǒng)時間或由用戶指定。調度時。總是選擇到達時間最早的進程。

進程狀態(tài):為簡單起見,這里假定進程有兩種狀態(tài):就緒和完成。并假定進程一創(chuàng)建就處于就緒狀態(tài),用R表示。當一個進程運行結束時,就將其置成完成態(tài),用C表示。

(2)設置一個隊首指針head,用來指出最先進入系統(tǒng)地進程。各就緒進程通過鏈接指針連在一起。

(3)處理機調度時總是選擇對首指針指向的進程投入運行。由于本實驗是模擬試驗,所以對被選中進程并不實際啟動運行,而只是執(zhí)行:估計運行時間減1。用這個操作來模擬進程的一次運行,而且省去進程的現(xiàn)場保護和現(xiàn)場恢復工作。

(4)在所設計的程序中應有顯示或打印語句,能顯示或打印正運行進程的進程名、已運行時間、還剩時間、就緒隊列中的進程等。所有進程運行完成時,給出各進程的周轉時間和平均周轉時間。

代碼:

#include<iostream> #include<string> #include<queue> using namespace std; typedef struct pcb {string pName; //進程名float arriveTime;//到達時間float serviceTime;//服務時間float estimatedRunningtime;//估計運行時間float startTime;//開始運行時間float finishTime;//完成運行時間float turnaroundTime;//周轉時間float weightedTuraroundTime;//帶權周轉時間char state;//狀態(tài)bool operator<(const pcb &a)const {return arriveTime > a.arriveTime;} }PCB;void createProcess(priority_queue<PCB> &p, int n) {//創(chuàng)建n個進程cout << endl << endl << "創(chuàng)建進程" << endl;PCB r;//工作結點for (int i = 0; i<n; i++) {cout << "請輸入第" << i + 1 << "個進程的名字、到達時間、服務時間(例如:A 12 8):";cin >> r.pName;cin >> r.arriveTime;cin >> r.serviceTime;r.startTime = 0;r.finishTime = 0;r.estimatedRunningtime = r.serviceTime;r.turnaroundTime = 0;r.weightedTuraroundTime = 0;p.push(r);} }void printProcess(priority_queue<PCB> p) {//輸出所有進程的信息PCB q;cout << "進程名\t到達時間 服務時間 開始時間 完成時間 周轉時間 帶權周轉時間" << endl;while (p.size() != 0) {q = p.top();cout << q.pName << "\t" << q.arriveTime << "\t " << q.serviceTime << "\t ";cout << q.startTime << "\t " << q.finishTime << "\t " << q.turnaroundTime << "\t " << q.weightedTuraroundTime << endl;p.pop();}cout << endl << endl; }void runProcess(priority_queue<PCB> &p, priority_queue<PCB> &q, int n) {//運行進程PCB s;float finishTimeOfPriorProcess;for (int i = 0; i<n; i++) {s = p.top();if (i == 0) {//當前進程是第一個進程while (s.estimatedRunningtime != 0) {//輸出當前運行進程的信息cout << "正在運行的進程" << endl;cout << "進程名\t到達時間 服務時間 已運行時間 還剩運行時間" << endl;cout << s.pName << "\t" << s.arriveTime << "\t " << s.serviceTime << "\t ";cout << s.serviceTime - s.estimatedRunningtime << "\t " << s.estimatedRunningtime << endl;s.estimatedRunningtime--; //當前進程的估計運行時間減1}s.startTime = s.arriveTime;s.finishTime = s.startTime + s.serviceTime;s.turnaroundTime = s.finishTime - s.arriveTime;s.weightedTuraroundTime = float(s.turnaroundTime*1.0 / s.serviceTime);s.state = 'C';finishTimeOfPriorProcess = s.finishTime;}else {//當前進程不是第一個進程while (s.estimatedRunningtime != 0) {cout << "正在運行的進程" << endl;cout << "進程名\t到達時間 服務時間 已運行時間 還剩運行時間" << endl;cout << s.pName << "\t" << s.arriveTime << "\t " << s.serviceTime << "\t ";cout << s.serviceTime - s.estimatedRunningtime << "\t " << s.estimatedRunningtime << endl;s.estimatedRunningtime--;//當前進程的估計運行時間減1}s.startTime = finishTimeOfPriorProcess>s.arriveTime ? finishTimeOfPriorProcess : s.arriveTime;s.finishTime = s.startTime + s.serviceTime;s.turnaroundTime = s.finishTime - s.arriveTime;s.weightedTuraroundTime = float(s.turnaroundTime*1.0 / s.serviceTime);s.state = 'C';finishTimeOfPriorProcess = s.finishTime;}q.push(s);p.pop();cout << "進程" << s.pName << "執(zhí)行結束之后就緒隊列中的進程" << endl;printProcess(p);}cout<< endl << endl; }int main() {priority_queue<PCB> p,q;int n;cout << "請輸入進程的個數(shù):";cin >> n;createProcess(p, n);runProcess(p, q, n);cout << "所有進程執(zhí)行結束之后的相關情況" << endl << endl;printProcess(q);getchar();getchar();return 0; }

實驗結果:

總結

以上是生活随笔為你收集整理的先来先服务调度算法(C++实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 杨幂一区二区三区免费看视频 | 四虎国产 | 在线观看国产小视频 | 手机av在线免费观看 | 天天干天天色 | 久草欧美 | 一区欧美 | 色婷婷六月 | 毛片毛片毛片毛片毛片 | 亚洲精品国产欧美在线观看 | 亚洲美女啪啪 | 国产精品久久久久久久一区探花 | 成人av一区二区三区在线观看 | 黄色在线播放网站 | 色图视频| 国产不卡视频 | 新av在线 | 成人免费看av | 亚洲欧美另类自拍 | 久久国产人妻一区二区免色戒电影 | 久久久国产精 | 亚洲国产精品久久久久久久 | 日本高清不卡二区 | 国产一区二区三区高清 | 一个人看的www片免费高清中文 | 久久久久久网址 | 艹男人的日日夜夜 | 免费处女在线破视频 | 91久久久久久久久 | 少妇aaaa | 久久免费国产视频 | 素人一区 | 三级黄色av | 黑人番号| 中文字幕无码乱码人妻日韩精品 | 99在线视频播放 | 蜜桃视频一区二区 | 中国肥胖女人真人毛片 | 福利电影一区二区三区 | 日日干综合 | 午夜影院视频 | 婷婷超碰 | 91九色蝌蚪porny| 国产欧美啪啪 | 亚洲av成人片色在线观看高潮 | 久久久1 | 男女爱爱福利视频 | 国产九九九精品 | 亚洲图片在线视频 | 免费看日韩av| 日韩视频在线观看一区二区三区 | 中文字幕在线观看视频免费 | 免费视频色| 十大污视频| 欧美一级淫片免费视频魅影视频 | 男女无套免费视频网站动漫 | 亚洲美女视频在线观看 | 日本做爰全过程免费看 | 免费看黄色片子 | 91国产中文字幕 | 巨乳美女被爆操 | 超碰在线公开免费 | 三上悠亚在线一区二区 | av大片网 | porn亚洲| 暖暖成人免费视频 | 亚洲午夜网 | 日本美女性生活视频 | 亚洲色视频 | 精品国产va久久久久久久 | 国产成人无码精品久在线观看 | 丰满圆润老女人hd | 99视频国产精品免费观看a | 亚洲二区精品 | 精品二区在线 | 97精品国产97久久久久久粉红 | 午夜88 | 亚洲日本欧美精品 | 久久艹中文字幕 | 国产精品99久久久久久动医院 | 奶水喷溅虐奶乳奴h文 | 国产自偷自拍视频 | 亚洲激情国产 | 亚洲日b视频 | 成人精品一区二区三区电影黑人 | 麻豆av网站 | 日韩国产亚洲欧美 | 久久精品国产av一区二区三区 | 91小视频在线观看 | 日本免费网站在线观看 | 肉大榛一进一出免费视频 | 亚洲午夜精品久久久 | 亚洲av第一成肉网 | 亚洲自拍小视频 | 日韩在线视频网址 | 久久久96人妻无码精品 | 国产一区网站 | 国产精品国产精品国产专区蜜臀ah | 日本一区二区三区精品 |