운영체제 | 동기화 이슈 해결

Faithful Dev·2025년 1월 25일

컴퓨터 공학

목록 보기
29/81

동기화 이슈 (Synchronisation Issue)

  • 정의: 동기화 이슈는 여러 프로세스나 스레드가 동시에 공유 자원(예: 메모리, 파일 등)에 접근하면서 발생하는 문제를 의미한다.
  • 문제점:
    • 데이터 경쟁 (Race Condition): 두 개 이상의 스레드가 동일한 데이터를 동시에 읽고, 그 데이터를 기반으로 처리하면서 결과가 의도와 달라지는 상황.
    • 데드락 (Deadlock): 두 개 이상의 프로세스가 서로 자원이 해제되기를 기다리며 무한 대기에 빠지는 상황.
    • 기아 상태 (Starvation): 특정 프로세스나 스레드가 자원에 접근할 기회를 계속 얻지 못하는 상황.

Mutual Exclusion (상호 배제)

  • 정의: 둘 이상의 프로세스나 스레드가 동시에 공유 자원에 접근하지 못하도록 제어하는 메커니즘.
  • 목적: 공유 자원을 보호하고 데이터의 일관성을 유지하기 위함.
  • 기본 원칙:
    1. 하나의 프로세스가 공유 자원에 접근 중이면 다른 프로세스는 대기해야 한다.
    2. 공유 자원 사용이 끝나면 다른 프로세스가 자원에 접근할 수 있도록 해야 한다.

Mutex (Mutual Exclusion Object)

  • 정의: 하나의 프로세스/스레드만 특정 자원에 접근할 수 있도록 보장하는 동기화 객체.

  • 특징:

    • **잠금(Lock)과 해제(Unlock):
      • Lock: 자원을 사용하기 전에 잠금을 설정.
      • Unlock: 사용 후 잠금을 해제.
    • 자원을 보호하기 위한 이진 락(binary lock) 개념.
  • 장점:

    • 매우 간단하며, 효과적으로 상호 배제를 구현.
  • 단점:

    • Deadlock 위험이 존재.
    • 한 번에 하나의 스레드만 자원에 접근 가능.

세마포어 (Semaphore)

  • 정의: 정수 값을 사용하여 자원에 접근할 수 있는 스레드의 수를 제어하는 동기화 도구.
  • 종류:
    1. 이진 세마포어(Binary Semaphore):
      • Mutex와 유사하며, 값이 0과 1로 제한됨.
    2. 카운팅 세마포어(Counting Semaphore):
      • 값이 0부터 N까지로 확장 가능하며, N개의 스레드가 동시에 자원에 접근할 수 있음.
  • 작동 원리:
    • P 연산(Wait): 자원 접근 전, 세마포어 값을 감소시키고, 값이 음수가 되면 대기.
    • V 연산(Signal): 자원 사용 후, 세마포어 값을 증가시켜 대기 중인 스레드가 자원을 사용할 수 있도록 함.
  • 장점:
    • 동시에 여러 프로세스가 자원에 접근 가능하도록 제어 가능.
    • Deadlock이나 기아 상태 방지에 도움이 될 수 있음.
  • 단점:
    • 잘못된 세마포어 사용은 복잡한 버그를 초래할 수 있음.

Mutex와 세마포어의 비교

특징MutexSemaphore
값의 범위0 또는 10 이상 (N개까지 확장 가능)
동시 접근 허용하나의 스레드만 접근 가능여러 스레드가 동시에 접근 가능 (N개)
소유권특정 스레드가 소유 (소유 스레드만 해제 가능)소유권 개념 없음
사용 용도단일 자원 보호다중 자원 보호

동기화 이슈 해결 방안

  1. Mutex와 세마포어 사용:
    • Mutex는 단일 공유 자원의 보호에 적합.
    • 세마포어는 제한도니 다중 자원에 적합.
  2. 데드락 예방:
    • 자원 할당 순서를 정하거나 타임아웃 메커니즘을 도입.
  3. 기아 상태 해결:
    • 공정한 스케줄링 기법(FIFO 등) 도입.
  4. 모니터(Monitor):
    • 고급 동기화 도구로, 조건 변수와 함께 자원 접근을 제어.
profile
Turning Vision into Reality.

0개의 댓글