실행 중인 프로그램을 뜻하며, 실행파일(program)이 memory에 적재되어 CPU에 의해 실행(연산)되는 것을 말한다.
예를 들어,
- 코드를 작성한 후 저장을 하면 하드디스크에 저장하는 것을 프로그램이라 부른다.
- CPU는 하드디스크에 저장된 프로그램을 읽을 수 없다. RAM memory에 올라와있는 프로그램만 읽을 수 있다.
- 프로그램을 실행시키기 위해 RAM memory에 적재를 하고 CPU를 할당받는다.
여기까지의 과정을 가지면 프로세스가 된다.
RAM Memory 적재
memory는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치이다. program이 CPU에서 실행되려면 해당 내용이 memory에 적재된 상태여야 한다.
메모리 역역에는 크게 stack, heep, data, code 영역으로 구분되어있으며, 각 process마다 독립적으로 할당을 받는다.
메모리 영역 | 설명 |
---|---|
code | 실행할 프로그램의 코드가 저장되는 역역이다. |
data | 프로그램의 전역 변수와 static변수가 저장되는 영역이다. |
heap | 런타임 중에 메모리 할당이 되는 동적 메모리 할당 영역이다. |
stack | 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 임시 영역이다. |
CPU의 연산
프로그램의 코드를 CPU가 실제로 연산을 해야만 프로그램이 실행된다.
CPU 내부에 PC register가 code 영역의 다음 명령어의 주소 값을 순차적으로 가리키게 되고 해당 명령어를 CPU가 연산하게 되면서 process가 실행된다.