操作系統(tǒng)原理課程設(shè)計(jì)論文終結(jié)_第1頁
操作系統(tǒng)原理課程設(shè)計(jì)論文終結(jié)_第2頁
操作系統(tǒng)原理課程設(shè)計(jì)論文終結(jié)_第3頁
操作系統(tǒng)原理課程設(shè)計(jì)論文終結(jié)_第4頁
操作系統(tǒng)原理課程設(shè)計(jì)論文終結(jié)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)原理課程設(shè)計(jì)實(shí)踐報(bào)告題目: P,V信號(hào)量-管程解決讀者寫者問題 (申優(yōu)) 姓 名: 樊鹿鳴,梁峰,寄偉杰 學(xué)院: 信息科技學(xué)院專業(yè): 計(jì)算機(jī)科學(xué)技術(shù)系 班級(jí): 計(jì)科121,122學(xué)號(hào): 19212226,19212229,19212127 指導(dǎo)教師: 姜海燕 職稱: 教授 2015年3月19日關(guān)鍵字:P,V信號(hào)量 管程 死鎖 讀者寫者問題1. 目的和意義在操作系統(tǒng)的進(jìn)程管理中"進(jìn)程之間的同步與互斥是一個(gè)非常重要的問題"由于進(jìn)程是并發(fā)執(zhí)行的"這些進(jìn)程之間存在著不同的相互制約關(guān)系"如果管理不恰當(dāng)"就會(huì)產(chǎn)生結(jié)果不確定或者進(jìn)入死鎖,這也是是操作

2、系統(tǒng)原理學(xué)習(xí)中的重點(diǎn)與難點(diǎn)之一。比較有效的解決方法是使用信號(hào)量機(jī)制"它主要是通過兩個(gè)操作原語的使用"來保證進(jìn)程之間的同步與互斥讀者(寫者問題是進(jìn)程同步的一個(gè)經(jīng)典問題"原有的算法是一種讀者優(yōu)先的算法"容易造成寫者進(jìn)程的餓死現(xiàn)象"對(duì)此作了改進(jìn),我們又引進(jìn)了管程來解決讀者寫者問題2. 理論基礎(chǔ)操作系統(tǒng)內(nèi)部存在著許許多多的并發(fā)活動(dòng)相對(duì)獨(dú)立的多個(gè)用戶進(jìn)程可以并發(fā)運(yùn)行操作系統(tǒng)本身的許多不同功能的進(jìn)程也可并發(fā)執(zhí)行&在進(jìn)程并發(fā)執(zhí)行時(shí)"由于資源共享和進(jìn)程之間的合作"使處于同一系統(tǒng)中的進(jìn)程之間可能產(chǎn)生兩種形式的制約關(guān)系"即直接

3、制約和間接制約,而這兩種關(guān)系"通常表現(xiàn)在兩類問題上同步和互斥。進(jìn)程互斥它主要源于對(duì)臨界資源共享)多個(gè)進(jìn)程競爭使用臨界資源時(shí)產(chǎn)生的關(guān)系"是進(jìn)程間的間接制約關(guān)系在多道系統(tǒng)中)每次只允許一個(gè)進(jìn)程訪問的資源如外設(shè)(共享代碼段(共享數(shù)據(jù)結(jié)構(gòu))為臨界資源) 每個(gè)進(jìn)程中訪問臨界資源的那段程序叫臨界區(qū),進(jìn)程互斥就是保證每次只有一個(gè)進(jìn)程使用臨界資源, 這些使用臨界資源的進(jìn)程在邏輯上完全獨(dú)立) 本無關(guān)系) 但是由于競爭同一臨界資源而產(chǎn)生了相互制約的關(guān)系"即一個(gè)進(jìn)程使用臨界資源時(shí)"其他使用臨界資源的進(jìn)程只能等待。進(jìn)程同步(它主要源于相互協(xié)作的進(jìn)程) 是多個(gè)進(jìn)程相互合作共同完成

