임계 구역 (Critical Section)
- 다중 프로그래밍 운영체제 환경에서 여러 개의 프로세스가 데이터 및 자원 공유 -> 어느 한 시점에 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정
- 임계 구역에는 하나의 프로세스만 접근 가능, 해당 프로세스가 자원 반납 후 다른 프로세스가 자원 및 데이터 사용 가능
- 임계 구역 내 프로세스 진입 허용은 운영체제의 제어 권한
- 임계 구역에서 프로세스가 무한 루프에 빠지지 않도록 함
- 임계 구역 동시 사용으로 인한 임계 영역 문제 발생 가능성 해결 -> 상호 배제, 진행, 한계 대기
상호 배제 (Mutual Exclusion)
- 특정 프로세스가 공유 자원 사용 시 다른 프로세스가 해당 공유 자원 사용 못하게 제어
- 여러 프로세스가 동시에 공유 자원 사용하려 할 때 프로세스가 교대로 공유 자원을 사용하도록 함
- 상호 배제 기법 구현 방법
1) 소프트웨어적 방법 : 데커, 알고리즘, 피터슨 알고리즘, 빵집 알고리즘
2) 하드웨어적인 방법 : Test & Set 기법, Swap 명령어 기법
세마포어(Semaphore)
- 동기화 구현 방법 중 하나, 각 프로세스에 제어 신호 전달하여 순서대로 작업 수행
동기화 : 두 개 이상의 프로세스를 동시에 처리 불가 -> 프로세스에 대한 처리 순서 결정 - 다익스트라가 제안, 사용되는 연산에 P와 V 초기치 연산이 존재, 상호 배제의 원리 보장
- S는 P와 V연산으로만 접근 가능한 세마포어 변수로 공유 자원의 개수를 나타냄
- 세마포어의 종류
이진 세마포어(Binary Semaphore) : 세마포어 변수가 0또는 1을 가지며, 1 이상의 정수로 초기화
산술 세마포어(Counting Semaphore) : 세마포어 변수가 0또는 양의 정수를 가지며, 0이상 정수로 초기화 - P 연산 : 자원을 사용하려는 프로세스들의 진입 여부를 자원의 개수를 통해 결정하는 것으로 Wait 동작
- V 연산 : 대기중인 프로세스를 깨우는 신호로서 Signal 연산
모니터(Monitor)
- 동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는데 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성
- 자료 추상화와 정보 은폐 개념을 기초로 하여 공유 자원을 할당하기 위한 병행성 구조로 이루어짐
- 모니터 내의 공유 자원 사용하려면 프로세스는 반드시 모니터의 진입부를 호출
- 외부의 프로시저는 직접 액세스할 수 없고 모니터의 경계에서 상호 배제 시행
- 한 순간에 하나의 프로세스만 진입하여 자원 사용
- 모니터에서는 Wait와 Signal 연산 사용
교착 상태(DeadLock)
- 상호 배제에 의해 나타나는 문제점 -> 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
- 상호배제(Mutual Exclusion) : 한 번에 한 개의 프로세스 만이 공유 자원을 사용
- 점유와 대기(Hold & Wait) : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
- 비선점(Non-preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없음
- 환형 대기(Circular Wait) : 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구
교착 상태 해결 방법
- 예방 기법(Prevention) : 교착 상태가 발생되지 않도록 사전에 시스템을 제어하는 방법, 발생 4가지 중 하나를 제거
- 상호 배제 부정 : 한번에 여러 개의 프로세스가 공유 자원을 사용하도록 -> 실현 불가능
- 점유 및 대기 부정 : 프로세스가 시행되기 전 모든 자원 할당 -> 프로세스의 대기가 없거나 자원 점유 상태가 아닌 상태에서만 자원 요구
- 비선점 부정 : 자원을 점유하는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고 요구한 자원을 사용하기 위해 기다리게 함
- 환형 대기 부정 : 자원을 선형 순서로 분류하여 고유 번호를 할당하고 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 한쪽 방향으로만 자원을 요구하도록
- 회피 기법(Avoidance) : 교착 상태 발생 시 피해나가는 방법 -> 주로 은행원 알고리즘
- 발견 기법(Detection) : 시스템에 교착 상태가 발생했는지 점검하여 교착 상태에 있는 프로세스와 자원 발견
교착 상태 발견 알고리즘과 자원 할당 그래프 등 사용 - 회복 기법(Recovery) : 교착 상태를 일으킨 프로세스 종료하거나 교착 상태의 프로세스에 할당된 자원 선점
'정보처리산업기사 > 운영체제' 카테고리의 다른 글
[운영체제]운영체제의 개요-hoyhi-tistory (0) | 2021.03.17 |
---|