서로 양보 안 하면, 교착
지난 강에서, 같은 걸 한 명씩 차례로 잡고 쓰면 안전했죠. 자원을 잡는 동안엔 나만 손대고 다른 사람은 기다리니까요. 그 안전한 방법에 사실 어두운 뒷면이 하나 숨어 있어요. 둘이 각자 하나씩 잡은 채로, 서로 상대가 쥔 걸 기다리기 시작하면 어떻게 될까요. 둘 다 가진 걸 안 놓고, 둘 다 상대 걸 기다려요. 아무도 한 걸음도 못 나가요. 이렇게 모두가 멈춰 버리는 상태를 봅시다.
잡고, 그리고 기다린다
지난 강에서 우리는 좋은 습관을 하나 배웠어요. 무언가를 고치려면 먼저 그것을 잡고, 다 쓸 때까지 다른 사람은 기다리게 하는 거였죠. 한 칸짜리 화장실에 줄 서듯이요. 그렇게 하면 둘이 겹쳐서 망치는 사고가 사라졌어요.
이제 일이 두 개로 늘었다고 해봐요. 자원이 둘이에요. 도구 1번과 도구 2번이라고 부를게요. 어떤 일을 끝내려면 두 도구가 다 필요해요. A는 1번을 먼저 잡고 2번을 기다려요. B는 2번을 먼저 잡고 1번을 기다려요. 각자 규칙대로 하나를 잡았을 뿐인데, 둘 다 나머지 하나를 손에 넣지 못해요.
잡은 건 안 놓고, 없는 건 기다리고. 이 잡고 기다림이 모든 일의 시작이에요.
A와 B가 각자 하나씩 잡게 해보세요. A는 1번을 잡고 2번을 기다리고(빨강), B는 2번을 잡고 1번을 기다려요. 둘 다 잡은 건 안 놓고 없는 걸 기다려, 더 못 나아가요.
이상하지 않나요. 둘 다 나쁜 짓을 한 게 아니에요. 그저 차례로 하나를 잡았을 뿐이에요. 지난 강에서 안전하다고 배운 바로 그 방법대로요. 그런데도 둘 다 멈춰 버렸어요.
문제는 잡는 것 자체가 아니라, 잡은 채로 서로를 기다리는 모양에 있어요. 이 모양을 더 또렷이 보려면 그림 하나를 떠올리는 게 좋아요. 다음에서 익숙한 장면으로 바꿔 볼게요.
좁은 다리에서 마주 본 둘
한 사람만 겨우 지나갈 수 있는 좁은 다리가 있어요. 한쪽 끝에서 한 사람이, 반대쪽 끝에서 또 한 사람이 동시에 다리에 올라요. 둘은 가운데로 걸어가다 딱 마주쳐요.
앞으로 가려면 상대가 비켜 줘야 해요. 그런데 둘 다 자기가 선 칸을 양보하지 않아요. 내가 먼저 왔으니까, 내가 더 급하니까. 누구도 뒤로 물러서지 않으니, 둘 다 가운데서 영원히 멈춰 있어요.
여기서 다리의 한 칸 한 칸이 아까의 도구 1번, 2번이에요. 사람은 A와 B고요. 각자 자기 자리를 잡은 채로 상대 자리를 기다리는 모양, 앞에서 본 그 모양 그대로예요.
두 사람을 가운데로 한 칸씩 전진시켜 보세요. 다리 한가운데서 마주치면, 둘 다 자리를 양보하지 않아 더 못 가고 멈춰요(빨강).
다리에서는 둘이 마주 봤죠. 그래서 멈췄어요. 그런데 막힌 게 꼭 둘일 필요는 없어요. 셋, 넷, 더 많은 사람이 한 줄이 아니라 둥글게 늘어서서 서로를 기다리면, 똑같은 멈춤이 더 크게 일어나요.
다음에서 사람들을 둥글게 앉혀 볼게요. 고리가 닫히는 순간을 직접 만들어 봅시다.
고리가 닫히면 모두 멈춘다
식탁에 여러 사람이 둥글게 앉아 있어요. 사람과 사람 사이마다 젓가락이 한 짝씩 놓여 있어요. 먹으려면 양쪽 젓가락이 다 필요한데, 모두가 똑같이 왼쪽 것을 먼저 집고, 오른쪽 것을 기다리기로 했어요.
한두 명만 그러면 괜찮아요. 누군가는 양쪽을 다 잡아 먹고, 끝나면 내려놓으니까요. 그런데 모두가 동시에 왼쪽을 집어 버리면, 모두의 오른쪽 젓가락은 옆 사람 손에 있어요. 모두가 옆 사람을 기다려요. 기다림이 한 바퀴를 빙 돌아 자기 자신에게 돌아와요.
이렇게 기다림의 화살표가 동그란 고리를 이루면, 그 고리 위의 누구도 영원히 못 움직여요. 좁은 다리의 두 사람이, 식탁을 빙 둘러 여러 명으로 늘어난 셈이에요.
둘러앉은 사람들이 차례로 왼쪽 젓가락을 잡게 해보세요. 마지막 한 명까지 잡아 고리가 닫히는 순간, 모두의 오른쪽이 옆 사람 손에 있어 전부 멈춰요(빨강).
고리가 닫히는 그 마지막 한 걸음에서, 멀쩡히 돌아가던 식탁이 통째로 얼어붙었죠. 무서운 건, 누구 한 명이 특별히 잘못한 게 아니라는 점이에요. 모두가 똑같이 합리적으로 왼쪽부터 집었을 뿐인데 전체가 멈췄어요.
그럼 이 얼어붙은 식탁을 어떻게 녹일까요. 다행히 방법은 의외로 단순해요. 다음에서 고리를 푸는 두 가지 길을 봅시다.
푸는 법: 양보하거나, 순서를 정하거나
첫 번째 길은 양보예요. 고리 위의 누구 한 명이 잡고 있던 걸 잠깐 내려놓는 거예요. 그러면 그 사람을 기다리던 옆 사람이 두 짝을 다 모아 먹고, 끝나면 내려놓아요. 한 곳이 풀리니 다음 사람이 풀리고, 막힘이 도미노처럼 차례로 풀려요. 고리에 끊긴 데가 한 군데만 생겨도, 더는 동그란 고리가 아니니까요.
두 번째 길은 더 영리해요. 아예 고리가 닫히지 못하게 미리 막는 거예요. 모두에게 같은 규칙을 줘요. 누구든 항상 번호가 작은 것부터 잡아라. 그러면 1번을 못 잡은 사람은 애초에 2번도 잡지 않아요. 모두가 같은 순서로 잡으니, 두 사람이 서로 엇갈려 마주 보는 일이 생기지 않아요. 고리가 만들어질 수가 없는 거죠.
먼저 고리를 닫아 모두 멈추게 한 뒤, 한 명에게 양보를 시켜 보세요. 그가 잡은 걸 내려놓으면 고리가 끊기고, 옆 사람부터 차례로 풀려 모두 다시 움직여요(초록).
양보는 이미 멈춘 고리를 푸는 길이고, 순서 정하기는 멈춤이 아예 생기지 않게 하는 길이에요. 하나는 사고가 난 뒤의 응급 처치, 하나는 사고를 미리 막는 예방인 셈이죠.
둘 다 핵심은 같아요. 동그란 기다림의 고리가 닫히지 못하게 하는 거예요. 어디 한 군데라도 끊기면, 멈춤은 흐름으로 바뀌어요.
한 장으로 정리해요
넷만 기억하면 돼요.
첫째, 각자 하나씩 잡은 채로 서로 상대 것을 기다리면, 잡고 기다림이 시작돼요. 둘째, 좁은 다리의 두 사람처럼 마주 보고 양보 안 하면 둘 다 멈춰요.
셋째, 그 멈춤이 둥글게 한 바퀴 돌아 고리가 닫히면, 고리 위의 모두가 멈춰요. 이게 교착이에요. 넷째, 누군가 잡은 걸 내려놓고 양보하거나, 모두가 같은 순서로 잡게 정해 두면, 고리가 끊기거나 아예 안 생겨 다시 흐를 수 있어요.
단계를 차례로 눌러 한 바퀴를 따라가 보세요. 잡고 기다림에서 마주 봄으로, 닫힌 고리에서 양보·순서로 풀림까지. 교착의 한살이가 한 장으로 정리돼요.
지난 강에서 한 명씩 차례로 하면 안전하다고 배웠는데, 오늘은 그 차례로 잡기가 도리어 모두를 멈추게 할 수도 있다는 걸 봤어요. 같은 도구도 쓰기 나름이라는 거죠. 안전한 줄서기와 영영 멈추는 교착은 종이 한 장 차이예요. 잡는 순서를 다 같게 맞추느냐, 누군가 양보할 줄 아느냐가 그 한 장을 가릅니다.