프로그래밍/CS 개념

프로그래밍/CS 개념

[CS] 메모리 구조

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

프로그래밍/CS 개념

[CS 기초] Managed vs Unmanaged 언어

Managed 언어 Managed 언어란 특정 런타임 환경 내에서, 프로그램을 생성하도록 설계된 언어를 의미한다. 이러한 언어들은 대부분 인터프리터나, VM(Virtual Machine)을 지원하고, 프로그램의 코드가 이 위에서 동작하도록 설계되어 있다. 소스코드를 컴파일하는 과정은 VM 위에서 이루어지고, 실행파일 또한 VM 위에서 동작하게 된다. 추가로 VM은 메모리 관리(Garbage Collector .. ), 운영체제 차원의 보안성을 위한 관리 등의 역할을 수행한다. Python, JavaScript, Java, C# 등등의 언어가 managed 언어에 속한다. Unmanaged 언어 따로 VM과 같은 런타임 환경의 관리를 받지 않는 모든 언어는 unmanaged 언어라고 할 수 있다. 우리가 ..

프로그래밍/CS 개념

[CS 기초] 정적타입 언어 vs 동적타입 언어

컴파일 과정 소스코드를 작성하고 빌드를 하게되면 일반적으로 다음과 같은 과정을 통해 실행파일이 만들어진다. 소스코드(Input) -> 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 -> 실행파일(Output) 전처리기는 소스코드 자체에 대한 수정을 담당한다. 컴파일러는 소스코드를 어셈블리 코드로 번역한다. 어셈블러는 어셈블리 코드를 목적코드로 번역한다. 링커는 생성된 목적코드들을 링킹하여 실행파일을 만든다. 컴파일타임 & 런타임 전체 컴파일 과정과 그 이후 과정 중, 실행파일이 만들어지는 순간까지를 컴파일타임이라 부르고, 실행파일이 실행된 후의 시간대를 런타임이라 부른다. 소스코드(Input) -> 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 -> 실행파일(Output) -> 실행 컴파일타임 런타임..

AlgorFati
'프로그래밍/CS 개념' 카테고리의 글 목록