병행 프로세스와 상호 배제

정보처리자격증병행 프로세스상호 배제
avatar
2025.04.14
·
8 min read

병행 프로세스 (Concurrent Process)

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

- 한정된 컴퓨터 하드웨어나 자원을 공유하고, 동시에 작업을 수행하기 위해 사용하는 개념이다.


임계 구역 (Critical Section)

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

- 임계 구역에는 하나의 프로세스만 접근할 수 있으며, 해당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있다.
- 임계 구역의 문제를 해결하기 위해서는 상호 배제(Mutual Exclusion), 진행(Progress), 한계 대기 (Bounded Waiting)라는 3가지 조건을 충족해야 한다.

상호 배제 : 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다.
진행 : 임계 구역에 아무 것도 접근하지 않았다면 접근이 가능하다.
한계 대기 : 하나의 프로세스가 임계 구역을 진입하기 위해 무한정 대기하지 않아야 한다.


동기화 기법 (Synchronization)

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

세마포어 (Semaphore)

- '신호기', '깃발'을 뜻하며, 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법이다.
- 세마포어는 다익스트라(E.J.Dijkstra)가 제안하였으며, P와 V라는 두 개의 연산에 의해서 동기화를 유지시키고 상호 배제의 원리를 보장한다.
- 세마포어의 변수는 0과 1 혹은 0과 양의 값을 가진다.

모니터 (Monitor)

- 모니터는 동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는 데 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성된다.
- 자료 추상화와 은폐 개념을 기초로 하며 공유 자원을 할당하기 위한 병행성 구조로 이루어져 있다.
- 모니터의 경계에서 상호 배제가 시행된다.
- 모니터에는 한순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있다.


교착상태 (Dead Lock)

상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미한다.

교착상태 발생의 필요 충분 조건

교착상태가 발생하기 위해서는 아래 네 가지 조건이 충족되어야 하는데, 이 네 가지 조건 중 하나라도 충족되지 않으면 교착상태가 발생하지 않는다.

1. 상호 배제 (Mutual Exclusion)
한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다.

2. 점유와 대기 (Hold and Wait)
최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.

3. 비선점 (Non-preemption)
다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.

4. 환형 대기 (Circular Wait)
공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다.

교착상태의 해결 방법

예방 기법 (Prevention)
- 교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법이다.
- 교착상태 발생의 네 가지 조건 중에서 어느 하나를 제거함으로써 수행된다.
- 자원의 낭비가 가장 심한 기법이다.

회피기법 (Avoidance)
- 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나가는 방법이다.
- 주로 은행원 알고리즘이 사용된다.
- 은행원 알고리즘(Banker's Algorithm) : E.J.Dijkstra가 제안한 것으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데에서 유래한 기법이다.

발견 기법 (Detection)
- 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 것이다.
- 교착상태 발견 알고리즘과 자원 할당 그래프 등을 사용할 수 있다.

회복기법 (Recovery)
- 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것이다.







- 컬렉션 아티클