




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、進(jìn)程時(shí)間片輪轉(zhuǎn)調(diào)度算法一、 實(shí)驗(yàn)題目: 進(jìn)程時(shí)間片輪轉(zhuǎn)調(diào)度算法 二、實(shí)驗(yàn)原理: 在多道程序系統(tǒng)中,一個(gè)作業(yè)被提交后必須經(jīng)過處理機(jī)調(diào)度后,方能獲得處理機(jī)執(zhí)行。對(duì)調(diào)度的處理又都可采用不同的調(diào)度方式和調(diào)度算法。調(diào)度算法是指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。 三、實(shí)驗(yàn)?zāi)康模?#160; 1、加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別。 2、深入系統(tǒng)如何組織進(jìn)程、創(chuàng)建進(jìn)程。 3、進(jìn)一步認(rèn)識(shí)如何實(shí)現(xiàn)處理器調(diào)度。 4、通過對(duì)進(jìn)程調(diào)度算法的設(shè)計(jì),深入理解進(jìn)程調(diào)度的原理。 5、加深對(duì)時(shí)間片輪轉(zhuǎn)調(diào)度算
2、法的理解。 四、實(shí)驗(yàn)要求: 用C語言編寫程序完成單處理機(jī)的進(jìn)程調(diào)度,要求采用時(shí)間片輪轉(zhuǎn)調(diào)度算法。實(shí)驗(yàn)具體要求包括:首先確定作業(yè)控制塊的內(nèi)容和組成方式;然后完成作業(yè)調(diào)度;最后編寫主函數(shù),并對(duì)所做工作進(jìn)行測試。5、 運(yùn)行結(jié)果時(shí)間片大小為1時(shí)(q=1):時(shí)間片大小為4時(shí)(q=4):6、 代碼#include "stdafx.h"#include <stdio.h>#include <stdlib.h> #include <string.h> #include <windows.h>#define OK 0#def
3、ine OVERFLOW 1char pro20 ; /進(jìn)程 int processNum; /進(jìn)程數(shù) int timeSlice = 0; /時(shí)間片 typedef char QlemTypeChar;typedef int QlemTypeInt;typedef int Status;typedef struct QNodeQlemTypeChar data;QlemTypeInt timeArrive = 0;QlemTypeInt timeService = 0;QlemTypeInt timeCount = 0;QlemTypeInt runCount = 0;QlemTypeInt
4、 timeFinal = 0; /完成時(shí)間QlemTypeInt timeRound = 0; /周轉(zhuǎn)時(shí)間float timeRightRound = 0; /帶權(quán)周轉(zhuǎn)時(shí)間QlemTypeChar proState = 'W' /進(jìn)程的狀態(tài),W就緒態(tài),R執(zhí)行態(tài),F(xiàn)完成態(tài) struct QNode *next; /鏈表指針 QNode, *QueuePtr;typedef structQueuePtr front; /隊(duì)頭指針QueuePtr rear; /隊(duì)尾指針LinkQueue;Status InitQueue(LinkQueue &Q)Q.front = Q.re
5、ar = (QueuePtr)malloc(sizeof(QNode);if(!Q.front) exit(OVERFLOW);Q.front->next = NULL;return OK;Status EnQueue(LinkQueue &Q, QlemTypeChar e)QueuePtr p;p = (QueuePtr)malloc(sizeof(QNode);if (!p) exit(OVERFLOW);p->data = e;p->next = NULL;Q.rear->next = p;Q.rear = p;return OK;Status DeQu
6、eue(LinkQueue &Q, QlemTypeChar &e)QueuePtr p;if (Q.front = Q.rear) return ERROR;p = Q.front->next;e = p->data;Q.front->next = p->next;if (Q.rear = p) Q.rear = Q.front;free(p);return OK;LinkQueue QPro;QNode qq10;void ProGetFirst() /取出就緒隊(duì)列隊(duì)首進(jìn)程InitQueue(QPro);printf("請(qǐng)輸入要?jiǎng)?chuàng)建的進(jìn)程名
7、稱:n");for (int i = 0; i < processNum-1; i+)fflush(stdin);scanf_s("%c", &proi);fflush(stdin);for (int i = 0; i<processNum-1; i+)qqi.data = proi;EnQueue(QPro, qqi.data);void scanfData()printf("請(qǐng)輸入要?jiǎng)?chuàng)建的進(jìn)程數(shù)目:");scanf_s("%d", &processNum);processNum+;fflush
8、(stdin); printf("n");ProGetFirst();printf("創(chuàng)建進(jìn)程到達(dá)時(shí)間:n");int time_Arr10;for (int i = 0; i < processNum-1; i+)scanf_s("%d", &time_Arri);for (int i =0; i<processNum-1; i+)qqi.timeArrive = time_Arri;EnQueue(QPro, qqi.timeArrive);printf("創(chuàng)建進(jìn)程服務(wù)時(shí)間:n");int
9、time_Ser10;for (int i = 0; i < processNum-1; i+)scanf_s("%d", &time_Seri);for (int i = 0; i<processNum-1; i+)qqi.timeService = time_Seri;EnQueue(QPro, qqi.timeService);printf("請(qǐng)輸入時(shí)間片大?。?");scanf_s("%d", &timeSlice);printf("n");void ProOutPut1() /
10、獲取進(jìn)程信息printf("進(jìn)程名t 到達(dá)時(shí)間t 服務(wù)時(shí)間t 進(jìn)程狀態(tài)t 執(zhí)行次數(shù)n");for (int i = 0; i < processNum - 1; i+)printf("%ctt%dtt%dtt%ctt%dn", qqi.data, qqi.timeArrive, qqi.timeService, State, qqi.runCount);void CalculatetimeFinal() /計(jì)算完成時(shí)間int timecou=0;int countTemp = 0;QlemTypeChar ee;for (int i
11、= 0; i < processNum - 1; i+)countTemp += qqi.timeService;while (timecou < countTemp)for (int i = 0; i < processNum - 1; i+)if (qqi.timeFinal = 0)if (qqi.timeService - qqi.timeCount >= timeSlice)timecou += timeSlice;else timecou += (qqi.timeService - qqi.timeCount);/DeQueue(QPro, ee);if (
12、timeSlice < qqi.timeService) /時(shí)間片大小< 服務(wù)時(shí)間int timetemp = timeSlice > qqi.timeService ? qqi.timeService : timeSlice;if (qqi.timeCount + timetemp) < qqi.timeService) if (qqi.timeService - qqi.timeCount >= timeSlice) qqi.timeCount += timeSlice;elseqqi.timeCount += (qqi.timeService - qqi.t
13、imeCount); elseif (qqi.timeFinal = 0) qqi.timeFinal = timecou;else /時(shí)間片大小>= 服務(wù)時(shí)間qqi.timeFinal = timecou; /該進(jìn)程的完成時(shí)間=countfor (int i = 0; i < processNum - 1; +i)qqi.timeRound = qqi.timeFinal - qqi.timeArrive;qqi.timeRightRound = (float)qqi.timeRound / qqi.timeService;void ProOutPut2() /獲取進(jìn)程處理后的信
14、息printf("進(jìn)程名t 到達(dá)時(shí)間 服務(wù)時(shí)間 完成時(shí)間 周轉(zhuǎn)時(shí)間 帶權(quán)周轉(zhuǎn)n");for (int i = 0; i < processNum - 1; i+)printf(" %ctt%dt %dt %dt %dt %.2fn", qqi.data, qqi.timeArrive, qqi.timeService, qqi.timeFinal, qqi.timeRound, qqi.timeRightRound);int _tmain(int argc, _TCHAR* argv)scanfData();ProOutPut1();CalculatetimeFinal();printf("n");printf("CPU處理中.n");printf("完成時(shí)間:");for (int i = 0; i < processNum - 1; i+)printf("%d,", qqi.timeFinal);printf("n");printf("周轉(zhuǎn)時(shí)間:");for (int i = 0; i < proce
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南三一工業(yè)職業(yè)技術(shù)學(xué)院《普通物理二》2023-2024學(xué)年第二學(xué)期期末試卷
- 漳州科技職業(yè)學(xué)院《男裝設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 攀枝花學(xué)院《工程圖學(xué)與計(jì)算機(jī)繪圖甲》2023-2024學(xué)年第二學(xué)期期末試卷
- 15《搭船的鳥》教學(xué)設(shè)計(jì)-2024-2025學(xué)年三年級(jí)上冊(cè)語文統(tǒng)編版
- 金山職業(yè)技術(shù)學(xué)院《外貿(mào)專業(yè)英語一》2023-2024學(xué)年第二學(xué)期期末試卷
- 信陽師范大學(xué)《工程實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 銅仁幼兒師范高等專科學(xué)?!度肆Y源管理沙盤模擬》2023-2024學(xué)年第二學(xué)期期末試卷
- 船舶運(yùn)力合同范本
- 第 19課《燈泡亮了》教學(xué)設(shè)計(jì)-2023-2024學(xué)年青島版科學(xué)四年級(jí)下冊(cè)
- 《7 比較測量紙帶和尺子》教學(xué)設(shè)計(jì)-2023-2024學(xué)年一年級(jí)上冊(cè)科學(xué)教科版
- 人工智能背景下高職五育并舉的人才培養(yǎng)研究
- 汽車行業(yè)維修記錄管理制度
- IQC檢驗(yàn)作業(yè)指導(dǎo)書
- 城市自來水廠課程設(shè)計(jì)
- 重慶市2024年小升初語文模擬考試試卷(含答案)
- 2024智慧城市數(shù)據(jù)采集標(biāo)準(zhǔn)規(guī)范
- 【人教版】《勞動(dòng)教育》七上 勞動(dòng)項(xiàng)目一 疏通廚房下水管道 課件
- 2024特斯拉的自動(dòng)駕駛系統(tǒng)FSD發(fā)展歷程、技術(shù)原理及未來展望分析報(bào)告
- 2024-2030年中國銀行人工智能行業(yè)市場深度調(diào)研及發(fā)展趨勢與投資前景研究報(bào)告
- 五屆全國智能制造應(yīng)用技術(shù)技能大賽數(shù)字孿生應(yīng)用技術(shù)員(智能制造控制技術(shù)方向)賽項(xiàng)實(shí)操樣題
- 中國銀行中銀數(shù)字服務(wù)(南寧)有限公司招聘筆試真題2023
評(píng)論
0/150
提交評(píng)論