본문 바로가기

dead lock

dead lock(교착상태) with JAVA Deadlock(교착상태) 두 개 이상의 프로세스/스레드가 서로가 가진 리소스를 기다리는 상태 자동차는 프로세스/스레드를 나타내며, (1,2,3,4)는 리소스를 의미한다. 각 자동차는 직진을 하기 위해서, 2개의 리소스를 지나야 한다. 근데, 각 자동차가 동시에 직진을 하면, 오른쪽 그림과 같은 상태가 된다. 각 자동차는 1개의 리소스를 보유하고 있으나, 전진을 하기 위해서는 다른 자동차(프로세스/스레드)가 보유하고 있는 리소 스를 획득해야는데, 다른 자동차들도 또 다른 리소스를 획득하기 위하여 서로 대기 중이다. Deadlock이 발생하는 4가지 조건 1. Mutual exclusion : 리소스를 공유해서 사용할 수 없다, 즉 한 번에 1개의 프로세스/스레드만이 리소스를 가질 수가 있 다. 동시에 여.. 더보기
18. LOCK을 활용한 concurrency control 트랜잭션 1의 목적을 달성하기 위해서는 write(x=20) 작업이 필요하다. 그러나, 위 그림은 설명을 쉽게 하기 위해서 단순히 write(x=20) Operation 하나만 실행을 해주면 되는 것처럼 적어놨다. 그러나 write를 하게 될 때, 만약 index가 걸려 있다면 거기에 대한 처리도 해야 할 것이고, 이 데이터가 실제로 저장되는 파 일에 대해서도 이런 저런 처리를 해줘야 하므로, 실제로는 복잡한 실행 과정을 거쳐야 한다. 이때, 트랜잭션1의 write와 트랜잭션2의 write가 동시에 실행이 된다고 해보자. 어떠한 데이터를 write하는 과정은 복잡한 과정이므로, 같은 데이터를 트랜잭션2에서 write를 동시에 처리하게 되면, 최종 적으로 데이터가 깔끔하게 처리되지 않을 가능성이 높다. 그.. 더보기