網路作業系統課程設計計畫書

2022-06-02 05:06:04 字數 4615 閱讀 2982

08級網路工程專業《網路作業系統》課程教學計畫

2010-2011學年第一學期

一、實習目的與要求

1、掌握作業系統基本理論與管理方式;

2、在演算法基礎上,解決實際的管理功能問題,提高學生實際應用、程式設計的能力;

3、涉及程式設計題目時,要求詳細書寫文件內容。

二、實習內容

專案一、程序機制與併發程式設計

(一) linux下生產者與消費者的問題實現

1.實驗目的

(1)掌握基本的同步互斥演算法,理解生產者和消費者同步的問題模型。

(2)了解linux中多執行緒的併發執行機制,執行緒間的同步和互斥。

2、實驗要求

(1)建立生產者和消費者執行緒

在linux環境下,建立乙個控制台程序,在此程序中建立n個執行緒來模擬生產者或者消費者。這些執行緒的資訊由本程式定義的「測試用例檔案」中予以指定。

該檔案的格式和含義如下:

31 p 3

2 p 4

3 c 4 1

4 p 2

5 c 3 1 2 4

第一行說明程式中設定幾個臨界區,其餘每行分別描述了乙個生產者或者消費者執行緒的資訊。每一行的各字段間用tab鍵隔開。不管是消費者還是生產者,都有乙個對應的執行緒號,即每一行開始字段那個整數。

第二個欄位用字母p或者c區分是生產者還是消費者。第三個字段表示在進入相應執行緒後,在進行生產和消費動作前的休眠時間,以秒計時;這樣做的目的是可以通過調整這一列引數,控制開始進行生產和消費動作的時間。如果是代表生產者,則該行只有三個字段。

如果代表消費者,則該行後邊還有若干字段,代表要求消費的產品所對應的生產者的執行緒號。所以務必確認這些對應的執行緒號存在並且該執行緒代表乙個生產者。

(2)生產和消費的規則

在按照上述要求建立執行緒進行相應的讀寫操作時,還需要符合以下要求:

①共享緩衝區存在空閒空間時,生產者即可使用共享緩衝區。

②從上邊的測試資料檔案例子可以看出,某一生產者生產乙個產品後,可能不止乙個消費者,或者乙個消費者多次地請求消費該產品。此時,只有當所有的消費需求都被滿足以後,該產品所在的共享緩衝區才可以被釋放,並作為空閒空間允許新的生產者使用。

③每個消費者執行緒的各個消費需求之間存在先後順序。例如上述測試用例檔案包含一行資訊「5 c 3 l 2 4」,可知這代表乙個消費者執行緒,該執行緒請求消費1,2,4號生產者執行緒生產的產品。而這種消費是有嚴格順序的,消費1號執行緒產品的請求得到滿足後才能繼續往下請求2號生產者執行緒的產品。

④要求在每個執行緒發出讀寫操作申請、開始讀寫操作和結束讀寫操作時分別顯示提示資訊。

(3)相關基礎知識

本實驗所使用的生產者和消費者模型具有如下特點:

本實驗的多個緩衝區不是環形迴圈的,也不要求按順序訪問。生產者可以把產品放到目前某乙個空緩衝區中。

消費者只消費指定生產者的產品。

在測試用例檔案中指定了所有的生產和消費的需求,只有當共享緩衝區的資料滿足了所有關於它的消費需求後,此共享緩衝區才可以作為空閒空間允許新的生產者使用。

本實驗在為生產者分配緩衝區時各生產者間必須互斥,此後各個生產者的具體生產活動可以併發。而消費者之間只有在對同一產品進行消費時才需要互斥,同時它們在消費過程結束時需要判斷該消費物件是否已經消費完畢並清除該產品。

linux用來實現同步和互斥的實體。在linux中,常見的同步物件有:訊號量(semaphore)、互斥量(mutex)、臨界段(criticalsection)等。

使用這些物件都分為三個步驟,一是建立或者初始化:接著請求該同步物件,隨即進入臨界區,這一步對應於互斥量的上鎖;最後釋放該同步物件,這對應於互斥量的解鎖。這些同步物件在乙個執行緒中建立,在其他執行緒中都可以使用,從而實現同步互斥。

