728x90
반응형
SMALL
교착 상태란?
프로세스를 실행하기 위해서는 자원이 필요한데, 두 개 이상의 프로세스가 각자 상대방이 가지고 있는 자원을 무작정 기다린다면 그 어떤 프로세스도 더 이상 진행할 수 없는 교착 상태가 된다.
교착 상태는 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상를 말한다.
1. 발생 조건
아래 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 아래 조건이 모두 만족될 때 교착 상태가 발생할 가능성이 생긴다.
- 상호 배제: 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상황
- 점유와 대기: 어떠한 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태
- 비선점: 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 않고 그 자원을 이용하는 프로세스의 작업이 끝나야만 이용하는 특성
- 원형 대기: 자원 할당 그래프에서 프로세스들이 원의 형태로 자원을 대기하는 것
2. 해결 방법
운영체제는 이러한 교착 상태를 크게 예방, 회피, 검출 후 회복, 3가지 방법으로 해결한다.
프로세스들에 자원을 할당할 때 상호 배제, 점유와 대기, 비선점, 원형 대기 중 하나의 조건이라도 만족시키지 않게 할당하면 교착 상태는 발생하지 않는다.
2.1 예방
- 상호 배제
- 현실적으로 모든 자원의 상호 배제를 없애기는 어렵기에 이 방식을 현실에서 사용하기에는 다소 무리가 있다.
- 점유와 대기
- 운영체제는 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분한다.
- 자원의 활용률이 낮아져 기아 현상을 야기한다.
- 비선점
- 일부 자원에 대해서는 효과적이지만 한 프로세스의 작업이 끝날 때까지 다른 프로세스가 기다려야 하는 자원도 있어 다소 범용성이 떨어진다.
- 원형 대기
- 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당하면 원형 대기는 발생하지 않는다.
- 모든 컴퓨터 시스템 내에 존재하는 수많은 자원에 번호를 붙이는 일은 간단한 작업이 아니거니와 각 자원에 어떤 번호를 붙이는지에 따라 특정 자원의 활용률이 떨어질 수 있다.
2.2 회피
- 안전 순서열: 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
- 안전 상태: 안전 순서열대로 모든 프로세스에 자원을 배분하여 교착 상태가 발생하지 않는 상태
- 불안전 상태: 안전 순서열이 없는 상황으로 교착 상태가 발생할 수도 있는 상황
- 정의
- 교착 상태가 발생하지 않을 정도로만 조심 조심 자원을 할당하는 방식
- 프로세스들에 배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 정도의 양만큼만 자원을 배분하는 방법
- 항시 안전 상태를 유지하도록 자원을 할당하는 방식
2.3 검출 후 회복
교착 상태 발생을 인정하고 사후에 조치하는 방식을 말한다.
검출 후 회복 방식에서 운영체제는 프로세스들이 자원을 요구할 때마다 그때그때 모두 할당하며, 교착 상태 발생 여부를 주기적으로 검사한다.
- 종류
- 선점을 통한 회복: 교착 상태가 해결될 때까지 다른 프로세스로부터 자원을 강제로 빼앗고 한 프로세스씩 자원을 몰아서 할당하는 방식
- 프로세스 강제 종료를 통한 회복: 강제 종료하는 방식
- 운영체제는 교착 상태에 놓인 프로세스를 모두 강제 종료
- 한 방에 교착 상태를 해결할 수 있는 가장 확실한 방식
- 그만큼 많은 프로세스들이 작업 내역을 잃게 될 가능성이 있음
- 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료
- 작업 내역을 않는 프로세스는 최대한 줄임
- 교착 상태가 없어졌는지 여부를 확인하는 과정에서 오버헤드를 야기
- 운영체제는 교착 상태에 놓인 프로세스를 모두 강제 종료
728x90
반응형
LIST
'CS > 운영체제' 카테고리의 다른 글
[운영체제] CPU 스케줄링에 대하여...더보기 (0) | 2024.11.30 |
---|---|
[운영체제] 프로세스 한 페이지로 정복하기 (0) | 2024.11.28 |
[운영체제] 운영체제란 무엇일까? (0) | 2024.11.27 |