임계구역(Critical-Section
임계 구역은 둘 이상의 스레드가 동시에 접근해서는 안 되는 공유 자원(자료 구조 또는 장치)에 접근하는 코드의 일부를 말한다.(Wiki 임계 구역)
임계구역 문제 (Critical-Section Problem)
임계 구역 문제는 프로세스들이 데이터를 협력적으로 공유하기 위하여 자신들의 활동을 동기화할 때 사용할 수 있는 프로토콜을 설계하는 것이다. 각 프로세스는 자신의 임계구역으로 진입하려면 진입 허가를 요청해야 하며 이러한 요청을 구현하는 코드 부분을 진입 구역(entry section) 임계구역 뒤에는 나머지 구역(remainder section)이라고 부른다.
임계구역을 만족하는 3가지
임계구역 문제에 대한 해결안은 다음의 세 가지 요구사항을 만족해야 한다.
1. 상호 배제(mutual exclusion)
프로세스 Pi가 자기의 임계구역에서 실행된다면, 다른 프로세스들은 그들 자신의 임계구역에서 실행될 수 없다.
2. 진행(progress)
자기의 임계구역에서 실행되는 프로세스가 없고 그들 자신의 임계구역으로 진입하려고 하는 프로세스들이 있다면,
나머지 구역에서 실행 중이지 않은 프로세스들만 다음에 누가 그 임계구역으로 진입할 수 있는지를 결정하는 데
참여할 수 있으며, 이 선택은 무한정 연기될 수 없다.
3. 한정된 대기(bounded waiting)
프로세스가 자기의 임계구역에 진입하려는 요청을 한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 그들 자신
의 임계구역에 진입하도록 허용되는 횟수에 한계가 있어야 한다.
해결방법
1. 상용 라이브러리 Mutex를 사용한다.
장: 사용하기 쉽다.
단: 한 번에 한 개의 스레드만 진입할 수 있으므로 성능의 향상을 기대할 수 없다.
2. 병렬 알고리즘을 사용한다.
장: Lock을 사용하지 않기 때문에 성능 향상을 기대할 수 있다.
단: 멀티스레드에 대한 이해가 많이 필요하다.
후기
임계영역은 무엇이며, 임계영역을 만족하는 3가지 조건, 해결방법 등에 대해 간단하게 정리하였다.
이 이후에는 임계영역을 SW적인 방법으로 제시한 피터슨 알고리즘(Peterson's algorithm)에 대해 정리해볼 예정이다.
출처 및 레퍼런스
Book: 운영체제 (퍼스트북)
Wiki: ko.wikipedia.org/wiki/임계_구역
관련글
[운영체제(Operator System)] - [운영체제] 피터슨 알고리즘(Peterson's algorithm)
'운영체제(Operator System)' 카테고리의 다른 글
[운영체제] SRWLock (0) | 2020.10.16 |
---|---|
[운영체제] CAS 기반 SpinLock (0) | 2020.10.15 |
[운영체제] 메모리(Memory) (0) | 2020.09.20 |
[운영체제] 피터슨 알고리즘(Peterson's algorithm) (2) | 2020.06.03 |