2. 자료구조 [ 자료구조와 알고리즘 ] 자료구조는 데이터를 원하는 규칙 또는 목적에 맞게 저장하기 위한 구조이고, 알고리즘이란 자료구조에 쌓인 데이터를 활용해 어떠한 문제를 해결하기 위한 여러 동작들의 모임입니다. [ 스택, 큐, 트리, 힙 구조 설명 ] 스택: 세로로 된 바구니와 같은 구조로 먼저 넣게 되는 자료가 마지막으로 나오게 되는 First-In Last-Out(FILO) 구조이다. 큐: 가로로 된 통과 같은 구조로 먼저 넣게 되는 자료가 가장 먼저 나오는 First-In First-Out(FIFO) 구조이다. 트리: 정점과 간선을 이용해 사이클을 이루지 않도록 구성한 Graph의 특수한 형태로, 계층이 있는 데이터를 표현하기에 적합하다. 힙: 최댓값 또는 최솟값을 찾아내는 연산을 쉽게 하기 ..
1. 프로그래밍 공통 [ OOP란 ] OOP는 현실 세계를 프로그래밍으로 옮겨와 현실 세계의 사물들을 객체로 보고, 그 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍하는 기법입니다. OOP로 코드를 작성하면 재사용성과 변형가능성을 높일 수 있습니다. [ OOP의 5가지 설계 원칙 ] SRP(Single Responsibility Principle, 단일 책임 원칙): 클래스는 단 하나의 목적을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다. OCP(Open-Closed Principle, 개방 폐쇠 원칙): 클래스는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다. LSP(Liskov Substitution Principle, 리스코프 치환 원칙): 상위 타입의 객체를 하위..
1. 하드웨어 가상화의 종류 [ 가상화의 종류 ] 가상화에도 서버 가상화, OS-Level 가상화, 데스크톱 가상화, 애플리케이션 가상화, 네트워크 가상화 등이 있다. 그 중에서도 서버를 가상화하는 하드웨어 가상화인 전가상화와 반가상화의 차이에 대해서 정리하려고 하는데, 해당 내용을 이해하기 위해서는 CPU의 동작 레벨에 대해서 알고 있어야 한다. [ CPU의 동작 레벨 ] OS에서 구동되는 소프트웨어는 보안을 위해 권한과 보호 수전에 따라 링(RING) 등급으로 나뉘어진다. Ring 0를 특권 모드라고 하며 시스템 자원을 관리하는 OS 커널이 동작한다. Ring 1,2는 예약된 상태로, 평상시에는 사용되지 않는다. Ring3는 우리가 일반적으로 사용하는 응용프로그램들이 동작한다. 2 전가상화 [ 전가상..
1. 가상화(Virtualization)란? [ 가상화(Virtualization)란? ] 가상화란 가상화를 관리하는 소프트웨어(주로 Hypervisor)를 사용하여 하나의 물리적 머신에서 가상 머신(VM)을 만드는 프로세스이다. Hypervisor는 가상화 층을 구현하여 물리적 머신의 컴퓨팅 리소스로부터 가상 환경을 분리하고 가상 머신(VM)을 생성한다. VM은 물리적 머신과 동일한 역할 및 성능을 수행하지만, cpu와 메모리 및 스토리지와 같은 물리적 머신의 컴퓨팅 리소스를 사용한다. Hypervisor는 필요에 따라 각 VM에 이러한 컴퓨팅 리소스를 할당한다. 최근에는 Docker와 같은 컨테이너 가상화 기술이 등장하기도 하였다. 도커를 윈도우에서 사용하는 경우에는 Hypervisor를 사용하지만,..
1. CUDA C 병렬 프로그래밍 고급 예제 [ Parallel Dot ] 아래의 예제는 동일한 크기의 A배열과 B배열의 index에 있는 숫자를 곱해 C배열에 대입하는 코드이다. #include "device_launch_parameters.h" #include #include #include #define SIZE (2048 * 2048) #define THREADS_PER_BLOCK 512 // __global__을 통해서 커널임을 표시한다. host에서 호출된다. __global__ void dot(int *a, int *b, int *c, int n){ // 수많은 블록과 스레드가 동시에 처리한다. // 위에서 정의한 index를 통해서 스레드들을 구별한다. int index = threadId..