Answer
1. Mutex: 하나의 프로세스만이 하나의 자원을 점유할 수 있다
2. No Preemption: 프로세스가 이미 점유된 자원을 다른 프로세스로부터 뺐을 수 없다
3. Hold and Wait: 일단 자원 하나를 확보하면 프로세스가 실행될 때까지 확보한 자원을 반환하지 않는다
4. Circular Wait: 순환 대기(cycle)
2Depth
Question
주로 데드락 방지 기법은 DB에서 많이 쓰이는데
pessimistic concurrency control에서 deadlock을 탐지하려할 때 어떻게 탐지하나요
Answer
wait for graph 혹은 resource-allocation graph
트랜젝션을 스레드(프로세스)로 취급하고, record를 자원이라고 할 때
해당 자원에 대해 걸려 있는 스레드들끼리 wait for graph를 만든다
wait for graph를 통해서 4번 조건인 Circular Wait을 확인하고 만약 원형 대기가 발생했다면
트랜젝션을 abort 시키고 진행 됐던 데이터들을 roll back 시킨다
1Depth
데드락이 발생하려면 만족해야하는 요건 4가지
Answer
1. Mutex: 하나의 프로세스만이 하나의 자원을 점유할 수 있다2. No Preemption: 프로세스가 이미 점유된 자원을 다른 프로세스로부터 뺐을 수 없다
3. Hold and Wait: 일단 자원 하나를 확보하면 프로세스가 실행될 때까지 확보한 자원을 반환하지 않는다
4. Circular Wait: 순환 대기(cycle)
2Depth
주로 데드락 방지 기법은 DB에서 많이 쓰이는데
pessimistic concurrency control에서 deadlock을 탐지하려할 때 어떻게 탐지하나요
Answer
wait for graph 혹은 resource-allocation graph트랜젝션을 스레드(프로세스)로 취급하고, record를 자원이라고 할 때 해당 자원에 대해 걸려 있는 스레드들끼리 wait for graph를 만든다 wait for graph를 통해서 4번 조건인 Circular Wait을 확인하고 만약 원형 대기가 발생했다면 트랜젝션을 abort 시키고 진행 됐던 데이터들을 roll back 시킨다
Additional Explain