版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 操作系統(tǒng)課程設計</b></p><p><b> 說 明 書</b></p><p> 2013 年 11月 6 日</p><p><b> 1需求分析</b></p><p> 基于Linux的進程同步與通信的模擬實現(xiàn)需要完成以下功能
2、:</p><p> ?。?)創(chuàng)建進程:手動創(chuàng)建幾個進程,或者隨即創(chuàng)建幾個進程,都在界面上完成;要求包括進程的名稱(不能重復)、執(zhí)行時間和申請資源的等待時間等。在同一時刻可能有多個進行在內存申請某資源,即可以輸入多個進程的資源申請。</p><p> ?。?)3類臨界資源的管理,包括申請以及分配等。分別通過信號量實現(xiàn)或者管程實現(xiàn)。 </p><p> ?。?)
3、銀行家算法,判斷是否可以進行資源的分配。</p><p> 基于以上的功能,可以使用戶選擇操作,模擬臨界資源的管理和銀行家算法。</p><p> 目的:實現(xiàn)臨界資源的管理及死鎖的避免。</p><p><b> 2 總體設計</b></p><p> 進程同步與模擬實現(xiàn)系統(tǒng)分為4個模塊:輸入輸出,進程對資源的
4、隨機申請及分配,臨界資源管理,銀行家算法避免死鎖。</p><p> 輸入輸出:包括系統(tǒng)運行所需要的進程的名稱,執(zhí)行時間,申請資源的等待時間,進程對資源的需要量等信息以及系統(tǒng)所要顯示出的進程的創(chuàng)建信息,資源的分配信息,進行執(zhí)行信息,進行動態(tài)申請資源信息等。</p><p> 進程對資源的隨機申請及分配:根據所輸入的進程、資源、以及進程對資源的最大申請情況,隨機產生進程當前對資源的申請,
5、輸出相應的分配信息與進程執(zhí)行信息并調用銀行家算法對進程的資源申請進行判斷。</p><p> 臨界資源的管理:創(chuàng)建相應個數的進程,完成進程的并發(fā)執(zhí)行,使用互斥信號量使各進程互斥的進入各自的臨界區(qū)對資源進行申請,進程執(zhí)行完畢后,互斥的對資源進行恢復。</p><p> 銀行家算法避免死鎖:對當前進程對資源的申請利用銀行家算法進行判斷,看系統(tǒng)分配后是否處于安全狀態(tài),若處于安全狀態(tài),則將資源
6、分配給進程,并輸出分配信息,否則對不予以分配。</p><p><b> 3.詳細設計</b></p><p> 在該系統(tǒng)中我主要實現(xiàn)了輸入和輸出管理的模塊,該模塊中主要使用了結構體數組的數據結構.</p><p> 3.1進程模擬thread模塊</p><p><b> 圖3.1輸入流程圖</
7、b></p><p><b> 源代碼:</b></p><p><b> //輸入資源信息</b></p><p> int ziyuan()</p><p><b> {</b></p><p><b> int i,x;&
8、lt;/b></p><p> printf("************************************************\n");</p><p> printf("請輸入資源的種類數:\n");</p><p> fflush(stdin);</p><p> x
9、=scanf("%d",&a);</p><p> while(x==0)</p><p><b> {</b></p><p> printf("不符合規(guī)則,請重新輸入!\n");</p><p> fflush(stdin);</p><p&
10、gt; x=scanf("%d",&a);</p><p><b> }</b></p><p> for(i=0;i<a;i++)</p><p><b> {</b></p><p> printf("請輸入第%d種資源的名稱(A---Z):
11、\n",i);</p><p> scanf("%c",&ZY[i].type);</p><p> while(ZY[i].type=='\n')scanf("%c",&ZY[i].type);</p><p> while(!isupper(ZY[i].type))</
12、p><p><b> {</b></p><p> printf("不符合規(guī)則,請重新輸入!\n");</p><p> scanf("%c",&ZY[i].type);</p><p> while(ZY[i].type=='\n')scanf(&qu
13、ot;%c",&ZY[i].type);</p><p><b> }</b></p><p> printf("請輸入資源%c的數量:",ZY[i].type);</p><p> fflush(stdin);</p><p> x=scanf("%d"
14、,&ZY[i].n);</p><p> while(x==0)</p><p><b> {</b></p><p> printf("不符合規(guī)則,請重新輸入!\n");</p><p> fflush(stdin);</p><p> x=scanf(&q
15、uot;%d",&ZY[i].n);</p><p><b> }</b></p><p> Available[i]=ZY[i].n;//對可使用資源向量進行初始化</p><p><b> }</b></p><p><b> return 0;</b&
16、gt;</p><p><b> }</b></p><p><b> //進程的信息</b></p><p> int jincheng()</p><p><b> {</b></p><p><b> int i=0;</
17、b></p><p> int j,g,x;</p><p> char name;</p><p> printf("請輸入進程的個數:\n");</p><p> fflush(stdin);</p><p> x=scanf("%d",&u);<
18、;/p><p> while(x==0)</p><p><b> {</b></p><p> printf("不符合規(guī)則,請重新輸入!\n");</p><p> fflush(stdin);</p><p> x=scanf("%d",&
19、u);</p><p><b> }</b></p><p> for(i=0;i<u;i++)</p><p><b> { </b></p><p> printf("請輸入第%d種進程的名稱:\n",i);</p><p> sc
20、anf("%c",&JC[i].name);</p><p> while(JC[i].name=='\n')scanf("%c",&JC[i].name);</p><p> for(g=0;g<a;g++)</p><p><b> {</b></p&
21、gt;<p> JC[i].r[g].type=ZY[g].type;</p><p><b> }</b></p><p> for(j=0;j<a;j++)</p><p><b> {</b></p><p> printf("請輸入進程%c對資源%c的
22、最大申請量:",JC[i].name,JC[i].r[j].type);</p><p> fflush(stdin);</p><p> x=scanf("%d",&Max[i][j]);</p><p> while(x==0)</p><p><b> {</b><
23、;/p><p> printf("不符合規(guī)則,請重新輸入!\n");</p><p> fflush(stdin);</p><p> x=scanf("%d",&Max[i][j]);</p><p><b> }</b></p><p>
24、while(Max[i][j]>ZY[j].n)</p><p><b> {</b></p><p> printf("進程%c對資源%c的最大申請量大于資源%c的數量,請重新輸入:",JC[i].name,JC[i].r[j].type,JC[i].r[j].type);</p><p> fflush(s
25、tdin);</p><p> x=scanf("%d",&Max[i][j]);</p><p> while(x==0)</p><p><b> {</b></p><p> printf("不符合規(guī)則,請重新輸入!\n");</p><p
26、> fflush(stdin);</p><p> x=scanf("%d",&Max[i][j]);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
27、;<p><b> }</b></p><p><b> init();</b></p><p><b> return 0;</b></p><p><b> }</b></p><p><b> 運行結果:</b
28、></p><p><b> 圖3.2 資源輸入</b></p><p> 圖3.3進程輸出信息</p><p><b> 4.心得體會</b></p><p> 經過這次的操作系統(tǒng)課程設計,讓我經歷了一次有意義的項目開發(fā)過程,讓我了解了團隊合作的重要性,起初我們只是在不停的各干各的,
29、發(fā)現(xiàn)根本不可能完成預期的任務,后來我們坐下來討論了系統(tǒng)的功能,然后各司其職,發(fā)現(xiàn)效果真的不一樣,雖然在這兩周的時間里我們做了很多,中間也遇到了一些問題,比如說臨界資源管理模塊和銀行家模塊怎樣結合起來,起初是將兩個交叉起來,可是效果不是很好,最后還是決定將它們分開,慢慢地其他問題也同樣得到了解決,這就是團隊合作的力量,這個系統(tǒng)需要完善的內容還有很多,我們以后還會在一起討論完善并改進,在此過程中,我也發(fā)現(xiàn)了編程是需要絕對的耐心與細心的,不然
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設計--基于linux的實現(xiàn)進程的信號量互斥申請
- 基于linux的實現(xiàn)進程的信號量互斥申請操作系統(tǒng)課程設計
- 基于linux的實現(xiàn)進程的信號量互斥申請操作系統(tǒng)課程設計說明書2
- 操作系統(tǒng)課程設計---信號量的操作
- 《操作系統(tǒng)》課程設計--基于信號量與pv操作同步機制的讀者寫者問題的設計與實現(xiàn)
- linux操作系統(tǒng)課程設計
- 操作系統(tǒng)課程設計---進程的創(chuàng)建
- 操作系統(tǒng)課程設計報告---進程調度的模擬實現(xiàn)
- linux課程設計報告--linux操作系統(tǒng)應用
- 操作系統(tǒng)課程設計linux系統(tǒng)管理實踐與進程通信實現(xiàn)
- 操作系統(tǒng)進程調度課程設計
- 操作系統(tǒng)課程設計說明書--基于linux的進程之間通信
- 操作系統(tǒng)進程調度課程設計
- 操作系統(tǒng)模擬進程課程設計
- 操作系統(tǒng)課程設計--模擬操作系統(tǒng)的實現(xiàn)
- 進程之間的同步互斥與通信理發(fā)師問題操作系統(tǒng)課程設計
- 操作系統(tǒng)課程設計---進程管理系統(tǒng)
- 操作系統(tǒng)課程設計---進程調度子系統(tǒng)模擬實現(xiàn)
- 操作系統(tǒng)課程設計--基于linux的模擬文件系統(tǒng)的設計與實現(xiàn)
- linux操作系統(tǒng)基礎課程設計
評論
0/150
提交評論