Brain
Science
root
/
학습 노트
/
Study Note
/
2: 운영체제 (Operating System)
/
5. 교착 상태 (Deadlock)
5. 교착 상태 (Deadlock)
281. 교착 상태 (Deadlock) 정의 - 대기 중인 프로세스들이 자원을 점유한 채로 결코 일어나지 않을 사건을 기다리는 상태
2026-03-22
282. 교착 상태 발생 4가지 필요조건 (모두 만족해야 발생)
2026-03-22
283. 상호 배제 (Mutual Exclusion) - 자원은 비공유 모드로만 사용 가능
2026-03-22
284. 점유하며 대기 (Hold-and-Wait) - 자원을 보유한 상태로 다른 자원 대기
2026-03-22
285. 비선점 (No Preemption) - 다른 프로세스의 자원을 강제로 뺏을 수 없음
2026-03-22
286. 순환 대기 (Circular Wait) - 대기 그래프가 사이클(Cycle)을 형성
2026-03-22
287. 자원 할당 그래프 (Resource-Allocation Graph) - 정점(프로세스, 자원)과 간선(요청, 할당)
2026-03-22
288. 단일 인스턴스 자원 환경 - 사이클 존재 = 교착 상태
2026-03-22
289. 다중 인스턴스 자원 환경 - 사이클 존재 != 교착 상태 (필요 조건일 뿐)
2026-03-22
290. 교착 상태 처리 방법 3가지 - 예방/회피, 탐지/복구, 무시
2026-03-22
291. 타조 알고리즘 (Ostrich Algorithm) - 대부분의 OS가 채택하는 무시 전략
2026-03-22
292. 교착 상태 예방 (Deadlock Prevention) - 4조건 중 하나를 원천적 부정 (효율성 매우 낮음)
2026-03-22
293. 상호 배제 부정 - 모든 자원 공유 (현실성 없음)
2026-03-22
294. 점유 대기 부정 - 실행 전 모든 자원 일괄 할당, 또는 자원 없을 때만 요청 (기아 가능성, 자원 낭비)
2026-03-22
295. 비선점 부정 - 자원 요청 대기 시 보유 자원 강제 반납
2026-03-22
296. 순환 대기 부정 - 자원에 고유 번호(순서) 부여, 오름차순으로만 요청 (가장 현실적 예방책)
2026-03-22
297. 교착 상태 회피 (Deadlock Avoidance) - 실행 전 자원 할당 상태를 검사하여 안전한 경우에만 승인
2026-03-22
298. 안전 상태 (Safe State) - 모든 프로세스가 정상 종료될 수 있는 안전 순서(Safe Sequence)가 존재
2026-03-22
299. 불안전 상태 (Unsafe State) - 교착 상태가 발생할 가능성이 있는 상태
2026-03-22
300. 단일 인스턴스 환경의 회피 - 자원 할당 그래프 알고리즘 (예약 간선/Claim Edge 활용)
2026-03-22
301. 다중 인스턴스 환경의 회피 - 은행원 알고리즘 (Banker's Algorithm, 에츠허르 데이크스트라 제안)
2026-03-22
302. 은행원 알고리즘 자료구조 - Available, Max, Allocation, Need 행렬
2026-03-23
303. 은행원 알고리즘 한계 - 프로세스 수, 최대 자원량 사전 숙지 불가, 오버헤드 큼
2026-03-23
304. 교착 상태 탐지 (Deadlock Detection) - 알고리즘을 주기적으로 실행하여 데드락 확인
2026-03-23
305. 대기 그래프 (Wait-for Graph) - 자원 정점을 제거하고 프로세스 간 간선만 남긴 그래프 (단일 자원 탐지용)
2026-03-23
306. 탐지 알고리즘의 오버헤드 - 언제, 얼마나 자주 실행할 것인가?
2026-03-23
307. 교착 상태 복구 (Recovery from Deadlock) - 데드락 해소 조치
2026-03-23
308. 프로세스 종료 방식 - 교착 상태 프로세스 전체 강제 종료 (Abort all)
2026-03-23
309. 프로세스 순차 종료 방식 - 하나씩 종료하며 사이클 해소 여부 확인
2026-03-23
310. 종료 대상 선택 (희생자 선택) 기준 - 프로세스 중요도, 연산 시간, 보유 자원 수
2026-03-23
311. 자원 선점 (Resource Preemption) 방식 - 다른 프로세스의 자원을 강제로 뺏음
2026-03-23
312. 희생자 선택 (Victim Selection) 최소 비용 기준
2026-03-23
313. 후퇴 (Rollback) - 프로세스를 안전한 상태로 롤백 후 재시작
2026-03-23
314. 기아 상태 (Starvation) 발생 방지 (희생자 선택에 횟수 제한)
2026-03-23
315. 라이브락 (Livelock)과 교착 상태의 차이점
2026-03-23
316. 동기화 결함 (순환 의존성) 코드 레벨 디버깅 기법
2026-03-23
317. 락 오더링 (Lock Ordering) 다이나믹 검증 도구 (Lockdep in Linux)
2026-03-23
318. 분산 시스템에서의 교착 상태 탐지 - 분산 교착 상태 그래프
2026-03-23
319. 교착 상태 예방 메커니즘을 위한 타임아웃 (Timeout) 활용
2026-03-23
320. 2단계 잠금 프로토콜 (2PL)과 데드락 (데이터베이스 연관)
2026-03-23