seegongsik
운영체제

어떻게 한 작업 안의 여러 갈래

한 가지 일을 여러 갈래로 나눠 같은 작업실에서 동시에 진행할 수 있다. 그 갈래가 스레드예요.

01

한 사람이 여러 손으로

요리사 한 명이 주방에서 일한다. 국을 끓이면서 야채를 썰고, 틈틈이 불도 살핀다.
일은 요리 하나인데 그 안에서 여러 갈래를 함께 챙기는 것이다. 주방도 하나, 재료함도 하나라 같이 쓴다.
컴퓨터도 한 작업 안에서 이렇게 여러 갈래로 나눠 일할 수 있고, 그 갈래 하나하나를 스레드라고 부른다.
갈래를 나눠 두면 국이 끓기를 기다리는 동안에도 손을 놀리지 않고 다른 갈래를 챙길 수 있어요.

작업(요리)요리사국 끓이기야채 썰기불 보기재료함 (같이 씀)

일은 하나, 그 안의 갈래는 여럿. 작업실과 재료는 같이 쓴다.

스레드는 한 작업 안에서 동시에 진행되는 여러 갈래예요.

02

남남인 두 집, 한 집의 여러 방

앞에서 프로세스는 저마다 자기 공간을 따로 가진다고 했다. 두 프로세스는 담을 사이에 둔 옆집과 같아서 서로 함부로 들어가지 못한다.
그런데 한 프로세스 안의 스레드들은 한 집에 사는 식구와 같다. 방은 나뉘어도 거실과 냉장고는 같이 쓴다.
그래서 스레드끼리는 정보를 주고받기가 쉽다. 같은 재료함을 보고 있기 때문이다. 프로세스끼리는 그 일이 더 번거로워요.
담이 번거롭게만 보여도, 옆집에 물이 새도 우리 집은 젖지 않게 지켜 주는 고마운 벽이기도 하다.

프로세스: 담스레드: 공유남남공유 공간한 식구거실·냉장고 공유

프로세스는 담을 사이에 둔 옆집, 스레드는 한 집의 식구다.

프로세스는 공간을 따로 쓰고, 한 프로세스 안의 스레드들은 공간을 같이 써요.

03

갈래를 늘려 본다

한 작업을 몇 갈래로 나눌지 직접 바꿔 보자.
갈래가 하나면 일을 차례로 하나씩 한다. 갈래를 늘리면 모두 같은 재료함을 보면서 여러 부분이 동시에 진행된다.
갈래가 많아지면 일이 더 빨리 끝날 수 있다. 다만 모두가 같은 주방을 쓰니 너무 많으면 서로 길을 막기도 해요.
갈래를 두 배로 늘려도 일이 딱 두 배로 빨라지지 않는 것은 좁은 주방에서 서로 길을 비켜 주는 시간이 늘어나기 때문이다.

재료함 (공유)
갈래 1
갈래 2
갈래 수2
갈래를 늘리면 여러 부분이 동시에 가요. 다만 재료함은 하나라 같이 나눠 써요.

갈래 수를 바꾸면 한 작업이 어떻게 나뉘어 진행되는지 보인다.

갈래를 늘리면 동시에 더 많이 진행되지만, 같은 공간을 나눠 쓰는 것은 그대로예요.

04

같이 쓰면 빠르지만

스레드들이 재료함을 같이 쓰는 것은 큰 장점이다. 따로 옮기고 베낄 필요 없이 같은 것을 바로 보니 가볍고 빠르다.
그런데 양면이 있다. 두 갈래가 같은 순간에 같은 재료를 건드리면 부딪힐 수 있다. 한쪽이 소금을 넣는 사이에 다른 쪽도 넣어 버리는 식이다.
그래서 같이 쓰기는 편하지만 언제 누가 건드리는지 조심해야 해요. 이 이야기는 조금 뒤 경쟁 상태 레슨에서 이어진다.
그래도 같이 쓰는 쪽을 고르는 까닭은, 갈래마다 재료함을 따로 복사해 두면 그쪽이 더 무겁고 느리기 때문이다.

장점재료함같이 보니 가볍고 빠름양면조심동시에 건드리면 부딪힘

공유는 가볍고 빠르지만, 같은 것을 동시에 건드리면 부딪힌다.

공간을 같이 쓰면 빠르고 가볍지만, 같은 것을 동시에 건드리면 문제가 생길 수 있어요.

05

한 장으로 정리

기억할 것은 셋이다.
첫째, 스레드는 한 작업 안의 여러 갈래다. 일은 하나인데 그 안에서 여러 부분이 동시에 나아간다.
둘째, 같은 공간을 나눠 쓴다. 프로세스 사이에는 담이 있지만, 한 프로세스 안의 스레드들은 같은 재료함을 본다. 셋째, 그래서 가볍고 빠르지만 조심도 필요하다. 같은 것을 동시에 건드리면 부딪힐 수 있기 때문이다.
이 셋을 알면 어떤 앱이 한 갈래로는 화면을 움직이고 다른 갈래로는 뒤에서 조용히 일해서, 멈추지 않고 반응하는 까닭이 보여요.

하나
스레드는 한 작업 안의 여러 갈래. 일은 하나, 그 안 여러 부분이 동시에.
둘
같은 공간을 나눠 쓴다. 프로세스는 담, 스레드는 같은 재료함.
셋
가볍고 빠르지만 조심. 같은 걸 동시에 건드리면 부딪힐 수 있다.

한 작업 안의 여러 갈래, 공간 공유, 가볍지만 조심.

한 줄 정리스레드는 한 작업을 여러 갈래로 나눠 같은 공간에서 함께 진행하는 거예요.
← 운영체제
이 페이지가 도움 됐다면 후원하기