프로그램이 실행되면 무슨 일이 일어날까요?
앱 아이콘을 두 번 누르면 프로그램이 '실행'되죠. 그런데 실행한다는 게 정확히 무슨 일일까요? 가만히 있던 파일이, 살아 움직이는 무언가가 되는 순간이에요.
프로그램과 실행은 달라요
먼저 두 가지를 구분해요.
하나는 프로그램.
저장장치에 가만히 있는
파일이에요.
다른 하나는 그게 실행된 상태.
지금 살아 움직이며
일하고 있는 거죠.
요리법 종이와
실제 요리하는 중,
그 차이예요.
프로그램 (코드)
저장장치에 가만히 있는 파일. 요리법이 적힌 종이 같은 거예요.
프로세스 (실행 중)
그 프로그램이 실제로 돌아가는 상태. 종이를 보고 요리하는 중이죠.
같은 듯 다른 둘.
실행 중인 프로그램,
이걸 프로세스라고 불러요.
같은 요리법이라도
요리를 시작해야
김이 나고 냄새가 나듯,
프로그램도 실행돼야
진짜 일을 시작해요.
실행하면 프로세스가 태어나요
앱을 두 번 누르는 순간,
운영체제가 일을 해요.
저장장치에 있던 코드를
메모리로 불러오고,
'자, 이제 시작'
하고 깨우죠.
이 깨어난 상태가
프로세스예요.
직접 실행해보세요.
실행 버튼을 눌러보세요.
파일은 그대로 남아 있어요.
복사본이 메모리로 올라와
프로세스가 되는 거죠.
그래서 같은 앱을
껐다 켜도
원본 파일은 안 변해요.
프로세스는 자기 자리를 가져요
프로세스가 태어나면,
운영체제가 자리를 줘요.
'너는 이 메모리 칸들을 써'.
지난 영역에서 배운
그 주소 있는 메모리 말이에요.
프로세스마다
자기만의 작업 공간이
따로 생기는 거죠.
프로세스마다 자기 메모리 공간.
자리가 따로따로니까
서로 간섭하지 않아요.
한 앱이 갑자기 멈춰도
다른 앱은 멀쩡하죠.
내 것과 네 것이
섞이지 않게
운영체제가 나눠둔 거예요.
같은 앱을 여러 개 띄울 수 있어요
재미있는 점이 있어요.
프로그램은 하나인데,
프로세스는 여러 개일 수 있어요.
브라우저 창을
세 개 띄우면,
같은 프로그램에서
프로세스가 세 개 생긴 거예요.
창을 더 열어보세요.
창을 열 때마다 프로세스가 하나씩.
요리법 한 장으로
여러 냄비에 동시에 요리하듯,
같은 프로그램으로
여러 프로세스를 돌릴 수 있어요.
각자 자기 공간에서
따로따로 일하면서요.
운영체제는 모두를 명단으로 관리해요
운영체제는
지금 돌아가는 프로세스를
전부 명단으로 들고 있어요.
이름이 뭔지,
얼마나 일하는지,
메모리를 얼마나 쓰는지.
컴퓨터가 느려질 때
'작업 관리자'에서 보는 게
바로 이 명단이에요.
운영체제는 이 모두에게 번호(PID)를 붙여 따로따로 관리해요.
프로세스 하나하나가
자기 공간에서 살아 움직이고,
운영체제가 이 모두를
명단으로 챙겨요.
그런데 부품은 하나뿐인데
이 많은 프로세스가
어떻게 동시에 도는 걸까요?
다음 시간에 그 비밀을 풀어요.