본문 바로가기
이런 저런...

deadlock

by Lbird 2004. 6. 9.
운영체제론에서 말하는 deadlock이란 이런 것이다:
A는 B가 일을 마치고 자리를 비워줘야 B의 자리로 갈 수 있다.
B는 C가 일을 마치고 자리를 비워줘야 C의 자리로 갈 수 있다.
C는 A가 일을 마치고 자리를 비워줘야 A의 자리로 갈 수 있다.
이 상황에서 A, B, C는 아무것도 못하고 서로를 기다리기만 한다.
이 처럼 뱀이 서로의 꼬리를 물고 있는 것처럼 서로를 기다리기만
하고 있으면 아무것도 이루어지는 것이 없고 누군가 바깥에서 이를
해결해 주지 않으면 영원히 이 상태로 있게 된다.

나의 상태도 이와 별로 다르지 않다. 뭔가 하나를 시작하려 하면
다른 중요한 일이 눈에 띈다. 그 다른 중요한 일을 하려 하면
또 다른 일이 눈에 띈다. 이런 식으로 꼬리를 물어가다가 결국은
처음에 하려고 했던 일을 먼저 처리해야 하는 상황이 생긴다.
그리고는 다시 또 순환을 한다. 처음에 하려고 했던 일보다 급한 일,
그것 보다 더 급한 일.... 결국은 처음에 하려고 했던 일이 더 급하다.

어느 것이 더 급한가를 생각만 하다가 결국 아무것도 하지 못한다.

deadlock을 해결하기 위해서는 고리를 끊는 것이 필요하다.
A가 B를 기다리고, B가 C를 기다리고, C가 또 A를 기다리는 상황에서
A, B, 혹은 C를 없애버린다. 그러면 B는 기다리는 것이 없으니
일을 할 수 있고 B가 일을 마치면 A도 일을 할 수가 있다. 그 후에
C가 일을 할 수 있도록 해 준다. 이때 중요한 것은 무엇이 가장 덜
중요해서 없애버리고 제일 나중에 처리해도 되는지 결정하는 데에
시간을 쏟으면 안된다는 것이다.

아무거나 손에 걸리는 것을 없앤다. 혹은, 아무거나 손에 걸리는 것을
먼저 한다. 당장 목에 칼을 들이밀지 않는한 내 버려 둔다. 언젠가는
하게 될 일들이다.

한시간 전부터 논문을 읽기 시작했다. Ubiquitous Computing 환경에서의
Trust Model에 관한 논문이다. 이전에 내가 주로 봤던 것과는 많이 다른
새로운 주제다.

그래, 공부를 먼저 하자.

이런 생각도 든다. 공부는 나의 정신의 연료다. 그 동안 내가 무기력했던
것은 공부를 하지 못하고 있다는 걱정 때문이었는지 모른다. 그래.
내 이성에 연료를 채우자.

'이런 저런...' 카테고리의 다른 글

인내 1  (0) 2004.06.15
사고  (0) 2004.06.10
아르바이트  (0) 2004.06.09
PosB  (0) 2004.06.08
연구...  (0) 2004.06.07