프로세스 동기화
여러 프로세스의 접근이 가능한 공유된 데이터에 여러 프로세스들이 동시에 접근했을 때를 방지하는 방법
임계구역/상호배제/세마포어
임계구역(Critical Section)
다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원(영역)을 의미
임계구역은 특정 프로세스가 독점할 수 없다.
상호 배제(Mutual Exclusion)
특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법이다.
여러 프소세스가 동시에 공유자원을 사용하려 할 때 각 프로세스가 번걸아가며 공유 자원을 사용하도록 하는 것으로 임계 구역을 유지하는 기법
상호 배제 구현 기법
소프트웨어적 구현 방법 |
2개의 프로세스 기준 : 데커, 피터슨 알고리즘 여러 개의 프로세스 기준 : Lamport의 빵집 알고리즘 |
하드웨어적 구현 방법 |
Test & Set 기법, Swap 명령어 기법 |
세마포어(Semaphore)
P와 V 라는 2개의 연산에 의해서 동기화를 유지시키고, 상호배제의 원리를 보장
S라는 변수를 사용, P와 V 연산이 접근 가능한 세마포어 변수로, 공유자원의 개수를 나타낸다.
P연산(Wait) : 자원을 사용하려는 프로세스들의 진입 여부를 자원의 개수(S)를 통해 결정하는 것으로, 자원의 개수를 감소시켜(S=S-1) 자원이 점유되었음을 알림
V연산(Signal) : 대기 중인 프로세스를 깨우는 신호(WakeUp) , 자원의 개수를 증가시켜(S=S+1) 자원이 반납되었음을 알림
1 2 3 4 5 6 7 8 | Wait(S){ while(S<=0); // no operation S--;' } Signal(S){ S++; } | cs |
교착상태(DeadLock)
상호배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
필요충분 조건
- 상호배제(Mutual Exclusion)
- 자원은 한 번에 한 프로세스만 사용 가능
- 점유대기(Hold-and-Wait)
- 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야한다.
- 비선점(No preemption)
- 다른 프로세스에 할당된 자원이 끝날 때까지 강제로 빼앗을 수 없다.
- 순환대기(Circular Wait)
- 점유한 자원을 순환하며 요구
'자격증 노트 > 정보처리기사' 카테고리의 다른 글
[운영체제] 페이지교체 알고리즘 (0) | 2018.10.18 |
---|---|
[운영체제] 기억장치관련 (0) | 2018.10.18 |
[운영체제] CPU(프로세서) 스케줄링 (0) | 2018.10.18 |
[운영체제] 프로세스, 프로세스 상태 전이도 (0) | 2018.10.18 |
[운영체제] 운영체제 발달 과정 (0) | 2018.10.18 |