4、一項(xiàng)任務(wù)時(shí)發(fā)生的關(guān)系,是進(jìn)程間的直接制約關(guān)系,相互合作的進(jìn)程具有伙伴關(guān)系"為了保證執(zhí)行結(jié)果的正確性) 在執(zhí)行時(shí)間上必須遵循確定的規(guī)律,具體的說"一個(gè)進(jìn)程運(yùn)行到某一點(diǎn)時(shí),要求另一伙伴進(jìn)程為它提供消息"在未獲得消息之前"該進(jìn)程處于等待狀態(tài)"獲得消息后被喚醒進(jìn)入就緒態(tài)* 在多道環(huán)境下) 這種進(jìn)程間在執(zhí)行次序上的協(xié)調(diào)是必不可少的, 為了能夠正確控制進(jìn)程的并發(fā)執(zhí)行"操作系統(tǒng)必須提供相應(yīng)的同步機(jī)構(gòu)以協(xié)調(diào)這些制約關(guān)系,同步機(jī)構(gòu)的主要任務(wù)就是使并發(fā)執(zhí)行的進(jìn)程之間能有效地共享資源和相互合作"從而使程序的執(zhí)行能夠有序的進(jìn)行2.2讀者,寫者問題讀

5、者寫者問題(Readers-Writers problem)也是一個(gè)經(jīng)典的并發(fā)程序設(shè)計(jì)問題,是經(jīng)常出現(xiàn)的一種同步問題。計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)(文件、記錄)常被多個(gè)進(jìn)程共享,但其中某些進(jìn)程可能只要求讀數(shù)據(jù)(稱為讀者Reader);另一些進(jìn)程則要求修改數(shù)據(jù)(稱為寫者Writer)。就共享數(shù)據(jù)而言,Reader和Writer是兩組并發(fā)進(jìn)程共享一組數(shù)據(jù)區(qū),要求:(1)允許多個(gè)讀者同時(shí)執(zhí)行讀操作;(2)不允許讀者、寫者同時(shí)操作;(3)不允許多個(gè)寫者同時(shí)操作。Reader和Writer的同步問題分為讀者優(yōu)先、弱寫者優(yōu)先(公平競爭)和強(qiáng)寫者優(yōu)先三種情況,它們的處理方式不同。(1)讀者優(yōu)先。對(duì)于讀者優(yōu)先,應(yīng)滿足下

6、列條件:如果新讀者到:無讀者、寫者,新讀者可以讀;有寫者等待,但有其它讀者正在讀,則新讀者也可以讀;有寫者寫,新讀者等待。如果新寫者到:無讀者,新寫者可以寫;有讀者,新寫者等待;有其它寫者,新寫者等待2.3 P,V信號(hào)量信號(hào)量(semaphore)的數(shù)據(jù)結(jié)構(gòu)為一個(gè)值和一個(gè)指針,指針指向等待該信號(hào)量的下一個(gè)進(jìn)程。信號(hào)量的值與相應(yīng)資源的使用情況有關(guān)。當(dāng)它的值大于0時(shí),表示當(dāng)前可用資源的數(shù)量;當(dāng)它的值小于0時(shí),其絕對(duì)值表示等待使用該資源的進(jìn)程個(gè)數(shù)。注意,信號(hào)量的值僅能由PV操作來改變。 一般來說,信號(hào)量S>=0時(shí),S表示可用資源的數(shù)量。執(zhí)行一次P操作意味著請(qǐng)求分配一個(gè)單位資源,因此S的值減1;

7、當(dāng)S<0時(shí),表示已經(jīng)沒有可用資源,請(qǐng)求者必須等待別的進(jìn)程釋放該類資源,它才能運(yùn)行下去。而執(zhí)行一個(gè)V操作意味著釋放一個(gè)單位資源,因此S的值加1;若S=<0,表示有某些進(jìn)程正在等待該資源,因此要喚醒一個(gè)等待狀態(tài)的進(jìn)程,使之運(yùn)行下去。2.4 管程信號(hào)量機(jī)制的引入解決了進(jìn)程同步的描述問題,但信號(hào)量的大量同步操作分散在各個(gè)進(jìn)程中不便于管理,還有可能導(dǎo)致系統(tǒng)死鎖。如:生產(chǎn)者消費(fèi)者問題中將P、V顛倒可能死鎖。為此Dijkstra于1971年提出:把所有進(jìn)程對(duì)某一種臨界資源的同步操作都集中起來,構(gòu)成一個(gè)所謂的秘書進(jìn)程。凡要訪問該臨界資源的進(jìn)程,都需先報(bào)告秘書,由秘書來實(shí)現(xiàn)諸進(jìn)程對(duì)同一臨界資源的互斥

