訊號量的一些使用規則:
必須置一次且只能置一次初值
初值不能為負數
只能用於執行p、
v操作 若
s > 0,則
s代表還可以使用的資源數 若
s < 0,則s
表示等待佇列裡的程序數 p
操作代表請求乙個資源 v
操作代表釋放乙個資源
mutex:能否入場
mutex1:等待髮捲/是否學生已到齊
mutex2:開始考試/監考
mutex3:考試結束/收卷/交卷
mutex4:能否離場/卷子收齊封裝後離場
semaphore mutex,m1,m2,mutex1,mutex2,mutex3,mutex4;
mutex=1;m1=1;m2=1;mutex1=0;mutex2=0;mutex3=0;mutex4=1;
int stucount =0;
int *****count=0;
student(){
p(mutex);
入場;v(mutex);
p(m1);
stucount++;
if(stucount==n)
v(mutex1);
v(m1);
p(mutex2);
考試交卷;
p(m2);
*****count++;
if(*****count==n)
v(mutex3);
v(m2);
p(mutex4);
離場;v(mutex4);
void teacher(){
p(mutex);
入場;v(mutex);
p(mutex1);
髮捲;for(i=1;i<=n;i++)
v(mutex2);
p(mutex3);
p(mutex4);
封裝離場;
v(mutex4);
參考:
作業系統 程序
在作業系統中,作業系統將記憶體,網路,檔案系統抽象為資源的統一抽象表示。1 什麼是程序 程序就是進入記憶體中正在執行的程式。把程序當做一組元素組成的實體。程序包括兩個部分,一部分是 部分,另一部分是 相關的資料集合。程序控制塊 每乙個程序,在核心中都對應著乙個程序控制塊。程序控制塊中儲存著程序的所有...
作業系統 程序
程序是作業系統中的重要概念,描述了程式的執行資訊。乙個程序就是一次執行。可以把程式想象成類,程序就是例項。引入程序的概念有利於實現多程式並行的設計。每乙個程式執行的時候可以大致分為io任務和計算任務,如果乙個程序正在io,那麼應該把cpu讓給另乙個程序執行計算任務,這樣可以提公升cpu的利用率,這就...
作業系統程序
乙個程序就是乙個正在執行的程式。它包括 程序狀態。包括 每個程序在作業系統中用程序控制塊pcb來表示,用來儲存與該程序有關的各種狀態資訊。pcb只是基本原理中的說法,對於乙個真實的作業系統可能不叫pcb,比如linux中叫做任務結構體 task struct 分時系統是在程序之間快速切換,以便使用者...