(二)linux下讀者與寫者的問題實現

1、設計目的

通過實現經典的讀者寫者問題,鞏固對執行緒及其同步機制的學習效果,加深對相關基本概念的理解,並學習如何將基本原理和實際設計有機的結合。

2 、設計內容

在linux環境下,使用多執行緒和訊號量機制實現經典的讀者寫者問題,每個執行緒代表乙個讀者或乙個寫者。

每個執行緒按相應測試資料檔案的要求,進行讀寫操作。請用訊號量機制分別實現讀者優先和寫者優先的讀者-寫者問題。

讀者-寫者問題的讀寫操作限制:

(1)寫-寫互斥,即不能有兩個寫者同時進行寫操作

(2)讀-寫互斥,即不能同時有乙個讀者在讀,同時卻有乙個寫者在寫

(3)讀-讀允許,即可以有二個以上的讀者同時讀

讀者優先的附加限制:如果乙個讀者申請進行讀操作時已有另一讀者正在進行讀操作,則該讀者可直接開始讀操作。

寫者優先的附加限制:如果乙個讀者申請進行讀操作時已有另一寫者在等待訪問共享資源,則該讀者必須等到沒有寫者處於等待狀態後才能開始讀操作。

執行結果顯示要求:要求在每個執行緒建立、發出讀寫操作申請、開始讀寫操作和結束讀寫操作時分別顯示一行提示資訊,以確信所有處理都遵守相應的讀寫操作限制。

3 、測試資料檔案格式

測試資料檔案包括n 行測試資料,分別描述建立的n 個執行緒是讀者還是寫者,以及讀寫操作的開始時間和持續時間。每行測試資料報括四個字段,各字段間用空格分隔。第一欄位為乙個正整數,表示線程式號。

第二字段表示相應執行緒角色,r 表示讀者是,w 表示寫者。第三欄位為乙個正數,表示讀寫操作的開始時間。執行緒建立後,延時相應時間(單位為秒)後發出對共享資源的讀寫申請。

第四欄位為乙個正數,表示讀寫操作的持續時間。當執行緒讀寫申請成功後,開始對共享資源的讀寫操作,該操作持續相應時間後結束,並釋放共享資源。下面是乙個測試資料檔案的例子:

1 r 3 5

2 w 4 5

3 r 5 2

4 r 6 5

5 w 5.1 3

二選一專案

二、主儲存器空間的分配和**

1、 可變分割槽管理方式下採用最先適應演算法實現主存分配和實現主存**。

可變分割槽方式是按作業需要的主存空間大小來分割分割槽的。當要裝入乙個作業時,根據作業需要的主存量檢視是否有足夠的空閒空間,若有,則按需要量分割乙個分割槽分配給該作業;若無,則作業不能裝入。隨著作業的裝入、撤離,主存空間被分成許多個分割槽,有的分割槽被作業占用,而有的分割槽是空閒的。

例如:為了說明哪些區是空閒的,可以用來裝入新作業,必須要有一張空閒區說明表,格式如下:

其中,起址——指出乙個空閒區的主存起始位址。

長度——指出從起始位址開始的乙個連續空閒的長度。

狀態——有兩種狀態,一種是「未分配」狀態,指出對應的由起址指出的某個長度的區域是空閒區;另一種是「空表目」狀態,表示表中對應的登記專案是空白(無效),可用來登記新的空閒區(例如,作業撤離後,它所佔的區域就成了空閒區,應找乙個「空表目」欄登記歸還區的起址和長度且修改狀態)。由於分割槽的個數不定,所以空閒區說明表中應有適量的狀態為「空表目」的登記欄目,否則造成**「溢位」無法登記。

上述的這張說明表的登記情況是按提示(1)中的例所裝入的三個作業占用的主存區域後填寫的。

(2) 當有乙個新作業要求裝入主存時,必須查空閒區說明表,從中找出乙個足夠大的空閒區。有時找到的空閒區可能大於作業需要量,這時應把原來的空閒區變成兩部分:一部分分給作業占用;另一部分又成為乙個較小的空閒區。