8、使用。Hansan為管程所下的定義是:管程定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)和能為并發(fā)進(jìn)程所執(zhí)行的一組操作,這組操作能同步進(jìn)程和改變管程中的數(shù)據(jù)。管程的四個(gè)組成:1.管程內(nèi)部的共享變量;2管程內(nèi)部的條件變量3.管程內(nèi)部并行執(zhí)行的進(jìn)程;4.對(duì)局部于管程內(nèi)部的共享數(shù)據(jù)設(shè)置初始值的語句。當(dāng)幾個(gè)進(jìn)程調(diào)用某個(gè)管程的時(shí)候,在一個(gè)時(shí)刻僅允許一個(gè)進(jìn)程進(jìn)入管程。管程中僅允許一個(gè)進(jìn)程處于活躍狀態(tài),但不表示管程中只有一個(gè)進(jìn)程,可能存在因資源不足而阻塞的進(jìn)程等。當(dāng)一個(gè)進(jìn)程調(diào)用管程中的過程時(shí),首先檢查管程中是否有進(jìn)程處于活躍態(tài),如果有,則阻塞調(diào)用進(jìn)程,直到管程內(nèi)部的進(jìn)程離開管程或其他操作。管程的互斥操作是由管程內(nèi)部的互斥信號(hào)量實(shí)現(xiàn)的,

9、其初值為1。在管程中要設(shè)置一對(duì)同步操作原語,Wait()和Signal()操作,注意這里操作作用于條件變量,不具有累加功能,如果管程中的進(jìn)程發(fā)出了一個(gè)信號(hào)量,而在對(duì)應(yīng)的條件變量上沒有阻塞等待的進(jìn)程,則該信號(hào)量沒有作用,會(huì)被丟失。為了區(qū)別阻塞等待進(jìn)程和不同阻塞對(duì)應(yīng),設(shè)置了不同條件變量。2.5 死鎖所謂死鎖: 是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象,若無外力作用,它們都將無法推進(jìn)下去。此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等待的進(jìn)程稱為死鎖進(jìn)程。雖然進(jìn)程在運(yùn)行過程中,可能發(fā)生死鎖,但死鎖的發(fā)生也必須具備一定的條件,死鎖的發(fā)生必須具備

10、以下四個(gè)必要條件。1)互斥條件:指進(jìn)程對(duì)所分配到的資源進(jìn)行排它性使用,即在一段時(shí)間內(nèi)某資源只由一個(gè)進(jìn)程占用。如果此時(shí)還有其它進(jìn)程請(qǐng)求資源,則請(qǐng)求者只能等待,直至占有資源的進(jìn)程用畢釋放。2)請(qǐng)求和保持條件:指進(jìn)程已經(jīng)保持至少一個(gè)資源,但又提出了新的資源請(qǐng)求,而該資源已被其它進(jìn)程占有,此時(shí)請(qǐng)求進(jìn)程阻塞,但又對(duì)自己已獲得的其它資源保持不放。3)不剝奪條件:指進(jìn)程已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時(shí)由自己釋放。4)環(huán)路等待條件:指在發(fā)生死鎖時(shí),必然存在一個(gè)進(jìn)程資源的環(huán)形鏈,即進(jìn)程集合P0,P1,P2,···,Pn中的P0正在等待一個(gè)P1占用的資源;P1

