프로그램
기본적으로 개발자들이 짠 코드들을 바탕으로 프로그램
이 만들어집니다.
개발자들이 짠 코드의 집합이 컴퓨터가 이해할 수 있는 코드들로 컴파일된 것을 프로그램
이라고 합니다.
그리고 프로그램을 실행
하게 됐을 때를 프로세스
라고 하는데요. 이에 대해 알아보겠습니다.
1. 프로세스
프로세스
는 실행되고 있는 프로그램을 뜻합니다.
우리가 프로그램(카톡, 엑셀, 브라우저 등) 을 실행하면 메모리 위에 올라가게 되고, 이를 운영체제가 중재하는 역할을 합니다.
실제로 프로그램 자체는 코드(명령어)로 구성되어 있습니다. 그리고 코드를 바탕으로 해서 프로그램을 실행시킨다는 것은 프로세스가 생성되는 것을 의미합니다.
그 프로세스는 프로그램 실행 정보, 프로그래머가 짠 코드 그리고 실행되면서 쓰이는 데이터들로 구성되어 있습니다.
[심화]
저는 지금 노트북 키보드를 통해 글을 쓰고 있습니다. 현재 제 노트북에 브라우저, 메신저, 음악 앱 등의 많은 프로그램이 실행되고 있는데요, 그럼에도 바로 키보드 입력이 되는 이유는 바로 인터럽트
라는 것 덕분입니다.
운영체제는 프로세스들을 관리하면서 이렇게 갑작스런 입출력 장치의 신호나 예외상황을 자주 겪게 됩니다. 이 때 실행되고 있는 CPU 자원을 잠시 가져와서 갑작스러운 신호들을 먼저 처리하게 됩니다. 이 때 CPU가 작업중인 프로세스는 대기 상태로 있게 되는 거죠. 하지만 이 순간이 매우 빠르기 때문에, 우리의 프로그램이 멈춘다는 느낌을 받지는 않는 거죠.
2. 프로그래밍 언어
프로그램은 사람이 프로그래밍 언어를 사용해서 만들게 됩니다.
CPU는 0, 1만 읽을 수 있습니다. 우리가 영어로 짠 코드를 읽을 수 없죠. 그래서 이를 변환해주는 컴파일
과정이 필요합니다. 결국 개발자들이 짠 코드는 컴파일을 통해 컴퓨터가 실행 가능한 코드들로 변환됩니다.
그리고 컴파일을 위해선 컴파일러
가 필요합니다. 컴파일러는 운영체제와 같이 중요한 시스템 프로그램 중 하나입니다.
보통 우리가 쓰는 프로그래밍 언어는 전부 고급언어
입니다. 그리고 컴파일러를 통해 저급언어
(기계어) 로 변환됩니다.
반드시 컴파일된 결과물이 [기계어 or 어셈블리어] 인것은 아닙니다. 대표적으로 바이트코드 라는 것이 있습니다.
컴파일된 결과물이 컴퓨터 하드웨어(CPU)에 해석되는 게 아니라 컴퓨터 소프트웨어에서 해석되는 경우죠.
대표적으로 Java, Python 이 그렇습니다.
[용어 정리]
-
빌드
는 소스 코드를 실행할 수 있는 소프트웨어 산출물로 만드는 행위입니다. 최종적으로 개발자들이 짠 코드가 빌드를 통해 바로 실행할 수 있는 상태가 됩니다. 우리가 다운받은 프로그램들은 전부 빌드 과정을 거친 결과물이죠. ( 마우스 클릭하면 바로 실행되는 상태 )컴파일도 빌드라는 과정 중 하나입니다. 그냥 헷갈리시면 빌드와 컴파일이 비슷한 의미라고 생각하셔도 됩니다.!
-
IDE
는 코딩을 하고 디버깅, 컴파일 등의 전반적인 작업을 제공해주는 프로그램을 의미합니다. 옛날에는 코딩은 코드 편집기에서 따로 치고, 컴파일 작업은 또 별도로 공간에서 했었다면 IDE (Integrated Development Environment) 는 이를 하나의 프로그램 안에서 한 번에 할 수 있게 제공해주는 프로그램입니다.