Deadlock
Deadlock은 운영 체제 또는 소프트웨어가 실행 중인 상태입니다. 멀티태스킹에서 하나 이상의 프로세스가 시스템 리소스를 기다리고 리소스가 시스템 자체나 다른 프로세스에 의해 점유되어 이중 자물쇠. 교착 상태의 가장 일반적인 형태는 두 개 이상의 스레드가 다른 스레드가 점유한 리소스를 기다리는 경우입니다.
두 시퀀스가 동시에 발생하면 잠금 B가 다음 스레드에 의해 점유되므로 스레드 1은 잠금 B를 얻을 수 없습니다. 스레드 2 소유. 동시에 스레드 2는 잠금 A를 스레드 1이 소유하고 있으므로 잠금 A를 얻을 수 없습니다.
교착상태 조건
교착상태가 발생하려면 다음 4가지 조건이 충족되어야 합니다.
①상호 배제 조건: 프로세스가 할당한 자원을 독점적으로 사용하는 것을 말합니다. 기간 특정 자원은 일정 기간 동안 단 하나의 프로세스에 의해서만 점유됩니다. 이때 다른 프로세스가 자원을 요청하는 경우 요청자는 자원을 점유하고 있는 프로세스가 모두 사용되어 해제될 때까지만 기다릴 수 있습니다.
② 요청 및 보류 조건: 프로세스가 하나 이상의 리소스를 보유했지만 새로운 리소스 요청을 했으며, 이때 해당 리소스는 다른 프로세스에 의해 점유되었음을 의미합니다. 이미 자원을 얻었습니다.
3 비박탈 조건: 프로세스를 통해 획득한 자원은 사용 종료 전에는 박탈할 수 없으며, 사용 종료 후에만 해제할 수 있습니다.
4루프 대기 조건: 은 교착 상태가 발생하면 프로세스가 있어야 함을 의미합니다. 즉, 프로세스 세트 {P0, P1,...,Pn}의 P0이 루프를 기다리고 있습니다. P1이 점유한 자원, P1은 P2가 점유한 자원을 기다리고 있습니다..., Pn은 P0이 점유한 자원을 기다리고 있습니다.
교착상태를 방지하고 대처하는 방법
교착상태 방지: 교착상태를 방지하는 방법은 4가지 조건 중 두 번째, 세 번째, 네 번째 조건 중 하나를 거짓으로 만들어 교착상태를 방지하는 것입니다.
① 잠금 순서: 같은 순서로 잠급니다.
여러 프로세스에 동일한 잠금이 필요하고 다른 순서로 잠금을 추가하면 교착 상태가 쉽게 발생할 수 있습니다. 모든 프로세스가 동일한 순서로 잠금을 획득하는 것이 보장되면 교착 상태가 발생하지 않습니다.
②잠금 시간 제한: 프로세스가 잠금을 획득하려고 시도할 때 특정 시간 제한을 추가합니다.
즉, 잠금 신청 시 제한 시간을 초과하면 해당 프로세스에서 잠금 요청을 포기하고 획득한 모든 잠금이 해제됩니다. 그런 다음 임의의 시간 후에 다시 시도하십시오. 이 임의의 시간은 다른 스레드가 동일한 잠금을 획득하려고 시도할 수 있는 기회를 제공하고 애플리케이션이 잠금을 획득하지 않고 계속되도록 허용합니다. 문제는 동시에 동일한 리소스 배치를 놓고 경쟁하는 프로세스가 많은 경우 시간 초과 및 롤백 메커니즘이 있더라도 일부 프로세스가 반복적으로 시도하지만 잠금을 얻지 못하는 문제가 여전히 발생할 수 있다는 것입니다.
교착 상태 방지: 이 방법도 사전 예방 전략이지만 교착 상태에 필요한 네 가지 조건을 파괴하기 위해 사전에 다양한 제한 조치를 취할 필요는 없지만 동적 자원 할당 과정에서 몇 가지 방법을 사용합니다. 시스템이 안전하지 않은 상태로 들어가는 것을 방지하여 교착 상태를 방지합니다.
교착 상태 감지: 주로 순차 잠금을 달성할 수 없고 잠금 시간 제한을 실행할 수 없는 상황을 목표로 합니다.
설정된 감지 메커니즘을 통해 교착 상태 발생을 적시에 감지하고 교착 상태와 관련된 프로세스 및 리소스를 정확하게 판별합니다. 그런 다음 시스템에서 발생한 교착 상태를 제거하기 위한 적절한 조치를 취하십시오.
프로세스가 잠금을 획득할 때마다 프로세스 및 잠금과 관련된 데이터 구조에 기록됩니다. 그리고 프로세스가 잠금을 요청할 때마다 이 데이터 구조에 기록됩니다. 프로세스가 잠금 요청에 실패하면 스레드는 프로세스 및 잠금 데이터 구조를 탐색하여 교착 상태가 발생했는지 확인할 수 있습니다.
예:
프로세스 A가 잠금 2를 요청했지만 잠금은 프로세스 B가 2번 점유했기 때문에 프로세스 A는 프로세스 B를 기다립니다. 같은 방식으로 프로세스 B는 프로세스 C를 기다리고, 프로세스 C는 프로세스 D를 기다리고, 프로세스 D는 프로세스 A를 기다립니다. 프로세스 A가 교착 상태를 감지하려면 B가 요청한 모든 잠금을 점진적으로 감지해야 합니다. 프로세스 B가 요청한 곳부터 프로세스 A가 프로세스 C를 찾은 다음 프로세스 D를 찾았습니다. 프로세스 D가 요청한 잠금을 프로세스 A가 자체적으로 점유하고 있는 것으로 확인되어 교착 상태가 감지됩니다.
프로세스 A가 교착 상태를 감지하면 프로세스 A가 보유하고 있는 잠금을 해제하고 롤백한 다음 임의의 시간 후에 다시 시도하는 것이 가능한 방법입니다. 이는 교착 상태가 이미 발생했다는 점을 제외하면 잠금 시간 제한과 유사합니다.
교착 상태 완화: 이는 교착 상태 감지와 함께 사용되는 조치입니다.
프로세스가 교착 상태에 있는 것으로 확인되면 즉시 교착 상태에서 해제되어야 합니다.
한 가지 방법은 자원을 박탈하는 것입니다. 교착 상태를 완화하기 위해 다른 프로세스에서 교착 상태 프로세스로 충분한 양의 리소스를 박탈합니다.
또 다른 방법은 프로세스를 취소하는 것입니다 . 프로세스를 취소하는 가장 간단한 방법은 교착 상태에 있는 모든 프로세스를 종료하는 것입니다. 약간 더 가벼운 방법은 사용 가능한 리소스가 충분한 프로세스를 순서대로 하나씩 취소하는 것입니다.
추천 튜토리얼: PHP 비디오 튜토리얼
위 내용은 PHP 개발에서 파일 교착 상태를 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 산 및 기본 데이터베이스 모델을 비교하여 특성과 적절한 사용 사례를 자세히 설명합니다. 산은 금융 및 전자 상거래 애플리케이션에 적합한 데이터 무결성 및 일관성을 우선시하는 반면 Base는 가용성 및

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