11、正在等待P2占用的資源,Pn正在等待已被P0占用的資源。預(yù)防死鎖的方法:有序資源分配法,銀行家算法。3. 目的及意義1.通過編寫和調(diào)試程序以加深對(duì)并發(fā)進(jìn)程管理方案的理解。2.呈現(xiàn)死鎖解鎖過程,方便同學(xué)理解學(xué)習(xí)3.實(shí)現(xiàn)讀者寫者問題,增加對(duì)p、v信號(hào)量和管程的理解。4. 設(shè)計(jì)思想及設(shè)計(jì)功能說明1.設(shè)計(jì)思想:讀者-寫者問題的讀寫操作限制(包括讀者優(yōu)先和寫者優(yōu)先)寫-寫互斥:不能有兩個(gè)寫者同時(shí)進(jìn)行寫操作讀-寫互斥:不能同時(shí)有一個(gè)線程在讀,而另一個(gè)線程在寫。讀-讀允許:可以有一個(gè)或多個(gè)讀者在讀。讀者優(yōu)先的附加限制:如果讀者申請(qǐng)進(jìn)行讀操作時(shí)已有另一個(gè)讀者正在進(jìn)行讀操作,則該讀者可直接開始讀操作。 寫者優(yōu)先

12、的附加限制:如果一個(gè)讀者申請(qǐng)進(jìn)行讀操作時(shí)已有另一個(gè)寫者在等待訪問共享資源,則該讀者必須等到?jīng)]有寫者處于等待狀態(tài)后才能開始讀操作。運(yùn)行結(jié)果顯示要求:要求在每個(gè)線程創(chuàng)建、發(fā)出讀寫申請(qǐng)、開始讀寫操作和結(jié)束讀寫操作時(shí)分別顯示一行提示信息,以確定所有處理都遵守相應(yīng)的讀寫操作限制。死鎖解鎖與避免死鎖實(shí)現(xiàn)。 2.設(shè)計(jì)功能說明1. 文件讀入功能:從指定文件讀入程序所需要的信息2. 讀者優(yōu)先判斷功能:如果讀者申請(qǐng)進(jìn)行讀操作時(shí)已有另一個(gè)讀者正在進(jìn)行讀操作,則該讀者可直接開始讀操作。 3. 寫者優(yōu)先判斷功能:如果一個(gè)讀者申請(qǐng)進(jìn)行讀操作時(shí)已有另一個(gè)寫者在等待訪問共享資源,則該讀者必須等到?jīng)]有寫者處于等待狀態(tài)后才能開始

13、讀操作。4. 界面設(shè)計(jì):方便用戶操作軟件,及時(shí)向用戶反饋?zhàn)x者寫者信息5. 鎖機(jī)制:通過程序展示進(jìn)程的運(yùn)行,方便同學(xué)們理解鎖產(chǎn)生的原因以及解決死鎖,預(yù)防死鎖的方法。5. 核心數(shù)據(jù)結(jié)構(gòu)說明 首先編寫臨界區(qū)資源,按照書上的說法,讀者寫者的數(shù)量是臨界區(qū)資源,我們定義了rcount=0,wcount=0,對(duì)讀者寫者 進(jìn)行計(jì)數(shù)的變量,同樣設(shè)置rmutex=1,wmutex=1對(duì)rcount,wcount進(jìn)行控制。還有我們用到了另外的兩個(gè)全局變量writeblock=1,readblock=0進(jìn)行對(duì)讀者進(jìn)程,寫者進(jìn)程進(jìn)行鎖操做。在讀者進(jìn)程,與寫者進(jìn)程的鎖操做中要進(jìn)行進(jìn)程的調(diào)度問題,其中有讀者進(jìn)程的就緒隊(duì)列r

14、eadPList,有寫者進(jìn)程的就緒隊(duì)列writePList,有進(jìn)程進(jìn)行調(diào)度算法中的阻塞隊(duì)列waitPList。C#中都以類為基準(zhǔn),所以在進(jìn)程隊(duì)列中包括,入隊(duì)inList,出對(duì)outList,整理,等操作的函數(shù)。還有一些小的控制變量,allrcount=0,allwcout=0,對(duì)整個(gè)程序進(jìn)行讀者進(jìn)程創(chuàng)建個(gè)數(shù)進(jìn)行計(jì)數(shù)。其中的類包括,進(jìn)程類Process,進(jìn)程隊(duì)列類ProcessList,windows窗體類PV/PV信號(hào)量的類,monitor/管程類,main/主界面類,block/同步鎖類以及一些表現(xiàn)類如text/讀者寫者窗體類,semaphore類/型號(hào)量的類,在這些類中包括自己的函數(shù)聲明。

