그 프로세스에 대해서 메모리 관점에 이야기해보고자 한다.
프로세스는 뭐?
프로세스는 흔히 실행 중에 있는 프로그램으로 정의한다. Chrome 브라우저를 실행하면 Chrome 또한 하나의 프로세스가 된다. 문서를 편집하기 위해서 MS Word를 켰다면, 이또한 프로세스가 된다. 포토샵을 켜도 마찬가지이다. 게임을 켜도.
메모리 관점에서 프로세스는 뭐?
프로세스를 메모리 관점에서 살펴보면 좀더 말할 내용이 늘어난다.
먼저, 그림을 살펴보자.
<출처:https://elgaabeb.wordpress.com/>
프로그램이 실행되면 위의 그림과 같이 메모리 공간에 존재한다.
stack: 지역변수 할당과 함수 호출 시 전달되는 인자값들의 저장하기 위한 공간
heap: C의 malloc, calloc과 C++의 new를 통한 동적 할당을 위해 존재하는 공간
data: 전역변수나 static 변수의 할당을 위해 존재하는 공간
code(text): 프로그램을 실행시키면 실행파일 내에 존재하는 명령어가 메모리 상에 올라가야지 프로그램을 동작시킬 수 있을 것이다. 이 명령어들을 위해 존재하는 공간.
이렇게 프로그램을 실행시키기 위해서는 메모리에 process를 위한 공간이 필요하다. 메모리 공간을 기준으로 process를 살펴본 결과이다. 이는 나중에 thread와의 비교할 때에도 중요한 의미를 지닌다. 특정 프로그램이 실행되기 위해서는 즉, process가 되려면 메모리에 위의 그림과 같은 할당이 필수적으로 이루어져야 한다는 의미이다. 메모리가 할당된 다음 CPU에 의해서 처리될 것이기 때문이다.
댓글 없음:
댓글 쓰기