사용자토론:Thyoo

위키백과 ― 우리 모두의 백과사전.

환영합니다!

Thyoo님, 한국어 위키백과에 오신 것을 환영합니다! 다음 문서들은 위키백과에 익숙해지시는 데 도움이 될 것입니다.

작업에 참여하시려면 우선 백과사전에 어울리는 내용인지, 중립적인 시각인지, 다른 사람의 저작권을 침해하지 않는지 확인해주세요.

그리고,

  • 처음 오신 분들을 위한 길라잡이가 있습니다. 꼭 한번 읽어 봐주세요.
  • 연습을 한번 해보고 싶다면? ☞ 연습장
  • 궁금한 점이 있다면? ☞ 안내소

토론 문서 등에 의견을 남기실 때는 의견 뒤에 서명을 해주세요. 물결표 4개를 ~~~~ 입력하시면 추가됩니다.

위키백과에 어느 정도 익숙해졌다고 생각하셨다면 이 환영글을 지워주세요.

If you cannot speak Korean, click here.

--풀빵 2007년 8월 15일 (수) 12:23 (KST)

목차

[편집] 원자 조작

번역은 사용자 페이지 등 개인 페이지에서 한 뒤 한번에 옮겨주세요. 문서에 미번역물을 남기는 것은 질을 보장할수 없을뿐더러 다른 사용자의 참여를 막습니다. --퇴프 2007년 8월 15일 (수) 12:44 (KST)

[편집] temp

[편집] Locking

A clever programmer might suggest that a lock should be placed around this "critical section". However, without hardware support in the processor, a lock is nothing more than a memory location which must be read, inspected, and written. Algorithms, such as spin locking, have been devised that implement software-only locking, but these can be inefficient. 현명한 프로그래머라면 이러한 "임계 구역"(Critical Section)에는 락을 걸어야 한다고 제안할 것이다. 하지만 프로세서에서 하드웨어 지원없이는 락은 읽고 검사하고 써야 할 메모리의 한 곳에 지나지 않는다. 소프트웨어만으로 구현한 스핀락 같은 알고리즘이 고안되었지만 이들로써는 불충분하다.

Most modern processors have some facility which can be used to implement locking, such as an atomic test-and-set or compare-and-swap operation, or x86 LOCK instruction prefix, or the ability to temporarily turn off interrupts ensuring that the currently running process cannot be suspended. 대부분의 현대적인 프로세서는 락을 구현할 수 있도록 원자적인 test-and-set이나 compare-and-swap과 같은 조작, x86의 LOCK 명령어 접두사나 일시적으로 인터럽트를 꺼서 현재 실행중인 프로세스가 방해 받지 않도록...

[편집] Implementations

  • atomic.h - most operating systems provide a low level C API to atomic operations, however, naming, order of arguments, return values and semantics vary significantly between operating systems, thus libraries and application software using these interfaces directly will be tied to a particular operating system.
  • APR - the Apache Portable Runtime library provides a selection of atomic operation function macros for use within MPL licensed software.
  • OIAO - the OS Independent Atomic Operations project provides an operating system independent API and function macro library for atomic operations.

[편집] See also

  • Load-Link/Store-Conditional
  • Atomic transactioncs:Atomicita

de:Atomare Operation lt:Nedaloma operacija ja:不可分操作

[편집] CPUアーキテクチャによる違いとロック

カウンタのインクリメント/デクリメントは、RISCアーキテクチャの場合、上記の例のようにリードとライトが別々の命令で行われるために、そのままでは不可分操作にできない。しかし、x86アーキテクチャのようなCISCでは、インクリメントやデクリメントを1命令で実行する命令が存在するため、それだけで不可分性が成立する。 계수기를 1씩 증가/감소시키는 것은 RISC아키텍쳐의 경우, 위의 예에서 처럼 읽고 쓰는 명령이 따로따로 있기 때문에 이대로는 원자 조작이 불가능하다. 그러나 x86아키텍쳐와 같은 CISC에서는 1씩 증가와 1씩 감소가 각각 하나의 명령어로 존재하기 때문에 그대로 원자성을 띤다. 必要最小限の不可分操作は、結局テスト・アンド・セットのような指定されたメモリアドレスへのリードとライトを不可分に行う操作となる。しかし、RISCアーキテクチャは 1命令で複数回のメモリアクセスを行わないのが基本思想であるため、直接テスト・アンド・セット命令を実装することはできない(テスト・アンド・セットを命令として実装する場合、バスをロックしてリードとライトを行って他のバスマスタがメモリアクセスを途中で発行できないようにしている)。そのためにコンペア・アンド・スワップやLoad-Link/Store-Conditionalといった不可分操作が使われるようになった。 필요한 최소한의 원자 조작은 test-and-set과 같이 지정된 메모리 위치에 대해서 읽고 쓰기를 원자적으로 처리하는 조작으로 귀결한다. 그러나 RISC아키텍쳐는 하나의 명령어로 메모리에 여러번 접근하지 않는 것이 그 철학이기 때문에 직접 test-and-set 명령을 구현할 수가 없다(test-and-set을 구현할 경우 버스를 잠가두어 다른 버스 매스터(bus master)가 접근하지 못하게 한다) 그때문에 compare-and-swap이나 load-link/store-conditional라고 하는 원자 조작을 사용하게 되었다....

上記の例は「クリティカルセクション」のまわりでロックを獲得することで解決するように見える。しかし、ロックもハードウェアのサポート無しでは単なるメモリ上のデータでしかない。スピンロックなどのアルゴリズムをソフトウェアだけで実装することは可能だが、効率的ではない。そのために、上述のテスト・アンド・セットなどの不可分操作が最近のプロセッサで実装されており、そういった機能でロックを実装する。

[편집] 関連項目

  • テスト・アンド・セット
  • コンペア・アンド・スワップ
  • フェッチ・アンド・アッド
  • Load-Link/Store-Conditional
  • クリティカルセクションcs:Atomicita

de:Atomare Operation en:Atomic operation lt:Nedaloma operacija