하던 일을 멈췄다 다시
바꿀 때마다 어디까지 했는지 적어두고 다시 불러와요.
멈출 땐 메모를 남겨요
책상에서 일을 하다가 갑자기 다른 일을 해야 한다고 생각해 봐요.
그냥 일어나 버리면, 돌아왔을 때 어디까지 했는지 기억이 안 나요. 그래서 우리는 "여기까지 했음"이라고 메모를 한 장 적어두고 자리를 떠요.
다시 돌아오면 그 메모를 보고 끊긴 데서 바로 이어서 해요. CPU도 똑같이 해요. 하던 작업을 멈출 때, 지금 상태를 메모처럼 통째로 저장해두고, 돌아올 때 그걸 그대로 불러와요.
떠나기 전에 상태를 적어두고, 돌아와서 그대로 이어간다.
작업을 멈출 땐 상태를 저장하고, 돌아올 땐 그 상태를 복원해요.
바뀌는 순간을 펼쳐 봐요
작업을 바꾸는 그 짧은 순간을 느리게 펼쳐 볼게요.
먼저 작업 A가 돌아가고 있어요. 바꿀 시간이 되면, A의 상태를 저장해요. 그다음 작업 B의 저장해둔 상태를 불러와요. 그제서야 B가 돌아가기 시작해요.
여기서 중요한 건, 저장하고 불러오는 가운데 시간엔 A도 B도 일을 못 한다는 거예요. 그 사이는 순수하게 "자리를 바꾸는" 시간이에요.
저장과 복원 사이에는 어느 작업도 진행되지 않는다.
전환은 저장과 복원 두 단계로 이뤄지고, 그 사이엔 아무 일도 진행되지 않아요.
자주 바꿀수록 손해예요
전환에는 늘 약간의 비용이 들어요. 메모를 적고 다시 읽는 그 시간이요.
아래 슬라이더로 같은 1초 동안 작업을 몇 번 바꾸는지 조절해 봐요. 바꾸는 횟수가 늘면, 그만큼 "자리 바꾸는 시간"이 늘어나고, 진짜 일하는 시간은 줄어들어요.
너무 적게 바꾸면 한 작업이 자리를 너무 오래 차지하고, 너무 자주 바꾸면 바꾸느라 일을 못 해요. 그래서 적당한 균형이 필요해요.
슬라이더를 움직여 전환 비용이 일하는 시간을 어떻게 깎는지 봐요.
전환은 공짜가 아니라서, 너무 자주 바꾸면 일할 시간이 깎여요.
같은 시간, 다른 결과
똑같은 시간을 두고 두 가지 방식을 나란히 봐요.
왼쪽은 가끔만 바꿔요. 자리 바꾸는 데 쓰는 칸이 적어서, 일하는 칸이 많아요. 오른쪽은 아주 자주 바꿔요. 칸마다 바꾸는 비용이 끼어들어서, 정작 일한 칸은 적어요.
둘 다 시간은 똑같이 흘렀는데, 끝나고 보면 처리한 양이 달라요. 차이를 만든 건 일의 양이 아니라, 바꾸는 데 버린 시간이에요.
두 줄 다 같은 길이지만, 잦은 전환 쪽은 일한 칸이 적다.
전환이 잦으면 같은 시간을 써도 실제로 처리하는 양이 줄어요.
한 장으로 정리해요
셋만 기억하면 돼요.
첫째, 메모가 곧 상태예요. 작업이 멈출 때 지금까지의 진행을 통째로 저장하는 것, 그게 메모를 남기는 일이에요.
둘째, 바꾼다는 건 저장하고 다시 불러오는 두 동작이에요. 그 사이엔 아무 작업도 진행되지 않아요. 셋째, 그래서 너무 자주 바꾸면 손해예요. 바꾸는 시간이 쌓이면 정작 일할 시간이 줄어드니까요.
메모는 상태, 바꿈은 저장과 복원, 너무 잦으면 손해.