목표
- 프로그램과 프로세스의 차이에 대해 이해한다.
개요
동시성 제어에서 멀티 스레드 환경이 무엇인지를 이해하기 위해서는 프로그램과 프로세스의 차이에 대해 이해하는 것이 중요하다. 따라서 먼저 프로그램과 프로세스의 차이가 무엇인지 알고 가자.
프로그램이란 명령어들의 조합이다. 우리가 작성하는 소스코드 파일들의 묶음이 바로 프로그램이다. 하지만, 소스코드 파일들을 묶음 만으로는 실행이 불가능하다. 이를 실행하기 위해서는 컴퓨터의 메모리에 올려서 실행되어야 한다.
아래에서는 JVM에서 어떻게 java나 kt파일이 메모리에 올라가 실행되는지를 도식화하였다. 아래 그림2를 살펴보자.
JVM은 OS로부터 자원을 할당받아 실행되는 프로세스이다. JVM 프로세스에서 돌아가는 프로그램은 바이트코드의 묶음이다.
JVM에서는 kt 확장자나 java 확장자로 작성된 소스코드를 로드하기 위해 컴파일러가 소스코드를 바이트코드로 변환한다음 Class Loader을 이용하여 Memery Area에 Load한다. 이렇게 소스코드는 메모리에 로드 되고 실행되게 된다. 이렇게 JVM이 실행되어 소스코드가 메모리 상에 올라갔을 때 "프로세스가 실행 중이다"라고 한다.
정리
- 프로그램은 정적인 개념으로 저장매체(HDD, SDD)에 저장된 실행 파일을 의미한다.
- 프로세스란 프로그램이 메모리 상에 올라와 컴퓨터의 자원(메모리, CPU)을 할당 받아 실행 중인 것을 의미한다.
반응형