作業系統實驗報告

2022-09-03 09:42:04 字數 2276 閱讀 2502

計算機作業系統

實驗報告

院系:班級:學號:

姓名:實驗二程序排程

通過這次實驗,理解程序排程的過程,進一步掌握程序狀態的轉變、程序排程的策略,進一步體會多道程式併發執行的特點,並分析具體的排程演算法的特點,掌握對系統效能的評價方法。

閱讀教材《計算機作業系統》第二章和第三章,掌握程序管理及排程相關概念和原理。

編寫程式模擬實現程序的輪轉法排程過程,模擬程式只對pcb進行相應的排程模擬操作,不需要實際程式。假設初始狀態為:有n個程序處於就緒狀態,有m個程序處於阻塞狀態。

採用輪轉法程序排程演算法進行排程(排程過程中,假設處於執行狀態的程序不會阻塞),且每過t個時間片系統釋放資源,喚醒處於阻塞佇列隊首的程序。

程式要求如下:

1)輸出系統中程序的排程次序;

2)計算cpu利用率。

windows作業系統、vc++6.0 c語言

每個程序有乙個程序控制塊( pcb—type)表示。程序控制塊可以包含如下資訊:程序名(pid),需要執行時間(cpu—time),程序狀態(state)等等。

程序的執行時間以時間片為單位進行計算。

每個程序的狀態可以是執行 2,就緒 1、阻塞0。就緒程序獲得 cpu後都只能執行乙個時間片。用已占用cpu時間加1來表示。

如果執行乙個時間片後,程序的已占用 cpu時間已達到所需要的執行時間,則撤消該程序,如果執行乙個時間片後程序的已占用cpu時間還未達所需要的執行時間,也就是程序還需要繼續執行,此時應將程序的執行時間減1,然後把它插入就緒佇列尾部等待cpu。每進行一次排程程式都列印一次執行程序、就緒佇列、以及各個程序的 pcb,以便進行檢查。當就緒佇列的程序全都完成以後將阻塞程序隊首程序插入到就緒佇列尾部以便下次進行呼叫,反覆直到阻塞隊列為空,程序全部執行完成則退出。

#include <>

#include <>

struct pcb_type

;struct queuenode;

//並設全程量:

struct queuenode *ready_head=null, //ready佇列隊首指標

ready_tail=null , //ready佇列隊尾指標

blocked_head=null, //blocked佇列隊首指標

blocked_tail=null; //blocked佇列隊尾指標

int static use_cpu,unuse_cpu;

/*定義程序的數目*/

//讀入假設的資料,設定系統初始狀態

void start_state()

p=ready_head->next;

i=1;

printf("\n");

while(p)

printf("阻塞程序狀態");

p=(struct queuenode *)malloc(sizeof(struct queuenode ));

p->next=null;

blocked_head=blocked_tail=p;

for(i=0;i

p=blocked_head->next;

i=1;

printf("\n");

while(p)

} //模擬排程

void dispath()

else

x++;

if(blocked_head!=blocked_tail && x==t)

}printf("%d\n",unuse_cpu);

printf("%d\n",use_cpu);

}//計算cpu利用率

void calculate()

void main()

還好,作業系統的實驗用c語言寫,作為大學裡學的第一門語言,c我還是學的不錯的,雖然有很多的東西忘了,但是通過這次的實驗,很多東西我都詳細來了,尤其是鍊錶的用法,只是中間有一些錯誤,不知道怎麼搞了,還是自己學的不好,要不就不會有錯誤了,下次一定會注意的。

實驗三可變分割槽儲存管理

通過這次實驗,加深對記憶體管理的認識,進一步掌握記憶體的分配、**演算法的思想。

編寫程式模擬實現記憶體的動態分割槽法儲存管理。記憶體空閒區使用自由鏈管理,採用最壞適應演算法從自由鏈中尋找空閒區進行分配,記憶體**時假定不做與相鄰空閒區的合併。

假定系統的記憶體共640k,初始狀態為作業系統本身占用64k。在t1時間之後,有作業a、b、c、d分別請求8k、16k、64k、124k的記憶體空間;在t2時間之後,作業c完成;在t3時間之後,作業e請求50k的記憶體空間;在t4時間之後,作業d完成。要求程式設計序分別輸出t1、t2、t3、t4時刻記憶體的空閒區的狀態。

作業系統實驗報告

電腦科學與應用系 課程設計報告 作業系統原理 目錄1 題目簡述 2 2 需求分析 2 2.1設計思想 2 2.2要求 2 2.3任務 3 2.4執行環境 3 2.5開發工具 3 3 概要設計與詳細設計 3 3.1系統流程圖 3 3.2演算法流程圖 5 4 編碼與實現 10 4.1資料結構和演算法設計...

作業系統實驗報告

2014 2015 學年第 2 學期 系別計算機學院 專業電腦科學與技術 班級 2014級專公升本 姓名蔡圓圓 學號 1410211014 授課老師趙群禮 實驗一 熟悉linux基本命令及程式設計環境 實驗總結 編寫程式 gedit編輯器 編寫程式 c 存放 gcc linux c程式編譯工具 當前...

作業系統實驗報告

實驗名稱 哲學家就餐問題 班級 通訊1202班 學號 u201213584 姓名 趙越 指導老師 許毅平 一 實驗目的 1.熟練使用vc 6.0編譯環境,除錯並正確執行程式,更加熟練地利用c語言解決問題 2.了解哲學家就餐的基本原理,掌握死鎖的必要條件。3.理解源程式中產生和防止的演算法,及相關視窗...