프로세스 동기화
1. 프로세스 동기화
공유 데이터에 대한 동시 접근은 데이터 불일치 초래해서 일관성을 유지해야 한다.
1.1 임계 구역(Critical Section)
- 다중 프로그래밍 운영체제에서 여러 개의 프로세스 간에 공유자원을 접근하는 데 있어서 문제가 발생하지 않도록 한 번에 는 하나의 프로세스만 사용하도록 지정된 공유 자원 영역(동시 수행 불가)
- 한정된 대기문제를 해결하지 못하여 발생
- 작업은 신속하게 이루어져야함
- 명령어 실행 중 인터럽트 발생 금지
1.2 상호 배제(Mutual Exclusion)
- 특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하여 임계 구역을 유지하는 방법
- 임계 구역 내에서는 인터럽트, 교착상태, 무한반복이 발생되지 않도록 해야 한다
(a)TestAndSet 알고리즘
- 한정된 대기조건을 고려하여 시성을 제어 어하기 위한 동기화 명령어 중 하나로서, 특수한 하드웨어의 도움을 받아 수행
(b) 세마포어(Semaphore)
- E.W.Dikstra 제안, P,V연산에 의해 임계 구역 접근 제어
- 상호 배제 원리 보장
- 초기화값 2, 임계구역에 2개의 프로세스가 들어 갈 수 있다
- 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법
(c) 모니터(Monitor)
- 특정 공유 자원 할당하는데 필요한 데이터 및 프로시저 구성
- 자료 추상화, 정보 은폐 기초
- 외부에서는 모니터 내의 데이터를 직접 액세스 할 수 없음
- 경계에서 상호배제 시행
- 한 순간에 하나의 프로세스만이 모니터 진입
1.3. 교착 상태(Deadlock)
- 상호 배제에 의해 나타나는 문제점
- 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
(1)교착상태가 발생하기 위한 4가지 필수 조건
이 네 가지 조건 중 하나라도 충족되지 않으면 교착상태가 발생하지 않는다.
(a)상호 배제(Mutual Exclusion): : 한 번에 한 개의 프로세스만이 공유 자원을 사용
(b)점유와 대기(Hold and Wait) : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
(c)비선점(Non-Preemption): 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함
(d) 환형 대기(Circular Wait): 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함(서로 간의 요구관계가 회전)
(2) 교착 상태 해결 방법
(a)예방기법(Prevention): 교착상태 충분조건 부정하며 사전에 제어
(b)회피 기법(Avoidance) 개정 전 기출, 20년 1, 2회 기출
- 발생 가능성 배제하지 않고 가능성을 피해나감
- 교착 상태가 발생할 가능성을 배제하지 않고, 교착 상태가 발생하면 적절히 피해나가는 방법으로, 주로 은행원 알고리즘이 사용된다
- e.g. 은행가 알고리즘(Banker’s Algorithm)
(c)발견기법(Detection) 교착상태 발생했는지 점검, 프로세스와 자원 발견(자원 할당 그래프)
(d)회복기법(Recovery) 없어질 때까지 교착상태에 포함된 프로세스 하나씩 종료하여 회복
'Challenges > 정보처리기사' 카테고리의 다른 글
[정보처리기사]4.프로그래밍 언어 활용/SW 운영체제의 활용/OSI7계층, TCP/IP4계층 (0) | 2022.07.05 |
---|---|
[정보처리기사]4.프로그래밍 언어 활용/SW 운영체제의 활용/인터넷 (0) | 2022.07.05 |
[정보처리기사]4.프로그래밍 언어 활용/SW 운영체제의 활용/프로세스 스케줄링 (0) | 2022.07.04 |
[정보처리기사]4.프로그래밍 언어 활용/SW 운영체제의 활용/프로세스 (0) | 2022.07.04 |
[정보처리기사]4.프로그래밍 언어 활용/SW 운영체제의 활용/가상기억장치 (0) | 2022.07.04 |