2025/08/28 12

[UE] 언리얼 엔진의 GC

순서가비지 컬렉션 GC란?GC의 동작 원리GC가 보는 참조와 보지 못하는 참조객체 생명주기 관련 포인트GC로 인해 자주 겪는 문제C++의 GC와 UE의 GC 차이가비지 컬렉션 GC란?UObject 기반 객체들의 메모리를 자동으로 정리하는 도달성 기반의 마크-앤-스윕 시스템이다.UObject들 간의 레퍼런스를 따라 도달 가능한 객체는 살리고, 도달 불가능한 객체는 수거함.도달성이란?특정 객체가 아직 사용중이라고 간주할 수 있는지를 뜻함.도달 가능한 객체: 현재 실행 중인 코드에서 경로를 따라 접근할 수 있는 객체 > 살려둠도달 불가능한 객체: 어느 곳에서도 참조하지 않는 객체 > 필요없는 메모리로 판단 > 수거대상GC의 동작 원리루트(Root) 수집엔진이 시작.유지하는 지속적 객체들, AddToRoot()..

Unreal Engine 2025.08.28

[UE] 언리얼의 클래스들

순서GameMode 클래스GameInstance 클래스GameState 클래스PlayerState 클래스GameMode 클래스역할: 게임 규칙과 규칙 실행자특징GameMode는 서버 전용 클래스로 서버에서만 존재하며 클라이언트에서는 존재하지 않음 > 클라이언트에서는 GameState로 동기화만 받도록 함GameMode는 레벨마다 1개만 존재함클라이언트만 있는 싱글 플레이의 경우 클라이언트 프로세스 안에 서버 역할도 함께 실행을 시킴 => 로컬 서버 + 로컬 클라이언트가 같은 프로세스 안에 동시에 존재하는 구조로 로컬 서버 부분에서 GameMode가 생성됨.로컬 클라이언트는 내부적으로 서버가 가진 GameMode의 규칙을 그대로 따름.어떤 플레이어 캐릭터를 사용할지, 플레이어가 어떻게 스폰되지, 점수 규칙..

Unreal Engine 2025.08.28

[UE]언리얼 오브젝트

순서오브젝트란?UObject의 특징주요 UObject 하위 개념오브젝트의 생명 주기Class Default Object란?오브젝트란?모든 클래스의 최상위 Base 클래스임언리얼에서 사용하는 대부분의 것은 UObject를 상속받아 만들어짐.주요 하위 개념언리얼의 리플렉션 시스템, GC, 에디터와의 연동 등을 가능하게 해주는 핵심 클래스임UObject의 특징리플렉션 지원: UCLASS(), UPROPERTY(), UFUNCTION()같은 매크로를 붙이면 언리얼이 해당 객체를 에디터/블루프린트에서 인식할 수 있음.GC: 일반 C++ 포인터 관리와 다르게 UObject 기반 클래스에서 UPROPERTY()로 등록된 포인터는 언리얼의 GC가 추적하여 자동으로 메모리를 관리함에디터 및 블루프린트 통합: UObjec..

Unreal Engine 2025.08.28

[CS]뮤텍스와 세마포어

순서뮤텍스란?뮤텍스의 특징세마포어란?세마포어의 특징공통 개념뮤텍스와 세마포어 비교뮤텍스란?Mutual Exclusion한 번에 하나의 스레드만 접근 가능함임계영역을 보호하는 용도이다.뮤텍스의 특징1:1 접근 제어로 동시 접근이 불가함소유권 개념으로 잠근 스레드만 해제 가능함재진입 가능 여부일반 Mutex: 소유자가 아니면 재진입 불가 > 데드락 가능Recursive Mutex: 소유자가 재진입 가능세마포어란?동시 접근 가능한 스레드 수를 카운트로 관리카운트 = 1이면 뮤텍스와 동일하게 동작 > Binary Semaphore카운트 > 1이면 여러 스레드가 동시에 접근 가능 > Counting Semaphore세마포어의 특징여러 스레드 허용 가능 > 임계영역 공유 가능소유권 없음 > unlock은 다른 스레..

CS 2025.08.28

[CS]리틀 엔디안과 빅 엔디안

순서엔디안이란?LSB와 MSB리틀 엔디안이란?빅 엔디안이란?리틀 엔디안과 빅 엔디안 비교실제 사용 예엔디안이란?컴퓨터에서 메모리에 멀티바이트 데이터를 저장할 때 바이트 순서를 결정하는 방LSB와 MSBLSB: 가장 작은 단위의 비트로 값이 가장 작은 자리인 2의 0승 자리이다.MSB:가장 큰 단위의 비트로 값이 가장 큰 자리인 2의 7승 자리이다.리틀 엔디안이란?가장 작은 바이트를 먼저 저장하는 방식메모리 주소 낮은 쪽 > LSB, 높은 쪽 > MSB빅 엔디안이란?가장 큰 바이트를 먼저 저장메모리 주소 낮은쪽 > MSB, 높은 쪽 > LSB리틀 엔디안과 빅 엔디안 비교구분리틀 엔디안빅 엔디안순서LSB > MSBMSB > LSB메모리 주소 낮은 쪽가장 작은 바이트가장 큰 바이트사용 예x86 아키텍처, x8..

CS 2025.08.28

[CS]스택 오버 플로우