為了儘量減少由於分割造成的空閒區,而盡量儲存高位址部分有較大的連續空閒區域,以利於大型作業的裝入。為此,在空閒區說明表中,把每個空閒區按其位址順序登記,即每個後繼的空閒區其起始位址總是比前者大。為了方便查詢還可使**「緊縮」,總是讓「空表目」欄集中在**的後部。

(3) 採用最先適應演算法(順序分配演算法)分配主存空間。

按照作業的需要量,查空閒區說明表,順序檢視登記欄,找到第乙個能滿足要求的空閒區。當空閒區大於需要量時,一部分用來裝入作業,另一部分仍為空閒區登記在空閒區說明表中。

由於本實習是模擬主存的分配,所以把主存區分配給作業後並不實際啟動裝入程式裝入作業,而用輸出「分配情況」來代替。最先適應分配演算法如圖4-1。

(4) 當乙個作業執行結束撤離時,作業所佔的區域應該歸還,歸還的區域如果與其它空閒區相鄰,則應合成乙個較大的空閒區,登記在空閒區說明表中。例如,在提示(1)中列舉的情況下,如果作業2撤離,歸還所佔主存區域時,應與上、下相鄰的空閒區一起合成乙個大的空閒區登記在空閒區說明表中。歸還主存時的**演算法如圖4-2。

(5) 請按最先適應演算法設計主存分配和**的程式。然後按(1)中假設主存中已裝入三個作業,且形成兩個空閒區,確定空閒區說明表的初值。現有乙個需要主存量為6k的作業4申請裝入主存;然後作業3撤離;再作業2撤離。

請你為它們進行主存分配和**,把空閒區說明表的初值以及每次分配或**後的變化顯示出來或列印出來。

2、 分頁式管理方式下採用位示圖來表示主存分配情況,實現主存空間的分配和**。

(1) 分頁式儲存器把主存分成大小相等的若干塊,作業的資訊也按塊的大小分頁,作業裝入主存時可把作業的資訊按頁分散存放在主存的空閒塊中,為了說明主存中哪些塊已經被占用,哪些塊是尚未分配的空閒塊,可用一張位示圖來指出。位示圖可由若干儲存單元來構成,其中每一位與乙個物理塊對應,用0/1表示對應塊為空閒/已占用。

(2) 假設某系統的主存被分成大小相等的64塊,則位示圖可用8個位元組來構成,另用一單元記錄當前空閒塊數。如果已有第0,1,4,5,6,9,11,13,24,31,共10個主存塊被占用了,那麼位示圖情況如下:

圖1 最先適應分配模擬演算法

圖2 主存**演算法

(3) 當要裝入乙個作業時,根據作業對主存的需要量,先查當前空閒塊數是否能滿足作業要求,若不能滿足則輸出分配不成功。若能滿足,則查位示圖,找出為「0」的一些位,置上占用標誌「1」,從「當前空閒塊數」中減去本次占用塊數。

作業系統課程設計指導

一 本課程的教學目的及基本要求 1 教學目的 作業系統課程設計是作業系統課程的重要實踐環節,是作業系統課程內實驗的有益補充,它旨在培養學生的實踐能力,促進理論與實踐的結合。要求學生通過上機程式設計,了解如何模擬作業系統原理的實現,從而加深對作業系統原理的領會,加深對作業系統實現方法的理解,與此同時使...

作業系統課程設計報告

上海電力學院 計算機作業系統原理 課程設計報告 題目名稱 編寫程式模擬虛擬儲存器管理 姓名 杜志豪 學號 20121798 班級 2012053班 同組姓名 孫嘉軼 課程設計時間 2014.6.30 2014.7.4 評語成績 一 設計內容及要求4 1.1 設計題目4 1 2 使用演算法分析4 1 ...

作業系統課程設計報告

作業系統 課程設計報告 姓名吳昊學號 20091811042 系別資訊管理與工程系 專業電腦科學與技術班級 09級 課程設計題目模擬檔案管理系統 指導教師崔新會 小組成員吳昊 丁強強 辛夢娟 王放 周洋 2012 年 6 月 11 日 目錄 內容摘要 2 第一章引言 2 第二章需求分析 4 第三章系...