일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Virtual Byte
- C언어
- 프로그래밍 기초
- Toon Shader
- VR
- Private Bytes
- Cartoon Rendering
- working set
- Rim Light
- URP
- Specular
- ASW(Application SpaceWarp)
- 3d
- Cell Look
- OculusMotionVectorPass
- Cell Shader
- 작업 집합
- AppSW
- Three(Two) Tone Shading
- 가상 바이트
- 메모리 누수
- 벡터
- URP로 변경
- ColorGradingLutPass
- Windows Build
- 개인 바이트
- 게임 수학
- Today
- Total
WinCNT
키워드 정리 본문
Variables and Values
Keyword - 메모리와 주소, 주소의 이름, 코드 블록과 데이터 블록
변수(Variables) - 메모리에 값을 저장하고 그곳으로 접근하기 위해 이름을 부여함
값(Values) - 메모리에 저장되는 값
PowerShell의 format-hex로 보면 값을 볼 수 있다
Constant and Literal
Keyword - 변수, 값, 이름이 없는 주소, 이름이 있는 주소
상수(Constant) - 변하지 않는 변수
리터럴(Literal) - 변하지 않는 데이터
상수는 변수명을 가지고 있기에, 즉 주소에 이름이 있기 때문에, 변수명으로 접근하여 사용할 수 있다
반면, 리터럴은 데이터 그 자체이므로, 즉 주소에 이름이 없기 때문에, 접근할 수단이 없다
Class, Object, Instance
Keyword - 멤버 변수와 멤버 함수, 객체의 라이프 타임
클래스: 클래스는 코드의 영역, 구조체와 같이 TYPE(멤버 함수도 있음)
오브젝트: 클래스에 기초해 만들어진 객체(메모리 적재 여부는 상관 없음), 변수라고 안 하고 객체라고 함
인스턴스: 메모리에 올라간 오브젝트
오브젝트가 선언되서 실제로 메모리에 올라가는 것을 객체의 라이프 타임(의 시작)이라고 한다
Function, Interface, Method
Keyword - 클래스, 모듈의 기능
함수: 기능을 구현
인터페이스: 유저가 사용하기 위해 외부에 노출되어 있는 함수(Windows API 등)
메소드: 클래스의 멤버 함수를 구분하기 위한 단어
함수 중에는 모듈이 있는데 이건 기능을 담당한다.
Procedural Programming
Keyword - 순서도
절차 지향 프로그래밍
Object-Oriented Programming
Keyword - 모듈화, 클래스 다이어그램
객체 지향 프로그래밍
단일 책임 원칙, 개방-폐쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리 원칙, 의존성 역전 원칙
Functional Programming
함수형 프로그래밍
Component Based Design
컴포넌트 기반 설계
최근 상용 게임 엔진은 컴포넌트 기반의 설계가 대부분이다
Preemptive vs Non-preemptive
Keyword - OS, CPU, 프로세스, 작업 스케줄링
Blochking, Non-Blocking
Keyword - 시스템 콜
블로킹 vs 논블로킹은 처리되어야 하는 작업이, 전체적인 작업의 흐름을
막느냐(Blocking), 안 막느냐(Non-Blocking)에 대한 관점이다
이는 I/O작업에서도 주로 볼 수 있다
I/O 작업은 User Level(어플리케이션)에서 직접 수행할 수 없다
실제 I/O작업은 Kernel Level(운영 체제)에서 일어나는 과정이다
따라서 유저 프로세스(어플리케이션)은 커널(운영 체제)에게 I/O 작업에 대한 요청을 해야 하며,
이를 위해 어플리케이션은 시스템 함수를 호출(Sytem Call)한다
이 때, 어플리케이션의 대기 여부에 따라 2가지의 모델이 존재한다.
Blocking I/O Model
요청한 I/O 작업이 끝날 때까지 어플리케이션이 대기하는 모델
Non-Blocking I/O Model
시스템 콜을 하자마자 바로 결과를 반환하여, 어플리케이션이 다른 처리를 하게 하는 모델
※시스템 호출(System Call, 간단하게는 syscall)
운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스
Synchronous vs Asynchronous
Keyword - 리턴 시점, 리턴 결과
동기란 작업이 동시에 수행되거나 어떠한 작업이 끝나자마자 다른 작업이 수행되는 것을 말한다.
반대로 비동기란 각각의 작업이 별도의 시작, 종료 시간을 갖는 것을 말한다.
동기-논블로킹으로 A라는 작업에서 B 작업에 작업 결과를 요청했다면,
A는 B의 작업이 끝났는지 수시로 작업 결과를 조회할 것이다.
한편 비동기-논블로킹에서는 A가 B를 수시로 조회하는 대신
(주로 콜백을 설정해서)B의 작업이 끝났다면 A에 그 사실을 알려서
작업 결과를 한 번만 조회하도록 할 것이다
Non-blocking vs Asynchronous
Keyword - 메시지 기반의 비동기 아키텍처
넌블로킹, 비동기
넌블로킹 - 숙제를 시키고 한다고 대답을 함(실제 하는지 안 하는지는 모름)
비동기 - 숙제가 끝나고 완료 여부를 알려줌
SendMessage, PostMessage
메시지에 대한 관리는 OS가 한다
SendMessage는 윈도우 프로시저(WinProc)으로 바로 보낸다
Dispatch 불필요, 바로 실행, WinProc를 바로 실행시키는 것은 아님
PostMessage는 호출된 메시지가 메시지 큐에 들어가고, 윈도우 프로시저에서 이 메시지를 처리함
WM_DESTROY는 OS가 발생시킴
WM_QUIT는 유저가 제어 가능
참고 사이트
https://docs.microsoft.com/en-us/windows/win32/winmsg/using-messages-and-message-queues
https://asfirstalways.tistory.com/348
SSS
'게임 프로그래밍(학습 내용 정리) > 컴퓨터 개론' 카테고리의 다른 글
Memory and Object Pool (0) | 2022.01.10 |
---|---|
메모리와 운영체제 (0) | 2021.11.09 |
프로그램이란 무엇인가 (0) | 2021.10.18 |
컴퓨터 개론 - 마이크로 아키텍처 (0) | 2021.10.12 |
컴퓨터 개론 - 메모리 (0) | 2021.10.12 |