計算機作業系統PV操作

2021-10-16 05:21:01 字數 1264 閱讀 7726

pv操作

和尚打水問題

某寺廟,有小和尚和老和尚若干,有乙個水缸,由小和尚提水入缸供老和尚飲用.水缸可以容納10桶水,水取自同一口井中,由於水井口窄,每次只能容納乙個水桶取水.水桶總數為3個。每次入水、取水僅為一桶,且不可同時進行。試給出有關取水、入水的pv演算法描述。

分析:由題可知,水井窄,只能容納一人使用,所以需設乙個互斥訊號量mutex1來代表井

每次入水取水不可同時進行,所以需設乙個互斥訊號量mutex2來代表缸;桶為資源訊號量,設為count;缸中水的數量和老和尚小和尚都有關,需設定兩個不同的訊號量,用empty資源訊號量來告知小和尚是否可以提水入缸;用full資源訊號量來告知老和尚是否可以從缸中取水。

設:mutex1=1,mutex2=1,count=3,empty=10,full=0;

void little_monk( )

}void old_monk( )

}

和尚打水

理髮師pv操作:對訊號量進行相應操作

s:訊號量

p:請求操作,相當於s=s-1;s>=0,程序繼續進行

v:釋放操作,相當於s=s+1,s>0,程序被喚醒

理髮師問題

乙個理髮師,一把理髮椅,n把等候理髮的顧客椅子,如果沒有顧客則理髮師便在理髮椅上睡覺 ,當有乙個顧客到達時,首先看理髮師在幹什麼,如果理髮師在睡覺,則喚醒理髮師理髮,如果理髮師正在理髮,則檢視是否有空的顧客椅子可坐, 如果有,坐下等待,如果沒有,則離開。

定義訊號量:wait=0:顧客訊號量 barber=0:理髮師訊號量custnum:當前顧客數量 mutex=1:互斥量

理髮師操作:

barber()

}顧客操作:

customer(){

while(1){

p(mutex); //顧客想要理髮

if(custnum吸菸問題

吃水果問題

計算機作業系統

為什麼要有作業系統 計算機系統是乙個複雜的系統,如果每位程式設計師在程式設計時都必須掌握計算機系統的所有細節,就會嚴重影響程式設計師的開發效率 作業系統可以對計算機硬體加以管理和優化使用,為使用者程式提供更好的執行環境。作業系統以及其位置 作業系統組成 作業系統功能 應用程式直接與作業系統及其抽象打...

計算機作業系統

實驗一 熟悉linux作業系統 程序觀測 實驗目的 1 了解在linux作業系統中程序的特點和表現形式 2 掌握linux檢視程序的方式與方法 3 在乙個程序中建立另乙個程序的方法 4 掌握父程序和子程序的關係和fork的用法 實驗內容 1 編寫乙個簡單的程式,使用ps或top工具觀察該程序的的id...

計算機作業系統

1 單選題 作業系統的主要功能是管理計算機系統中的 選項 a 程式和資料 b 資源 c 作業 d 程序 答案 資源 2 單選題 關於多道批處理作業系統,以下說法錯誤的是 選項 a 可提高系統資源的利用率 b 可提高計算機系統的工作效率 c 可提高系統吞吐量 d 在作業執行時使用者可以直接干預作業的執...