seegongsik
운영체제

어떻게 프로그램이 실행되면 무슨 일이 일어날까요?

앱 아이콘을 두 번 누르면 프로그램이 '실행'된다. 그런데 실행한다는 것은 정확히 무슨 일일까? 가만히 있던 파일이 살아 움직이는 무언가가 되는 순간이에요.

01

프로그램과 실행은 다르다

먼저 두 가지를 구분하자. 하나는 프로그램, 곧 저장장치에 가만히 놓인 파일이다.
다른 하나는 그 프로그램이 실행된 상태로, 지금 살아 움직이며 일하고 있는 것이다.
요리법이 적힌 종이와 실제로 요리하는 중의 차이예요.

프로그램 (코드)

저장장치에 가만히 있는 파일. 요리법이 적힌 종이 같은 거예요.

아직 안 움직임

프로세스 (실행 중)

그 프로그램이 실제로 돌아가는 상태. 종이를 보고 요리하는 중이죠.

지금 살아서 일하는 중

같은 것 같지만 다른 두 가지를 나란히 놓았다.

실행 중인 프로그램을 프로세스라고 부른다.
같은 요리법이라도 요리를 시작해야 김이 나고 냄새가 나듯, 프로그램도 실행되어야 진짜 일을 시작해요.

02

실행하면 프로세스가 태어난다

앱을 두 번 누르는 순간 운영체제가 움직인다. 저장장치에 있던 코드를 메모리로 불러오고 '자, 이제 시작' 하고 깨운다.
이렇게 깨어난 상태가 프로세스예요. 아래에서 직접 실행해 보자.

메모장.앱
저장장치에 잠자는 중
실행→
메모장
아직 안 깨어남

실행하기를 누르면 잠자던 파일에서 프로세스가 깨어난다.

파일은 그대로 남아 있다. 복사본이 메모리로 올라와 프로세스가 되는 것이다.
그래서 같은 앱을 껐다 켜도 원본 파일은 변하지 않아요.

03

프로세스는 자기 자리를 갖는다

프로세스가 태어나면 운영체제가 자리를 내준다. '너는 이 메모리 칸들을 써.'
앞서 컴퓨터 구조에서 본, 주소가 붙은 바로 그 메모리다. 프로세스마다 자기만의 작업 공간이 따로 생기는 거예요.

메모장 프로세스
자기 메모리 공간
음악 프로세스
자기 메모리 공간
각자 자기 공간이 있어서, 한 프로그램이 멈춰도 다른 프로그램은 멀쩡해요

프로세스마다 자기 메모리 공간이 따로 있다.

자리가 따로따로이니 서로 간섭하지 않는다. 한 앱이 갑자기 멈춰도 다른 앱은 멀쩡하다.
내 것과 네 것이 섞이지 않게 운영체제가 나눠 둔 거예요.

04

같은 앱을 여러 개 띄울 수 있다

재미있는 점이 있다. 프로그램은 하나인데 프로세스는 여러 개일 수 있다.
브라우저 창을 세 개 띄우면 같은 프로그램에서 프로세스가 세 개 생긴 거예요.
창을 더 열면서 확인해 보자.

창 1
#201
지금 프로세스 1개

창을 열 때마다 프로세스가 하나씩 늘어난다.

요리법 한 장으로 여러 냄비에 동시에 요리하듯, 같은 프로그램으로 여러 프로세스를 돌릴 수 있다.
각자 자기 공간에서 따로따로 일하면서 말이에요.

05

운영체제는 모두를 명단으로 관리한다

운영체제는 지금 돌아가는 프로세스를 모두 명단으로 들고 있다. 이름이 무엇인지, 얼마나 일하는지, 메모리를 얼마나 쓰는지를 적어 둔다.
컴퓨터가 느려질 때 '작업 관리자'에서 보는 것이 바로 이 명단이에요.

#101브라우저
실행 중
#102음악
실행 중
#103메시지
실행 중
#104메모장
실행 중

운영체제는 이 모두에게 번호(PID)를 붙여 따로따로 관리한다.

프로세스 하나하나가 자기 공간에서 살아 움직이고, 운영체제가 이 모두를 명단으로 챙긴다.
그런데 부품은 하나뿐인데 이 많은 프로세스가 어떻게 동시에 돌아갈까? 다음 레슨에서 그 비밀을 풀어요.

한 줄 정리프로그램은 가만히 놓인 파일이고, 프로세스는 그것이 실행되어 살아 움직이는 상태다. 프로세스마다 자기 메모리 공간을 가지므로 하나가 멈춰도 다른 것들은 멀쩡해요.
← 운영체제
이 페이지가 도움 됐다면 후원하기