中北大學作業系統課程設計說明書

2021-03-14 12:39:36 字數 2451 閱讀 4640

中北大學

作業系統課程設計

說明書2013 年 11月 6 日

1 需求分析

基於linux的程序同步與通訊的模擬實現需要完成以下功能:

(1)建立程序:手動建立幾個程序,或者隨即建立幾個程序,都在介面上完成;要求包括程序的名稱(不能重複)、執行時間和申請資源的等待時間等。在同一時刻可能有多個進行在記憶體申請某資源,即可以輸入多個程序的資源申請。

(2)3類臨界資源的管理,包括申請以及分配等。分別通過訊號量實現或者管程實現。

(3)銀行家演算法,判斷是否可以進行資源的分配。

基於以上的功能,可以使使用者選擇操作,模擬臨界資源的管理和銀行家演算法。

目的:實現臨界資源的管理及死鎖的避免。

2 總體設計

程序同步與模擬實現系統分為4個模組:輸入輸出,程序對資源的隨機申請及分配,臨界資源管理,銀行家演算法避免死鎖。

輸入輸出:包括系統執行所需要的程序的名稱,執行時間,申請資源的等待時間,程序對資源的需要量等資訊以及系統所要顯示出的程序的建立資訊,資源的分配資訊,進行執行資訊,進行動態申請資源資訊等。

程序對資源的隨機申請及分配:根據所輸入的程序、資源、以及程序對資源的最大申請情況,隨機產生程序當前對資源的申請,輸出相應的分配資訊與程序執行資訊並呼叫銀行家演算法對程序的資源申請進行判斷。

臨界資源的管理:建立相應個數的程序,完成程序的併發執行,使用互斥訊號量使各程序互斥的進入各自的臨界區對資源進行申請,程序執行完畢後,互斥的對資源進行恢復。

銀行家演算法避免死鎖:對當前程序對資源的申請利用銀行家演算法進行判斷,看系統分配後是否處於安全狀態,若處於安全狀態,則將資源分配給程序,並輸出分配資訊,否則對不予以分配。

3.詳細設計

在該系統中我主要實現了銀行家演算法中隨機分配的模組,該模組中主要使用了陣列的資料結構.

3.1隨機分配演算法:

3.1.1首先:

定義了乙個結構體y其中放置了max陣列中申請資源量大於0的資源。(包括程序下標,資源下標,程序是否對資源申請過的訊號量,該資源是否已經被申請完的訊號量)。再定義乙個陣列col。

用來存放第m個程序中過濾(去除申請資源量為0)的資源數。

3.1.2 (1)遍歷max陣列對二維y陣列和一維col陣列進行初始化:

生成乙個去除了申請量為0的新的二維結構體陣列(記錄有程序下標和資源下標)。col中放置新的y陣列對應的資訊(每個程序申請資源數)。

還可以進行遍歷,篩選並記錄各程序對所有資源的最大申請量大於0的元素資訊3.2資料結構

struct zy ;

struct jc ;

struct y y[10][num];

struct jc jc[5];

struct zy zy[num]; //每種資源的名稱及數量

3.3核心**

//對整個二維陣列y進行遍歷

int judge_pro(int m, int p[10])

}return 0; //僅當所有程序對資源的申請都達到所需量時才返回0

}//對二維陣列中的某一行(對應某種程序)進行遍歷

int panduan1(int tr, int p[10])

return 1; //僅當該程序所有資源都申請完時返回1

}//產生隨機程序和程序所申請的資源,並呼叫銀行家演算法

int ra()

//對max陣列進行遍歷,篩選並記錄各程序對所有資源的最大申請量大於0的元素資訊

for (i = 0; i < u; i++)

col[m] = n; //陣列col記錄二維陣列y的每一行的列數

n = 0; //對n進行恢復,以便下次迴圈

m++;

}//只要有資源未申請完就執行迴圈

while (judge_pro(m, col))

用x保證迴圈次數,使該程序隨機產生對各資源的申請量

for (i = 0; i < x; i++)

printf("\n");

request(y[tr][0].tr, col[tr], tr); //呼叫銀行家演算法

if (panduan1(tr, col))

}//所有程序執行完成後,對資源數目進行恢復

if (!(judge_pro(m, col)))

}return 0;

}3.4執行結果

4.心得體會

經過這次的作業系統課程設計,讓我經歷了一次有意義的專案開發過程,讓我了解了團隊合作的重要性,起初我們只是在不停的各幹各的,發現根本不可能完成預期的任務,後來我們坐下來討論了系統的功能,然後各司其職,發現效果真的不一樣,雖然在這兩周的時間裡我們做了很多,中間也遇到了一些問題,比如說臨界資源管理模組和銀行家模組怎樣結合起來,起初是將兩個交叉起來,可是效果不是很好,最後還是決定將它們分開,慢慢地其他問題也同樣得到了解決,這就是團隊合作的力量,這個系統需要完善的內容還有很多,我們以後還會在一起討論完善並改進,在此過程中,我也發現了程式設計是需要絕對的耐心與細心的,不然會造成一些難以修改的錯誤,導致整個專案進展出現問題。這對我們真的是一次很好的鍛鍊。

中北大學工具機課程設計說明書

目錄1.概述和工具機引數確定2 1.1工具機運動引數的確定2 1.2工具機動力引數的確定2 1.3工具機布局2 2.主傳動系統運動設計3 2.1確定變速組傳動副數目3 2.2確定變速組的擴大順序4 2.3繪製轉速圖4 2.4確定齒輪齒數4 2.5確定帶輪直徑5 2.6繪製傳動系統圖5 3 估算傳動件...

西華大學課程設計說明書

智慧型恆溫箱主要是用來控制溫度。隨著現代科學技術的發展,恆溫控制系統可以供科研機構和醫院用作細菌培養之用,也可用於育種 發酵 嬰兒培養箱及其他生物恆溫實驗,且對其效能要求也越來越高。因此,恆溫控制系統的設計有很大的現實意義。在本設計的恆溫系統裡,通過對恆溫箱溫度的檢測與轉換傳送到微控制器與給定的值進...

課程設計說明書

指導教師 2014年12月22日 目錄第1章可調直流穩壓電源的製作與除錯 2 1.1 設計任務 2 1.1.1 設計目的 2 1.1.2 設計要求及技術指標 2 1.2 總體設計方案 2 1.2.1 直流穩壓電源的基本原理 2 1.3系統分析與設計 3 1.3.1 整流 濾波電路 3 1.3.2 電...