본문 바로가기

운영체제(Operator System)

[운영체제] 임계구역( Critical Section)

 

 

임계구역(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)