操作系統(tǒng)課程實(shí)驗(yàn)教學(xué)大綱_第1頁
操作系統(tǒng)課程實(shí)驗(yàn)教學(xué)大綱_第2頁
操作系統(tǒng)課程實(shí)驗(yàn)教學(xué)大綱_第3頁
操作系統(tǒng)課程實(shí)驗(yàn)教學(xué)大綱_第4頁
操作系統(tǒng)課程實(shí)驗(yàn)教學(xué)大綱_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1《操作系統(tǒng)》課程實(shí)驗(yàn)教學(xué)大綱一、實(shí)驗(yàn)課名稱:中文名:操作系統(tǒng)英文名:OperatingSystemPractice二、實(shí)驗(yàn)課性質(zhì):獨(dú)立設(shè)課三、適用專業(yè):信息管理與信息系統(tǒng)專業(yè)四、采用教材及參考書:1、湯子瀛、哲鳳萍、湯小丹編:《計(jì)算機(jī)操作系統(tǒng)》,西安電子科技大學(xué)出版社1996年12月;2、張堯?qū)W,《計(jì)算機(jī)操作系統(tǒng)》,清華大學(xué)出版社;3、周長林、左萬歷,《計(jì)算機(jī)操作系統(tǒng)教程》,高等教育出版社,1994年版;4、孫鐘秀,《操作系統(tǒng)教程》,高等教育出版社,1994年12月;五、學(xué)時(shí)學(xué)分:課程總學(xué)時(shí):54;課程總學(xué)分:3;實(shí)驗(yàn)課總學(xué)時(shí)36;六、實(shí)驗(yàn)項(xiàng)目名稱和學(xué)時(shí)分配序號(hào)實(shí)驗(yàn)項(xiàng)目名稱學(xué)時(shí)分配實(shí)驗(yàn)屬性實(shí)驗(yàn)類型實(shí)驗(yàn)者類別每組人數(shù)必開/選開1熟悉使用計(jì)算機(jī)系統(tǒng)3專業(yè)類設(shè)計(jì)性本科生1必開2處理器調(diào)度6專業(yè)類設(shè)計(jì)性本科生1必開3作業(yè)調(diào)度6專業(yè)類設(shè)計(jì)性本科生1必開4同步機(jī)構(gòu)9專業(yè)類設(shè)計(jì)性本科生1必開5資源分配12專業(yè)類設(shè)計(jì)性本科生1必開七、實(shí)驗(yàn)教學(xué)的目的和要求配合操作系統(tǒng)課程的學(xué)習(xí),模擬實(shí)現(xiàn)操作系統(tǒng)的功能,目的是加深對(duì)操作系統(tǒng)理論的理解。用戶為了開發(fā)應(yīng)用程序必須與操作系統(tǒng)打交道,編程時(shí)要借鑒操作系統(tǒng)的設(shè)計(jì)思想和算法。操作系統(tǒng)實(shí)驗(yàn)使得學(xué)生從理論走向應(yīng)用。八、實(shí)驗(yàn)項(xiàng)目的內(nèi)容和要求實(shí)驗(yàn)一項(xiàng)目名稱:熟悉使用計(jì)算機(jī)系統(tǒng)

一、實(shí)驗(yàn)內(nèi)容選擇一個(gè)計(jì)算機(jī)系統(tǒng),熟悉該系統(tǒng)的操作命令,且掌握該計(jì)算機(jī)系統(tǒng)的使用方法。二、實(shí)驗(yàn)?zāi)康呐浜喜僮飨到y(tǒng)課程的學(xué)習(xí),模擬實(shí)現(xiàn)操作系統(tǒng)的功能,有助于對(duì)操作系統(tǒng)的理解。操作系統(tǒng)功能的模擬實(shí)現(xiàn)可以在計(jì)算機(jī)系統(tǒng)的終端上進(jìn)行,也可以在一臺(tái)微型計(jì)算機(jī)上進(jìn)行。根據(jù)您的學(xué)習(xí)條件,選擇一個(gè)計(jì)算機(jī)系統(tǒng),熟悉對(duì)該系統(tǒng)的使用,那么您可以順利地完成本課程的實(shí)驗(yàn)。為了盡快地熟悉計(jì)算機(jī)系統(tǒng),可編輯一個(gè)源程序,且對(duì)編輯好的源程序編譯、運(yùn)行、顯示/打印運(yùn)行結(jié)果等。三、實(shí)驗(yàn)題目編制一個(gè)程序,求10′10矩陣A的轉(zhuǎn)置矩陣AT,即要求確定兩組初值,運(yùn)行設(shè)計(jì)的程序,顯示或打印每一組的A和AT。四、實(shí)驗(yàn)報(bào)告(1)實(shí)驗(yàn)題目。(2)程序中使用的數(shù)據(jù)結(jié)構(gòu)及符號(hào)說明。(3)流程圖。(4)打印一份源程序并附上注釋。(5)打印兩組A和AT的值。實(shí)驗(yàn)二項(xiàng)目名稱:處理器調(diào)度

