#6–5 作業系統

Mutex Locks

慈慈
Dec 20, 2020

荒廢了這麼久,我又回來了 哈哈哈

今天要來講的是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)

--

--

No responses yet