# 실행 파일 ## 개요 **실행 파일**(Executable File)은 컴퓨터 시스템에서 직접 실행 가능한 형태로 저장된 프로그램 파일을 의미합니다. 사용자가 프로그램을 실행 때 운영체제는 이 실행 파일을 로드하여 메모리에 적재하고, CPU가 명령어를 순차적으로 처리하도록 합니다. 실행 파일은 소프트웨어 개발 과정의 최종 산물 중 하나로, 빌드 과정...
검색 결과
"실행 파일"에 대한 검색 결과 (총 28개)
# 이진 파일 (Binary File) ## 개요 **이진 파일(Binary File)**은 텍스트 파일과 대비되는 개념으로, 컴퓨터가 직접 읽고 처리할 수 있는 2진수(0과 1) 형태의 데이터가 연속적으로 저장된 파일입니다. 텍스트 파일이 가독성을 위해 문자 인코딩(예: UTF-8, ASCII)을 사용하는 반면, 이진 파일은 데이터의 원형 그대로를 바...
# 빌드 라이프사이클 (Build Lifecycle) ## 개요 **빌드 라이프사이클(Build Lifecycle)**은 소프트웨어 개발 과정에서 소스 코드를 컴파일, 테스트, 패키징, 배포하기까지의 일련의 자동화된 단계를 의미합니다. 현대의 소프트웨어 공학에서 빌드 라이프사이클은 단순한 코드 컴파일을 넘어, 품질 보증(QA), 의존성 관리, 아티팩트 ...
# NOTICE 파일 ## 개요 **NOTICE 파일**은 소프트웨어 프로젝트, 특히 오픈 소스 소프트웨어(OS)에서 라이선스 준수(License Compliance)와 저작권 고지를 위해 사용되는 표준 텍스트 파일입니다. 이 파일은 소프트웨어의 핵심 소스 코드나 실행 파일에 직접적으로 라이선스 텍스트를 포함시키는 대신, 별도의 파일로 관리함으로써 프로...
# YaST (Yet another Setup Tool) ## 개요 **YaST**(또는 **YaST2**)는 SUSE Linux Enterprise Server(SLES), openSUSE, 그리고 그 파생 배포판들에서 시스템 관리 및 설치를 위한 통합 설정 도구입니다. "Yet another Setup Tool"의 약자로 시작되었으나, 현재는 단순한...
# 리버스 엔지니어링 리버스 엔지니어링(Reverse Engineering)은 완성된 제품이나 소프트웨어의 구조, 동작 원리, 설계 정보를 분석하여 그 내부 논리를 역으로 파악하는 **분석 및 이해 과정**입니다. 이를 통해 얻은 지식을 바탕으로 새로운 개발, 유지보수, 보안 분석, 호환성 확보 등에 활용됩니다. ## 리버스 엔지니어링의 개요와 정의 ...
# 파이썬(Python) 파이썬은 높은 가독성과 간결한 문법을 지향하는 인터프리터 방식의 고급 프로그래밍 언어로, 다양한 도메인에서 널리 사용되는 범용 프로그래밍 환경입니다. > **참고**: 본 문서는 **Python 3.x 시리즈**를 기준으로 작성되었습니다. Python 2는 공식 지원이 종료되었으므로 새로운 프로젝트에서는 Python 3를 사용해...
# 메인 애플리케이션 ## 개요 **메인 애플리케이션**(Main Application)은 소프트웨어 시스템에서 사용자 인터페이스를 제공하고, 핵심 비즈니스 로직을 실행하며, 시스템의 다른 구성 요소들과 상호작용하는 중심적인 소프트웨어 모듈을 의미한다. 일반적으로 사용자가 직접 상호작용하는 프로그램의 주 진입점(entry point)으로, 시스템의 실행...
# PyPy ## 개요 **PyPy**는 파이썬 프로그래밍 언어의 대체 구현체 중 하나로, 성능 향상을 목적으로 설계된 **자체 호환 파이썬 인터프리터**입니다. 공식 파이썬 인터프리터인 CPython과 달리, PyPy는 **JIT**(Just-In-Time) 컴파일러를 내장하고 있어 동적 언어의 느린 실행 속도 문제를 크게 개선합니다. PyPy는 파이...
# 메모리 구조 ## 개요 메모리 구조(Memory Layout)는 컴퓨터 시스템에서 프로그램이 실행될 때 메모리가 어떻게 구성되고 사용되는지를 설명하는 개념이다. 프로그램이 메모리에 적재되면, 그 프로그램은 여러 영역으로 나뉘어 데이터와 코드를 저장하며, 각 영역은 특정한 목적과 생명 주기를 가진다. 메모리 구조를 이해하는 것은 프로그래밍, 특히 시스...
# 재배치 (Relocation) ## 개요 **재배치(Relocation)**란 프로그램이 메모리의 특정 물리적 주소에 고정되지 않고, 실행 시점에 가용한 메모리 공간에 따라 주소를 변경하여 적절하게 배치하는 프로세스를 의미합니다. 현대적인 운영체제는 멀티프로그래밍(Multiproument) 환경을 지원하기 때문에, 여러 프로세스가 동시에 메모리에 ...
# 로더 (Loader) ## 1. 개요 **로더(Loader)**는 프로그램의 실행을 위해 저장 장치(HDD, SSD 등)에 위치한 목적 프로그램(Object Program)을 주 기억 장치(Main Memory)로 적재하는 시스템 소프트웨어이다. 시스템 프로그래밍의 핵심 구성 요소 중 하나인 로더는 컴파일러나 어셈블러가 생성한 기계어 코드를 실제 CP...
# 정적 로드 (Static Loading) ## 1. 개요 **정적 로드(Static Loading)**란 프로그램이 실행되기 전, 운영체제나 로더(Loader)에 의해 프로그램의 모든 명령문과 데이터가 메모리(RAM)의 특정 영역으로 한꺼번에 배치되는 방식을 의미합니다. 이는 소프트웨어 공학 및 시스템 프로그래밍에서 프로세스의 생명주기를 관리하는 핵심...
# 자유 소프트웨어 ## 개요 자유 소프트웨어(Free Software)는 **사용자에게 소프트웨어를 자유롭게 사용·복제·배포·수정**할 권리를 보장하는 소프트웨어를 의미한다. “자유”는 가격이 아니라 **4가지 기본 자유**(Freedom)를 가리키며, 이는 소프트웨어가 **법적·기술적 제약 없이** 사용자에게 열려 있음을 뜻한다. 자유 소프트웨어는 오...
# Go --- ## 개요 **Go**(또는 **Golang**)는 구글에서 2007년부터 개발을 시작해 2009년에 공개한 **정적 타입(Statically Typed)·컴파일형(Compiled)·병행성(Concurrency) 지원** 프로그래밍 언어이다. 간결한 문법, 빠른 컴파일 속도, 효율적인 메모리 관리, 그리고 `goroutine`·`chan...
# git --version `git --version`은 Git 버전 관리 시스템의 설치 여부와 현재 시스템에 설치된 Git의 정확한 버전을 확인하기 위한 명령어입니다. 이 명령은 Git 사용자라면 누구나 가장 먼저 접하게 되는 기본 명령 중 하나로, 개발 환경 설정, 문제 진단, 호환성 확인 등 다양한 상황에서 필수적으로 사용됩니다. --- ## ...
# CMake ## 개요 **CMake**(Cross-platform Make)는 소프트웨어 빌드 프로세스를 자동화하기 위한 크로스플랫폼 빌드 시스템 관리 도구입니다. CMake 소스 코드를 기반으로 플랫폼별 빌드 시스템(예: Makefile, Ninja, Visual Studio 프로젝트 등)을 생성하는 역할을 하며, C, C++, Fortran, C...
# 빌드 시스템 ## 개요 **빌드 시스템**(Build System)은 소 코드를 컴파일, 링크, 패키징, 테스트 등의 과정을 거쳐 실행 가능한 소프트웨어로 변환하는 일련의 자동화된 도구와 프로세스를 의미합니다. 소프트웨어 개발 과정에서 반복적이고 수작업이 필요한 빌드 작업을 자동화함으로써 개발자의 생산성을 높이고, 오류를 줄이며, 일관된 빌드 환경을...
# 인터프리터 개요 **인터프터**(Interpreter)는 소스 코드를 기계어 번역하여 바로하는 프로그램의 일종으로, 소프트웨어 개발과 실행 환경에서 핵심적인 역할을 한다. 인터프리터는스 코드를 한 줄씩 또는 작은 단위로 분하고, 즉시 실행를 반환하는 방식으로 동작한다. 이는 **컴파러**(Compiler)와 대조되는 특징으로, 컴파일러는 전체 소스...
# 동적 링킹 ## 개요 **동적 링**(Dynamic Linking)은 프로그램 실행 시점(runtime)에 외부 라이브러리와 연결되는 링킹 방식으로, 프로그램의 실행 파일에 라이브러리 코드를 포함하지 않고, 대신 실행 시 필요한 라이브리를 운영체제의 **동적 링커**(Dynamic Linker)가 로드하여 연결하는 기술입니다. 이 방식은 메모리 사용...