8 min to read
용어정리
용어정리
[TOC]
용어정리
이 포스트는 제가 그냥 대략적으로 만 알고있고 자세이 몰랐던 용어들의 정의를 정리하는 포스트 입니다
컴퓨터(Computer)
CPU (Center Process Unit) 중앙처리장치
GPU (Graphic Process Unit)
RAM 휘발성 메모리
절차(Program)
일반적인 경우
-목표 달성에 필요한 진행 목록
이나 순서
, 차례
등
컴퓨터의 경우
-문제 해결
을 위한 방법
과 순서
를 나타낸 명령문의 집합체
추상화(Abstraction)
중요한 특징
을 추출
해서 간단
하게 표현하는것
중요한것을 강조 - 더 받아들이기 쉬움 - 합리적
예시
링 넓이 = 원주율 * 큰 원 반지름 * 큰 원 반지름 - 원주율 * 작은 원 반지름 * 작은 원 반지름
추상화
- 원 넓이 = 원주율 * 반지름 * 반지름
- 링 넓이 = 큰 원 넓이 - 작은 원 넓이
일반화(Generalization)
연관성 있는 두 개 이상
의 개체 집합을 묶어 좀더상위
의 개체 집합을 만드는 것- 데이터 모델링에서 일반화한다는 것은 데이터에 통합을 의미
예시
- 외국인, 내국인 -> 고객
- 주민번호 있는 개인, 사업자, 외국인, 관계사 -> 자연인 또는 법인 -> 고객
함수(Function)
프로그래밍에서의 함수 : 일정한 동작
을 수행하는 코드(들)
수학에서의 함수 : 변수 x와 y 사이에 x의 값이 정해지면
y값이 정해진다는 관계
공통점 : 특정한 값을 입력하여 특정한 값을 출력하는 메커니즘
타입(Type)
프로그래머가 의도
한 프로그램의 올바른 동작
을 인코딩한 것
범주
의 개념 활용
컴퓨터 구성요소
명령어 입력
에 따라
이진법
을 사용하여
데이터
를 저장
하고 처리
하는
전자 기기
처리
: Cpu 협업지원
:Matherboard 저장
RAM, Hard Drive 전원공급
Power Supply
프로그램 구성요소
input
structure
action
results
프로그램 설계
프로그램 명세
부터 명세서 작성
에 이르는 활동.
프로그램이 수행
할 내용을 정한다.
프로그램 요구 사항
을 충족
시킬 방법을 단계적으로 정한다.
구현
을 위한 기반
을 제공하는 명세서
를 만든다.
OOP(Object Oriented Programing)
SWS : Software Component
TR : Test Requirment
RS : Requirment Spec?
EXP :
TPS :
클래스(Class)
같은 종류(또는 문제 해결을 위한)의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것이다.
객체지향 프로그램의 기본적인 사용자 정의 데이터형(user define data type)이라고 할 수 있다.
객체(Object)
클래스의 인스턴스(실제로 메모리상에 할당된 것)이다. 객체는 자신 고유의 속성(attribute)을 가지며 클래스에서 정의한 행위(behavior)를 수행할 수 있다. 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용한다.
메서드(Method), 메시지(Message)
클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지라 할 수 있다. 메서드는 한 객체의 서브루틴(subroutine) 형태로 객체의 속성을 조작하는 데 사용된다. 또 객체 간의 통신은 메시지를 통해 이루어진다.
바인딩(정적 바인딩, 동적 바인딩)
프로그램을 실행하면 컴파일을 하고 실행코드가 만들어진다.
실행코드에서 함수 호출부분을 보면 함수가 그래로 정의되어 있지 않고 함수가 정의된 부분의 주소값이 있어서 함수를 찾아가서 실행할 수 있다.
이 때 함수 호출부와 정의부를 연결시켜주는 것이 바인딩이다.
바인딩에는 정적 바인딩과 동적 바인딩이 있는데 바인딩이 결정되응 시점에 따라 나뉜다.
정적 바인딩
은 컴파일 시에 바인딩 할 주소가 결정되어 함수 호출 시에는 이미 결정되어 있고.
동적 바인딩
은 컴파일 시에 바인딩 할 주소가 결정되지 않고 함수 호출 시에 결정된다.
일반 함수는 정적 바인딩을 하며 컴파일 시에 인스턴스의 타입에 따라 바인딩 될 주소가 결정되기 때문에 클래스를 상속받아 함수를 재정의 하고 업캐스팅을 하여도 부모클래스의 타입으로 바인딩이 되기 깨문에 부모 클래스의 함수가 호출이 된다.
반면에 가상함수는 어떤 함수를 호출할 지 호출 시점에 결정이 되며 업캐스팅을 하였을 때 인스턴스 타입이 아닌 동적으로 생성된 객체의 타입으로 바인딩이 되기 때문에 자식 클래스의 함수가 호출이 가능해진다.
이것이 가상함수를 사용하는 이유이다.
다만 가상함수를 사용하면 동적 바인딩을 하기 때문에 컴파일은 빠르 반면에 실행시간이 늦어질 수 있다.
또한 동적 바인딩을 위한 주소값을 담을 메모리
를 미리 만들어 놓기 때문에 메모리가 낭비될 수 있다.
업캐스팅, 다운캐스팅
캐스팅은 사실상 형변환이지만 업캐스팅, 다운캐스팅이라 말하는 것은 상속관계에서 오는 것으로
부모클래스와 자식 클래스가 존재시에 자식은 사실상 부모의 정보를 가지고 있으니 어떻게 보면 부모라고 볼 수도 있습니다. 그렇기에 자식클래스의 객체를 형변환에서 부모객체로 만드것을 업캐스팅 이렇게 업캐스팅을 된것을 다시 되돌려 놓는 것을 다운캐스팅이라 지칭합니다.
박싱(Boxing)과 언박싱(Un Boxing)
박싱과 언박싱은 모든 데이터는 값형 데이터와 참조형 데이터로 분류 되는데 값형
은 int, float, double, char 등으로 스택
에 저장되고
참조형
은 각종 클래스, 및 Object를 지칭하며 힙
에 저장됩니다.
박싱(boxing)은 기본 자료형의 데이터를 래퍼(wrapper) 클래스의 객체로 만드는 과정을 의미하며,
언박싱(un boxing)은 래퍼(wrapper) 클래스의 데이터를 기본 자료형으로 얻어내는 과정을 말한다.
후킹(Hooking)
후킹(영어: hooking)은 소프트웨어 공학 용어로, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다. 이때 이러한 간섭된 함수 호출, 이벤트 또는 메시지를 처리하는 코드를 후크(영어: hook)라고 한다.
크래킹(불법적인 해킹)을 할 때 크래킹 대상 컴퓨터의 메모리 정보, 키보드 입력 정보 등을 빼돌리기 위해서 사용되기도 한다.
예를 들어 특정한 API를 후킹하게 되면 해당 API의 리턴값을 조작하는 등의 동작을 수행할 수 있다.
###
Platform
###
Context Switch
Oerator System
OS : System Resource Manager
ComputerSoftware + Computer Hardware Scratch
System Resource(시스템 자원) : Computer Hardware
- CPU, Memory,
- IO
- Network
- SSD, HDD
그래픽스 최적화
Draw Call
CPU는 현재 프레임에서 어떤 것을 그려야 할지 결정하고, 오브젝트를 렌더링 하는것을 GPU에 위임합니다. GPU는 CPU의 명령의 따라 렌더링 작업을 수행합니다. 이 과정에서 CPU가 GPU에게 오브젝트를 그리라는 명령을 호출하는게 드로우 콜입니다.
Render State
GPU는 그려야 하는 상태 정보를 담는 테이블을 가지고 있습니다 텍스처는 무엇을 사용할지, 쉐이더, 버텍스들은 무엇을 사용할 것인지 등의 상태 정보를 기억하는 것입니다. 이러한 슬롯의 테이블을 렌더 상태라고 표현합니다.
Deferred Rendering(디퍼드 렌더링)
디퍼드 렌더링은 많은 수의 실시간 라이팅 즉 동적인 라이트를 비교적 좋은 성능로 처리할 수 있습니다.실시간 라이팅이 많이 쓰이는 오늘날의 게임에서는 적합한 방식이기 때문에 게임에서 널리 쓰이고 있는 렌더링 방식 입니다.
한번에 하나의 버퍼에 레너링 하는 것이 아니라 여러 개의 버퍼에 한꺼번에 렌더링을 하는 멀티 렌더 타겟 기능이 필요합니다
멀티 렌더 타겟을 이용해서 지오메트리 버퍼 혹은 G버퍼라 부르는 여러 개의 버퍼에 불투명, 디퓨즈 스크린 스페이스 노멀, 스페큘러, 스무스니스, 스크린 스페이스 뎁스 등의 정보가 기록 됩니다.
Forward Rendering(포워드 렌더링)
포워드 렌더링은 포인트 라이팅, 포워드 쉐이딩 등의 이름으로 불립니다 포워드 라이팅은 전통적인 오브젝트 렌더링 기법입니다.
Texture(텍스처)
텍스처는 게임 렌더링에 있어서 필수적인 에셋 중 하나입니다. 텍스처는 오브젝트를 렌더링 할 떄 텍스처 매핑을 통해서 사용됩니다 텍스처 매핑은 컴퓨터 그래픽스 분야에서 가상의 3차워 물체의 표면에 세부적인 질감을 묘사하거나 컬러를 입히는 기법입니다.
텍스퍼는 주로 픽셀 쉐이더 단계에서 사용됩니다. 픽셀 쉐이더에서 텍스처의 값을 샘플링해서 최종 컬러에 반영 시키는 작업을 거치는 것입니다
ETC (Ericsson Texture Compression)
텍스처 압축방식
UPScale Sampling
화면 해상도를 낮게 렌더링 결과를 현재 화면 해상도에 맞게 늘려 렌더링 하는 방법 이렇게 렌더링을 하게되면 화면이 계산식으로 보이게 된다 (ex : 검은사막 모바일)
using UnityEngine;
using UnityEngine.UI;
public class UpScaleSampling : MonoBehavior
{
RenderTexture rt;
float ratio = 0.5f;
public void CreateRT(float scale)
{
ratio = scale;
int width = (int)((float)Screen.width * ratio);
int height = (int)((float)Screen.height * ration);
rt = new RenderTexture(width, height, 24, RenderTextureFormat.DefaultHDR);
rt.Create();
GetComponent<Camera>().targetTexture = rt;
}
}
MQTT(MQ Telemetry Transport)
경량한된 프로토콜이 필요할때 많이 쓰는 메시지 프로토콜이다. (센서장치, 라즈베리파이, 임베디드 장치, 모바일 장치)
특정이 이벤트를 발생하는 출판사와 해당 이벤트를 구독하는 “구독자” 처럼 MQTT 프로토콜에서는 브로커 서버가 ‘토픽’이라고 부르는 이벤트 발생자와 구독자를 다대다(M:N)로 중개하는 메시지 버스 역활을 합니다.
Broker Pattern
은 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용됩니다.
Broker 컴포넌트는 나머지 컴포넌트 간의 통시을 조정하는 역활을 합니다.
QOS(Quality of Service) : 서비스의 질을 보장해주는 레벨을 말한다.
- Level 0 : 메시지는 한번만 전달된다.
- Level 1 : 메시지는 최소 한번은 전달된다.
- Level 2 : 메시지는 반드시 한번 전달된다.
주제 : a/b/c/d
구독하는 법
a/b/c/d
: 토픽a/b/c/d
구독+/b/c/d
: 하위가/b/c/d
인 구독+/+/c/d
: 하위가/c/d
인 구독- a/+/c/d : 상위가
a/
하위가/c/d
인 구독 - a/+/+/d : 상위가
a/
하위가/d
구독 - +/+/+/+ : 모든 구독
wildcard
: #
이후에는 모든 계층 구조 수준을 일치시킵니다.
Sql의 *
과 같은 이무 뒤에 아무 문자 가능
- /a/b/c/d
#
: 주제를 모두 구독- a/# :
a/
밑 주제를 모두 구독 - a/b/# :
a/b/
밑 주제르 모두 구독 - +/b/c/# : 상위 주제는 아무거나
/b/c/
밑 주제를 모두 구독
Comments