seegongsik
운영체제

어떻게 같은 걸 동시에 고치면

둘이 같은 순간에 같은 것을 고치면 결과가 틀어질 수 있다. 답은 한 명씩 차례로 고치는 것이에요.

01

둘이 같은 칸을 고치면

벽에 숫자가 적힌 노트가 한 장 붙어 있고, 지금은 10이다. 두 사람이 저마다 여기에 1을 더하려고 한다.
한 사람이 10을 보고 머릿속으로 11을 만든 뒤 노트에 11을 적는다. 다른 사람도 똑같이 한다. 그런데 둘이 거의 같은 순간에 시작하면 둘 다 처음의 10을 보고 둘 다 11을 적는다.
1을 두 번 더했으니 12가 되어야 하는데 결과는 11이다. 한 번이 사라졌어요. 같은 것을 같은 순간에 고치다 생긴 사고다.
조회수나 통장 잔액처럼 여럿이 함께 고치는 숫자에서 이런 사고가 나면 한 번의 변화가 소리 없이 사라진다.

10AB읽기 10읽기 10111111쓰기 11쓰기 1112가 돼야 하는데 11한 번이 사라짐

둘이 동시에 같은 값을 고치면 더한 것 가운데 하나가 사라진다.

같은 것을 같은 순간에 고치면 결과가 틀어질 수 있어요.

02

같은 동작, 다른 결과

똑같은 두 사람이 똑같이 1씩 더하는데, 이번에는 타이밍만 바꿔 보자.
차례로 하면 한 사람이 10을 보고 11을 쓰고 끝낸 다음, 다른 사람이 그 11을 보고 12를 쓴다. 결과는 12로 맞다.
겹쳐서 하면 한 사람이 10을 읽고 아직 쓰기 전에 다른 사람도 10을 읽어 버린다. 둘 다 11을 쓰고 결과는 11, 틀렸다.
동작은 글자 그대로 똑같았다. 언제 끼어들었느냐는 타이밍 하나가 맞고 틀림을 갈랐어요.
그래서 이런 문제는 열 번에 아홉 번은 멀쩡하다가 어쩌다 한 번 틀리기 때문에 잡아내기가 유난히 까다로워요.

차례로A 읽기10B 읽기11쓰기11쓰기1212맞음겹쳐서A 읽기10B 읽기1011틀림

같은 더하기라도 차례로 하면 맞고, 겹치면 틀린다.

결과를 가른 것은 동작이 아니라 언제 끼어들었느냐는 타이밍이에요.

03

직접 겹쳐 본다

두 일꾼이 같은 값에 저마다 1을 더한다. 둘이 얼마나 겹쳐서 시작하는지 직접 조절해 보자.
충분히 떨어뜨리면 한 명이 다 끝낸 뒤에 다른 한 명이 시작해서 결과가 맞다. 가깝게 붙이면 한 명이 쓰기 전에 다른 한 명이 읽어 버려 한 번이 사라진다.
슬라이더를 움직이며 어느 지점부터 결과가 틀어지는지 찾아보자. 똑같은 두 동작인데도 겹치는 순간 결과가 무너져요.
아주 짧게만 겹쳐도 한 번이 사라질 수 있으니, 타이밍이 겹치지 않기를 바라는 것은 진짜 해결책이 아니다.

읽기고치기쓰기A읽기고치기쓰기B
12결과 맞음
겹침20%
떨어뜨리면 12로 맞고, 겹치면 11로 틀어져요. 어느 지점부터 빨개지는지 직접 찾아봐요.

겹치는 정도를 바꾸면 언제부터 결과가 틀어지는지 보인다.

둘을 떨어뜨리면 결과가 맞고, 겹칠수록 틀어질 위험이 커져요.

04

한 명씩 차례로 하면

그럼 어떻게 막을까? 답은 단순하다. 같은 것을 고치는 동안에는 한 명만 손대게 하는 것이다.
한 사람이 읽고 고치고 쓰는 동안 다른 사람은 기다린다. 그 한 묶음이 끝나야 다음 사람이 시작한다. 한 칸짜리 화장실에 줄을 서듯, 안에 사람이 있으면 문이 잠기고 나와야 다음 사람이 들어간다.
이렇게 하면 겹칠 일이 없으니 결과가 늘 맞아요. 대신 기다리는 시간이 생긴다. 안전을 위해 잠깐의 줄 서기를 받아들이는 셈이다.
핵심은 읽고 고치고 쓰는 세 동작을 하나로 묶어 지키는 것이다. 쓰는 순간만 막고 읽기를 열어 두면 빈틈이 다시 생겨요.

12A사용 중B대기한 명씩, 겹침 없음대신 기다림

같은 것을 고치는 동안에는 한 명만, 나머지는 줄을 서서 기다린다.

같은 것을 한 명씩 차례로 고치게 하면 겹침이 사라져 결과가 안전해져요.

05

한 장으로 정리

기억할 것은 셋이다.
첫째, 같은 것을 같은 순간에 고치면 사고가 난다. 둘이 동시에 더하면 한 번이 사라지듯 결과가 틀어질 수 있다.
둘째, 동작이 아니라 타이밍이 문제다. 똑같은 일도 차례로 하면 맞고 겹치면 틀린다. 셋째, 한 명씩 차례로 하게 하면 안전하다. 같은 것을 고치는 동안 한 명만 손대고 나머지는 줄을 서서 기다리면 결과가 늘 맞다.
무언가를 여럿이 함께 쓰면서 일이 동시에 벌어질 때 순서는 저절로 지켜지지 않아요. 그 순서는 우리가 정해 줘야 한다.

하나
같은 걸 같은 순간에 고치면 사고. 둘이 동시에 더하면 한 번이 사라진다.
둘
동작이 아니라 타이밍이 문제. 차례로면 맞고 겹치면 틀린다.
셋
한 명씩 차례로면 안전. 한 명만 손대고 나머지는 줄 서면 결과가 늘 맞다.

동시에 + 함께 쓰기는 사고, 문제는 타이밍, 한 명씩이 안전.

한 줄 정리같은 것을 동시에 고치면 결과가 틀어질 수 있고, 한 명씩 차례로 하게 하면 막을 수 있어요.
← 운영체제
이 페이지가 도움 됐다면 후원하기