15、屬性聲明。例如process中的如下:private int pcb; /pcb主要是對(duì)進(jìn)程的一些描述信息private int psw; /0表示就緒態(tài),1表示運(yùn)行態(tài),2表示private bool readOrWrite; /表示讀寫進(jìn)程,用來控制進(jìn)程的種類 如果是true就是讀否則就是寫private int time; /進(jìn)程process存在的時(shí)間public process(int num,bool tf);/構(gòu)造函數(shù)public void rgo();/讀者操做的函數(shù)public void wgo();/寫者操做的函數(shù)public void P(semaphore s) publ

16、ic void V(semaphore s)public void enter(InterfaceModule IM);/進(jìn)入管程的函數(shù)public void wait(semaphore x_sem,int x_count,InterfaceModule IM) ;public void signal(semaphore x_sem, int x_count, InterfaceModule IM) public void rwgo();/讀者寫者都進(jìn)行的操做還有一些簡單的線程操做Thread t1 = new Thread(new ThreadStart(processonego);Thr

17、ead t2 = new Thread(new ThreadStart(processtwogo);t1.Start();t2.Start();6. 核心算法流程1. 寫者優(yōu)先原理圖:2. 讀者優(yōu)先原理圖:Y完成拍pp1P1執(zhí)行獲取s1拍pp1獲取s2拍pp1進(jìn)程執(zhí)行拍pp1釋放占有資源,喚醒另一進(jìn)程執(zhí)行拍pp1P2執(zhí)行拍pp1死鎖釋放占有資源拍pp1P1執(zhí)行拍pp1P2執(zhí)行拍pp1P1執(zhí)行拍pp1P2執(zhí)行拍pp1獲取s2拍pp1獲取s1拍pp1P1執(zhí)行拍pp1P2執(zhí)行拍pp1獲取s1拍pp1獲取s2拍pp1初始化臨界資源s1,s2設(shè)置進(jìn)程p1,p2延時(shí)拍pp1初始化進(jìn)程s1,s2拍pp1死鎖

18、解決算法拍pp1預(yù)防死鎖算法拍pp1YNN3. 鎖機(jī)制:7. 開發(fā)調(diào)試及運(yùn)行環(huán)境開發(fā)調(diào)試:vs2013 ,編程語言為c#。 運(yùn)行環(huán)境:windows8. 功能說明及測試數(shù)據(jù)分析1.1 P,V信號(hào)量模塊當(dāng)無讀者寫者時(shí),允許多讀者讀文件。如圖在讀者框里有2個(gè)讀者的數(shù)量當(dāng)有讀者在讀文件時(shí),寫者會(huì)被阻塞。如圖,讀者數(shù)量為2,等待寫者為2當(dāng)讀者進(jìn)程執(zhí)行結(jié)束,寫者就可以執(zhí)行,寫者是可以修改文件的,如圖有其它寫者,新寫者等待當(dāng)有寫者時(shí),讀者會(huì)被阻塞,如圖允許多讀者讀文件當(dāng)有讀者,不允許寫者寫文件有寫者,不允許讀1.3 死鎖模塊當(dāng)進(jìn)程1和進(jìn)程2每步的延遲比較接近時(shí),易發(fā)生死鎖,如圖都是100ms,就發(fā)生了死鎖

19、進(jìn)程1,2每步延遲較大,就不會(huì)發(fā)生死鎖。在解決死鎖的模塊里,由于進(jìn)程采用不可剝奪式,所以不會(huì)發(fā)生死鎖說明書: 歡迎來到讀者寫者問題仿真軟件,我們的軟件分為3大模塊:PV信號(hào)量模塊,管程模塊,死鎖模塊。我們的軟件只要你的操作系統(tǒng)是win7以上的版本都可以運(yùn)行。下面是軟件的具體使用說明書。首先,您來到的是我們軟件的主界面。如圖所示。在主界面你可以點(diǎn)擊鎖機(jī)制,PV信號(hào)量,管程機(jī)制,三個(gè)按鈕進(jìn)入不同的模塊。你也可以點(diǎn)擊關(guān)閉按鈕,關(guān)閉軟件。接下來我們來介紹PV信號(hào)量模塊。首先,你要按打開文件按鈕打開一個(gè)文件,好便于讀者讀或者寫者寫操作。點(diǎn)擊一次申請(qǐng)閱讀按鈕,就會(huì)產(chǎn)生一個(gè)讀者進(jìn)程,點(diǎn)擊一次申請(qǐng)修改,就會(huì)產(chǎn)

20、生一個(gè)寫者進(jìn)程,他們的數(shù)量會(huì)在讀者數(shù)量寫者數(shù)量框中顯示。當(dāng)有進(jìn)程被阻塞時(shí),等待讀者或等待寫者框里的數(shù)字就會(huì)顯示,有多少進(jìn)程被阻塞。如圖1.關(guān)閉一個(gè)窗口就代表這個(gè)進(jìn)程結(jié)束了。在寫者進(jìn)程時(shí),我們可以對(duì)文件進(jìn)行修改操作,如圖2.通過按按鈕,我們就可以模擬仿真讀者寫者問題。圖1圖2管程模塊,與PV信號(hào)量模塊類似在這就不在重復(fù)敘述,請(qǐng)參考PV操作流程。死鎖模塊。在這個(gè)我們分為2個(gè)小部分,可能死鎖部分和解決死鎖部分,在這兩個(gè)部分,你只需要設(shè)置每個(gè)進(jìn)程的延遲時(shí)間,然后點(diǎn)擊可能死鎖程序開始,解決死鎖開始按鈕,程序就會(huì)自動(dòng)進(jìn)行,這是為了專門為教學(xué)準(zhǔn)備的。請(qǐng)看圖示。本軟件的使用就是這樣,歡迎大家使用!9. 存在問

21、題1.不足與問題1).在整個(gè)實(shí)驗(yàn)中我們的對(duì)管程的了解不是很到位,不清楚管程的內(nèi)部運(yùn)行結(jié)構(gòu),不了解管程內(nèi)部的條件變量,這樣我們程序中對(duì)管程的部分還有待改善加強(qiáng),做出正確的運(yùn)行程序。2).在實(shí)驗(yàn)中,還有很多的細(xì)節(jié)沒有注意到,還有很多的東西沒有抽象出來,例如時(shí)鐘,我們只是運(yùn)用了系統(tǒng)的時(shí)鐘。并且在做課程設(shè)計(jì)的時(shí)候我們只是關(guān)注讀者寫者問題,側(cè)重點(diǎn)導(dǎo)致我們?cè)趯?duì)進(jìn)程的調(diào)度問題進(jìn)行了較少的代碼編寫。2優(yōu)點(diǎn)與設(shè)想1).每一個(gè)讀者寫者問題都在解決讀者優(yōu)先,或者寫者優(yōu)先的問題,而我們的程序正好取了二者的折中思想,這樣可以很好的解決,讀者優(yōu)先中的寫者饑餓問題,同時(shí)還能解決,寫者優(yōu)先中的讀者饑餓問題。如有讀讀寫讀讀寫寫

