🧵 Critical Section이란?

정의

Critical Section은 여러 Thread나 Process가 동시에 접근하면 안 되는 공유 자원 구간이다.

공유 자원에 동시에 접근하면 데이터가 꼬이거나 예상하지 못한 상태 변경이 발생할 수 있다.
이 때문에 임계 구역은 반드시 적절한 동기화가 필요하다.

⚠️ 문제가 생기는 이유

  • 여러 실행 흐름이 동시에 들어가면 데이터가 꼬일 수 있다.
  • 각 실행 흐름은 별도의 Stack과 Register를 가지지만, 공유 자원은 함께 사용한다.
  • 동시에 수정하면 race condition이 발생할 수 있다.

🧩 동기화 방식

User Mode Synchronization

  • 커널 개입 없이 사용자 영역에서 동기화한다.
  • 비교적 가볍지만 기능은 제한적이다.

Kernel Mode Synchronization

  • 커널 모드에서 동기화를 수행한다.
  • 사용자 모드보다 강력하지만 비용이 더 크다.

🔍 자주 보는 동기화 도구

Mutex

정의

Mutex는 상호 배제를 통해 한 번에 하나의 실행 흐름만 접근하도록 제어하는 도구다.

  • 한 시점에 하나의 Thread만 접근할 수 있다.
  • 공유 자원을 안전하게 보호할 때 사용한다.

Semaphore

정의

Semaphore는 허용된 개수만큼 동시에 접근하도록 제어하는 도구다.

  • 여러 Thread나 Process에서 사용할 수 있다.
  • 동시 실행 가능한 개수를 제한할 때 유용하다.

Interlock Synchronization

  • 변수 값을 이용해 진입 여부를 제어한다.
  • 하드웨어 또는 원자적 연산과 함께 쓰이는 경우가 많다.

📌 정리

  • Critical Section은 공유 자원을 보호하는 영역이다.
  • 동기화가 없으면 race condition이 발생할 수 있다.
  • Mutex는 상호 배제, Semaphore는 개수 제어에 주로 사용된다.

연결문서

댓글남기기