一、實(shí)驗(yàn)內(nèi)容選擇一個(gè)調(diào)度算法,實(shí)現(xiàn)處理器調(diào)度。二、實(shí)驗(yàn)?zāi)康脑诓捎枚嗟莱绦蛟O(shè)計(jì)的系統(tǒng)中,往往有若干個(gè)進(jìn)程同時(shí)處于就緒狀態(tài)。當(dāng)就緒進(jìn)程個(gè)數(shù)大于處理器數(shù)時(shí),就必須依照某種策略來決定哪些進(jìn)程優(yōu)先占用處理器。本實(shí)驗(yàn)?zāi)M在單處理器情況下的處理器調(diào)度,幫助學(xué)生加深了解處理器調(diào)度的工作。三、實(shí)驗(yàn)題目設(shè)計(jì)一個(gè)按優(yōu)先數(shù)調(diào)度算法實(shí)現(xiàn)處理器調(diào)度的程序。[提示]:(1)假定系統(tǒng)有五個(gè)進(jìn)程,每一個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊PCB來代表,進(jìn)程控制塊的格式為:進(jìn)程名指針要求運(yùn)行時(shí)間優(yōu)先數(shù)狀態(tài)其中,進(jìn)程名——作為進(jìn)程的標(biāo)識(shí),假設(shè)五個(gè)進(jìn)程的進(jìn)程名分別為P1,P2,P3,P4,P5。指針——按優(yōu)先數(shù)的大小把五個(gè)進(jìn)程連成隊(duì)列,用指針指出下一個(gè)進(jìn)程的進(jìn)程控制塊的首地址,最后一個(gè)進(jìn)程中的指針為“0”。要求運(yùn)行時(shí)間——假設(shè)進(jìn)程需要運(yùn)行的單位時(shí)間數(shù)。優(yōu)先數(shù)——賦予進(jìn)程的優(yōu)先數(shù),調(diào)度時(shí)總是選取優(yōu)先數(shù)大的進(jìn)程先執(zhí)行。狀態(tài)——可假設(shè)有兩種狀態(tài),“就緒”狀態(tài)和“結(jié)束”狀態(tài)。五個(gè)進(jìn)程的初始狀態(tài)都為“就緒”,用“R”表示,當(dāng)一個(gè)進(jìn)程運(yùn)行結(jié)束后,它的狀態(tài)為“結(jié)束”,用“E”表示。(2)在每次運(yùn)行你所設(shè)計(jì)的處理器調(diào)度程序之前,為每個(gè)進(jìn)程任意確定它的“優(yōu)先數(shù)”和“要求運(yùn)行時(shí)間”。(3)為了調(diào)度方便,把五個(gè)進(jìn)程按給定的優(yōu)先數(shù)從大到小連成隊(duì)列。用一單元指出隊(duì)首進(jìn)程,用指針指出隊(duì)列的連接情況。例:

隊(duì)首標(biāo)志K2K1P1K2P2K3P3K4P4K5P5

0

K4

K5

K3

K1

2

3

1

2

4

1

5

3

4

2

R

R

R

R

R

PCB1

PCB2

PCB3

PCB4

PCB5