순서스택이란?스택 오버플로우란?스택 오버플로우 발생 원리스택 오버플로우 증상스택 오버플로우 예방 방법스택이란?함수 호출과 지역 변수 저장을 위해 프로세스 메모리 내에 할당된 영역임후입선출 구조(LIFO)를 가지고 함수 호출 시 스택 프레임을 생성하며 함수 종료 시 스택 프레임을 제거함스택 오버플로우란?스택이 가득 차서 더 이상 스택 프레임을 할당할 수 없는 상태발생하는 상황무한 재귀 호출너무 큰 지역 변수 배열 선언스택 크기를 초과하는 깊은 함수 호출스택 오버플로우 발생 원리각 함수 호출마다 스택 프레임이 추가됨스택은 운영체제에서 제한된 크기스택 프레임 누적 > 스택 한계 초과 > 스택 오버플로우스택 오버플로우 증상프로그램이 비정상 종료디버거에서 스택 트레이스 확인 가능심한 경우 시스템 레벨 오류 발생 ..

CS 2025.08.28

[CS]busy-waiting

순서busy-waiting이란?busy-waiting의 특징busy-waiting과 대기 방식 비교busy-waiting이란?스레드가 원하는 조건이 될 때까지 CPU를 계속 사용하면서 반복적으로 확인하는 상태루프 안에서 계속 기다리면서 CPU를 소모하는 대기락이 해제되기를 기다리면서 계속 반복 검사할 때 발생busy-waiting의 특징CPU 사용률 증가: 조건을 만족할 때까지 CPU를 계속 점유 => 다른 작업 방해 가능간단하지만 비효율적임: 락을 얻을 때까지 반복 확인만 하므로 CPU가 낭비됨실시간/저지연 환경에서 유용할 수 있음: 짧은 시간 안에 락이 풀릴 것이 확실할 때, 컨텍스트 스위칭 오버헤드 없이 바로 잡기 위해 사용busy-waiting과 대기방식 비교비교 방식CPU 점유컨텍스트 스위칭특징..

CS 2025.08.28

[CS]임계영역과 데드락

순서임계영역이란?데드락이란?데드락의 발생 조건임계영역이란?한 번에 하나의 스레드만 접근해야 하는 코드 영역이다.공유 자원을 여러 스레드가 동시에 수정하면 경쟁 상태가 발생할 수 있음이를 방지하기 위해 임계영역을 설정하고, 스레드가 진입할 때 락을 걸고 나올 때 해제함데드락이란?둘 이상의 스레드가 서로 상대방이 가진 자원을 기다리며 무한 대기 상태에 돌입한 것을 뜻함데드락 상태가 되면 시스템이나 프로그램 일부가 더 이상 진행하지 못함데드락의 발생 조건상호 배제: 자원은 한 번에 하나만 사용 가능점유 및 대기: 자원을 점유한 상태에서 다른 자원을 기다림비선점: 자원 강제 회수가 불가능순환 대기: 스레드가 순환 형태로 기다림요약임계영역은 공유 자원을 안전하게 다루기 위한 필수 도구데드락은 임계영역을 잘못 설계..

CS 2025.08.28

[CS] 컨텍스트 스위칭

순서컨텍스트란?컨텍스트 스위칭이란?컨텍스트 스위칭의 과정컨텍스트 스위칭 주의점컨텍스트 스위칭의 비용프로세스 vs 스레드에서의 컨텍스트 스위칭 차이C++/UE 관점레이스 컨디션컨텍스트란?프로세스나 스레드가 실행되던 상태를 말함레지스터 값프로세스 메모리 상태CPU 상태커널에서 관리하는 PCB 정보위 정보들을 저장해뒀다가 나중에 다시 불러오면 마치 중단된 지점에서 다시 이어서 실행되는 것 처럼 보이게 됨.컨텍스트 스위칭이란?CPU가 실행 중인 프로세스나 스레드의 상태를 저장하고, 다른 프로세스나 스레드의 상태로 교체하는 과정운영체제가 멀티태스킹을 지원하기 위해 필수적으로 수행하는 작업즉, 하나의 CPU에서 여러 프로그램 또는 스레드가 동시에 실행되는 것처럼 보이게 하는 핵심 기술컨텍스트 스위칭 과정실행 중인 ..

CS 2025.08.28

[CS] 캐시의 지역성

순서캐시란?캐시의 계층캐시의 지역성캐시의 지역성이 미치는 영향캐시란?CPU와 메인 메모리(RAM) 사이에 존재하는 작은 고속 메모리이다.CPU는 매우 빠르지만 메인 메모리는 상대적으로 느리기 때문에 이 속도 차이를 줄이기 위해 자주 쓰일 데이터를 캐시에 저장함.캐시는 보통 SRAM 기반으로 되어있음캐시의 계층L1캐시: 가장 빠르고 작으며 CPU 코어 가까이에 있음L2캐시: L1보다 크고 느리나 여전히 CPU 내부에 위치함L3캐시: CPU 코어 전체가 공유하고, 용량이 크며 상대적으로 느림이후에 없으면 RAM에서 가져옴즉 캐시는 CPU > L1 > L2 > L3 > RAM 순서로 데이터를 탐색함캐시의 지역성캐시의 지역성이란 캐시 성능을 높여주는 메모리 접근 패턴이다.시간 지역성: 최근에 접근한 데이터는 가..

CS 2025.08.28