📖 WIPIVERSE

🔍 현재 등록된 정보: 38,144건

원자적 행위

원자적 행위(原子적 行爲, Atomic Act)는 컴퓨터 과학 및 관련 분야에서 사용되는 개념으로, 더 이상 나눌 수 없는 하나의 작업 단위로 처리되는 연산 또는 행위를 의미한다. 이 행위는 실행 과정에서 완전히 성공하거나 완전히 실패하며, 중간 상태가 외부에 노출되거나 관찰되지 않는다. 마치 원자가 쪼개지지 않는 것처럼, 원자적 행위 또한 부분적으로만 완료되는 경우는 존재하지 않는다.

개념

원자적 행위의 핵심은 '모두 아니면 아무것도 아님(All or Nothing)'이라는 특성이다. 즉, 여러 단계로 구성된 복잡한 행위처럼 보일 수 있지만, 외부 시스템이나 다른 동시성 프로세스 입장에서는 해당 행위가 시작되지 않았거나, 이미 완료된 두 가지 상태만 인식할 수 있다. 행위가 진행되는 도중에 시스템 오류, 충돌, 또는 중단이 발생하면, 해당 행위가 시작되기 이전의 상태로 되돌아가는(Rollback) 메커니즘이 작동하여 데이터의 일관성과 무결성을 보장한다.

특성

원자적 행위가 갖는 주요 특성은 다음과 같다.

  • 불가분성 (Indivisibility): 행위는 더 이상 작은 단위로 분해될 수 없는 하나의 단위로 취급된다.
  • 전부 또는 전무 (All or Nothing): 행위는 성공적으로 완전히 완료되거나, 실패 시 시작 이전 상태로 완전히 복구된다.
  • 고립성 (Isolation - 관련 특성): 엄밀히 말해 원자성 자체는 아니지만, 원자적 행위가 보장될 때 여러 행위가 동시에 수행되어도 서로 간섭하지 않고 독립적으로 실행되는 것처럼 보이게 하는 데 기여한다.

활용 분야

원자적 행위의 개념은 다양한 컴퓨팅 시스템의 신뢰성과 정확성을 보장하기 위해 필수적으로 사용된다.

  • 데이터베이스 시스템: 데이터베이스 트랜잭션(Transaction)은 대표적인 원자적 행위의 예이다. 여러 개의 데이터 변경 작업이 하나의 트랜잭션으로 묶여 원자적으로 처리됨으로써, 데이터의 일관성(Consistency)을 유지한다.
  • 운영체제 및 동시성 프로그래밍: 여러 프로세스나 스레드가 공유 메모리나 자원에 접근할 때, 경쟁 상태(Race Condition)를 방지하기 위해 원자적 연산(Atomic Operation)이 사용된다. 예를 들어, 카운터 값을 증가시키는 작업(counter = counter + 1)은 여러 스레드에서 동시에 실행될 경우 문제가 발생할 수 있으나, 이를 원자적 연산으로 처리하면 정확성을 보장할 수 있다. 잠금(Lock)이나 세마포어(Semaphore) 같은 동기화 기본 요소들도 원자적 연산을 기반으로 구현된다.
  • 분산 시스템: 여러 대의 컴퓨터나 서버에 걸쳐 수행되는 작업의 경우, 모든 노드에서 작업이 성공하거나 모든 노드에서 실패하도록 보장하는 원자적 커밋(Atomic Commit) 프로토콜 등이 사용된다.

예시

은행 계좌 이체 과정을 예로 들 수 있다. A 계좌에서 B 계좌로 일정 금액을 이체하는 작업은 일반적으로 'A 계좌에서 금액 차감' 및 'B 계좌에 금액 추가'의 두 가지 하위 작업으로 구성된다. 이 두 하위 작업이 하나의 원자적 행위로 묶여 처리되지 않는다면, 만약 첫 번째 작업(A 계좌 차감)만 성공하고 두 번째 작업(B 계좌 추가)이 실패하는 경우, A 계좌에서는 돈이 빠져나갔지만 B 계좌에는 돈이 들어가지 않는 심각한 데이터 불일치가 발생한다. 그러나 이 과정을 원자적 행위로 처리하면, 두 하위 작업이 모두 성공하거나, 둘 중 하나라도 실패할 경우 전체 작업이 취소되어 처음 상태로 되돌아가므로 데이터의 정합성이 유지된다.

관련 개념

  • 원자성 (Atomicity)
  • 트랜잭션 (Transaction)
  • ACID 속성 (Atomicity, Consistency, Isolation, Durability)
  • 동시성 제어 (Concurrency Control)
  • 락 (Lock)
  • 원자적 연산 (Atomic Operation)