728x90
반응형
1. 교착 상태(Deadlock)
교착 상태는 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다.
예를 들어 프로세스 A가 프로세스 B의 어떤 자원을 요청할 때 프로세스 B도 프로세스 A가 점유하고 있는 자원을 요청하는 것이다.
2. 교착상태의 원인
아래의 4가지 조건을 모두 달성할 경우 교착 상태에 빠지게 된다.
(1) 상호 배제
한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근이 불가능하다.
(2) 점유 대기
특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태이다.
(3) 비선점
다른 프로세스의 자원을 강제적으로 가져올 수 없다.
(4) 순환 대기(=환형 대기)
프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스 B는 프로세스 A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황을 말한다.
3. 교착 상태의 해결 방법
- 자원을 할당할 때 애초에 조건이 성립되지 않도록 설계한다.
- 교착 상태 가능성이 없을 때만 자원이 할당되며, 프로세스 당 요청할 자원들의 최대치를 통해 자원 할당 여부를 파악하는 '은행원 알고리즘'을 사용한다.
- 교착 상태가 발생하면 사이클이 있느닞 찾아보고 이에 관련된 프로세스를 한 개씩 지운다.
- 교착 상태는 매우 드물게 일어나기 때문에 이를 처리하는 비용이 더 커서 교착 상태가 발생하면 사용자가 작업을 중단한다.
- 프로세스를 실행시키다 '응답 없음'이라고 뜰 때가 해당 예시
은행원 알고리즘
총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고 안정 상태로 가도록 자원을 할당하는 알고리즘
4. 기아 상태(Starvation)
기아 상태란 특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태를 말한다.
교착 상태 vs 기아상태
- 교착 상태 : 여러 프로세스가 동일 자원 점유를 요청할 때 발생
- 기아 상태 : 여러 프로세스가 부족한 자원을 점유하기 위해 경정할 떄 발생
5. 기아 상태의 해결 방법
- 프로세스 우선순위 수시 변경을 통해 각 프로세스가 높은 우선순위를 가지도록 기회를 부여한다.
- 오래 기다린 프로세스의 우선 순위를 높인다.
- 우선순위가 아닌 요청 순서대로 처리하는 요청큐를 사용한다.
728x90
반응형
'CS > 운영체제' 카테고리의 다른 글
[CS/운영체제] 스케줄러의 종류 (1) | 2024.01.25 |
---|---|
[CS/운영체제] CPU 스케줄링 (0) | 2024.01.23 |
[CS/운영체제] 멀티 프로세스와 멀티 스레드 (0) | 2024.01.18 |
[CS/운영체제] 스레드 (0) | 2024.01.18 |
[CS/운영체제] 프로세스 (0) | 2024.01.18 |