순차 실행과 동시 실행

프로그램은 꼭 한 번에 한 줄씩만 실행해야 할까?

화면을 누르면 다음 장으로 넘어갑니다

동시성

실행이 시간에서 겹칩니다

지금까지 본 프로그램은 한 번에 한 가지만 실행했습니다. 여러 작업의 실행이 같은 시간대에 겹쳐 나아가는 것을 동시성(concurrency)이라고 합니다.

굵은 선은 실행 중인 구간이고, 동그라미는 지금 실행하는 자리입니다.

제어 흐름

실행이 지나가는 길이 여럿이 됩니다

프로그램이 실행되며 차례로 거쳐 가는 지점들을 이으면 줄 하나가 됩니다. 이것을 제어 흐름(thread of control)이라고 합니다. 동시성이 있는 프로그램에는 제어 흐름이 여럿 있습니다.

문장 1~4는 예시입니다.

네 가지 수준

어느 크기에서 겹치느냐

동시성은 네 수준에서 나타납니다. 이 가운데 언어를 설계할 때 따져야 하는 것은 켜진 두 줄, 문장 수준과 단위 수준입니다. 이 강의는 주로 단위 수준을 다룹니다.

서브프로그램은 함수처럼 이름을 붙여 부르는 코드 묶음입니다. 기계어는 컴퓨터가 바로 실행하는 가장 낮은 수준의 명령입니다.

물리적 동시성

프로세서가 여럿이면 정말로 동시에

프로그램을 실제로 실행하는 장치를 프로세서(processor)라고 합니다. 프로세서가 여럿이어서 같은 순간에 여러 작업이 실제로 실행되는 것이 물리적 동시성(physical concurrency)입니다.

세로 점선은 지금 이 순간을 나타냅니다.

논리적 동시성

하나뿐이면 빠르게 오갑니다

프로세서가 하나뿐이어도 시간을 잘게 나눠 여러 작업을 번갈아 실행할 수 있습니다. 한 순간에는 하나만 실행되지만 동시에 도는 것처럼 보입니다. 이것이 논리적 동시성(logical concurrency)입니다.

점선은 차례를 기다리는 구간입니다. 프로그램을 설계할 때는 두 경우 모두 제어 흐름이 여럿인 것으로 다룹니다.

쓰는 까닭

왜 동시성을 쓸까요

동시성을 쓰는 까닭은 넷입니다. 하드웨어가 받쳐 주고, 더 빠를 수 있고, 현실의 일과 닮았고, 프로그램이 여러 기기에 흩어져 실행되기 때문입니다.

멀티프로세서(multiprocessor)는 프로세서를 여러 개 가진 컴퓨터입니다.

다음 편

동시에 실행되는 단위에는 이름이 있습니다. 태스크입니다

2편태스크는 함수와 무엇이 다를까? 12강 목록