(4)處理器調(diào)度總是選隊(duì)首進(jìn)程運(yùn)行。采用動(dòng)態(tài)改變優(yōu)先數(shù)的辦法,進(jìn)程每運(yùn)行一次優(yōu)先數(shù)就減“1”。由于本實(shí)驗(yàn)是模擬處理器調(diào)度,所以,對(duì)被選中的進(jìn)程并不實(shí)際的啟動(dòng)運(yùn)行,而是執(zhí)行:優(yōu)先數(shù)-1要求運(yùn)行時(shí)間-1來模擬進(jìn)程的一次運(yùn)行。提醒注意的是:在實(shí)際的系統(tǒng)中,當(dāng)一個(gè)進(jìn)程被選中運(yùn)行時(shí),必須恢復(fù)進(jìn)程的現(xiàn)場,讓它占有處理器運(yùn)行,直到出現(xiàn)等待事件或運(yùn)行結(jié)束。在這里省去了這些工作。(5)進(jìn)程運(yùn)行一次后,若要求運(yùn)行時(shí)間10,則再將它加入隊(duì)列(按優(yōu)先數(shù)大小插入,且置隊(duì)首標(biāo)志);若要求運(yùn)行時(shí)間=0,則把它的狀態(tài)修改成“結(jié)束”(E),且退出隊(duì)列。(6)若“就緒”狀態(tài)的進(jìn)程隊(duì)列不為空,則重復(fù)上面(4)和(5)的步驟,直到所有進(jìn)程都成為“結(jié)束”狀態(tài)。(7)在所設(shè)計(jì)的程序中應(yīng)有顯示或打印語句,能顯示或打印每次被選中進(jìn)程的進(jìn)程名以及運(yùn)行一次后進(jìn)程隊(duì)列的變化。(8)為五個(gè)進(jìn)程任意確定一組“優(yōu)先數(shù)”和“要求運(yùn)行時(shí)間”,啟動(dòng)所設(shè)計(jì)的處理器調(diào)度程序,顯示或打印逐次被選中進(jìn)程的進(jìn)程名以及進(jìn)程控制塊的動(dòng)態(tài)變化過程。四、實(shí)驗(yàn)報(bào)告(1)實(shí)驗(yàn)題目。(2)程序中使用的數(shù)據(jù)結(jié)構(gòu)及符號(hào)說明。(3)流程圖。(4)打印一份源程序并附上注釋。(5)打印程序運(yùn)行時(shí)的初值和運(yùn)行結(jié)果。要求如下:ⅰ進(jìn)程控制塊的初始狀態(tài)。

ⅱ選中運(yùn)行的進(jìn)程名以及選中進(jìn)程運(yùn)行后的各進(jìn)程控制塊狀態(tài)。

對(duì)于ⅱ要求每選中一個(gè)進(jìn)程運(yùn)行后都要打印。實(shí)驗(yàn)三項(xiàng)目名稱:作業(yè)調(diào)度

