본문 바로가기

컴퓨터 사이언스/운영체제

[공룡책] 프로세스 동기화와 임계구역(Critical Section)

프로세스 동기화

- 우리는 프로세스, 스레드가 병렬적으로 수행할 수 있다는 것을 알고있다.

- 이러한 프로세스들이 공유 데이터에 동시에 접근하게 되면 데이터의 일관성을 망치게 된다.

- 동시에 여러 프로세스가 동일한 데이터에 접근해, 실행 결과가 특정 순서에 의존하게 되는 것을 경쟁 조건(race condition)이라 부른다.

 

임계구역

- 적어도 하나 이상의 프로세스가 공유하는 데이터를 가져 동시에 접근해서는 안되는 구역을 임계구역(critical section)이라고 부른다.

 

임계구역 해결의 요구조건

- 상호 배제(mutual exclusion): 하나의 프로세스가 임계구역에서 실행되고 있다면, 다른 프로세스들은 임계 구역에서 실행될 수 없다.

- 진행(progress): 임계구역에서 실행되는 프로세스가 없고, 임계구역에 진입하려는 프로세스들이 있으면 그들 중 나머지 구역에서 실행되고 있지 않은 프로세스만이 임계구역 진입의 후보자가 될 수 있다. 또한, 임계구역 진입 프로세스 선택은 무기한 연기될 수 없다.

- 한정된 대기(bounded waiting): 프로세스가 임계구역에 진입하려는 요청을 한 후, 요청이 허용될 때까지 다른 프로세스들이 임계구역진입되는 횟수에는 제한이 있다.

 

Lock

- 하드웨어 기반 해결책

- 임계구역에 진입하는 프로세스가 Lock을 획득하고, 빠져나올 때 Lock을 반환한다.

- 복잡하고, 응용 프로그래머가 활용하기 힘들다.

 

Mutex Lock

- acquire(), release() 함수의 호출로 Lock을 관리한다.

- 소프트웨어 기반 해결책

- Spin Lock의 유형은 임계구역에 다른 프로세스가 이미 진입해있으면, 진입을 원하는 프로세스들은 acquire() 함수를 계속 호출하며

busy waiting을 하게 되는 단점이 있다.

 

Semaphore

- 소프트웨어 기반 해결책

- 두 개의 프로세스만 다룰 수 있는 Mutex Lock과 달리 정수 변수를 가져 다양한 상황에 응용할 수 있다.

- 세마포는 가용가능한 자원의 개수만큼 초기화되며, 자원을 사용하면 세마포가 감소하고, 방출하면 세마포가 증가하는 방식이다.

- 세마포가 0이 되면, 자원을 사용하려는 프로세스를 block하게 된다.

 

참조)

braham Silberschats, Greg Gagne, Peter B. Galvin. (2018). Operating System Concepts (10/E)