Study: ComputerScience(CS)/CS: Basic

    [CS] 컴파일(Compile)에 대해 보다 심도있는 내용

    컴파일(Compile) 과정이란? high-level 언어(개발자가 작성한 source code)를 lower-level 언어(어셈블리 형태로 변환한 후 binary code)인 기계어로 변환하는 과정입니다. 해당 작업을 해주는 프로그램이 Compiler입니다. Java의 경우, JVM(Java Virtual Machine)에서 byte 코드 형태의 *.class 파일이 생성됩니다. C++의 경우, MinGW, Clang에서 byte 코드 형태의 *.o(Object file) 파일이 생성됩니다. 컴파일 과정은 두가지로 분리할 수 있습니다. 해석 유닛 생성 (Translation Unit): 소위 말하는 컴파일이 이루어집니다. 전처리기 토큰들이 컴파일 토큰으로 변환이 되고, 컴파일 토큰들은 컴파일러에 의해..

    [CS] 래퍼(Wrapper) 클래스란?

    래퍼(Wrapper) wrapper의 사전적 의미: '(특히 식품) 포장지'라는 뜻입니다. 여기서, wrapper 클래스란? 기본 자료형(primitive data types: int, long)에 대한 클래스 표현을 래퍼 클래스(wrapper classes)라고 하며, 기본 자료형같은 데이터를 객체에 넣기 위해 제공하는 함수들을 포함합니다. 기본 자료형에 대해서 객체로서 인식되도록 '포장'을 했다는 뜻입니다. 범용적으로 '관리 리소스를 둘러싸는 특수한 유형의 클래스'라는 의미로 사용된다. 필요시 컴파일러가 자동으로 수행하기 때문에, 오토박싱(autoboxing)이라고 합니다. 아래 그림으로 보여지는 숫자 자료형의 모든 래퍼 클래스는 모두 Number라는 추상 클래스를 상속 받아서 구현한 것입니다. By..

    [CS] 컴파일(Compile), 링킹(Linking), 빌드(Build), 배포(Release, Deploy, Distribute) 란?

    1. 컴파일(Compile): 사용자가 작성한 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 일 2. 링크(Link): 컴파일된 소스코드를 연결하는 일 3. 빌드(Build): 컴파일된 코드를 실제 실행할 수 있는 상태로 만드는 일 4. 배포 * Release: 같은 제품을 새롭게 만드는 것 * Deploy: 프로그램 등을 서버와 같은 기기에 설치하여 서비스 등을 제공하는 의미 * Distribute: 제품을 사용자들이 사용할 수 있도록 서비스 등을 제공하는 의미 C++ 코드를 실행파일로 변환하는 과정. 전처리(Preprocessing) 단계: #include 와 #define 와 같은 전처리기 매크로들을 처리합니다. 컴파일 (Compile) 단계: 각각의 소스 파일들을 어셈블리 명령어로 변환합니다. ..

    [CS] 컴퓨터 CPU 용어: CPU 코어, 쓰레드, 클럭, 캐시메모리

    💡 본 문서는 참고자료를 정리한 수준의 문서로써, CPU 기본 용어를 알고 싶거나 CPU를 구매하려는 사람들에게 추천합니다. CPU의 역할 CPU는 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고, 명령을 실행하는 장치입니다. 제어장치(control unit)와 연산장치(arithmetic logic unit, 산술논리장치), 그리고 레지스터로 구성되며,이 구성장치들은 내부버스로 연결되어 있습니다. 명령 또는 데이터를 입력하면, 이 자료가 메모리에 저장되고, 중앙처리장치는 메모리에 있는 자료를 불러와 명령을 처리한 후 그 결과를 다시 메모리에 저장시킵니다(폰 뉴만 아키텍쳐). CPU의 특징을 설명해주는 요소들 라이젠 5800X ▶ 7nm / 8코어 / 16쓰레드 / 기본 클럭: 3.8GHz / 최대 ..