多核心與同步

關於自旋鎖(spinlock),下列說明何者正確?

  1. A在鎖被釋放之前,讓執行緒休眠並由作業系統喚醒的鎖
  2. B在鎖被釋放之前,以迴圈持續檢查鎖的變數來等待的鎖
  3. C旋轉磁碟以保護資料的機制
查看答案與解析

正確答案:B. 在鎖被釋放之前,以迴圈持續檢查鎖的變數來等待的鎖

自旋鎖會以原子指令嘗試取得鎖,若取不到就立刻反覆再試。由於沒有呼叫作業系統來休眠與喚醒的額外負擔,在持有鎖的時間極短時運作很快。常用於作業系統核心內,或與中斷處理常式之間的互斥。另一方面,它的缺點是等待期間仍會持續占用CPU。

  • A. 休眠等待的是互斥鎖(mutex)等。
  • B. 正確。是繞圈(spin)等待。
  • C. 與磁碟無關。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 下列何者是最不適合使用自旋鎖的情境?
  2. 在自旋鎖中,不直接用原子指令去改寫鎖的變數,而是平時以一般的讀取等待鎖被釋放,只有看到鎖空出來時才使用原子指令(test-and-test-and-set),其理由下列何者正確?
  3. 比較互斥鎖(休眠等待的鎖)與自旋鎖,下列說明何者正確?
  4. 下列何者是死結(deadlock)的例子?
  5. 在使用多把鎖的程式中,防止死結最常見的方法為下列何者?

這個領域的比較