프로세스 동기화
- 우리는 프로세스, 스레드가 병렬적으로 수행할 수 있다는 것을 알고있다.
- 이러한 프로세스들이 공유 데이터에 동시에 접근하게 되면 데이터의 일관성을 망치게 된다.
- 동시에 여러 프로세스가 동일한 데이터에 접근해, 실행 결과가 특정 순서에 의존하게 되는 것을 경쟁 조건(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)
'컴퓨터 사이언스 > 운영체제' 카테고리의 다른 글
[공룡책] CPU 스케줄링 (CPU Scheduling) (0) | 2021.07.11 |
---|---|
[공룡책] 프로세스 스케줄링 (Process Scheduling) (0) | 2021.06.22 |
[공룡책] 프로세스 개념 (Process Concept) (0) | 2021.04.28 |
[스케줄링] Scheduling of Linux (0) | 2021.04.13 |