作業系統實驗指導書

2022-09-11 13:00:15 字數 3701 閱讀 9099

李玲娟李剛編寫

李玲娟審核

南京中醫藥大學資訊科技學院

2023年10月

編者說明

軟體技術是《作業系統》最重要的計算機系統軟體,同時也是電腦科學與技術專業的一門核心專業基礎課,其發展極為迅速。學習計算機軟體技術,特別是計算機作業系統技術,除了需要刻苦努力外,還需要掌握軟體和作業系統的原理與設計技巧。這些原理與技巧可以說是計算機界的前輩們一代接一代不停歇的努力所留下的知識與智慧型的結晶,學習和掌握它們對於激發自己的創造力和想象力是很有幫助的。

如何學習和掌握作業系統技術的原理與實際技巧呢?除了聽課和讀書之外,最好的方法就是在實踐中練習,通過自己模擬設計作業系統的原理實驗,可以培養程式設計的方法和技巧,提高編制和理解清晰、合理、可讀性好的系統程式的能力,加深對作業系統課程的理解。使自身更好的掌握作業系統的基本概念、基本原理及基本功能,從而具有分析實際作業系統的基本能力,深入直觀的理解作業系統使用的各類演算法。

《作業系統實驗指導書》是針對這門課的實驗編寫的,書中設計了四個重要的作業系統原理實驗,包括程序排程、分割槽式儲存管理、虛擬儲存管理和檔案管理。四個實驗難易層次分明,重點突出,其中實驗一(程序排程)和實驗二(分割槽式儲存管理)為設計性實驗,重在培養理論原理應用於實踐的設計能力,而實驗三(虛擬儲存管理)和實驗四(檔案管理)為驗證性實驗,重在驗證教材中的理論原理。所有實驗共18學時,均採用c語言作為程式語言模擬設計完成相關程式。

本書編寫中,參考了西安電子科技大學、清華大學的作業系統相關圖書資料。

本書由資訊科技學院副院長李玲娟和應用教研室李剛兩位教師編寫,由李玲娟副教授審核。南京中醫藥大學教務處給予了指導和大力幫助,在此表示衷心的感謝!

限於編者的水平,難免有疏漏與錯誤,敬請讀者批評指正。

李玲娟李剛

2023年10月12日

目錄實驗一程序排程 1

實驗二分區式儲存管理 4

實驗三虛擬儲存管理 8

實驗四檔案管理 11

實驗一程序排程

實驗性質:設計

建議學時:6學時

實驗目的:

通過這次實驗,加深對程序概念的理解,進一步掌握程序狀態的轉變、程序排程的策略及對系統效能的評價方法。

預習內容:

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

基本實驗內容:

設計程式模擬程序的輪轉法排程過程。假設初始狀態為:有n個程序處於就緒狀態,有m個程序處於阻塞狀態。

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

程式要求如下:

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

2).計算cpu利用率。

實現提示:

用c語言實現提示:

1) 程式中程序可用pcb表示,其型別描述如下:

struct pcb_type

2) 設定兩個佇列,將處於「就緒」狀態的程序pcb掛在佇列ready中;將處於「阻塞」狀態的程序pcb掛在佇列blocked中。 佇列型別描述如下:

struct queuenode

並設全程量:

struct queuenode *ready_head=nullready佇列隊首指標

*ready_tail=nullready佇列隊尾指標

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

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

3)設計子程式:

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

dispath模擬排程

calculate(); //計算cpu利用率

實驗要求:

1) 上機前認真使用c語言編寫好程式,採用turbo c作為編譯環境;

2) 上機時獨立除錯程式

3) 根據具體實驗要求,填寫好實驗報告(包括思想、源程式、例項執行結果)。

測試用資料:

n=2m=3t=5ready_head

blocked_head

dispath()演算法流程圖:

/*use_cpu中記錄cpu 執行時間

unuse_cpu中記錄cpu空閒時間否是

是否 是否是

是否是實驗二分區式儲存管理

實驗性質:設計

建議學時:6

實驗目的:

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

預習內容:

閱讀教材《計算機作業系統》第四章,掌握儲存器管理相關概念和原理。

實驗內容:

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

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

實現提示(c語言):

1. 程式中自由鏈佇列的結點型別可描述如下:

struct freelink

記憶體占用區用鍊錶描述,其結點型別描述如下:

struct busylink

並設全程量:

struct freelink *free_head=null; //自由鏈佇列(帶頭結點)隊首指標

struct busylink *busy_head=null, //占用區佇列隊(帶頭結點)首指標

busy_tail=null; //占用區佇列隊尾指標

2.設計子函式:

void start(void); /* 設定系統初始狀態*/

struct freelink * p;

struct busylink *q;

free_head=(struct freelink*)malloc(sizeof(struct freelink));

free_head->next=null; // 建立自由鏈頭結點

busy_head=busy_tail=(struct busylink*)malloc(sizeof(struct busylink));

busy_head->next=null; // 建立占用鏈頭結點

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

p->address=64;

p->len=640-64; (os占用了64k)

p->next=null;

free_head->next=p;

q=( struct busylink *)malloc(sizeof(struct busylink));

q->name=』s』; /* s表示作業系統占用 */

q->len=64; q->address=0; q->next=null;

busy_head->next=q; busy_tail=q;

} void requirememo(char name, int require); /*模擬記憶體分配*/

void freememo(char name); /* 模擬記憶體***/

void past(int time); /* 模擬系統過了time 時間*/

作業系統實驗指導書

目錄實驗一 windows程序初識 3 實驗二程序管理 4 實驗三程序同步的經典演算法 7 實驗四儲存管理 10 實驗一 windows程序初識 1 實驗目的 2 實驗內容和步驟 執行結果 如果執行不成功,則可能的原因是什麼?步驟4 執行結果 如果執行不成功,則可能的原因是什麼?因為此程式是個死迴圈...

作業系統實驗指導書

信電工程學院周巨集生 2015年3月 目錄前言 1 實驗要求 2 實驗準備 3 實驗一程序管理 4 實驗二儲存管理 6 實驗三裝置管理 9 實驗四檔案管理 13 作業系統 是計算機及相關專業的必修課程,在學習計算機作業系統理論的同時,通過實驗可以加強對作業系統基本原理的理解。讓學生通過上機實驗驗證計...

作業系統實驗指導書

計算機作業系統 實驗指導書 實驗報告內容規範 實驗報告內容要求如下 課程名稱 實驗日期 實驗名稱 實驗型別 班級 姓名 學號 指導教師 一 實驗目的及要求 本次實驗所涉及並要求掌握的知識點。二 實驗環境 本次實驗所使用的裝置和軟體。三 實驗內容 本次實驗的具體內容。四 實驗步驟 按照實驗過程列出實驗...