Загружаем каталог…
Загружаем каталог…
작업 A는 락 L1을 잡고 L2를 기다립니다. 작업 B는 L2를 잡고 L1을 기다립니다. 둘 중 하나가 진행해야 다른 쪽도 진행할 수 있는데, 두 작업이 모두 멈췄습니다. 이번에는 이 작은 상황으로 교착 상태가 만들어지는 조건과 예방 방법 을 정리해보겠습니다. 기다림이 고리가 될 때 교착 상태를 설명하는 네 조건은 상호 배제, 점유하며 대기, 비선점, 순환 대기입니다. 락 예시에서는 각각 한 작업만 락을 가지며, 이미 잡은 락을 놓지 않고 다른 락을 기다리고, 다른 작업이 강제로 빼앗지 못하며, 대기가 고리로 이어집니다. OSTEP의 교착 상태 조건 이 그림은 각 락을 한 작업만 소유하는 모델입니다. 자원에 여러 인스턴스가 있는 일반적인 상황에서는 고리만 보고 결론을 내리면 안 됩니다. 작업 이미 소유 기다리는 자원 A L1 L2 B L2 L1 둘 다 상대가 놓아야 하는 락을 기다립니다. 단순히 실행 속도가 느린 상황과 구분해야 합니다. 공통 순서를 정해보기 모든 경로가 L1 → L2 순서로 락을 잡도록 정하면 이 두 락의 순환 대기를 피할 수 있습니다. “함수 인자 순서대로 잡는다”는 규칙은 충분하지 않습니다. 호출자가 인자를 뒤집으면 전체 프로그램의 순서는 다시 달라집니다. OSTEP의 락 순서 예방 설명 const order = (locks) => [...locks].sort((a, b) => a - b); console.log(order([2, 1]).join(" -> ")); console.log(order([1, 2]).join(" -> ")); 두 출력 모두 1 -> 2 입니다. 이 코드는 순서 규칙만 검증합니다. 실제 락을 획득하거나 운영체제의 교착 상태를 발생시킨 실험은 아닙니다. 실제 구현에서는 같은 락을 중복 획득하는지, 예외 때 해제하는지, 다른 경로도 규칙을 따르는지 확인해야 합니다. 타임아웃만 넣으면 해결일까? 대기를 중단할 수는 있지만, 잡아 둔 자원을 해제하고 부분 작업을 복구하는 절차가 필요합니다. 두 작업이 같은 패턴으로 계속 재시도하면 진행하지 못하는 다른 문제가 생길 수도 있습니다. 예방, 탐지, 복구를 한 단어로 묶지 말고 각각 어떤 규칙을 제공하는지 확인합니다. 확인 문제 A와 B가 모두 L1부터 잡으면 위 두 락의 순환 대기가 만들어질까요? 함수마다 인자 순서대로 잡는 규칙은 전체 순서를 보장할까요? 대기가 길다는 사실만으로 교착 상태를 확정할 수 있을까요? 답과 해설 이 모델에서는 아닙니다. 먼저 L1을 잡은 작업이 L2로 진행하고, 다른 작업은 L1을 잡기 전에 기다립니다. 아닙니다. 모든 호출 경로가 공유하는 자원 순서가 필요합니다. 아닙니다. 자원 소유자, 대기 관계와 진행 가능성을 확인해야 합니다. 오늘은 소유와 대기 화살표를 따로 그려보겠습니다. 내일은 락 세 개의 순서를 정하고, 일주일 뒤에는 타임아웃 뒤 복구할 상태를 설명해보면 좋겠습니다. 자료 확인 기준: OSTEP 교착 상태 절의 2026-10-04 확인본. 코드와 그림은 설명용 모형입니다. 예제 검증 환경: Node.js v24.13.1.
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
서로 기다리기만 한다면: 교착 상태와 락 획득 순서. 작업 A는 락 L1을 잡고 L2를 기다립니다. 작업 B는 L2를 잡고 L1을 기다립니다. 둘 중 하나가 진행해야 다른 쪽도 진행할 수 있는데, 두 작업이 모두 멈췄습니다. 이번에는 이 작은 상황으로 교착 상태가 만들어지는 조건과 예방 방법 을 정리해보겠습니다. 기다림이 고리가 될 때 교착 상태를 설명하는 네 조건은 상호 배제, 점유하며 대기, 비선점, 순환 대기입니다. 락 예시에서는 각각 한 작업만 락을 가지며, 이미 잡은 락을 놓지 않고 다른 락을 기다리고, 다른 작업이 강제로 빼앗지 못하며, 대기가 고리로 이어집니다. OSTEP의 교착 상태 조건 이 그림은 각 락을 한 작업만 소유하는 모델입니다. 자원에 여러 인스턴스가 있는 일반적인 상황에서는…