분류 전체보기 39

운영체제

운영체제 (Operating System)운영체제(OS)는 프로그램과 하드웨어를 관리하는 소프트웨어이다.예시:WindowsLinuxmacOS프로세스 관리운영체제는 프로그램이 실행되면 프로세스를 생성한다.역할여러 프로그램을 동시에 실행 가능하게 함CPU 시간을 나누어 사용하게 함 (스케줄링)프로세스 생성 및 종료 관리예시게임 실행브라우저 실행디스코드 실행운영체제가 CPU 사용 시간을 빠르게 번갈아 할당해 동시에 실행되는 것처럼 보이게 한다.메모리 관리운영체제는 프로그램이 사용할 메모리를 할당하고 관리한다.메모리 4영역영역설명Code실행 코드 저장Data전역 변수 / static 변수Heap동적 할당 메모리Stack지역 변수 / 함수 호출파일 시스템 관리운영체제는 파일 저장과 읽기를 관리한다.역할파일 생성파..

c++/기초 2026.05.21

링크 단계

링크 단계 (Linking)링커(Linker)가 여러 개의 오브젝트 파일과 라이브러리를 연결하여 최종 실행 파일을 생성하는 과정링크 단계에서 수행하는 작업오브젝트 파일 병합심볼 해석(Symbol Resolution)주소 할당(Address Assignment)재배치(Relocation)오브젝트 파일 병합컴파일/어셈블 단계에서 생성된 여러 오브젝트 파일들을 하나로 연결하는 과정예시:Player.objEnemy.objGame.obj↓Game.exe심볼 해석 (Symbol Resolution)현재 오브젝트 파일이 참조하는 함수나 변수가 실제 어디에 존재하는지 찾는 과정예시:extern void Attack();Attack();링커는 Attack 심볼이 어느 오브젝트 파일에 있는지 탐색함주소 할당 (Addres..

c++/기초 2026.05.20

심볼과 심볼 테이블

심볼(Symbol)과 심볼 테이블(Symbol Table)외부 라이브러리나 다른 파일에 있는 함수, 전역 변수의 위치를 찾기 위해 사용됨컴파일 과정에서 생성되며, 이후 링크 단계에서 링커가 이를 참조하여 실제 메모리 주소를 연결함심볼 (Symbol)함수나 전역 변수를 식별하기 위한 정보객체 자체가 아니라 객체를 가리키는 이름표 예시void Attack(){}int HP = 100;생성되는 심볼 예시:AttackHP심볼이 포함하는 정보함수/변수 이름섹션 정보오프셋(상대 위치)참조 정보 심볼 테이블 (Symbol Table)심볼들을 저장하는 테이블특징오브젝트 파일 하나당 하나씩 존재컴파일/어셈블 단계에서 생성오브젝트 파일 내부 메타데이터로 저장됨왜 필요한가?다른 파일의 함수나 변수를 사용하려면 위치를 알아야..

c++/기초 2026.05.20

어셈블리 단계

어셈블리 단계 (Assembly)컴파일 단계에서 생성된 어셈블리 코드를 실제 CPU가 실행 가능한 기계어(바이너리 코드)로 변환하는 과정어셈블리 코드를 기계어로 변환함오브젝트 파일(.o, .obj) 생성심볼 테이블(Symbol Table) 생성재배치 정보(Relocation) 생성어셈블러 (Assembler)어셈블리 코드를 기계어로 변환하는 프로그램어셈블리어 → 기계어변환 수행어셈블러의 역할어셈블리 명령어를 CPU 아키텍처에 맞는 기계어로 변환코드와 데이터를 섹션 단위로 분리심볼 테이블 생성재배치 정보 생성섹션 (Section)오브젝트 파일 내부에서 코드와 데이터를 구분하는 영역섹션역할.text실행 코드 저장.data초기화된 전역 변수 저장.bss초기화되지 않은 전역 변수 저장.rodata읽기 전용 데이..

c++/기초 2026.05.20

컴파일 단계

컴파일 단계 (Compilation)전처리된 소스 코드를 기계어로 변환하는 과정각 소스 파일(.cpp)은 개별적으로 컴파일됨컴파일이 완료되면 각각의 오브젝트 파일(Object File)이 생성됨오브젝트 파일 (Object File)컴파일 단계가 완료되면 생성되는 파일확장자 종류.o.obj운영체제와 컴파일러에 따라 확장자가 달라짐운영체제별 확장자운영체제확장자Linux, macOS (UNIX 계열).oWindows.obj컴파일러별 확장자컴파일러확장자GCC (GNU Compiler Collection).oMSVC (Microsoft Visual C++).obj기계어 변환 과정C++(고급 언어)↓어셈블리어(저급 언어)↓기계어(네이티브 코드)전처리된 소스 코드는 이러한 과정을 거쳐 CPU가 실행 가능한 기계어로 ..

c++/기초 2026.05.20

전처리 단계

전처리 단계 (Preprocessing)컴파일 전에 소스 코드를 가공하는 단계전처리기(Preprocessor)가 #으로 시작하는 전처리 지시어를 처리함.소스 코드의 주석이 제거됨#include, #define, #ifdef 등의 지시어를 처리함실제 컴파일 전에 코드가 치환되고 정리됨전처리 지시어 종류1. #include헤더 파일 포함 지시어#include #include "Player.h"의미해당 파일의 내용을 현재 소스 코드 위치에 그대로 복사함.즉,#include "Player.h"는 실제로는 Player.h 내부 코드가 현재 파일에 삽입되는 것과 같음.목적코드 재사용여러 파일에서 공통 코드를 재사용 가능#include "Math.h"모듈화헤더 파일(.h)에는 선언소스 파일(.cpp)에는 구현으로 분..

c++ 2026.05.20

힙과 스택 영역

힙과 스택 영역동적으로 변하는 메모리 영역나누어진 이유관리 방식이 서로 다르기 때문스택(Stack) 영역자동 관리빠름제한적사용 목적짧게 쓰고 바로 버릴 데이터 저장특징크기가 작음 (보통 MB 단위)Push(넣기), Pop(꺼내기) 방식으로 관리규칙적인 구조라 속도가 빠름힙(Heap) 영역수동 관리유연함상대적으로 느림사용 목적언제 사용이 끝날지 모르는 데이터 저장특징크기가 큼 (RAM 대부분 사용 가능)빈 공간 아무 곳에나 할당 가능복잡한 관리가 필요함오버플로우(Overflow)오버플로우의 종류에는:힙 오버플로우스택 오버플로우가 존재한다.힙은 메모리의 위쪽 주소 방향으로 할당되고,스택은 메모리의 아래쪽 주소 방향으로 할당된다.따라서 두 영역이 서로의 공간을 침범할 수 있다.종류힙이 스택 영역을 침범 → 힙..

c++ 2026.05.19

메모리 4영역

메모리 4영역코드영역데이터 영역힙 영역스택 영역코드(Code) 영역 (Text Segment): 프로그램의 소스 코드가 기계어 형태로 저장되는 영역으로, 읽기 전용(Read-Only)영역 텍스트 영역이라고 부르기도 함. CPU는 코드 영역에 저장된 명령을 하나씩 가져가서 처리하게 된다. 프로그램이 시작하고 종료될 때 까지 메모리에 계속 남아있는다.데이터(Data) 영역 (Data Segment): 전역 변수(Global), 정적 변수(Static)가 저장되는 곳입니다. 프로그램 시작 시 할당되고 종료 시 해제됨. 프로그램의 시작과 함께 할당되며 프로그램이 종료되면 소멸한다.힙(Heap) 영역 (Heap Segment): 사용자가 직접 관리하는 메모리 영역으로, 동적 메모리 할당(malloc 등)에..

c++ 2026.05.19