인프런 - Rookies님의 강의
https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part4
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버 - 인프런 | 강의
네트워크/멀티쓰레드/운영체제 등 핵심 전공 지식을 공부하고 게임 서버를 바닥부터 만들어보면서 MMORPG 기술을 학습하는 강의입니다., MMORPG 개발에 필요한 모든 기술, C# + Unity로 Step By Step! 🕹
www.inflearn.com
데이터 처리 과정을 다음과 같이 간단하게 나타내었다.
램과 CPU간의 물리적인 거리가 멀어서, 매 메모리 갱신마다 램에 가서 데이터를 갱신하는 것은 매우 비효율적이다.
이 때 캐시 장치가 사용된다
단기기억(레지스터)과 메모장(캐시 기능)을 하는 기억장치들이 있다.
어떤 변수나 메모리에 있는 값을 조작한다고 했을 때 바로 실제 메모리에 올려서 변경하는 것이 아니라,
일단 캐시 장치에 기억을 해놓고 나중에 시간이 지나면 한번에 메모리에다 올리게 된다.
-> 중간에 정보의 변경이 일어 나더라도, 캐싱된 정보만 변경하면 되므로 더 효율적
캐싱은 다음과 같은 캐시 철학 하에 이루어진다.
1. TEMPORAL LOCALITY : 최근에 접근했던 주소값을 다시 접근하는 경향
2. SPACIAL LOCALITY : 최근 접근했던 주소값 근처의 주소들을 접근하는 경향.
하지만 이 모든것들은 "멀티쓰레드" 환경으로 들어서게 되면 문제가 생긴다.
ex) 1번 태스크에서 캐싱해놓은 정보는 2번 태스크는 모름
-> 2번 태스크가 1번 태스크에서 캐싱한 정보를 또다시 캐싱하는 문제가 생길 수 있음
'C# > C# 서버' 카테고리의 다른 글
[C#/서버] AutoResetEvent / ManualResetEvent (0) | 2023.08.20 |
---|---|
[C#/서버] SpinLock (0) | 2023.08.18 |
[C#/서버] 메모리 배리어 (0) | 2023.08.16 |
[C#/서버] 쓰레드 풀 (ThreadPool) (0) | 2023.08.16 |
[C#/서버] 쓰레드 (Thread) (0) | 2023.08.16 |