본문 바로가기
학교 공부/시스템

[운영체제] 병행성 제어와 교착상태

by 그적 2020. 3. 6.

병행성(Concurrency)이란?
 : 두 개 이상의 프로세스들이 동시에 존재하고, 병렬적으로 실행될 수 있는 상태를 말한다.

병행성 제어(Concurrency Control)란?
 : 두 개 이상의 프로세스들이 처리될 수 있는 병행 프로세스는 문제점을 가지고 있다. 컴퓨터는 한정된 자원(CPU, 메모리, 디스크 등)을 사용해야 하므로 프로세스가 여러 개가 동시에 작업되는 경우에는 충돌이 일어날 수 있는데, 이것을 해결하기 위해 상호 배제 기법, 임계 영역, 동기화 기법 등을 통해 병행성을 제어할 수 있다.

① 상호배제(Mutual Exclusion Techniques)
 : 한 프로세스가 공유 메모리 혹은 파일을 사용하고 있을 때, 다른 프로세스들이 공유 자원을 사용하지 못하도록 배제시키는 제어 기법이다. 임계 영역 개념을 사용한다.
 **임계영역 : 하나의 프로세스만 자원을 이용할 수 있도록 보호된 영역

② 임계 영역(Critical Section) 
 : 하나의 프로세스만 자원을 유한 시간 동안만 이용할 수 있도록 보호된 영역이다. 스레드가 공유자원의 배타적인 사용을 보장받기 위해서 임계 구역에 들어가거나 나올 때는 세마포어 같은 동기화 메커니즘이 사용된다. 

③ 동기화 기법
 - 세마포어(Semaphore) : 세마포어는 상호 배제를 운영체제와 프로그래밍 언어 수준에서 지원하는 메커니즘
 - 모니터(Monitor) : 세마포어와 유사하게 프로그래밍 언어 수준에서 상호 배제를 지원하지만 사용이 더 쉽다.


교착상태란?
 : 모든 프로세스들이 대기 중의 상태에 존재하고 프로그램이 진행을 할 수 없는 상태이다.

발생조건
- 상호배제(Mutual Exclusion) : 하나의 프로세스만 공유자원을 점유 가능
- 점유와 대기(Hold and Wait) : 다른 종류의 자원을 부가적으로 요구하면서, 이미 어떠한 자원을 점유하고 있음
- 비선점(Non-preemption) : 프로세스가 자신이 점유하고 있는 자원을 해제 가능
- 환형대기(Circular Wait) : 각 프로세스는 자신에게 할당된 자원을 가지면서 상대방의 자원을 요청하여, 프로세스와 자원들이 원형을 이룸

교착상태 대응방법
1. 교착상태 예방 >> 교착상태 발생 조건을 부정함
2. 교착상태 회피 >> 은행원 알고리즘
3. 교착상태 탐지 >> 자원할당 그래프
4. 교착상태 복구  >> 프로세스 중지 or 자원 선점

댓글