참고 : [Course] Operating System (CPA310) - 운영체제 강의


[ 운영 체제 7강. 프로세스 동기화 & 상호배제 ]


1. 동기화 ( Process Synchronization )

다중 프로그래밍 시스템

  • 다중 프로그래밍 시스템 = 여러 개의 process가 존재하는 시스템

    process들이 서로 “독립적”으로 동작 ( = 동시에 )

  • 공유 자원.데이터 시, 문제 발생 가능성!


동기화 ( Synchronization )

  • process들 간의 동작 맞추기 & 서로 정보 공유
  • 비동기적 & 병행적
    • 비동기적 ( Asynchronous ) : process들이 서로에 대해 몰라
    • 병행적 ( Concurrent ) : 여러 process들이 “동시에” 시스템에 존재
  • 병행 수행 중인 “비동기적” process들이 공유자원 동시 접근 시, 문제 발생 가능성!


용어

1) Shared data (공유 데이터)

  • 여러 process들이 공유하는 데이터

2) Critical section (임계 영역)

  • 공유 데이터를 접근하는 코드 영역

3) Mutual exclusion (상호 배제)

  • 둘 이상의 process가 critical section에 진입 못하게끔!


2. Critical Section (임계 영역)

기계어 명령어

  • 원자성 ( Atomicity ) & 분리 불가능성 ( Indivisible )
  • 즉, 명령 실행 중, interrupt X

figure2

figure2

figure2

2를 기대했지만…1이 나올수도!?


이를 해결하기 위해…


3. Mutual Exclusion (상호 배제)

figure2

어떠한 process가 critical section에 들어가 있으면, 다른 process는 들어갈 수(끼어들 수) 없다!


Mutual Exclusion primitives (기본 연산)

enterCS() primitive

  • critical section 진입 전에 검사 과정

    ( 다른 process가 c.s안에 있는지 확인 )

exitCS() primitive

  • critical section을 벗어난 뒤의 과정

    ( c.s를 벗어나면 시스템이 알림 )

figure2


Requirements for ME primivites

1) Mutual Exclusion (상호 배제)

  • c.s 내에 process 있으면, 다른 process 진입 금지

2) Progress (진행)

  • c.s안에 있는 process 외의 다른 process에 진입 방해 X

3) Bouding waiting (한정 대기)

  • c.s진입은 유한 시간 내에 허용되어야!


figure2


figure2


figure2