운영체제_2
병행 프로세스 (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(자원)을 다른 프로세스에 할당 할 수 없는 방식