네트워크 이론 및 용어 설명
주요 용어 설명패킷(Packet) : 인터넷을 통해 전송되는 작은 데이터 단위 큰데이터가 있더라도 작게 나누어서 보내는게 규칙이다(쉽게 택배물품) IP 주소(IP Address) : 각 장치에 할당된 고유한 식별자이며 데이터를 올바른 목적지로 라우팅하는데 사용(쉽게 택배주소) 스위치 : 다른 디바이스를 연결하고 네트워크 내에서 노드 간 통신을 관리하여 데이터 패킷이 최종 목적지에 도달할 수 있도록 하는 디바이스라우터 : 서로 다른 네트워크 간에 데이터 패킷을 안내하는 장치 포트(Port) : 장치에서 실행 중인 어플 또는 서비스를 식별하는데 사용 소켓(Socket) : IP주소와 포트 번호의 조합으로, 특정 통신의 끝점을 나타냄, 소켓은 장치 간 연결을 설정하고 어플 간의 데이터를 전송하는데 사용한다.프..
2024.07.15
4. Lock과 Deadlock
Lock이란?멀티 쓰레드 환경에서 여러 스레드가 공유 자원(힙,데이터)에 안전하게 접근 할 수 있도록 동기화를 제공하는 메커니즘이다.   사용방법Lock 획득 : 임계 영역에 진입하기 전에 Lock을 획득한다. 이과정에서 다른 스레드가 동일한 자원에 접근하지 못하게 된다.임계영역 실행 : Lock을 획득한 스레드는 임계 영역에서 작업을 수행한다. 이 때 다른 스레드는 Lock을 획득하기 위해 대기 상태에 있다.Lock 해제 : 임계 영역에서의 작업이 완료되면 Lock을 해제한다. 이과정에서 다른 스레드들이 Lock을 얻어서 진입할 수 있게 된다.Lock의 장점동기화 : 여러 스레드 간의 공유 자원에 대한 동시 접근을 제어하여 데이터의 일관성을 유지할 수 있다.데드락 방지 : 잘못된 Lock 사용은 데드락..
2024.07.11
3. 메모리 베리어
메모리 베리어란?컴퓨터 시스템에서 다중 스레드 또는 다중 프로세스가 동시에 접근할 수 있는 공유 메모리의 일관성을 유지하기 위해 사용되는 메커니즘메모리 접근 순서와 관련된 명령들을 명확히 정의함으로써, 다중 스레드 간의 데이터 접근 순서를 제어하고 최신데이터를 보장 한다.  메모리 베리어의 목적순서화 : 다중 스레드가 메모리에 접근하는 순서를 명확히 정의하여 일관된 데이터의 접근을 보장가시성 보장 : 한 스레드가 수행한 메모리의 변경 사항이 다른 스레드에게 즉시 보이도록 한다. 메모리 베리어 종류Full Memory Barrier(ASM MFENCE, C# Thread.MemoryBarrier) : Store/Load 둘다 막는다. Store Memory Barrier (ASM SFENCE) : Stor..
2024.07.11
no image
2. 캐시 이론
캐시의 등장 배경CPU의 처리속도는 급격히 증가했지만 메모리의 접근하는 속도는 CPU처리속도에 비해 늘어나지 못하였다메모리보다 빠르고 CPU보다 느린 캐시를 메모리와 CPU 사이에 위치하여 데이터 접근 시간을 줄인다.데이터를 갱신할때 바로 메모리에 갱신하는게아니라 캐시메모리에 기입을 한뒤 메모리에 올라간다. 캐시 철학Temporal Locality(시간 지역성)최근에 접근한 데이터에 또 접근할 가능성이 높다.Spacial Locality(공간 지역성)한번 접근한 데이터로부터 주변에 데이터를 또 접근할 가능성이 높다.멀티 쓰레드 환경에서는 서로 갖고있는 데이터가 달라 문제가된다. 쓰레드 마다 각각 코어로 실행되고있고자신만에 캐시를 갖고있는대 다른 쓰레드에서 데이터를 건들이면 최근 데이터를 갖고오는게 아닌 ..
2024.07.10
1. 멀티쓰레드 개론
멀티쓰레딩(Multi Thread)란?하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행능력을 향상시키는 것을 멀티쓰레딩이라고 한다.쉽게 얘기 하면 하나의 프로그램을 동시에 여러일을 수행할 수 있도록 해주는것 멀티 쓰레드를 사용하는 이유는?프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어든다.쓰레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 힙 영역을 이용하여 데이터를 주고 받을 수 있다.한번에 다양한일을 동시 다발적으로 실행이 가능하다.멀티 프로세스와 멀티 쓰레드의 주요 차이멀티 프로세스 : 데이터,힙,스택 영역을 모두 비공유멀..
2024.07.10
no image
1. 서버 개론
서버란?-다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행중인 프로그램 비유하자면 영업중인 식당과 유사하다손님이 올수 있도록 식당을 열고 대기중인 상태이며손님이 오면 식당 메뉴/정책에 따라 서비스를 제공한다. 서버의 종류는 크게 2가지로 나눌수있다Web Server(HTTP Server)비유하자면 테이크 아웃 포장 전문 식당실시간이 아닌 드물게 정보를 요청/갱신 한다.식당에서 손님한테 먼저 접근할 일은 없다. (필요할때만 요청/갱신)주문 후 손님이 바로 떠나면 손님의 상태를 당분간 잊고 지낸다.Web Server는 단순히 게임에 국한되지 않고 웹 서비스를 만드는 데 사용한다.(ex. 구글,아마존,네이버 등등)Game Server요청/갱신 횟수가 잦고 많다.실시간 Interaction이 필요하다.언..
2024.07.10
no image
다양한 유니티 Batching 최적화 기법들
DrawCall 이란?-그려야할 데이터를 가지고 있는 CPU가 GPU에게 그려달라는 요청을 하는것 SetPass Call- Matarial,Shader 함께 묶어 놓은 그룹을 SetPass라 하며 그걸 CPU가 GPU에게 넘기는것을 Batch라고함  Tip- 최대한 Batch수를 줄여서 최적화를 할수있다.- Frame Debuger를 통해 DrawCall을 확인할수있다. 최적화 방법들1. 동적 배칭(Dynamic Batching)- 동적으로 움직이는 오브젝트들끼리 Batching 하는 기능- 동일한 머테리얼을 사용하고 특정 조건들을 만족하는 다이나믹 오브젝트들은 자동으로 배칭이 이루어짐- Sprite Render는 기본적으로 Batching 대상이며 Sprite Atlas로 편리하게 Batching 가능..
2024.06.19
Sprite 최적화 기법 Sprite Packing
사전적인 의미로는 하나로 뭉치는것을 뜻한다. 대표적으로 Sprite Packing이 있는대 드로우콜이란 CPU가 GPU에게 렌더셋팅을 보내는걸 콜하는 뜻한다. 드로우콜이 쌓이면 쌓일수록 전체적인 성능이 저하한다. 모바일에서는 드로우콜이 최대 100개이하로 유지하려고 한다. 100개 이상부터는 퍼포먼스가 굉장히 떨어진다. 그러므로 드로우콜을 줄여야하는 최적화를 해야한다. 개별적인 Sprite를 하나로 합치는 과정을 진행해야한다. 대표적으로 Sprite Atlas를 이용한다.
2023.12.24
텍스쳐(Texture) POT 와 NPOT
POT (Power of Two) 텍스쳐 텍스쳐의 가로/세로 크기가 전부 2의 승수인 텍스쳐를 의미한다 NPOT(Non - Power Of Two) 텍스쳐 텍스쳐 가로/세로 둘중 크기가 하나라도 2의 승수가 아닌 텍스쳐 우리의 컴퓨터는 전부다 바이너리로 (이미지,문자,오디오)등등을 바이너리숫자로 이루어져있다. 컴퓨터는 2의 승수를 다루는것이 쉽게 되있다. Texture는 대채로 압축해서 쓴다 안그러면 메모리할당이 크기 때문이다. 텍스쳐의 사이즈를 2의승수로 맞춰주면 해당 텍스쳐를 압축/압축을 푸는데에 시간이 많이걸리지않는다. 2의 승수가 아니면 압축이 불가능한 경우도 있다. 2의 승수가 아닌 텍스쳐들은 사용하려고 할때 해당 GPU는 해당텍스쳐가 가장 가까운 2의승수 사이즈를 찾아서 그대로 복사한다 그러한..
2023.12.24