CS 4

[CS] 컴파일(Compile)이란?

서론 C, C++, Java 프로그래밍을 해봤으면 작성한 소스 코드를 빌드(Build) 혹은 컴파일(Compile)해서 실행해봤거나 코드를 잘못 작성하여 컴파일 에러가 났던 경험이 있을 것이다. 정확하게 컴파일이 어떠한 일을 하는지 모르고 막연하게 "컴파일을 하면 소스 코드의 문법을 검사하고 실행하나 보다"라고 생각했다면 이참에 자세히 알아보자. ※ 그림이나 예시는 리눅스 환경의 C언어 컴파일 과정을 중심으로 이야기하므로 언어, 환경에 따라 차이가 있을 수 있다. 컴파일의 정의 컴파일은 인간이 이해할 수 있는 언어로 작성된 소스 코드(고수준 언어 : C, C++, Java 등)를 CPU가 이해할 수 있는 언어(저수준 언어 : 기계어)로 번역(변환)하는 작업을 말한다. 우리가 C, C++, Java로 작성..

CS 2022.08.19

[CS] 프로그래밍 언어와 빌드 과정 [Build Process]

⦁ Build 란? 먼저 빌드 과정(Build Process)에 대해 간략하게 알아보고 가도록 합시다. Build 라는 단어가 '무언가를 짓다'라는 뜻인 것은 모두가 알 겁니다. 우리가 건물을 짓는다고 할 때, 설계도를 기반으로 기초공사를 하고 철근을 세우고, 벽을 세우고, 도색하고... 이러한 과정을 거쳐 집이 완성되는 과정을 짓는다고 하죠. 또 다른 예시로는 해외판 책을 우리나라 말로 번역하는 과정이라고 생각할 수도 있겠습니다. 프로그래밍에서도 마찬가지입니다. 컴퓨터는 근본적으로는 0과 1밖에 모릅니다. 우리가 작성하는 코드들은 거의 대부분 고급언어를 사용하기 때문에 결국에는 컴퓨터(CPU)가 이해할 수 있도록 번역을 해주어야겠죠. (C, Java, C++ 등 어셈블리를 제외한 대부분 언어가 고급언어..

CS 2022.08.19

[CS] 메모리구조

프로세스의 메모리 (RAM) 구조는 다음과 같은 형태로 구성된다. 코드 영역 메모리의 코드 영역은 실행할 프로그램의 코드(명령어) 자체가 저장되는 영역이다. 텍스트 영역이라고도 불리는데, 이 영역에서 CPU는 저장된 명령어를 하나씩 가져가서 처리한다. 데이터 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. ex) 다음 변수들은 데이터 영역에 저장된다. int global_value = 10; void temp() { static int static_value = 10; } 힙 영역 메모리의 힙(heap) 영역은 운영체제에 의해 메모리 공간이 동적으로 할당되고 해제되는..

CS 2022.08.11

[CS] 스택(Stack)과 힙(Heap) 차이

Stack (스택) 이란? - 프로그램을 실행하는데 필요한 메모리 공간으로 메소드가 호출되는데 필요한 메모리는 스택에 저장된다. 여기서 이야기하는 메소드가 호출되는데 필요한 메모리는 지역변수, 매개변수, 리턴값 등이다. Stack Frame (스택프레임) - 메소드를 호출하기 전에 반드시 호출에 필요한 메모리를 스택에 만들어야 하는데, 이 때 하나의 메소드에 필요한 메모리 덩어리를 묶어서 '스택프레임' 이라고 한다. 즉, 하나의 메소드에는 하나의 스택프레임이 존재하는 것이다. 스택프레임의 구성 요소로는 위에서 이야기한 지역변수, 매개변수, 리턴값 등이 있다. 메소드 호출과 스택메모리 - 하나의 메소드를 호출하면 그 메소드에 해당하는 하나의 스택프레임이 스택에 만들어진다. 스택에 만들어진 메모리는 메소드의..

CS 2022.08.10