[혼공컴운] ch.12 프로세스 동기화

제트·2024년 8월 10일
0

12-1. 동기화란

1. 동기화의 의미

  • 프로세스 동기화 : 프로세스들 사이의 수행 시기를 맞추는 것
    • 실행 순서 제어 : 프로세스를 올바른 순서대로 실행
    • 상호 배제 : 동시에 접근하면 안 되는 자원에 하나의 프로세스만 접근하도록
      • 상호 배제(mutual exclusion) : 공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘

2. 생산자와 소비자 문제

  • 생산자 : 물건을 계속해서 생산하는 프로세스
  • 소비자 : 물건을 계속 소비하는 프로세스

생산자 프로세스와 소비자 프로세스가 제대로 동기화 되지 않았을 때 발생

3. 공유 자원과 임계 구역

  • 공유 자원(shared resource) : 공동으로 사용하는 변수, 파일, 장치 등의 자원

  • 임계 구역(critical section) : 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역

  • 레이스 컨디션(race condition) : 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우

  • 상호 배제를 위한 동기화를 위해 지켜야 할 원칙

    • 상호 배제(mutual exclution) : 한 프로세스가 임계 구역에 진입했을 때 다른 프로세스는 임계 구역에 들어올 수 없음
    • 진행(progress) : 임계 구역에 어떤 프로세스도 진입하지 않았을 때 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 함
    • 유한 대기(bounded waiting) : 임계 구역에 들어오기 위해 무한정 대기해서는 안 됨

/

12-2. 동기화 기법

1. 뮤텍스 락

  • 뮤텍스 락(Mutex lock; MUTual EXclusion lock) : 동시에 접근해서는 안 되는 자원에 동시에 접근하지 않도록 만드는 도구. 상호 배제를 위한 동기화 도구

    • 자물쇠 역할 : 프로세스들이 공유하는 전역 변수 lock
    • 임계 구역을 잠그는 역할 : acquire 함수
    • 임계 구역의 잠금을 해제하는 역할 : release 함수
  • acquire 함수 : 프로세스가 임계 구역에 진입하기 전에 호출하는 함수

  • release 함수 : 임계 구역에서의 작업이 끝나고 호출하는 함수

2. 세마포

  • 세마포(semaphore) : 공유 자원이 여러 개 있는 임계 구역 문제도 해결할 수 있는 동기화 도구
    • 이진 세마포
    • 카운팅 세마포
  • 하나의 변수와 두 개의 함수로 구현 가능
    • 전역 변수 S : 임계 구역에 진입할 수 있는 프로세스 개수(사용 가능한 공유 자원의 개수)
    • wait 함수 : 임계 구역에 들어가도 괜찮은지, 기다려야 하는지 표현
    • signal 함수 : 임계 구역 앞에서 기다리는 프로세스에게 가도 괜찮다고 신호 표현

3. 모니터

  • 모니터 : 세마포에 비해 사용자가 사용하기 편리한 동기화 도구로 조건 변수 사용

5주차 기본 과제
Q. 뮤텍스 락과 세마포에 대한 설명으로 옳지 않은 것을 고르세요(p.363 확인 문제 1번)
A. (4)
반드시 바쁜 대기를 할 필요는 없음. 대기 상태에 접어들게 할 수 있음.

5주차 추가 과제
본문 내 수행

profile
소프트웨어학부 2학년

0개의 댓글