操作系統--課堂問答筆記08--習題答案

課堂筆記學習視頻來自 操作系統
說明:其他”課堂問答筆記“也在”操作系統“專欄

【2-3、2-4】

  1. 記錄型信號量機制相對於整型信號量機制作了哪些改進?
    1)利用阻塞原語和喚醒原語,較好的解決了讓權等待的問題(不再循環空轉,利用阻塞原語強制釋放cpu的佔有)。
    2)記錄型信號量實際上是一個結構體:其中value>=0表示共享資源的數量(當共享資源的數目不止一個,如打印機),value<0時表示目前已經沒有共享資源可用,|value|表示阻塞隊列中進程的數目(即等待使用共享資源的進程數目),L是一個隊列(阻塞隊列,可以是個鏈表或順序表)。|value|絕對值。
    上一課講到整型信號量S的值的含義,解決進程互斥訪問臨界區問題,信號量S的取值只有1和0,初值是1表示可進入臨界區,0表示不能進入臨界區(當前有其它進程在使用臨界區)需等待。也可以用整型信號量機制解決多個共享資源互斥使用的問題(參見生產者消費者問題)
  2. 如何理解一般信號集機制,應用在什麼場合?n,si,ti,di的值都代表什麼含義?爲什麼某個共享資源(設爲i)的數量<ti時系統不再分配該種資源?
    應用場合:進程在運行過程中一次申請多種不同資源的多個(例如進程p1申請使用A類資源x個,p2申請使用B類資源y個,…),釋放資源也是一次釋放多個。
    n共享資源的種類,si表示第i個共享資源的記錄型信號量結構體(有value和L兩個分量或成員),ti第i個共享資源分配的下限,di一次申請或釋放第i個共享資源的數目。
    設置下限是爲了避免共享資源數目不夠用從而產生死鎖(進程互相競爭資源導致所有進程都無法運行,系統處於僵死狀態),即分配共享資源時留個餘量,而不是分配到數量剩餘到0爲止。
  3. 實現互斥和實現同步的信號集的初始值有什麼不一樣?如何理解信號集的初始值的含義?
    一般來說實現互斥信號量使用mutex作爲信號量的名稱,其初始值爲1表示可進入臨界區(或者進程執行的某個條件得到滿足,如視頻中前趨圖的那個例子,但該例子沒有使用mutex作爲信號量的名稱,因爲這樣的條件不止一個),在任何一個進程進入臨界區之前減1(即P操作,wait),退出臨界區之後加1(即V操作,signal);
    前趨圖的那個例子,分別用abcd…給信號量取名,因爲不同進程運行的條件不一樣,但初始值都是0,因爲這些條件一開始都不存在,需要執行相關進程產生。初始值都是0不是1,初始值都是0不是1,初始值都是0不是1
    而同步信號量則按題目意圖給信號量取名(不用mutex),其初始值>=1表示某種共享資源的數目,任何一個進程申請使用該種資源之前減1(當然如果一次申請多種不同資源的多個,可用信號量集機制),釋放資源之後加1(如果一次釋放多種不同資源的多個,可用信號量集機制)。
  4. 生產者和消費者問題是典型的互斥同步問題,那麼互斥訪問的共享資源有什麼?是互斥訪問的還是協作(同步)訪問的?
    共享資源包括緩衝區(可理解爲一間放置產品的倉庫)以及緩衝區中的單元格(可理解倉庫中用來放一件產品的柵格)。注:緩衝區是一段內存空間,用數組實現;
    緩衝區(倉庫)是互斥訪問的,緩衝區中的單元格(柵格)是協作(同步)訪問的。
    因此爲緩衝區設置互斥信號量mutex(初始值爲1),爲單元格(柵格)設置同步信號量empty(含義爲:空單元格即沒有放置產品的單元格的數目,初始值爲n=單元格的數目,表示一開始所有柵格都是空的)和full(含義爲:放置了產品的單元格的數目,初始值爲0,表示一開始沒有任何一個柵格放置了產品)(實際上empty和full定義一個信號量就可以了,因爲總是存在empty+full=n,但一般習慣定義兩個信號量)。
    【生產者和消費者互斥和同步問題一定要掌握,幾乎每一本OS的書都會講,各種考試都可能會考。】
  5. 如何理解in:=(in+1) mod n和out:=(out+1) mod n這兩行語句(mod n表示對n求餘)?
    buffer這個數組用來表示緩衝區中的單元格,in和out是兩個下標,生產者往in這個位置放產品,放置完後in要指向下一個位置;消費者從out這個位置取產品,取後out要指向下一個位置。因爲生產者進程和消費者進程是同步的,因此不可能按照生產者放一個產品然後消費者取一個產品這樣的方式進行,也就是in和out的值總是不一樣的,可以把in理解爲寫指針(放置產品就是寫數據)out理解爲讀指針(放置產品就是讀數據),讀和寫並不是總是在同一個位置進行(但是當然只有數據存在的情況下才能讀)。mod n操作的目的是爲了循環使用這些單元格(對生產者來說,當最後一個柵格放置產品後可回到第一個柵格繼續往後放置產品,因爲可能此時前面柵格中的產品已經被消費者取走。對消費者來說,道理相同),類似於數據結構中的循環隊列的概念。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章