MinChur

운영체제: 프로세스 동기화와 교착 상태

|
2 min read

동시다발적으로 실행되는 프로세스들 사이의 자원 일관성을 지키기 위한 동기화 기법과, 서로의 자원을 기다리며 멈춰버리는 교착 상태(Deadlock)에 대해 알아봅니다.

1. 동기화(Synchronization)의 목적

동기화는 크게 두 가지 목적을 가집니다.

  1. 실행 순서 제어: 프로세스를 올바른 순서대로 실행하기 (예: 파일 생성 후 읽기)
  2. 상호 배제 (Mutual Exclusion): 공유 자원에 한 번에 하나의 프로세스만 접근하게 하기

2. 공유 자원과 임계 구역

  • 공유 자원: 여러 프로세스가 공동으로 사용하는 자원 (전역 변수, 파일, 장치 등)
  • 임계 구역 (Critical Section): 공유 자원에 접근하는 코드 영역입니다.
  • 레이스 컨디션 (Race Condition): 여러 프로세스가 임계 구역을 동시에 실행하여 자원의 일관성이 깨지는 현상입니다.

3. 동기화 기법: 뮤텍스와 세마포어

  • 뮤텍스 (Mutex): 자물쇠와 같습니다. 임계 구역에 들어갈 때 자물쇠를 잠그고, 나올 때 엽니다. (1개 프로세스만 가능)
  • 세마포어 (Semaphore): 사용 가능한 자원의 개수를 나타내는 신호등입니다. 자원이 여러 개일 때도 제어가 가능합니다.

4. 교착 상태 (Deadlock)

두 개 이상의 프로세스가 서로 상대방이 가진 자원을 기다리며 무한히 대기하는 상태를 말합니다. 식사하는 철학자 문제로 유명합니다.

🔹 교착 상태 발생의 4가지 조건

이 4가지가 모두 충족되어야 데드락이 발생합니다.

  1. 상호 배제: 한 자원은 한 번에 한 프로세스만 사용 가능
  2. 점유와 대기: 자원을 가진 채로 다른 자원을 기다림
  3. 비선점: 다른 프로세스의 자원을 강제로 뺏을 수 없음
  4. 원형 대기: 프로세스들이 원형으로 서로의 자원을 기다림