Process synchronization

프로세스 동기화

Apr 09, 2024

동기화의 의미

  • 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나, 프로세스를 올바른 순서대로 실행하게 하는 것

실행 순서 제어를 위한 동기화
동시에 실행되는 프로세스를 올바른 순서대로 실행하는 것

상호 배제를 위한 동기화
공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘

생산자와 소비자 문제

  • 공유된 버퍼나 큐와 같은 자원을 여러 생산자와 소비자가 동시에 접근할 때 발생하는 문제를 다룸
  • 생산자는 자원을 생성하고 큐에 넣고, 소비자는 큐에서 자원을 제거하여 사용
  • 생산자와 소비자 프로세스가 제대로 동기화되지 않으면 레이스 컨디션이나 버퍼 오버플로우 등의 문제가 발생할 수 있음

공유 자원과 임계 구역

공유 자원

  • 여러 프로세스가 접근할 수 있는 자원
  • 공유 자원은 데이터나 장치를 가리킴
  • 여러 프로세스가 동시에 공유 자원에 접근하려고 할 때, 동기화 문제가 발생할 수 있음

임계 구역

  • 프로세스가 공유 자원에 접근하여 작업을 수행하는 부분
  • 임계구역은 한 번에 하나의 프로세스만 접근가능하며 다른 프로세스는 임계구역에 진입하지 못해야함
  • 레이스 컨디션(race conditon): 임계구역에 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우

프로세스 동기화의 세 가지 기본 요구사항

  • 상호배제: 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 없음
  • 진행: 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자하는 프로세스는 들어갈 수 있어야 함
  • 유한 대기: 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계구역에 들어올 수 있어야 함

동기화 기법

뮤텍스 락(Mutex Lock: MUTual Exclusion Lock)

  • 임계 구역을 잠금으로써 프로세스 간의 상호 배제를 구현
  • 공유 자원에 대한 접근을 제어하기 위한 상호배제를 구현하기 위해 사용됨
  • lock(자물쇠 역할), acquire(임계 구역 잠그는 역할), release(임계구역 해제하는 역할)

세마포(Semaphore)

  • 여러 개의 공유자원이 있을 경우 여러 개의 프로세스가 각각 공유자원에 접근 가능해야 함
  • 전역변수 S(임계 구역에 진입할 수 있는 프로세스 개수), wait 함수(임계 구역에 진입가능한지 여부), signal 함수(진입 가능 신호)
  • 임계 구역 앞뒤로 wait와 signal 함수 명시

모니터(Monitor)

  • 주로 클래스나 구조체와 같은 방법을 사용하여 구현하고 복잡한 동기화 문제를 간단하게 해결할 수 있도록 함
  • 공유 자원과 공유 자원에 접근하기 위한 인터페이스(통로)를 묶어 관리
  • 프로세스는 반드시 인터페이스를 통해서만 공유 자원에 접근
  • 공유 자원을 다루는 인터페이스에 접근하기 위한 큐를 만들고, 모니터 안에 항상 하나의 프로세스만 들어오도록하여 상호배제를 위한 동기화 제공
  • 세마포와 마찬가지로 실행 순서 제어를 위한 동기화 제공

출처:
개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제

Go toor?