기사는 내장 함수 사용, 화이트리스트 접근 방식 및 서버 측 유효성 검사와 같은 기술에 중점을 둔 보안을 향상시키기 위해 PHP 입력 유효성 검증에 대한 모범 사례를 논의합니다.

이 기사는 토큰 버킷 및 누출 된 버킷과 같은 알고리즘을 포함하여 PHP에서 API 요율 제한을 구현하고 Symfony/Rate-Limiter와 같은 라이브러리 사용 전략에 대해 설명합니다. 또한 모니터링, 동적 조정 요율 제한 및 손도 다룹니다.

이 기사에서는 PHP에서 암호를 보호하기 위해 PHP에서 Password_hash 및 Password_Verify 사용의 이점에 대해 설명합니다. 주요 주장은 이러한 기능이 자동 소금 생성, 강한 해싱 알고리즘 및 Secur를 통해 암호 보호를 향상 시킨다는 것입니다.

이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

이 기사는 PHP의 XSS 공격을 방지하기위한 전략, 입력 소독, 출력 인코딩 및 보안 향상 라이브러리 및 프레임 워크 사용에 중점을 둔 전략에 대해 설명합니다.

이 기사는 각각의 사용시기에 중점을 둔 PHP의 인터페이스 및 추상 클래스 사용에 대해 설명합니다. 인터페이스는 관련없는 클래스 및 다중 상속에 적합한 구현없이 계약을 정의합니다. 초록 클래스는 일반적인 기능을 제공합니다


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

드림위버 CS6
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구