一、實(shí)驗(yàn)內(nèi)容模擬批處理多道操作系統(tǒng)的作業(yè)調(diào)度。二、實(shí)驗(yàn)?zāi)康拿總€(gè)用戶請(qǐng)求計(jì)算機(jī)計(jì)算的一個(gè)計(jì)算任務(wù)叫做一個(gè)作業(yè)。一個(gè)作業(yè)從輸入初始數(shù)據(jù)到得到計(jì)算結(jié)果,要經(jīng)過若干個(gè)步驟的相繼執(zhí)行。例如,編輯、編譯、運(yùn)行等,其中每一個(gè)步驟稱作一個(gè)作業(yè)步。用戶向系統(tǒng)提出作業(yè)加工步驟的方式稱作業(yè)控制方式,作業(yè)控制方式有兩種:終端控制方式(又稱直接控制方式或聯(lián)機(jī)控制方式)和批處理控制方式(又稱自動(dòng)控制方式或脫機(jī)控制方式)。在批處理控制方式下,用戶采用系統(tǒng)提供的作業(yè)控制語言(JCL)寫好作業(yè)說明書,說明作業(yè)加工的步驟。操作員把一批作業(yè)組織成輸入流,通過“預(yù)輸入”手段使每個(gè)作業(yè)的信息(包括作業(yè)說明書、源程序、初始數(shù)據(jù)等)暫存在輔助存儲(chǔ)器的“輸入井”中。批處理多道操作系統(tǒng)的作業(yè)管理有兩個(gè)任務(wù):作業(yè)調(diào)度和作業(yè)控制。采用多道程序設(shè)計(jì)方法的操作系統(tǒng),在系統(tǒng)中要經(jīng)常保留多個(gè)運(yùn)行的作業(yè),以提高系統(tǒng)效率。作業(yè)調(diào)度從系統(tǒng)已接納的暫存在輸入井中的一批作業(yè)中挑選出若干個(gè)可運(yùn)行的作業(yè),并為這些被選中的作業(yè)分配所需的系統(tǒng)資源。對(duì)被選中運(yùn)行的作業(yè)必須按照它們各自的作業(yè)說明書規(guī)定的步驟進(jìn)行控制。本實(shí)驗(yàn)要求學(xué)生模擬作業(yè)調(diào)度的實(shí)現(xiàn),了解作業(yè)調(diào)度在操作系統(tǒng)中的作用。三、實(shí)驗(yàn)題目采用先來先服務(wù)算法和運(yùn)行時(shí)間最短者優(yōu)先算法模擬設(shè)計(jì)作業(yè)調(diào)度程序。[提示]:(1)作業(yè)調(diào)度程序負(fù)責(zé)從輸入井選擇若干個(gè)作業(yè)進(jìn)入主存,為它們分配必要的資源,當(dāng)它們能夠被進(jìn)程調(diào)度選中時(shí),就可占用處理器運(yùn)行。作業(yè)調(diào)度選擇一個(gè)作業(yè)的必要條件是系統(tǒng)中現(xiàn)有的尚未分配的資源可滿足該作業(yè)的資源要求。但有時(shí)系統(tǒng)中現(xiàn)有的尚未分配的資源既可滿足某個(gè)作業(yè)的要求也可滿足其它一些作業(yè)的要求,那么,作業(yè)調(diào)度必須按一定的算法在這些作業(yè)中作出選擇。先來先服務(wù)算法是按照作業(yè)進(jìn)入輸入井的先后次序來挑選作業(yè),先進(jìn)入輸入井的作業(yè)優(yōu)先被挑選,當(dāng)系統(tǒng)中現(xiàn)有的尚未分配的資源不能滿足先進(jìn)入輸入井的作業(yè)時(shí),那么順序挑選后面的作業(yè)。運(yùn)行時(shí)間最短者優(yōu)先算法總是按作業(yè)要求運(yùn)行的時(shí)間來選擇作業(yè),每次挑選要求運(yùn)行時(shí)間短且資源要求能滿足的作業(yè)先進(jìn)入主存執(zhí)行。(2)為了表示暫存在輸入井中的各個(gè)作業(yè)的情況(作業(yè)信息在輸入井中的位置、作業(yè)的資源要求等),常常采用二級(jí)目錄結(jié)構(gòu):作業(yè)表和預(yù)輸入表。例如:

用戶名作業(yè)名資源要求預(yù)輸入表地址

作業(yè)表

文件名文件屬性文件長度在輸入井中位置

預(yù)輸入表“預(yù)輸入”程序?yàn)槊總€(gè)作業(yè)在作業(yè)表中占一登記欄,且把作業(yè)信息存放到輸入井中并按文件(源程序文件、數(shù)據(jù)文件等)登記在預(yù)輸入表中?!邦A(yù)輸入”程序工作時(shí)還把作業(yè)控制語句集中,作為作業(yè)說明書文件存放在輸入井并登記在預(yù)輸入表的第一欄中,同時(shí)把用戶在作業(yè)說明書中提出的資源要求登記在作業(yè)表中。本實(shí)驗(yàn)?zāi)M作業(yè)調(diào)度,所以可不考慮有關(guān)“預(yù)輸入”程序的工作。假定“預(yù)輸入”程序已經(jīng)把一批作業(yè)的信息存放在輸入井了,并為它們建立了如下的作業(yè)表:

用戶名作業(yè)名狀態(tài)運(yùn)行時(shí)間資源要求預(yù)輸入表地址主存磁帶AZYA收容0.3小時(shí)15k2

BZYB收容0.5小時(shí)60k1

CZYC收容0.1小時(shí)50k3

DZYD收容0.4小時(shí)10k2

EZYE收容0.1小時(shí)30k3

