스택(Stack)은 한쪽 끝에서만 요소의 삽입과 삭제가 이루어지는 선형 자료구조이다. 스택은 데이터를 바닥에서부터 쌓아 올리는 구조로 되어 있으며, 가장 마지막에 삽입된 요소가 가장 먼저 삭제된다(FIFO, First In Frist Out). 스택의 표현스택(Stack)은 데이터를 바닥에서부터 쌓아 올리는 구조로 되어 있으며, 가장 마지막에 삽입된 요소가 가장 먼저 삭제된다(FIFO, First In Frist Out). 스택에 가장 마지막에 삽입된 요소를 'Top'이라 한다. 스택의 주요 연산스택(Stack)의 주요 연산은 아래와 같다.삽입(Push) : 삭제(Pop) : 이미지 추가 예정 배열 기반 스택내용을 추가해 주세요. 리스트 기반 스택내용을 추가해 주세요.
Category
네트워크 계층 모델은 네트워크 통신을 구조화하고 표준화하기 위해 사용됩니다. 가장 대표적인 두 가지 모델은 OSI(Open Systems Interconnection) 7 계층 모델과 TCP/IP 4 계층 모델이다. 프로토콜프로토콜(Protocol)은 네트워크에서 데이터를 주고받기 위해 네트워크를 구성하는 컴퓨터와 네트워크 장치들이 지켜야 하는 규칙(통신 규약)이다. 프로토콜은 데이터의 형식, 전송 순서와 절차, 오류 검출 및 수정 방법, 전송 속도 등을 정의하여 네트워크 상의 서로 다른 장치들이 효율적으로 데이터를 주고받을 수 있도록 한다. 컴퓨터 간의 데이터를 전송할 때는 다양한 프로토콜 중에서 데이터의 전송목적(서비스 종류)에 따라 다른 프로토콜을 조합하여 사용한다. 통신 기술이 발전하던 초기..
'Vertex Processing' 단계는 Input Assembler 단계로부터 받은 정점 데이터(Primitive)의 3차원에 있는 점(Vertex)들을 2차원평면 상에 어느 위치에 해당하는지 계산하는 과정이다. DirectX 11 에서는 Vertex Processing 단계를 조금 더 세부적으로 나누었는데 아래와 같다.Vertex ShaderHull ShaderTessellationDomain ShaderGeometry Shader Vertex Shader화면에 그려질 모든 Vertex(정점)는 'Vertex Shader'를 거쳐 간다. 변환, 조명, UV 매핑 등 수많은 특수 효과를 정점 셰이더에서 수행할 수 있으며, [Vertex Shader] 에서 흔히 수행하는 변환들은 다음과 같다.Worl..
'Input Assembler(입력 조립)' 단계에서는 CPU에서 GPU로 전달되는 3차원 모델의 정보를 GPU에서 처리할 수 있는 형식으로 변환한다. CPU 자원인 3차원 모델 정보는 GPU에서 직접 접근할 수 없기 때문에, 이 정보들은 'Vertex Buffer'와 'Index Buffer'라 불리는 자료구조에 저장되어 GPU로 전달된다. 이후 GPU는 전달 받은 데이터를 읽어와 '기본 도형(Primitive)'을 조립하여 화면에 표시할 준비를 한다. 정리하면 'Input Assembler(입력 조립)' 단계는 CPU로 부터 전달 받은 Vertex Buffer 와 Index Buffer 를 통해 기본도형(Primitive) 를 조립하는 단계이다. 더보기 * 알아두면 좋은것 - 'Mesh' 의 개념 컴..
'Module'은 독립적으로 실행 가능한 코드 단위로 캡슐화한 것으로 Unreal Engine의 소프트웨어 아키텍처의 기본 구성요소이다. DLL(Dynamic Link Libaray)과 비슷한 개념으로 현 시점 Unreal Engine은 1000개가 넘은 Module로 구성된다. Unreal Engine Document - How to make a gameplay module Module을 사용하는 이유? Unreal Engine Module은 코드를 정리하고, 프로젝트의 빌드 시간을 단축하고, 시스템 및 코드의 로드 / 언로드 프로세스를 설정할 수 있는 유용한 수단이다. 1. 코드 분리를 통해 기능을 캡슐화하고 코드의 내부 기능을 숨기는 수단을 제공한다. 2. 변경된 Module에 대해서만 컴파일을 진..
Unreal Engine 설치 언리얼 엔진을 설치하는 방법은 두 가지가 있다. 엔진 자체를 변경하고 싶다면 소스에서 복제하여 빌드하는 것이 좋다. 1. GitHub에서 전체 엔진 소스를 복제하여 직접 빌드 2. 에픽게임즈 런처를 사용하여 사전 빌드된 버전을 설치 Visual Studio 설치 C++로 게임 코드를 작성할 예정이므로 Visual Studio를 설치해야 한다. C++ 개발의 경우 Microsoft Visual C++(MSVC)를 사용하며, 이 언어에는 Visual Studio IDE와는 별도로 자체 버전 관리 체계가 있다. 우리가 설치할 Unreal Engine 버전에서 공식적으로 지원되는 Microsoft Visual C++(MSVC)는 Unreal Engine Document - Rele..
프로세스가 실행되기 위해서는 해당 프로그램이 물리적 메모리에 적재(Load) 되어야 하며, CPU는 프로세스 마다 독자적으로 갖는 '논리적 주소'에 근거해 명령을 실행한다. 물리적 주소 - 물리적 메모리에 실제로 적재되는 주소 공간 논리적 주소 - 프로그램이 메모리에 적재 되면 생성되는 프로세스의 독자적인 주소 공간 이를 위해 해당 논리적 주소가 물리적 메모리의 어느 위치에 대응되는지 확인해야 하며, 이렇게 논리적 주소를 물리적 주소에 연결시켜주는 작업을 '주소 바인딩' 이라 한다. Address Binding 주소 바인딩 방식은 바인딩 되는 시점에 따라 아래와 같이 구분된다. Compile Time Binding Load Time Binding Run Time Binding (Execution Time..
프로세스는 기본적으로 비동기적이면서 병행적이다. 이는 여러 프로세스가 동시에 실행되며, 작업 순서를 알 수 없다는 의미다. 때문에 여러 프로세스가 하나의 자원을 동시에 사용한다면 실행 순서에 따라 결과가 달라 질 수 있다. *Race Condition(경쟁 상태) - 여러 프로세스가 공유 데이터에 동시에 접근하여 기대한 실행 결과가 달리지는 상황 상호 배제(Mutual Exclusion)는 어떤 공유 자원에 대하여 한 번에 하나의 프로세스에 접근만 허용하는 상태이다. 임계 영역(Critical Sectipn)은 동시에 하나의 프로세스만이 접근할 수 있는 코드 영역으로 다수의 프로세스가 하나의 공유 자원에 접근하는 경우, 상호 배제를 보장하기 위해서 임계 영역을 구현하여 공유 자원의 접근을 제어한다. 이를..
초기 컴퓨터 시스템은 한 번에 하나의 프로그램만 실행하였다. 반면 현대의 컴퓨터 시스템은 메모리에 다수의 프로그램을 적재하고 동시(병행적)에 실행된다. 따라서 다양한 프로그램 제어 및 메모리 분할의 필요성이 증가하였고, 프로세스라는 개념이 탄생하였다. 프로그램 (Program) 프로그램(Program)은 컴퓨터에서 실행할 수 있는 명령어들의 집합으로, 기억 장치에 저장되어 파일 시스템에 존재하는 실행 파일이다. 프로그램은 명령어들의 집합일 뿐 그 자체만으로는 아무것도 할 수 없는 수동적인 존재(Passive Entity)이다. [프로그램의 메모리 구조]Text(Code) Section실행 코드가 저장되는 영역으로 코드 영역이라고도 부르며, 프로그램에서 정의한 모든 함수의 기계어를 담고 있다.Data ..