1.1 프로그램과 프로세스
우리가 흔히 말하는 프로그램이란 컴퓨터에서 실행되는 명령어 모음이 들어 있는 데이터 덩어리를 의미합니다. 크게 코드(code)와 데이터(data)로 구성되어 있습니다.
프로그램 자체로는 아무런 의미가 없습니다. 우리가 그것을 더블클릭하여 실행시키기 전까지는 말입니다. 프로그램을 실행하면 프로그램 안에 들어 있는 명령어가 한 줄씩 실행되면서 프로그램은 뭔가 활동을 하는 상태가 됩니다. 이를 프로세스(process)라고 합니다.
프로그램에 있는 코드와 데이터는 이 프로세스 메모리로 불러들입니다. 즉, 로딩됩니다. 프로세스 메모리에는 프로그램 코드와 데이터는 물론 힙(heap)과 스택(stack)도 공존합니다. 스택에는 현재 실행 중인 함수들의 호출 기록과 사용 중인 로컬 변수들이 들어 있습니다(스택에 관한 자세한 설명은 1.2절에서 다룹니다).