22、讀,這樣的情況,第一個(gè)讀者來了,第二讀者再來他們并發(fā)執(zhí)行,繼續(xù)讀,而寫者來了,將被阻塞,當(dāng)讀者讀完,喚醒寫者,寫者寫完,喚醒讀者,當(dāng)寫者寫完了也可能喚醒寫者,要看后面來的人是讀者還是寫者。從而解決兩個(gè)饑餓問題。2).是否可以將操作系統(tǒng)中的只是運(yùn)用到軟件中,而不是簡單的做成老師講的書本上的東西,而是為了設(shè)計(jì)莫某一款軟件而其中運(yùn)用到了這些知識(shí),例如,可以做一個(gè)后臺(tái)服務(wù)器,就很好的運(yùn)用了并發(fā)進(jìn)程問題。并且在后臺(tái)服務(wù)器中處理來者訪問過程中,例如火車購票系統(tǒng)中,就要良好的解決類似讀者寫者問題這樣的只是,同樣大膽一點(diǎn),可以用更多的語言去編寫,豐富自己的知識(shí),就像老師說的可以做成系統(tǒng)軟件,同時(shí)也可以做成手機(jī)

23、APP,做成小游戲等等。10. 實(shí)踐體會(huì)及心得我們這次操作系統(tǒng)的課程設(shè)計(jì)題目是用P,V信號(hào)量-管程解決讀者寫者問題,看到組長來選這個(gè)課題的時(shí)候,我內(nèi)心有點(diǎn)小小的害怕,因?yàn)槲以趯W(xué)習(xí)操作系統(tǒng)課程的時(shí)候,對(duì)同步互斥問題的那一章就有比較大的疑惑。不過既然已經(jīng)選擇,我也只能邁步前進(jìn)。在期末我們組長給我分配的任務(wù)是寫軟件的界面。我是從來沒有寫過界面的,剛開始我比較茫然無措,腦袋一片空白。可想想這次課設(shè)是我們大家分工完成的,只有完成自己的任務(wù),最后才能做出成品。我就鼓勵(lì)自己去學(xué)習(xí),于是我就去向周圍有學(xué)習(xí)好的同學(xué)和學(xué)長去咨詢有關(guān)界面方面的知識(shí),應(yīng)該用什么語言來寫界面,經(jīng)過我的了解,我知道了c#是一門好的比較簡