其中狀態(tài)分三種:收容狀態(tài)——作業(yè)已在輸入井,但尚未被選中執(zhí)行;執(zhí)行狀態(tài)——作業(yè)被選中,正在執(zhí)行;完成狀態(tài)——作業(yè)執(zhí)行結(jié)束。(3)假定主存中可容納多道作業(yè)同時(shí)執(zhí)行,那么作業(yè)調(diào)度按調(diào)度算法和資源分配情況查作業(yè)表,從中選擇若干作業(yè),對(duì)每個(gè)被選中的作業(yè)創(chuàng)建一個(gè)作業(yè)控制進(jìn)程且使它們處于就緒狀態(tài),同時(shí)把選中作業(yè)的作業(yè)說明書讀入主存。處理器調(diào)度按調(diào)度策略選擇作業(yè)調(diào)度進(jìn)程或作業(yè)控制進(jìn)程輪流占有處理器(處理器調(diào)度參見實(shí)驗(yàn)二)。作業(yè)控制進(jìn)程按作業(yè)說明書控制作業(yè)執(zhí)行,當(dāng)一個(gè)作業(yè)執(zhí)行結(jié)束后,作業(yè)調(diào)度再從輸入井中選擇一個(gè)作業(yè)進(jìn)入主存,直到輸入井中的作業(yè)都執(zhí)行結(jié)束,通知操作員再預(yù)輸入一批作業(yè)。本實(shí)驗(yàn)主要模擬作業(yè)調(diào)度,所以對(duì)處理器調(diào)度、作業(yè)控制過程簡化。用輸入隨機(jī)數(shù)模擬處理器調(diào)度,用輸入“用戶名、作業(yè)名”模擬一個(gè)作業(yè)已經(jīng)執(zhí)行結(jié)束。于是,本實(shí)驗(yàn)的模擬流程可參考圖11-1。(4)假定某系統(tǒng)可供用戶使用的主存空間共100k,并有5臺(tái)磁帶機(jī)。主存分配采用可變分區(qū)分配方式且主存中信息不允許移動(dòng),對(duì)磁帶機(jī)采用靜態(tài)分配策略,主存中可同時(shí)執(zhí)行的作業(yè)限定為兩道,作業(yè)調(diào)度分別采用先來先服務(wù)算法和運(yùn)行時(shí)間最短者優(yōu)先算法,參考圖11-1設(shè)計(jì)模擬作業(yè)調(diào)度的程序。假定作業(yè)表的初值如提示(2),分別在兩種算法控制下運(yùn)行設(shè)計(jì)的程序,依次顯示被選中作業(yè)的用戶名和作業(yè)名。比較兩種作業(yè)調(diào)度算法選擇作業(yè)的次序。在模擬作業(yè)執(zhí)行結(jié)束輸入被撤離作業(yè)的用戶名、作業(yè)名時(shí),應(yīng)根據(jù)已在主存中的作業(yè)需運(yùn)行的時(shí)間來決定撤離的先后次序。四、實(shí)驗(yàn)報(bào)告(1)實(shí)驗(yàn)題目。(2)程序所用的數(shù)據(jù)結(jié)構(gòu)及其說明。(3)打印一份源程序且附上注釋。(4)打印程序運(yùn)行前的作業(yè)表,運(yùn)行不同算法的作業(yè)調(diào)度程序,打印每選擇一個(gè)作業(yè)后的作業(yè)表變化情況以及作業(yè)被選中執(zhí)行的次序。

圖11-1作業(yè)調(diào)度模擬流程

實(shí)驗(yàn)四項(xiàng)目名稱:同步機(jī)構(gòu)

