- 요약
경쟁상태(Race Condition) : 공유 자원에 대해 여러 개의 프로세스가 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태
교착상태(DeadLock) : 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 아무것도 완료되지 못하는 상태
- 교착 상태의 조건 : 아래 4가지 조건을 모두 충족시켜야 함
1. 상호배재 : 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다.
2. 점유대기 : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
3. 비선점 : 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.
4. 순환대기 : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.
- 해결 방안
1. 예방 : 교착 상태 발생 조건 중 하나를 제거하면서 해결(자원 낭비 심함)
2. 회피 : 교착 상태 발생 시 피해나가는 방법 (ex. 은행원 알고리즘)
3. 탐지 : 자원 할당 그래프를 통해 교착 상태를 탐지(그에 대한 오버헤드 발생함)
4. 회복 : 교착 상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제시켜 회복시키는 방법
기아상태(Starvation) : 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태
- 해결 방안
스케줄링으로 해결 (우선 순위를 변경해준다.)
ex ) 라운드 로빈 스케줄링 : 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위로 CPU 할당
'개발에 도움이 되는 > CS' 카테고리의 다른 글
가비지 컬렉션(Garbage Collection) (0) | 2022.01.10 |
---|---|
컴퓨터를 켜면 일어나는 과정 (OS 부팅 과정) (0) | 2022.01.09 |
가상 메모리(Virtual Memory) (0) | 2022.01.09 |
뮤텍스(Mutex)와 세마포어(Semaphore)의 정의 (0) | 2021.12.16 |
Program, Process, Thread (0) | 2021.10.29 |