24、單的寫界面的一種語言,它在繼承C和C+強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C+的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。于是,我就在寒假里學(xué)習(xí)了c#語言,慢慢的開始了界面的編寫,最終完成了。在答辯的時(shí)候,老師說我做的界面與操作系統(tǒng)內(nèi)核關(guān)系不是那么緊密,于是組長又給我們分配了新的任務(wù),去讓我和另一個(gè)組員寫死鎖,而且要是自動(dòng)的,可以以后拿來教學(xué)的,我們又苦思冥想,就想到了用2個(gè)進(jìn)程來模擬仿真死鎖問題,給不同的進(jìn)程每一步執(zhí)行的時(shí)間不同。來讓他們搶占資源的順序

25、和占用資源的時(shí)間不同,這樣就可以有可能發(fā)生死鎖。我們會(huì)讓設(shè)計(jì)一個(gè)循環(huán),如果發(fā)生死鎖的話,超過10秒的話,就讓進(jìn)程自動(dòng)釋放資源,繼續(xù)執(zhí)行進(jìn)程。而解決死鎖,我們想一個(gè)簡單的方法,讓一個(gè)進(jìn)程直接占用資源,不可被其他進(jìn)程剝奪,這樣就不會(huì)發(fā)生死鎖了,這就是我們做的死鎖部分。我認(rèn)為,在這次課程設(shè)計(jì)中,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在課設(shè)上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是以后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的將來也有很大的幫助?;仡櫰鸫苏n程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說得

26、是苦多于甜,但是可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,但最終還是克服了。我們這次課程設(shè)計(jì)的課題是讀者寫著問題,經(jīng)過上學(xué)期期末的課程設(shè)計(jì),我們都有了一定的經(jīng)驗(yàn),效率也提高了很多。當(dāng)我們組拿到題目的時(shí)候我們先對(duì)題目進(jìn)行分析,開始我們做了很多工作,比如,到圖書館借相關(guān)的資料,到網(wǎng)上搜索等等,最終經(jīng)過我們組的努力以及老師和同學(xué)的幫助下順利的實(shí)現(xiàn)了讀者寫著功能。這次課程設(shè)計(jì)我的主要任務(wù)是利用p、v和管程實(shí)現(xiàn)讀者和寫者問題,開始的接到實(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)論