一、實(shí)驗(yàn)內(nèi)容模擬實(shí)現(xiàn)用同步機(jī)構(gòu)避免發(fā)生進(jìn)程執(zhí)行時(shí)可能出現(xiàn)的與時(shí)間有關(guān)的錯(cuò)誤。二、實(shí)驗(yàn)?zāi)康倪M(jìn)程是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過程,進(jìn)程是并發(fā)執(zhí)行的,也即系統(tǒng)中的多個(gè)進(jìn)程輪流地占用處理器運(yùn)行。我們把若干個(gè)進(jìn)程都能進(jìn)行訪問和修改的那些變量稱為公共變量。由于進(jìn)程是并發(fā)地執(zhí)行的,所以,如果對(duì)進(jìn)程訪問公共變量不加限制,那么就會(huì)產(chǎn)生“與時(shí)間有關(guān)”的錯(cuò)誤,即進(jìn)程執(zhí)行后所得到的結(jié)果與訪問公共變量的時(shí)間有關(guān)。為了防止這類錯(cuò)誤,系統(tǒng)必須要用同步機(jī)構(gòu)來控制進(jìn)程對(duì)公共變量的訪問。一般說,同步機(jī)構(gòu)是由若干條原語——同步原語——所組成。本實(shí)驗(yàn)要求學(xué)生模擬PV操作同步機(jī)構(gòu)的實(shí)現(xiàn),模擬進(jìn)程的并發(fā)執(zhí)行,了解進(jìn)程并發(fā)執(zhí)行時(shí)同步機(jī)構(gòu)的作用。三、實(shí)驗(yàn)題目模擬PV操作同步機(jī)構(gòu),且用PV操作解決生產(chǎn)者——消費(fèi)者問題。[提示]:(1)PV操作同步機(jī)構(gòu),由P操作原語和V操作原語組成,它們的定義如下:P操作原語P(s):將信號(hào)量s減去1,若結(jié)果小于0,則執(zhí)行原語的進(jìn)程被置成等待信號(hào)量s的狀態(tài)。V操作原語V(s):將信號(hào)量s加1,若結(jié)果不大于0,則釋放一個(gè)等待信號(hào)量s的進(jìn)程。這兩條原語是如下的兩個(gè)過程:procedurep(vars:semaphore);begins:=s-1;ifs<0thenW(s)end{p}procedurev(vars:semaphore);egins:=s+1;ifs£0thenR(s)end{v}其中W(s)表示將調(diào)用過程的進(jìn)程置為等待信號(hào)量s的狀態(tài);R(s)表示釋放一個(gè)等待信號(hào)量s的進(jìn)程。在系統(tǒng)初始化時(shí)應(yīng)把semaphore定義為某個(gè)類型,為簡單起見,在模擬實(shí)驗(yàn)中可把上述的semaphore直接改成integer。(2)生產(chǎn)者——消費(fèi)者問題。假定有一個(gè)生產(chǎn)者和一個(gè)消費(fèi)者,生產(chǎn)者每次生產(chǎn)一件產(chǎn)品,并把生產(chǎn)的產(chǎn)品存入共享緩沖器以供消費(fèi)者取走使用。消費(fèi)者每次從緩沖器內(nèi)取出一件產(chǎn)品去消費(fèi)。禁止生產(chǎn)者將產(chǎn)品放入已滿的緩沖器內(nèi),禁止消費(fèi)者從空緩沖器內(nèi)以產(chǎn)品。假定緩沖器內(nèi)可同時(shí)存放10件產(chǎn)品。那么,用PV操作來實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者之間的同步,生產(chǎn)者和消費(fèi)者兩個(gè)進(jìn)程的程序如下:B:array[0..9]ofproducts;s1,s2;semaphore;s1:=10,s2:=0;IN,out:integer;IN:=0;out:=0;cobeginprocedureproducer;c:products;beginL1:Produce(c);P(s1);B[IN]:=C;IN:=(IN+1)mod10;V(s2);gotoL1end;procedureconsumer;x:products;beginL2:p(s2);x:=B[out];out:=(out+1)mod10;v(s1);consume(x);gotoL2end;coend.其中的semaphore和products是預(yù)先定義的兩個(gè)類型,在模擬實(shí)現(xiàn)中semaphore用integer代替,products可用integer或char等代替。(3)進(jìn)程控制塊PCB。為了記錄進(jìn)程執(zhí)行時(shí)的情況,以及進(jìn)程讓出處理器后的狀態(tài),斷點(diǎn)等信息,每個(gè)進(jìn)程都有一個(gè)進(jìn)程控制塊PCB。在模擬實(shí)驗(yàn)中,假設(shè)進(jìn)程控制塊的結(jié)構(gòu)如圖12-1。其中進(jìn)程的狀態(tài)有:運(yùn)行態(tài)、就緒態(tài)、等待態(tài)和完成態(tài)。當(dāng)進(jìn)程處于等待態(tài)時(shí),在進(jìn)程控制塊PCB中要說明進(jìn)程等待原因(在模擬實(shí)驗(yàn)中進(jìn)程等待原因是為等待信號(hào)量s1或s2);當(dāng)進(jìn)程處于等待態(tài)或就緒態(tài)時(shí),PCB中保留了斷點(diǎn)信息,一旦進(jìn)程再度占有處理器則就從斷點(diǎn)位置繼續(xù)運(yùn)行;當(dāng)進(jìn)程處于完成狀態(tài),表示進(jìn)程執(zhí)行結(jié)束。

