프로세스 임계 구역

By 01/10/2018OS Concept

프로세스 임계 구역

 

 

n 개의 프로세스 {P0, P1, P2, … Pn}이 있는 시스템에서 각 프로세스는 임계 구역(critical section)이라고 부르는 코드 부분을 포함하고 있으며 그 안에서는 다른 프로세스와 공유하는 변수를 변경하거나 테이블을 갱신하거나 파일을 쓰거나 하는 등의 작업을 수행 한다.

 

임계 구역의 특징은 “한 프로세스가 자신의 임계 구역에서 수행하는 동안에는 다른 프로세스들은 그들의 임계 구역에 들어갈 수 없다” 각 프로세스는 자신의 임계 구역으로 진입하려면 진입 허가를 요청해야 한다. 이러한 요청을 구현하는 코드 부분을 진입 구역(entry section)이라 한다. 임계 구역 뒤에는 퇴출 구역(exit section)이 따라올 수 있다. 코드의 나머지 부분들을 총칭하여 나머지 구역(remainder section)이라고 부른다.

 

 

[임계 구역 문제에 대한 해결 요구 조건]

  • 상호 배제(Mutual exclusion) : 프로세스 Pi가 자기 임계 구역에서 실행 된다면 다른 프로세스들은 그들 자신의 임계 구역에서 실행될 수 없다.
  • 진행(Progress) : 자기의 임계 구역에서 실행되는 프로세스가 없고 그리고 그들 자신의 임계 구역으로 진입하려고 하는 프로세스들이 있다면 나머지 구역에서 실행 중이지 않은 프로세스들만 다음에 누가 그 임계 구역으로 진입할 수 있는지를 결정하는 데 참여 할 수 있으며 이 선택은 무한정 연결 될 수 있다.
  • 한정된 대기(Bounded waiting) : 프로세스가 자기의 임계 구역에 진입하려는 요청을 한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 그들 자신의 임계 구역에 진입 하도록 허용되는 횟수에 제한이 있어야 한다.

 

[임계 구역 접근]

임의의 한 순간에 많은 커널 모드 프로세스들이 운영체제 안에서 활성화 될 수 있다. 그 결과 운영체제를 구현하는 코드(커널 코드)는 경쟁 조건이 발생하기 쉽다. 운영체제 내에서 임계 구역을 다루기 위해서는 일반적으로 선점형 커널과 비선점형 커널 접근법이 사용된다.

  • 선점형 커널 : 프로세스가 커널 모드에서 수행되는 동안 선점되는 것을 허용
  • 비선점형 커널 : 커널 모드에서 수행되는 프로세스의 선점을 허용하지 않고 커널 모드 프로세스는 커널을 빠져 나갈 때까지 또는 봉쇄될 때까지 또는 자발적으로 CPU의 제어를 양보할 때까지 계속 수행 된다.

 

선점형 커널은 한 순간에 커널 안에서 실행중인 프로세스는 하나밖에 없기 때문에 커널 자료구조에 대한 경쟁 조건을 염려할 필요는 없다. 선점형 커널에 대해서는 동일한 주장을 할 수 없기 때문에 공유되는 커널 자료구조에서 경쟁 조건이 발생하는 않는 다는 것을 보장하도록 신중하게 설계 되어야 한다.

 

[선점형 커널을 선호하는 이유]

선점형 커널은 실시간 프로세스가 현재 커널에서 실행중인 프로세스를 선점할 수 있기 때문에 실시간 프로그래밍에 더 적당하다. 커널 모드 프로세스가 대기중인 프로세스에게 처리기를 양도하기 전에 오랫동안 실행할 위험이 적기 때문에 선점형 커널은 더 응답이 민첩 할 수 있다. 물론 이 효과는 커널 모드 프로세스가 이런 식으로 행동하지 않도록 커널 코드를 설계하여 최소화 할 수 있다.

 

operation system, 운영체제, 운영체제구조, 컴퓨터구조, OS Concept, CPU 스케줄링, 프로세스 스케줄링, 프로세스 임계영역, 선점형커널, 뮤텍스, sqlmvp, SQL Angeles