프로그램에는 deadlock이라는 상태가 있다
dead가 붙어있는 말 그대로 좆댄상황임
이걸 간단히 설명하자면
프로세스 a,b가 둘다 자기일을 처리하려면 자원1,2가 필요한데
프로세스 a는 자원1을 차지한상태에서 자원2를 요구하고
프로세스 b는 자원2를 차지한상태에서 자원1을 요구하는 상황임
마치 군붕이 심보와 같아서 한명이 양보하면 되는데 누구도 양보안해서 아무도 자기일을 못하는거지
해결방법은 프로세스를 끄는방법밖에 없음
니가 돌리는 프로그램이 멈춘 상태로 동작을 안한다? 그럼 데드락걸린거임
그냥 니가 컴퓨터를 하면서 뜨는 응답없음의 원인 99%를 설명해주는것
근데 프로세스를 끄는건 사고 터치고 수습하는거고. 디버깅할때 어떻게 하냐 한놈이 강제적으로 양보하게 만드냐?
데드락이 발생하는 조건 4가지가 있는데 그걸 안나오게 하면됨 차례대로 1.상호배제, 2.점유상태로 대기, 3. 선점불가, 4. 순환대기임
예를들어 프로세스가 자원을 일정 시간 이상 가지고 있으면 강제로 자원을 내뱉게 하던지, 중요성이 높은 프로세스 그룹을 나눠서 중요성이 높은 프로세스는 낮은 프로세스의 자원을 뺏을수 있게 하던지
그렇구만.
저 4가지중 한가지라도 만족하지 않으면 데드락이 발생안함
자강두프
운영체제 배울때 외우느라 개젖같았는데 이걸 여기서 보다니