進(jìn)程名狀態(tài)等待原因斷點(diǎn)圖12-1進(jìn)程控制塊結(jié)構(gòu)

(4)處理器的模擬。計(jì)算機(jī)硬件提供了一組機(jī)器指令,處理器的主要職責(zé)是解釋執(zhí)行機(jī)器指令。為了模擬生產(chǎn)者和消費(fèi)者進(jìn)程的并發(fā)執(zhí)行,我們必須模擬一組指令和處理職能。模擬的一組指令見圖12-2,其中每條指令的功能由一個(gè)過程來實(shí)現(xiàn)。用變量PC來模擬“指令計(jì)數(shù)器”,假設(shè)模擬的指令長度為1,每執(zhí)行一條模擬指令后,PC加1,提出下一條指令地址。使用模擬的指令,可把生產(chǎn)者和消費(fèi)者進(jìn)程的程序表示為圖12-3的形式。定義兩個(gè)一維數(shù)組PA[0..4]和SA[0..4],每一個(gè)PA[i]存放生產(chǎn)者程序中的一條模擬指令執(zhí)行的入口地址;每個(gè)SA[i]存放消費(fèi)者程序中的一條模擬指令執(zhí)行的入口地址。于是模擬處理器執(zhí)行一條指令的過程為:取出PC之值,按PA[PC]或SA[PC]得模擬指令執(zhí)行的入口地址,將PC之值加1,轉(zhuǎn)向由入口地址確定的相應(yīng)的過程執(zhí)行。(5)程序設(shè)計(jì)本實(shí)驗(yàn)中的程序由三部分組成:初始化程序、處理器調(diào)度程序、模擬處理器指令執(zhí)行程序。各部分程序的功能及相互間的關(guān)系由圖12-4至圖12-7指出。

模擬的指令功能p(s)執(zhí)行P操作原語v(s)執(zhí)行V操作原語putB[IN]:=product;IN:=(IN+1)mod10GETx:=B[out];out:=(out+1)mod10produce輸入一個(gè)字符放入C中consume打印或顯示x中的字符GOTOLPC:=LNOP空操作圖12-2模擬的處理器指令

序號(hào)生產(chǎn)者程序消費(fèi)者程序0producep(s2)1p(s1)GET2PUTv(s1)3v(s2)consume4goto0goto0圖12-3生產(chǎn)者和消費(fèi)者程序

·初始化程序:模擬實(shí)驗(yàn)的程序從初始化程序入口啟動(dòng),初始化工作包括對(duì)信號(hào)量s1、s2賦初值,對(duì)生產(chǎn)者、消費(fèi)者進(jìn)程的PCB初始化。初始化后轉(zhuǎn)向處理調(diào)度程序,其流程如圖12-4。圖12-4初始化流程

·處理器調(diào)度程序:在計(jì)算機(jī)系統(tǒng)中,進(jìn)程并發(fā)執(zhí)行時(shí),任一進(jìn)程占用處理器執(zhí)行完一條指令后就有可能被打斷而讓出處理器由其它進(jìn)程運(yùn)行。故在模擬系統(tǒng)中也類似處理,每當(dāng)執(zhí)行一條模擬的指令后,保護(hù)當(dāng)前進(jìn)程的現(xiàn)場,讓它成為非運(yùn)行態(tài),由處理器調(diào)度程序按隨機(jī)數(shù)再選擇一個(gè)就緒進(jìn)程占用處理器運(yùn)行。處理器調(diào)度程序流程見圖12-5。圖12-5模擬處理器調(diào)度

