프로세스 동기화 (Process Synchronization)

Woosung Kim·2022년 1월 13일
0

데이터 일관성 문제 (Data Consistency Problem)

  • 두 개 이상의 프로세스나 쓰레드가 데이터를 공유하는 환경에서 서로 교차적으로 데이터를 사용(use, access, reference, read-write, manipulate)할 때 발생하는 문제

Race Condition

  • 공유 자원에 여러 프로세스나 스레드가 접근할 경우 접근 순서에 따라 결과가 달라지는 현상

프로세스 동기화

  • 정의 : 다중 프로세스 환경에서 자원에 데이터 일관성을 유지하도록 하는 것
  • 필요성 : 데이터에 동시 접근시 데이터 일관성이 깨지거나 결과가 잘못될 가능성이 있다.

임계 영역 (Critical Section)

  • 동일한 자원에 동시에 접근하는 경우가 발생하는 코드 영역
  • 접근 순서에 따라 실행 결과가 달라지는 구역

👉 Solution

  • Mutual Exclusion (상호배타) : 오직 한 쓰레드만 진입
  • Progress (진행) : 진입 결정은 유한 시간 내
  • Bounded Waiting (유한 대기) : 어느 쓰레드라도 유한 시간 내

위 세 가지 모두를 만족해야 함

뮤텍스 락(Mutex Lock) vs 세마포어(Semaphore)

공통점

  • 데이터 일관성 문제를 해결하기 위한 방법

뮤텍스 락(Mutex Lock)

  • 이진 세마포어의 일종으로 자원에 lock을 걸면서 동기화 문제를 해결한다.
  • 상호 배제 개념을 이용하며 Critical Section을 가진 쓰레드들이 각각 단독으로 실행되게 하는 기술
  • acquire() : Lock을 획득
  • release() : Lock을 반환

세마포어 (Semaphore)

  • 자원을 할당하는 P연산과 자원을 해제하는 V연산이 있다.
  • Critical Section에 들어가기 전 세마포어의 Counter 변수를 통해 자원에 접근가능한지 확인한다.
  • wait() : Critical Section에 들어가면서 세마포어 변수 1 감소 (acquire과 유사)
  • signal() : Critical Section에 들어가면서 세마포어 변수 1 증가 (release와 유사)

모니터 (Monitor)

세마포 이후의 프로세스 동기화 도구이며 세마포는 어셈블리언어인데 비해 모니터는 하이레벨언어로 구성되어있다.


모니터는 2개의 큐로 이루어져 있다.

  • 배타동기 + 조건동기

세마포어는 직접 키 해제와 공유자원 접근 처리를 해주어야 하는 반면, 모니터는 공유자원에 접근할 수 있는 키의 획득과 해제를 모두 함수로 처리해준다.

profile
개발하는 강아지

0개의 댓글