




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、進程調度算法實驗報告篇一:操作系統進程調度算法模擬實驗報告進程調度算法模擬專業:XXXXX學號:XXXXX姓名:XXX實驗日期:20XX 年 XX月XX日一、實驗目的通過對進程調度算法的模擬加深對進程概念和進程調 度算法的理解。二、實驗要求編寫程序實現對5個進程的調度模擬,要求至少采用兩 種不同的調度算法分別進行模擬調度。三、實驗方法內容1.算法設計思路將每個進程抽象成一個控制塊PCB,PCB用一個結構體 描述。構建一個進程調度類。將進程調度的各種算法分裝在一 個類中。類中存在三個容器,一個保存正在或未進入就緒隊列的進程, 一個保存就緒的進程,另一個保存已完成的進程。還有一個 PCB實例。主要
2、保存正在運行的進程。類中其他方法都是圍 繞這三個容器可以這個運行中的PCB展開。主要用到的技術是STL中的vector以維護和保存進程 容器、就緒容器、完成容器。當程序啟動時,用戶可以選擇不同的調度算法。然后用 戶從控制臺輸入各個進程的信息,這些信息保存到進程容器中。進程信 息輸入完畢后,就開始了進程調度,每調度一次判斷就緒隊 列是否為空,若為空則系統時間加一個時間片。判斷進程容 器中是否有新的進程可以加入就緒隊列。2.算法流程圖 主程序的框架:();/先來先服務();/最短進程優先調度/簡單時間片輪轉/最高優先 數優先/輸入進程信息();.m_WaitQueue.empty()|.m_Pro
3、cessQueue.empt()();();進程調度過程:;算法中用到的數據結構struct fcfs/先來先服務算法從這里開始char name10;float arrivetime;float servicetime;float starttime;float finishtime;float zztime;float dqzztime;;/定義一個結構體,里面包含的有一個進程相關的信 息主要的常量變量vectorm_ProcessQueue;/進程輸入隊列vectorm_WaitQueue;/ 進程就緒隊列 vectorm_FinishQueue;/ 完 成隊 列 vector:iter
4、ator m_iter;/迭代器PCB m_runProcess;/運行中的進程int m_ProcessCount;/進程數 float m_RunTime;/運 行時間int m_tagIsRun;/是否在運行標志。表示正在運行, 表示沒有float m_TimeSlice;/時間片大小int m_TimeSliceCount;/指時間片輪轉中一次分到的 時間片個數char m_SchedulerAlgorithm;/調度算法主要模塊void PCBInput();/輸入進程信息void PCBSort();/對進程控制塊按照優先級排序(采用 冒泡排序)void ProcessSelect
5、();/若當前就緒隊列不為空則根 據選擇的調度算法開始調度。否則,系統時間void PCBDisplay();/打印當前狀況下。就緒隊列、完成隊列、 運行中的進程信息void ProcessRun();/進程運行一次。運行時間加個時 間片。并判斷進程是否達到完成條件。若是則void ProcessQueueProcess();/查看當前時間下,有無進程加入。 若有則把該進程調入就緒隊列void ProcessDispatch();/ 進程分派,進程執行完成后決定進程該進入哪個隊列(就緒、 完 成 ) void TimePast() m_RunTime +=m_TimeSlice; Proces
6、sQueueProcess();/當前系統時間加個時間voidSchedulerStatistics();/調度統計,計算周轉時間等 void FCFS();/先來先服務void SJF();/最短進程優先調 度void RR();/簡單時間片輪轉void PD();/最高優先數 優先加.以等待新的進程到來ProcessStatus=f.否則為w;片,并檢查是否有新的進程加入四、實驗代碼#include #include #includeusing namespace std;struct fcfs/先來先服務算法從這里開始char name10;float arrivetime;float
7、servicetime;float starttime;float finishtime;float zztime;float dqzztime;/定義一個結構體,里面包含的有一個進程相關的信fcfs a100;void input(fcfs *p,int N) int i;cout for(i=0;i void Print(fcfs *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N) int k;printf(nn調用先來先服務算法以
8、后進程運行的順 序是:);printf(s,);for(k=1;k%s,);cout printf(t進程名到達時間服務時間 開始時間結束時間周轉時間帶權周轉時間n);for(k=0;k printf(t%st%-.2ft %-.2ft%-.2ft %-.2ft %-.2f t %-.2fn,,pk.arrivetime,pk.servicetime,pk.starttime,pk.finishtime,pk .zztime,pk.dqzztime);getchar(); /此處必須要有這個函數,否則就看不到 顯示器上面的輸出,可以看到的結果只是一閃而
9、過的一個框、 剪void sort(fcfs *p,int N) /排序篇二:進程的調度算法實驗報告-計算機操作系統教程(第三 版)進程的調度算法實驗報告(完整版)一、實驗目的:用高級語言編寫和調試一個簡單的進程調度程序。加深 了解有關進程控制塊,進程隊列的概念,并體會和了解優先 數和時間片調度算法的具體實施方法。二、實驗內容:根據不同的調度算法模擬操作系統對進程的調度。調度 算法有二種:動態優先級法和時間片循環法。1、設計進程控制塊PCB表結構,分別適用優先數調度 算法和循環時間片輪轉算法。2、PCB結構通常包括以下信息:進程名、進程優先數、 輪轉時間片、進程的CPU時間,進程狀態等。根據調
10、度算法 不同,PCB結構可作適當的調整。3、建立進程隊列。對不同的算法編制不同的入鏈程序 編制兩種進程調度算法:a、優先數調度;b、循環時間輪轉 調度三、實驗設計實驗原理:算法思想:以時間片為計量單位A:優先數調度算法1)系統初始化時給每一個進程賦一個NEEDTIME和初始 PRI。并按優先數入隊。2)系統每次選定一個優先級最高的進程投入運行,進 程每執行一次,優先數減2,并將它的進程占用的CPU時間 加10,進程到完成還要的CPU時間減10。3)每當一個進程運行一個時間片后,系統根據它的 CPUTIME來判斷它是否已經結束,若CPUTIME0,那么將它重 新排入就緒隊列。4)如果系統中尚有進
11、程沒有運行完畢,那么轉入2)。B:循環時間片輪轉算法1)系統初始化時給每一個進程賦以一個NEEDTIME,并 將所有進程按進入的次序排成一個隊列。2)取隊頭進程,并投入運行。3)采用相對固定時間片(ROUND),進程每執行一次, 進程占用的CPU時間加ROUND,進程到完成還要的CPU時間 減ROUND。并排到就緒隊列的尾部。4)如果當前進程的NEEDTIME0,那么將它排到隊尾。5)如果尚有進程在隊列中,那么轉入2)編程語言、主要數據結構和意義使用VC6.0語言PCB結構:name進程名pri /round進程優先數/進程輪轉時間片cputime進程占用的CPU時間needtime進程到完成
12、還要的時間state進程狀態(假設狀態為Ready、Run、Finish)next鏈指針void showlist(link,char*,int);/ 顯示進程隊列void instlist(link,link);/按優先數插入進程void appenlist(link,link);/按就緒先后加入進程link gethead(link);/取隊首進程流程圖(優先數算法)源程序(含主要注釋)#include stdlib.h#include iostream.h#include string.hconst int MAX= 5;const int ROUND=2;constchar*ITOA1
13、0 = 0,1,2,3,4,5,6,7,8,9;typedef enum flagReady,Run,Finish;struct pcbpublic:char name10;/進程名int pri; /進程優數int round; /進程輪轉時間片int cputime; 進程占用的CPU時間int needtime; /進程到完成還要的CPU時間flag state; /進程狀態struct pcb *next;/鏈指針;typedef struct pcb plist;typedef plist *link;void main()void showlist(link,char*,int);
14、/ 顯示進程隊列 v oid instlist(link,link);/ 按優先數插入進程 void appenlist(link,link);/按就緒先后加入進程link gethead(link);/取隊首進程int num=MAX+1;char str10;link ptr,head1,head2;int i;int j=0;head1=new plist;head1-next=NULL;/就緒隊首指針head2=new plist;head2-next=NULL;/完成隊首指針while (numMAX)|(num / printf(請輸入演示進程數n);cout / scanf(d,
15、&num);篇三:操作系統原理進程調度實驗報告一、實驗目的 通過對進程調度算法的設計,深入理 解進程調度的原理。進程是程序在一個數據集合上運行的過程,它是系統進 行資源分配和調度的一個獨立單位。進程調度分配處理機, 是控制協調進程對CPU的競爭,即按一定的調度算法從就緒 隊列中選中一個進程,把CPU的使用權交給被選中的進程。進程通過定義一個進程控制塊的數據結構(PCB)來表 示;每個進程需要賦予進程ID、進程到達時間、進程需要運 行的總時間的屬性;在RR中,以1為時間片單位;運行時, 輸入若干個進程序列,按照時間片輸出其執行序列。二、實驗環境VC+6.0三、實驗內容實現短進程優先調度算法(SP
16、F)和時間片輪轉調度算 法(RR)提示(1)先來先服務(FCFS )調度算法原理:每次調度是從就緒隊列中,選擇一個最先進入就 緒隊列的進程,把處理器分配給該進程,使之得到執行。該 進程一旦占有了處理器,它就一直運行下去,直到該進程完 成或因發生事件而阻塞,才退出處理器。將用戶作業和就緒進程按提交順序或變為就緒狀態的 先后排成隊列,并按照先來先服務的方式進行調度處理,是 一種最普遍和最簡單的方法。它優先考慮在系統中等待時間 最長的作業,而不管要求運行時間的長短。按照就緒進程進入就緒隊列的先后次序進行調度,簡單 易實現,利于長進程,CPU繁忙型作業,不利于短進程,排 隊時間相對過長。(2)時間片輪
17、轉調度算法RR原理:時間片輪轉法主要用于進程調度。采用此算法 的系統,其程序就緒隊列往往按進程到達的時間來排序。進 程調度按一定時間片)輪番運行各個進程.進程按到達時間在就緒隊列中排隊,調度程序每次把CPU分配給就緒隊列首進程使用一個時間片,運行完一個時 間片釋放CPU,排到就緒隊列末尾參加下一輪調度,CPU分 配給就緒隊列的首進程。固定時間片輪轉法:1所有就緒進程按FCFS規則排隊。2處理機總是分配給就緒隊列的隊首進程。3如果運行的進程用完時間片,則系統就把該進程送 回就緒隊列的隊尾,重新排隊。4因等待某事件而阻塞 的進程送到阻塞隊列。5系統把被喚醒的進程送到就緒隊列的隊尾。可變時間片輪轉法
18、:1進程狀態的轉換方法同固定時間片輪轉法。2響應時間固定,時間片的長短依據進程數量的多少 由T = N X ( q+ t )給出的關系調整。3根據進程優先級的高低進一步調整時間片,優先級 越高的進程,分配的時間片越長。多就緒隊列輪轉法:算法類型模擬程序可由兩部分組成,先來先服務(FCFS) 調度算法,時間片輪轉。流程圖如下:按模擬算法設計程序,運行設計的程序,觀察得 到的結果。四、實驗結果(含程序、數據記錄及分析、實驗總結等)MFC的設計框如下:實驗代碼以及分析:RR算法實現分析:先根據到達時間對進程進行排序, 然后調度時,超出時間片的就放至隊尾,然后繼續調度。變量添加:int m_id; I
19、DC_EDIT_ID用來輸入進程IDint m_reachtime; IDC_EDIT_REACHTIME 用來輸入進程到達時間 int m_run;IDC_EDIT_RUN用來輸出正在運行的進程int m_runtime;IDC_EDIT_RUNTIME用來輸入進程運行時間int m_timeslice; IDC_EDIT_TIMELICE 用來輸入 時間片CString m_result; IDC_EDIT_RESULT用來輸出最終調度隊列CString m_readyqueue;IDC_EDIT_READYQUEUE用來輸出等待隊列CString m_pcb;IDC_EDIT_PCB用來顯示輸入的進程信息數據存儲:利用結構體來存儲進程信息stru
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 端午節公司小活動方案(4篇)
- 競選校長助理演講稿(4篇)
- 2025年物業管理工作計劃(19篇)
- 實習周記心得體會(15篇)
- 2025年大專畢業生自我鑒定(16篇)
- 大學畢業典禮邀請函(16篇)
- 人教版 (新課標)必修4 生活與哲學2 用對立統一的觀點看問題教學設計及反思
- 班主任工作心得范文(20篇)
- 2025醫院消防安全個人工作總結(4篇)
- 2025年讀書的心得體會范文(18篇)
- 二零二五版用工單位與勞務派遣公司合同
- 2025中煤鄂爾多斯能源化工有限公司高校畢業生招聘98人筆試參考題庫附帶答案詳解
- 心力衰竭的護理業務查房
- 2025年抖音達人探店合同模板
- 20025如皋統計局事業單位考試真題及答案
- 五一安全教育主題班會
- 2025年高考英語二輪復習專題01 閱讀理解之細節理解題(課件)(新高考)
- GB/T 27030-2025合格評定第三方符合性標志的通用要求
- 國家衛計委-醫院感染管理質量控制指標2024年版
- 超星爾雅學習通《軍事理論(中北大學)》2025章節測試附答案
- 2025年鄭州澍青醫學高等專科學校單招職業適應性測試題庫新版
評論
0/150
提交評論