·模擬處理器指令執(zhí)行程序:按“指令計(jì)數(shù)器”PC之值執(zhí)行指定的指令,且PC加1指向下一條指令。模擬處理器指令執(zhí)行程序的流程圖見圖12-6和圖12-7。圖12-6模擬處理器指令執(zhí)行(a)模擬P(s)(b)模擬V(s)圖12-7模擬PV操作的執(zhí)行

另外,為了使得模擬程序有一個(gè)結(jié)束條件,在圖12-6中附加了“生產(chǎn)者運(yùn)行結(jié)束”的條件判斷,模擬時(shí)可以采用人工選擇的方法實(shí)現(xiàn)。圖12-7給出了P(s)和V(s)模擬指令執(zhí)行過程的流程。其它模擬指令的執(zhí)行過程已在圖12-2中指出。四、實(shí)驗(yàn)報(bào)告(1)實(shí)驗(yàn)題目。(2)打印源程序并附上注釋。(3)從鍵盤上輸入一組字符,由生產(chǎn)者每次讀入一個(gè)字符供消費(fèi)者輸出。運(yùn)行模擬程序,打印依次讀入的字符和經(jīng)消費(fèi)者輸出的字符。(4)把生產(chǎn)者和消費(fèi)者進(jìn)程中的P操作、V操作都改成空操作指令,觀察在兩者不同步的情況下可能出現(xiàn)的與時(shí)間有關(guān)的錯(cuò)誤。打印依次讀入的字符和經(jīng)消費(fèi)者輸出的字符。

實(shí)驗(yàn)五項(xiàng)目名稱:資源分配

一、實(shí)驗(yàn)內(nèi)容模擬實(shí)現(xiàn)資源分配。二、實(shí)驗(yàn)?zāi)康亩鄠€(gè)進(jìn)程動(dòng)態(tài)地共享系統(tǒng)的資源可能會(huì)產(chǎn)生死鎖現(xiàn)象。死鎖的產(chǎn)生,必須同時(shí)滿足四個(gè)條件,第一個(gè)是互斥條件,即一個(gè)資源每次只能由一個(gè)進(jìn)程占用;第二個(gè)為等待條件,即一個(gè)進(jìn)程請(qǐng)求資源不能滿足時(shí),它必須等待,但它仍繼續(xù)保持已得到的所有其它資源;第三個(gè)是非出讓條件,任何一個(gè)進(jìn)程不能搶占另一個(gè)進(jìn)程已經(jīng)獲得且未釋放的資源;第四個(gè)為循環(huán)等待條件,系統(tǒng)中存在若干個(gè)循環(huán)等待的進(jìn)程,即其中每一個(gè)進(jìn)程分別等待它前一個(gè)進(jìn)程所持有的資源。防止死鎖的機(jī)構(gòu)只須確保上述四個(gè)條件之一不出現(xiàn),則系統(tǒng)就不會(huì)發(fā)生死鎖。在實(shí)驗(yàn)中假定系統(tǒng)中任一資源在每一時(shí)刻只能則由一個(gè)進(jìn)程使用,任何進(jìn)程不能搶占它進(jìn)程正在使用的資源,當(dāng)進(jìn)程得不到資源時(shí)必須等待。因此只要資源分配策略能保證進(jìn)程不出現(xiàn)循環(huán)等待,則系統(tǒng)就不會(huì)發(fā)生死鎖。本實(shí)驗(yàn)要求學(xué)生編寫和調(diào)試一個(gè)系統(tǒng)動(dòng)態(tài)分配資源的簡單模擬程序,觀察死鎖產(chǎn)生的條件,并采用適當(dāng)?shù)乃惴?,有效地防止和避免死鎖的發(fā)生。三、實(shí)驗(yàn)題目用按序分配策略實(shí)現(xiàn)資源分配。要求:(1)設(shè)計(jì)一個(gè)3個(gè)進(jìn)程共享10個(gè)資源的系統(tǒng),進(jìn)程可動(dòng)態(tài)地申請(qǐng)資源和釋放資源,系統(tǒng)按各進(jìn)程的申請(qǐng)動(dòng)態(tài)地分配資源。(2)設(shè)計(jì)用按序分配算法實(shí)現(xiàn)資源分配的資

溫馨提示

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

評(píng)論

0/150

提交評(píng)論