[운영체제] 6.병행 프로세스에서 고려사항

이번에는 정보처리기사 필기 과목인 운영체제의 병행 프로세스에서 고려 사항을 살펴보아요.

병행 프로세스
여러 프로세스가 동시에 동작하는 상태를 말합니다.
두 개의 프로세스가 경쟁하여 자원을 사용할 때 여러가지 문제가 발생할 수 있습니다.
경쟁 상태에 있을 때 임계 영역에 서로 들어가는 것을 방지하여야 합니다.

경쟁 자원
두 개 이상의 작업이 경쟁하여 사용하는 자원

경쟁 상태(Race Condition)
두 개 이상의 작업이 경쟁 자원을 사용하려는 상태

임계 영역(Critical Section)
경쟁 자원을 사용하는 영역

상호 배제(Mutual Exclusion)
두 개 이상의 작업이 동시에 임계 영역에 들어가지 못하게 하는 기법

세마포어(Semaphore)
여러 개의 프로세스의 동기화에 사용합니다.
경쟁 자원을 사용하기 전에 임계영역에 진입할 수 있을 때까지 Wait
입계영역에 진입했을 때 P연산(Wait)으로 경쟁 자원 개수를 1 감소
경쟁 자원을 사용한 후에 임계 영역을 빠져나가기 전에 V연산(Signal)으로 경쟁 자원 개수를 1 증가

모니터(Monitor)
하나의 프로세스의 동기화에 사용합니다.
Wait 연산과 Siganl 연산으로 사용합니다.
임계영역에 집입하기 전에 Wait 연산을 수행합니다. (자신이 사용할 수 있을 때까지 대기)
임계영역을 벗어날 때 Signal 연산을 수행합니다. (자신이 사용을 끝냈음을 통보)

교착상태(Dead Lock)
경쟁 상태에서 다른 프로세스가 점유하고 있는 자원을 사용하기를 무한정 대기하는 상태

교창상태를 해결하는 방법
예방기법(Prevention): 교착상태가 발생하지 않게 시스템을 제어하는 방법으로 자원 낭비가 가장 심하다.
회피기법(Avoidance): 은행원 알고리즘
발견기법(Dectection)
회복기법(Recovery): 교착 상태에 있는 프로세스를 종료하거나 자원을 선점하여 다른 프로세스에 할당