多核心與同步

關於原子指令(不可分割指令),下列說明何者正確?

  1. A將記憶體的讀取與寫入,作為不會被其他核心中途插入的單一操作來執行的指令
  2. B用來計算原子數量的、物理計算用的指令
  3. C一定能在1個時脈內完成的、最快的指令
查看答案與解析

正確答案:A. 將記憶體的讀取與寫入,作為不會被其他核心中途插入的單一操作來執行的指令

原子指令會以不讓其他核心的讀寫插入其間的方式,執行讀取、運算、寫入這一連串的處理。從其他核心看來,只能看到操作之前或之後的狀態。有CAS(比較並交換)、取得並相加(fetch-and-add),以及RISC-V的LR/SC與AMO指令等,是建構鎖與無鎖資料結構的基礎。

  • A. 正確。從其他核心看來,就像在一瞬間發生。
  • B. 原子(atomic)的意思是「不可分割」。
  • C. 特徵不在速度,而在不可分割。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 關於原子指令CAS(比較並交換,compare-and-swap)的動作,下列何者正確?
  2. 上方的程式碼使用CAS(&p, 預期值, 新值)將共用變數counter變成2倍。CAS失敗而重做迴圈,是在什麼情況下?
  3. 在RISC-V的LR/SC(載入保留/條件式儲存)這類指令組中,SC(條件式儲存)會在什麼情況下失敗?
  4. 關於使用CAS的無鎖資料結構中會出現的ABA問題,下列說明何者正確?
  5. 關於RISC-V的amoadd.w指令或x86的lock xadd指令這類取得並相加(fetch-and-add)指令的動作,下列何者正確?

這個領域的比較