試驗一單處理器調(diào)度算法的實現(xiàn)_第1頁
試驗一單處理器調(diào)度算法的實現(xiàn)_第2頁
試驗一單處理器調(diào)度算法的實現(xiàn)_第3頁
試驗一單處理器調(diào)度算法的實現(xiàn)_第4頁
試驗一單處理器調(diào)度算法的實現(xiàn)_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實驗一 單處理器調(diào)度 算法的實現(xiàn) 班級: 計算機 04-1 班 學號: 04034040112 姓名: 汀芷約 成績: 日期: 2006-11-02 實驗一 單處理器調(diào)度算法的實現(xiàn) 一、實驗目的 在多道程序或多任務系統(tǒng)中, 系統(tǒng)同時處于就緒態(tài)的進程有若干個。 為了使 系統(tǒng)中的各進程能有條不紊地運行,必須選擇某種調(diào)度策略,以選擇占用處理 機。要求學生設(shè)計一個模擬單處理機調(diào)度的算法,以鞏固和加深處理機調(diào)度的 概念。 二、實驗內(nèi)容 設(shè)計一個按時間片輪轉(zhuǎn)法調(diào)度的算法。 提示: 1、假設(shè)系統(tǒng)有 5 個進程,每個進程用一個進程控制塊PCB 來代表。 PCB 的格式如圖所示。其中,進程名即是進程標識。 鏈接

2、指針:指出下一個到達進程的進程控制塊首地址。按照進程到達的順 序排隊。系統(tǒng)設(shè)置一個隊頭和隊尾指針分別指向第一個和最后一個進程。新生 成的進程放隊尾。 2、為每個進程任意確定一個要求運行時間和到達時間。 3、按照進程到達的先后順序排成一個循環(huán)隊列。 再設(shè)一個隊首指針指向第 一個到達進程的首地址。 4、執(zhí)行處理機調(diào)度時, 開始選擇隊首的第一個進程運行。 另外再設(shè)一個當 前運行進程指針,指向當前正運行的進程。 5、由于本實驗是模擬實驗, 所以對被選中進程并不實際啟動運行, 而是執(zhí) 行:一是估計運行時間減 1;二是輸出當前運行進程的名字。用這兩個操作來模 擬進程的一次執(zhí)行。 6、進程運行一次后, 以后

3、的調(diào)度則將當前指針依次下移一個位置, 指向下 一個進程,即調(diào)整當前運行指針指向該進程的鏈接指針所指進程,以指示應運 行進程。同時還應該判斷該進程的剩余運行是否為0。若不為 0,則等待下一輪 的運行; 若該進程的剩余時間為 0,則將該進程的狀態(tài)置為 C,并退出循環(huán)隊列。 7、若就緒隊列不空,則重復上述的( 5)和( 6)步驟直到所有進程都運行 為止。 8、在所設(shè)計的調(diào)度程序中, 應包含顯示或打印語句。 以便顯示或打印每次 選中進程的名稱及運行一次后隊列的變化情況。 三、實驗說明 1、 程序中使用的數(shù)據(jù)結(jié)構(gòu)及符號說明: 數(shù)據(jù)結(jié)構(gòu):數(shù)組 data 符號說明: 每個進程的狀態(tài)是就緒 W( Wait )

4、、運行 R( Run)、或完成 C( Complete ) 三種狀態(tài)之一。 2、程序流程圖: 四、實驗源程序 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ShiJianPianDiaoDu / 調(diào)度算法 static void diaoDuSuanFa(Object data) int count = 0, i1 = 0; Object t; for (int i = 0; i data.length; i+) i1 += (I

5、nteger) datai2; for (int j = 0; j i1; j+) if (data03 != C) t = data0; data02 = (Integer) data02 - 1; if (Integer) data02 = 0) data03 = C; for (int i = 0; i data.length - 1; i+) datai = datai + 1; datadata.length - 1 = t; println(data); System.out.println(); count+; else for (int i = 0; i data.length

6、 - 1 - count; i+) datai = datai + 1; datadata.length - 1 - count = t; println(data); System.out.println(); static void paiXu(Object data)/ 排序 Object t; for (int i = 0; i data.length - 1; i+) for (int j = 0; j (Integer) dataj + 11) t = dataj; dataj = dataj + 1; dataj + 1 = t; static void println(Obje

7、ct data) / 打印 for (int i = 0; i data.length; i+) System.out.println( + datai0 + t + datai1 + t + datai2 + t + datai3); public static void main(String args) int n = 0, count = 1; String s; System.out.println( 時間片為 1); System.out.print( 輸入進程數(shù) :); try BufferedReader br = new BufferedReader(new InputStr

8、eamReader( System.in); s = br.readLine(); n = Integer.parseInt(s); catch (IOException e) /dataname,arrivetime,runtime,state Object data = new Objectn4; for (int i = 0; i n; i+) try System.out.print(請輸入第 + count + 個進程的名字 :); BufferedReader br = new BufferedReader(new InputStreamReader( System.in); da

9、tai0 = br.readLine(); System.out.print( 到達時間 (s):); s = br.readLine(); datai1 = Integer.parseInt(s); System.out.print( 運行時間 (s):); s = br.readLine(); datai2 = Integer.parseInt(s); catch (Exception e) datai3 = R; count+; paiXu(data); System.out.println(namet+arrivetimet+runtimet+state); diaoDuSuanFa(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論