-
병행 프로세스 (ConCurrent Process)
정의
병행프로세스는 두 개 이상의 프로세스가 동시에 처리하는 것을 의미한다.
공유자원에 대한 배타적인 접근이 보장되지 않는다면 오류 발생시 커다란 문제가 야기될 수 있다.
오류를 방지하기 위한 해결책
1) 임계 영역(Critical Section)
다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 특정 작업 시점에서는
하나의 프로세스만 자원 또는 데이터를 사용하도록 허용된 영역
2) 상호 배제 (Mutual Exclusion)
여러 개의 프로세스가 공유 자원을 액세스 할 때 작업을 정당하게 실행하기 위해 한 순간에 하나의 프로세스만
변경할 수 있도록 하는 기법.
한 프로세스가 공유 자원을 사용하는 동안, 다른 프로세스가 이미 할당된 자원을 요구한다면 자원을 요구한
프로세스는 해당 자원이 해제 될 때까지 기다려야 하는 상황을 의미한다.
소프트웨어적
해결 방법Dekker Algorithm Peterson Algorithm 하드웨어적
해결 방법Interrupt 비활성화 Test-and-Set 명령어 Compaer-and-Swap 명령어 3) 세마포어(Semaphore)
임계 영역에서 프로세스가 작업을 수행하더라도 올바른 결과를 산출할 수 있도록 데이터의 정확성과 일관성을 보장하는 방법.
세마포어는 상호 배제를 이루는 방법으로 보호변수 P(wait)와 V(Signal)의 두 가지 연산에 의해서만 액세스될 수 있도록 통제하는 방법.
4) 모니터(Monitor)
운영체제에서 지원하는 세마포어와는 다르게 병행 다중 프로그래밍에서 상호 배제를 구현하기 위한
특수한 프로그래밍 기법으로 공유 자원을 정당하게 할당하기 위한 병행성 구조.
교착상태(Deadlock)
정의
둘 이상의 프로세스가 서로 다른 프로세스가 차지하고 있는 자원을 요구하고 요청한 자원이 영원히 할당되지 않아
결국 해당 프로세스는 무한정으로 기다리는 현상.
발생 조건
조건 내용 상호배제
(Mutual Exclusion)한 번에 하나의 프로세스만이 공유 자원을 사용할 수 있는 상태 점유 및 대기
(Hold & Wait)프로세스들이 현재의 자원을 점유하면서 다른 자원을 요구하는 상태 비선점
(Non-Preemption)각 프로세스에 할당된 자원은 사용이 완료될 때까지 강제로 해제할 수 없는 상태 환형 대기
(Circular Wait)서로 다른 프로세스 간의 자원요구가 연속적으로 반복 되는 상태 해결 방안
조건 내용 예방
(Prevention)교착상태의 발생조건을 제거하여 사전에 미리 예방하는 방법 회피
(Avoidance)교착상태의 발생조건을 제거하지 않고, 적절하게 피해 나가는 방법 발견
(Detection)교착상태의 발생을 허용하고, 발생시 원인을 찾아 해결하는 방법 회복
(Recovery)교착상태에 빠진 프로세스를 재시작하거나 원래 상태로 되돌림으로써 교착상태를 해결하는 방법
스케줄링(Scheduling)
정의
다중 프로그래밍을 지원하는 운영체제에서 CPU활용의 극대화를 위해 프로세스를 효율적으로 CPU에게 할당하는 것
목적
- 프로세스의 공정성
- 단위 시간 당 처리량의 최대화
- 반응시간의 최소화
- 예측 가능한 수행 시간
- 시스템의 과부하 방지
- 균형 있는 자원 활용
- 프로세스 수행의 무한정 연기 (Deadlock) 방지
- 우선 순위 제도 실시
스케줄링 알고리즘
1) 선점형(Preemption) 스케줄링
-한 프로세스가 CPU(자원)를 점유하고 있을 때 다른 프로세스가 CPU(자원)을 빼앗을 수 있는 방식
2) 비선점형(Non-Preemption) 스케줄링
-일단 한 프로세스에게 CPU(자원)이 할당되면 작업이 완료되기 전까진 CPU(자원)을 다른 프로세스에 할당 할 수 없는 방식