교착 상태에 필요한 네 가지 조건
상호 배제 조건: 리소스는 배타적이며 독점적으로 사용됩니다. 즉, 다른 프로세스가 적용되는 경우 리소스는 언제든지 하나의 프로세스에서만 사용할 수 있습니다. 다른 프로세스가 자원을 점유하면 신청자는 점유자가 자원을 해제할 때까지 기다립니다. (추천 학습: MySQL 동영상 튜토리얼)
탈취 불가능 조건: 프로세스에서 얻은 리소스는 완전히 사용되기 전에 다른 프로세스에서 강제로 박탈되지 않으며, 리소스를 얻은 프로세스에서만 해제할 수 있습니다.
요청 및 보류 조건: 프로세스는 매번 필요한 리소스의 일부에 적용됩니다. 새로운 리소스를 신청하는 동안 할당된 리소스를 계속 점유합니다.
루프 대기 조건: 교착 상태가 발생하면 프로세스 대기 큐 {P1, P2,...,Pn}가 있어야 하며, P1은 P2가 점유한 리소스를 기다리고, P2는 리소스를 기다리고 있습니다. P3이 점유하고 있는 Pn은 P1이 자원을 점유하기를 기다리고 있으며, 이는 프로세스 대기 루프를 형성합니다. 루프의 각 프로세스가 점유한 자원은 동시에 다른 프로세스, 즉 이전 프로세스에 의해 적용됩니다. 후자의 프로세스가 차지하는 리소스를 차지합니다.
위는 교착 상태로 이어지는 네 가지 필수 조건을 제공합니다. 시스템에서 교착 상태가 발생하는 한 위 네 가지 조건 중 적어도 하나가 충족됩니다. 실제로 루프 대기의 설정은 처음 세 가지 조건의 설정을 의미하므로 굳이 나열할 필요는 없을 것 같습니다. 그러나 이러한 조건을 고려하면 교착 상태 발생을 방지할 수 있으므로 이점이 있습니다. 네 가지 조건 중 하나를 파괴합니다.
교착상태 방지
교착상태에 필요한 4가지 조건을 파괴함으로써 교착상태를 방지할 수 있습니다. 자원 상호 배제는 자원 사용의 고유한 특성이므로 변경할 수 없습니다.
"양도할 수 없는" 조건 제거: 프로세스가 필요한 모든 리소스를 얻을 수 없는 경우 대기 상태에 있으며, 해당 프로세스가 점유하고 있는 리소스는 암시적으로 해제되어 시스템 리소스 목록에 다시 추가됩니다. 다른 프로세스에서 사용할 수 있으며, 대기 중인 프로세스는 원래 리소스와 새로 적용된 리소스를 다시 얻은 경우에만 다시 시작하여 실행할 수 있습니다.
"요청 및 보류 조건" 파괴: 첫 번째 방법은 정적 할당입니다. 즉, 각 프로세스는 실행을 시작할 때 필요한 모든 리소스에 적용됩니다. 두 번째는 동적 할당으로, 각 프로세스가 필요한 리소스를 적용할 때 시스템 리소스를 점유하지 않는다는 의미입니다.
"순환 대기" 조건 파괴: 자원의 질서 있는 할당을 채택합니다. 기본 아이디어는 시스템의 모든 자원에 순차적으로 번호를 매기고, 자원이 부족하고 희귀한 자원에 대해 더 큰 숫자를 사용하는 것입니다. 번호 순서를 따라야 합니다. 프로세스는 더 작은 번호를 얻은 경우에만 더 큰 번호의 프로세스에 지원할 수 있습니다.
더 많은 MySQL 관련 기술 기사를 보려면 MySQL Tutorial 칼럼을 방문하여 알아보세요!
위 내용은 교착상태가 발생하기 위한 필요조건의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!