#6–5 作業系統
荒廢了這麼久,我又回來了 哈哈哈
今天要來講的是Mutex Locks
之前講了那麼多的解決方法
但…實際上OS設計師用的是更高階的方法
mutex lock (mutual exclusion)基本上它的概念是
用一個boolean變數來記這個鎖是否被鎖上
available = true 代表你可以進去你的Critical Section
available = false 代表現在有人在他的Critical Section,所以你不能進去
acquire()
acquire(){
while(!available){
//busy waiting
}
available = false;
}
當available=false
就代表有人在他的Critical Section
所以你需要等待
而這裡等待的實作方式為busy waiting
意思就是,在等待的期間一直跑空迴圈
使用此種實作方式,也稱作spin lock
release()
release(){
available = true;
}
整個的長相
while(true){acquire(); //用來上鎖//Critical Sectionrelease(); //用來解鎖
//Remainder Section}
優點:不需要context switch
缺點:busy waiting(有其他實作方式ex. sleep)