교착상태는 작업에 필요한 자원을 얻지 못해 더 이상 진행하지 못하는 상황을 말합니다. 일명 Dead Lock이라고 불리는 이 현상을 타개하는 회복 기법에 대해서 알아봅니다.
[ Contents ]
1. 프로세스 종료 (Process Termination)
1) 교착상태에 빠진 프로세스 일괄 종료
오류가 났을 때 컴퓨터를 재부팅하는 것과 비슷합니다. 가장 간단한 방법으로, 해당 프로세스의 자원을 모두 반환시켜서 다른 프로세스가 자원을 이용할 수 있도록 합니다.
하지만 중요 프로세스가 포함된 경우에는 일괄 종료가 어렵습니다. 또한 진행 중이던 프로세스가 롤백되므로, 작업 효율에도 영향이 있습니다.
2) 교착상태가 해결될 때까지 하나씩 프로세스 종료
오류가 났을 때 작업관리자에서 하나씩 프로그램을 강제 종료시키는 방식과 비슷합니다. 프로세스를 하나씩 종료하며 교착상태가 해소되는지 지켜봅니다.
이때 '희생자 선택의 원칙'에 따라 우선순위가 낮고 강제 종료했을 때 영향력이 적은 프로세스부터 종료시킵니다.
교착상태에 걸린 모든 프로세스를 강제 종료하는 무식한 방식보다야... 나은 것처럼 보이지만, 일괄 종료가 더 효과적인 때도 많습니다. 애초에 희생자를 선별하는 과정도 시간이 소요되며, 하나씩 종료하며 교착상태가 해결되었는지 지켜보는 시간도 꽤 걸리기 때문입니다.
물론 몇 차례만에 교착상태가 해결된다면, 진행 중이던 프로세스를 종료하지 않아도 되므로 확실한 이점은 있습니다.
2. 자원 선점 (Resource Preemption)
진행 중인 프로세스로부터 교착상태가 해결될 때까지 자원을 강탈함
교착상태에 걸린 프로세스를 하나씩 종료하는 방식과 유사하게, '자원 선점' 방식도 희생자를 선정합니다.
희생자가 된 프로세스는 점유 중인 자원을 다른 프로세스에게 강탈 당하며, 교착상태가 해결될 때까지 빼앗깁니다.
3. 프로세스 회복 (Process Recovery)
진행 중이던 프로세스의 상태를 저장하고 종료시킨 뒤, 다시 시작하는 방식
프로세스 종료와 달리, 진행중이던 작업 상태를 저장한다는 점에서 차이가 있습니다.
해당 프로세스가 점유 중이던 자원이 일시적으로 반환되므로 교착상태가 해소될 수 있습니다.
'CS > OS' 카테고리의 다른 글
[OS] 윈도우 레지스트리(Registry)와 하이브 파일: 시스템 및 프로그램 설정 (0) | 2023.10.02 |
---|---|
[OS] 교착상태 회피방법: 은행원 알고리즘(Banker's Algorithm) (0) | 2023.08.02 |
[OS] 교착상태(Dead Lock)의 정의와 발생조건 4가지: 상호배제, 점유와 대기, 비선점, 환형대기 (0) | 2023.07.31 |
[OS] 병행성 제어: 뮤텍스(Mutex)와 세마포어(Semaphore) (0) | 2023.07.24 |
[OS] 상호배제(Mutual Exclusion)와 임계구역(Critical Section) (0) | 2023.07.24 |
댓글