728x90
Dead Lock(교착상태)
다중 프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태
아래 조건 중 하나라도 미충족 시 교착상태가 발생하지 않음
- 상호 배제(Mutual Exclusion) : 한번에 한개의 프로세스만이 공유 자원을 사용할 수 있어야 한다
- 점유와 대기(Hold and Wait) : 자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을 기다리는 것
- 비선점(Non-Preemption) : 다른 프로세스에 할당된 자원은 강제로 뺏을 수 없어야 한다
- 환형 대기(Circular Wait) : 원형 구조로 구성되어 있어 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다
교착상태 해결방법
- 예방 기법(Prevention) : 사전에 교착상태 발생의 네가지 조건 중 하나를 부정함으로써 수행
- 회피 기법(Avoidance) : 일반적으로 은행원 알고리즘 사용하여 구현
- 발견 기법(Detection) : 교착상태가 발생했는지 점검하여 교착상태가 발생한 자원을 발견하는 것
- 회복 기법(Recovery): 교착상태가 발생 시 해결하는 방법
기아상태(Starvation)
프로세스가 원하는 자원을 할당받지 못하여 계속해서 대기하는 상태.
다른 프로세스들이 우선적으로 자원을 할당받아 작업을 수행하는 경우 발생할 수 있다.
기아상태가 발생하는 상황
1. 무한 대기: 한 프로세스가 자원을 요청했지만 계속해서 해당 자원을 할당받지 못하여 무한히 대기하는 경우
2. 우선순위 역전: 높은 우선순위의 프로세스가 낮은 우선순위의 프로세스가 사용 중인 자원을 기다리는 경우
3. 자원 고갈: 특정 자원이 지속적으로 다른 프로세스에 의해 점유되어 해당 자원을 사용하려는 프로세스가 계속해서 대기하는 경우
프로세스 스케줄링 및 자원 할당 알고리즘을 효과적으로 관리하여 기아상태를 예방하거나 최소화하는 것이 중요하다.
'CS' 카테고리의 다른 글
[OS] 가상 메모리(Virtual Memory System)란? (1) | 2023.10.07 |
---|---|
[OS] 세마포어(Semaphore)와 뮤텍스(Mutex) (0) | 2023.10.07 |
[OS] 동기화(Synchronization)란? (0) | 2023.10.06 |
[OS] Thread-safe란? 의미 및 설계하는 법 (0) | 2023.10.06 |
[OS]멀티스레드 프로그래밍이란? 장점 및 사용환경, 주의점 (0) | 2023.10.05 |