Re: [問題] Lock的用法

看板ASM (組合語言)作者 (ksmrt)時間15年前 (2010/01/01 21:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)

01/01 00:22,
嗯,他問的是x86當機指令"LOCK"其實跟他想的不一樣
01/01 00:22

01/01 00:27,
我跟他講:用jmp $ 會有差不多的軟體效果 XD
01/01 00:27

01/01 00:28,
不過他想要會醒的lock,那就複雜了 xddd
01/01 00:28
查了一下「LOCK」的說明,. LOCK並不是一個指令, 它只是指令的 prefix, 必需配合某些特定指令使用. 以達到讓CPU跟BUS/Memory知道, 該指令之執行必需符合「Atomicity」要求 (即atomic instruction). Atomic instruction在shared memory multi-processor系統中是 process synchronization (如 mutual exclusion)之基礎. 最基本的 atomic instruction是shared memory read/write. 但read/write 並不夠powerful, 用read/write來實作synchronization一方面可能 performance不夠好, 一方面有些好的演算法特性用(如FIFO ordering) 已經證明只用read/write是無法作出來的. ^^^^^^^^^^^^^^^^^^^^^^^^^ 這邊講錯了 只用atomic read/write 是可以作出FIFO ordering的mutual exclusion algorithm: http://www.viswiki.com/en/Lamport's_bakery_algorithm 為了克服上述問題, 有些更強的指令被提出, 最有名即是許多演算法會 用到的 compare-and-swap. 這個指令可由CMPXCHG 加上 LOCK實作出來. 其它常見的類似指令還有 test-and-set, swap, fetch-and-store. 在x86都有相關指令可配合LOCK作這些指令來. 問題是要達到atomic的功能, 雖然CPU有此指令, BUS(or interconnect) 及memory system等也都必需要能夠配合, 這方面在multi-processor 系統並不容易實作, 實際上好像沒有任何x86 shared-memory multi- processor system是有support LOCK prefix的. 現在的CPU都是多核心, LOCK prefix是否仍適用在現在的多核處理器 我就不清楚了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.68.71.218 ※ 編輯: ksmrt0123 來自: 219.68.71.218 (01/02 09:54)
文章代碼(AID): #1BFVCasq (ASM)
討論串 (同標題文章)
本文引述了以下文章的的內容:
4
10
完整討論串 (本文為第 2 之 5 篇):
4
10
文章代碼(AID): #1BFVCasq (ASM)