본문 바로가기

BASIC/OS

[운영체제] 병행 프로세스와 상호 배제

1. 병행 프로세스

- 병행 프로세스(Concurrent Process)는 두 개 이상의 프로세스들이 동시에 존재하여 실행 상태에 있는 것을 의미한다.

- 여러 프로세스들이 독립적으로 실행되는 것을 독립적 병행 프로세스, 서로 협업하며 동시에 실행되는 것을 협동적 병행 프로세스라고 한다.

- 병행 프로세스는 다중 처리 시스템이나 분산 처리 시스템에서 중요한 개념으로 사용된다.


2. 임계 구역

- 임계 구역(Critical Section)은 다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원(영역)을 의미한다.

- 임계 구역에는 하나의 프로세스만 접근할 수 있으며, 해당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있다.

- 임계 구역은 특정 프로세스가 독점할 수 없으며, 임계 영역에서 수행 중인 프로세스는 인터럽트가 불가능하다.

- 임계 구역의 자원이나 데이터는 여러 프로세스가 사용해야 하므로 임계 구역 내에서의 작업은 신속하게 이루어져야 한다.

- 프로세스가 임계 구역에 대한 진입을 요청하면 일정 시간 내에 진입을 허락해야 한다.

- 현재 임계 구역에서 실행되는 프로세스가 없다면 임계 구역 사용을 기다리고 있는 잔류 영역에 있는 프로세스의 사용을 허락해야 하며, 그 이외에 있는 프로세스는 임계 구역에 진입할 수 없다.


3. 상호 배제 기법

- 상호 배제(Mutual Exclusion)는 특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법을 의미한다.

- 여러 프로세스가 동시에 공유 자원을 사용할 때 각 프로세스가 번갈아가며 공유 자원을 사용하도록 하는 것으로, 임계 구역을 유지하는 기법이다.

- 상호 배제 기법을 구현하기 위한 방법에는 소프트웨어적 구현과 하드웨어적 구현이 있다.


1) 소프트웨어적 구현 방법

- 두 개의 프로세스 기준 : 데커(Dekker) 알고리즘, 피터슨(Peterson) 알고리즘

- 여러 개의 프로세스 기준 : Lamport의 빵집 알고리즘


2) 하드웨어적 구현 방법

- Test & Set 기법과 Swap 명령어 기법이 있다.


4. 동기화 기법의 개요

- 동기화 기법(Synchronization)은 두 개 이상의 프로세스를 한 시점에서는 동시에 처리할 수 없으므로 각 프로세스에 대한 처리 순서를 결정하는 것으로, 상호 배제의 한 형태이다.

- 동기화를 구현할 수 있는 방법에는 세마포어모니터가 있다.


5. 세마포어(Semaphore)

- 세마포어는 '신호기', '깃발'을 뜻하며, 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법이다.

- 세마포어는 다익스트라(E. J. Dijkstra)가 제안하였으며, P와 V라는 두 개의 연산에 의해서 동기화를 유지시키고 상호 배제의 원리를 보장한다.

- S는 P와 V 연산으로만 접근 가능한 세마포어 변수로, 공유 자언의 개수를 나타내며 0과 1 혹은 0과 양의 값을 가질 수 있다.


6. 모니터(Monitor)

- 모니터는 동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는 데 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성된다.

- 자료 추상화와 정보 은폐 개념을 기초로 하며 공유 자원을 할당하기 위한 병행성 구조로 이루어져 있다.

- 모니터 내의 공유 자원을 사용하려면 프로세스는 반드시 모니터의 진입부를 호출해야 한다.

- 외부의 프로시저는 직접 액세스할 수 없다.

- 모니터의 경계에서 상호 배제가 시행된다.

- 모니터에는 한 순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있다.

- 모니터에서는 Wait과 Signal 연산이 사용된다.

'BASIC > OS' 카테고리의 다른 글

[운영체제] 기억장치 관리의 개요  (0) 2018.02.26
[운영체제] 교착상태  (0) 2018.02.26
[운영체제] 선점 스케줄링  (0) 2018.02.26
[운영체제] 비선점 스케줄링  (0) 2018.02.25
[운영체제] 스케줄링  (0) 2018.02.25