여러 프로세스가 리소스를 놓고 경쟁하고 다른 프로세스가 이미 점유하고 있는 리소스를 해제할 때까지 끝없이 기다립니다.
컴퓨터 시스템의 제한된 리소스와 리소스 할당을 요청하는 많은 프로세스 사이에는 모순이 있습니다. 여러 프로세스에 필요한 총 자원 수가 시스템이 제공할 수 있는 자원 수보다 클 경우, 프로세스가 선점한 자원을 적절하게 관리하거나 할당하지 않으면 교착 상태가 발생합니다. (추천 학습: 웹 프론트엔드 동영상 튜토리얼)
데드락(Deadlock)은 두 개 이상의 프로세스가 리소스를 놓고 경쟁하거나 실행 중에 서로 통신하여 발생하는 차단 현상을 말하며 외부 힘 효과가 없으면 진행할 수 없습니다. . 이때 시스템이 교착 상태에 있거나 시스템에 교착 상태가 발생했다고 합니다. 이러한 프로세스들이 항상 서로를 기다리고 있는 것을 교착 상태 프로세스라고 합니다.
조건
실행 중에 교착 상태가 발생할 수 있지만 교착 상태가 발생하려면 특정 조건이 충족되어야 합니다. 교착 상태가 발생하려면 다음 네 가지 필수 조건이 충족되어야 합니다.
1) 상호 배제 조건: 프로세스가 할당된 자원을 배타적으로 사용하는 것을 말합니다. 즉, 특정 자원은 일정 시간 내에 하나의 프로세스만 점유됩니다. 이때 다른 프로세스가 자원을 요청하는 경우 요청자는 자원을 점유하고 있는 프로세스가 모두 사용되어 해제될 때까지만 기다릴 수 있습니다.
2) 요청 및 보류 조건: 프로세스가 하나 이상의 리소스를 유지했지만 새로운 리소스 요청을 했으며, 이때 해당 리소스는 다른 프로세스에 의해 점유되었음을 의미합니다. 또한 확보한 다른 리소스도 요청했습니다.
3) 비박탈 조건: 프로세스를 통해 획득한 자원을 의미합니다. 다 소모되기 전에는 박탈할 수 없으며, 다 소모해야만 저절로 해제될 수 있습니다.
4) 루프 대기 조건: 교착 상태가 발생하면 프로세스가 있어야 합니다. 즉, 프로세스 세트 {P0, P1, P2,···,Pn}의 P0가 리소스의 순환 체인을 기다리고 있습니다. P1 점유 자원, P1은 P2가 점유한 자원을 기다리고 있습니다. Pn은 P0이 점유한 자원을 기다리고 있습니다.
원인
리소스 경쟁으로 인해 프로세스 교착 상태가 발생함
프린터, 공개 큐 등 시스템의 여러 프로세스에서 공유하는 리소스 수가 프로세스 요구 사항을 충족하기에 충분하지 않은 경우 , 프로세스가 리소스를 놓고 경쟁할 때 교착 상태가 발생합니다.
임시 리소스 경쟁
위에서 언급한 프린터 리소스는 순차적으로 재사용 가능한 리소스, 즉 영구 리소스입니다. 한 프로세스에서 생성되어 다른 프로세스에서 사용되며, 일정 시간이 지나면 쓸모 없게 되는 리소스를 가리켜 하드웨어와 같은 소모성 리소스라고도 합니다. 인터럽트, 신호, 메시지, 메시지 등으로 인해 교착 상태가 발생할 수도 있습니다.
위 내용은 시스템 교착 상태의 원인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!