感覺概念理解的差不多了,試著做一兩道題,來看看是否真的明白,以及還有什麼地方不明白的.
下面都是軟考真題,之前看它的時候,我是一點也不會,只巴望著我軟考的時候不要考啊.現在我看看有沒有一點點思路.
首先靜下心來,告訴自己,全都很簡單,沒什麼難的,我都會.沒錯,我都會.很好,開始看題分析.
分析題,首先,有顧客和收銀員兩程序,所以這個應該有同步的關係,要協作完成工作.顧客程序的主要工作是,進入超市,在
進超市之前看看自己能不能進,因為超市限制顧客的人數了.然後進去了,就開始買東西,買完了,就找收銀員付錢,付完錢就
可以走了.而收銀員的工作應該是有顧客付錢來了,就要收錢了,收完錢了,再看看有沒有買完東西要付錢的顧客,沒有的話,
應該可以休息,有的話就繼續收錢.
單看顧客程序,從上往下看.顧客進入了,要看看是不是能進去,有沒有地.要跟超市說,」哎,我要申請個資源,要在超市占個
地」,所以p(sn)一下.忘了提訊號量s1,s2和sn了.
訊號量s1,s2,sn初值分別為0,0,n. sn 好理解是表示超市可以放n個顧客進來,此時表示的是,還有n個資源,也就是超市
裡乙個顧客也沒有 .s1和s2,都等於0是為什麼?是表示顧客和收銀員都只有0個資源,那0個資源是什麼資源?等會再考慮,
先接著上面分析.
顧客進入,p(sn)一下,sn=sn-1=n-1,n-1>0,所以可以放人.然後在超市購物,購完物要付款了.得找收銀員了,是p一下,還是v一下,是p(s1)還是p(s2),是v(s1)還是v(s2)?
由於s1和s2都是0, 雖然照一般的理,一般是先p,再v.而且一般同步是p自己,v別人.但是如果p一下,變-1<0,就要開始等
待了,進行不下去了.所以應該是v一下,v誰呢,v收營員.哪個訊號量是收銀員?不如假設乙個,s1好了.v(s1),釋放乙個收營
員的資源,s1=s1+1=1>0,所以收銀員可以開始收費了.p(s2)一下,s2=s2-1=-1<0,其他顧客,就不要來付錢了,沒地.而收銀
員要收費就看另一邊好了.
收銀員先怎樣怎樣,然後收費,然後怎樣怎樣.還是照一般的理,一般是先p,再v.而且一般同步是p自己,v別人.所以看看c1
應該是p,p(s1)=s1-1=1-1=0,表示收銀員的資源被占用了,其他要結賬的顧客我忙著呢等等啊.c2,是收完錢,v(s2),s2=s2+
1=1>0,所以顧客又可以開始來付錢了.
最後顧客走了,釋放了他在超市裡佔的那個資源,v(sn). 照我分析的結果,ab1b2c1c2分別是p(sn),v(s1),p(s2),p(s1),v(s2),如果s1和s2訊號量的概念錯了,應該是p(sn),v(s2),p(s1),p(s2),v(s1),然後根據選項,可以得出我假設的正好對了.答案是cda
這道題我們討論過,現在我覺得沒什麼問題.看下一題.
我的解析
這道題問題的需要幾個同步訊號量和互斥訊號量,以及他們的初值是啥.
首先不看題,根據我的一般理解,乙個系統中一般是問我有幾個同步訊號量,和互斥訊號量,同步一般是2個,互斥一般是1
個.同步的初值一般是0或者資源數,互斥的初值一般設為1.
現在根據題目的第一句分析,乙個倉庫,放兩種產品p1,p2,每次只能放一種.也就是說,有乙個箱子,p1和p2都可以放,但是
一次只能放p1,或者只能放p2,不能同時放,這和互斥很像,想想一下千軍萬馬過獨木橋,獨木橋誰都能過,但是一次只能過一
個.所以對於箱子而言是互斥的.
這裡面有互斥,那麼有沒有同步.同步是指協作,誰和誰協作,沒看出來,應該沒有同步吧.初步答案,互斥1個,同步0個.
接著求初始值,看要求,w=p1的數量-p2的數量,而且-i
還有數量限制. w=p1的數量-p2的數量 不明白.但是 -i
應該和k,i都些些關係.如果假設乙個極端,num(p1)=0或者num(p2)=0.如果num(p1)=0,則-i
所以倉庫最多放i-1個p2產品;而num(p2)=0,則-i
然後倉庫的操作過程可能是這樣的.首先假設要放p1進入倉庫,要看下倉庫裡是否有p2產品,如果有p1就不能放進去;如
果沒有p2產品,只有p1產品,還要看看p1產品的數量是否到達了i-1,如果已經到達了i-1,也不能放p1了.而對於產品p2,則要
看是否有p1產品,是否數量達到了k-1.
儘管還是沒有看出同步該有的協作,但是對於p1,p2產品應該用兩個訊號量s1,s2初始值分別為k-1和i-1,表示p1產品的
數量,和p2產品的數量.每次放入乙個p1產品,就p(s1)減少乙個資源.p2同理.
而互斥訊號量,就是表示這個放了p1不能放p2,放了p2不能放p1.它的初值為1,放了p1之後,變為0,p2不能放,沒資源了;
或者放了p2之後變為0,p1不能放了.
所以同步為2,互斥為1;同步的初始值為i-1,k-1;互斥的初始值為1.答案為:cbda.
ps:這道題,不是同步是表示協作的,到現在也沒看出來協作.
前兩道題,我或多或少看過解析,知道一點內幕.下面這道我是真的不知道,儘管也做過,但是解析忘光了.
我的解析
對於訊號量s1,s2初始值為2,1.因為發貨員2名,審核員1名.可以解釋為s1還有2個資源,乙個發貨員也沒有被占用;s2還有1
個資源,1個審核員也沒有被占用.而且由於有2個訊號量,我初步猜測是同步的系統.
看圖分析,首先顧客要進入倉庫提貨,發貨員要空閒,發貨員空閒,才能進入提貨.進入倉庫後,在倉庫提貨,然後要離開,離開
的時候,審查員只有乙個,只有他空閒了,才可以來檢查顧客的提貨是否正確,然後檢驗,檢驗完了,就可以走了.但是中間有個d
,應該是要釋放資源.釋放什麼呢?等會再說.
所以a應該是p(s1),申請要乙個發貨員,p(s1)=s1-1=2-1=1>0,所以可以要到發貨員.然後提貨了,提完貨了.可以釋放發貨員
了嗎,還是只有最後顧客離開倉庫,才能釋放.先假設現在就放了,v(s1)=s1+1=1+1=2>0,有2個空閒的發貨員,其他客戶可以
隨時進來.然後得申請乙個審核員檢查貨物,p(s2)=s2-1=1-1=0,其他人不能用審核員了,沒資源了.檢查完了,得釋放審核員了
v(s2)=s2+1=0+1=1>0,審核員可以繼續為其他顧客效力了.所以這種假設是正確的,如果最後再放發貨員,那麼申請了審核
員,檢查完之後,什麼時候釋放審核員資源呢?
所以abcd,應該是p(s1),v(s1),p(s2),v(s2).答案ac.
以上就提了三道比較早的軟考題吧,儘管題有些早,但是不妨礙我之前不會,現在會.
最後總述
最後:總算寫完了,理解也真是不容易啊.中間有部分理解錯誤的,本來可以直接寫對的,但是想想既然是學習,那麼錯誤和正
確的都應該存在,要不然我還得改原來的部落格,刪刪改改多麻煩,還不如留著,看看當時是怎麼想的,為什麼會錯呢,錯在哪呢.
說不定以後會發現即使現在以為對的,也可能是錯的.我們開始對修改封閉,對擴充套件開放吧.
最後加個時間戳,紀念下我的學習.
---2013/10/13 19:48
數字操作題目彙總
7 整數反 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 思路 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 2 31,2 31 1 根據這個假設,如...
作業系統PV操作題整理1
1 餐廳分為等待區 用餐區 廚房。等待區中有n個椅子,顧客來了有位置則坐下,沒有就離開。廚房互斥使用,進入廚房後椅子後椅子空出來供顧客坐下。用餐處有m個位置,用完廚房看用餐處是否有空位,如果有空位則顧客從廚房出來並叫清潔員a清掃,沒有則坐在廚房等待。顧客到用餐處用餐後,通知清潔員b進行打掃。incl...
緩衝區傳送訊息PV操作題目詳細分析
程序a1 a2 anl通過m個緩衝區向程序b1 b2 bn2不斷地傳送訊息。傳送和接收工作遵循如下規則 1 每個傳送程序一次傳送乙個訊息,寫入乙個緩衝區,緩衝區大小與訊息長度一樣。2 對於每乙個訊息,b1 b2 bn2都需各接收一次,讀入自己的資料區內。3 m個緩衝區都滿時,傳送程序等待 沒有可讀的...