CPU에 가까울 수록 빠르지만 용량이 적다
레지스터 (가장 빠른 저장장치)
--(캐시메모리)--
메모리
보조기억장치
RAM
읽기 쓰기 가능한 휘발성 메모리
ROM
HDD, SSD, CD-ROM, USB
읽기 전용 메모리 (전원이 꺼져도 유지됨)
CPU
레지스터의 '논리' 주소를 이해하고 해당 주소의 데이터를 연산함
MMU (Memory Management Unit)
메모리 매니지먼트 유닛
레지스터 메모리에 저장된 물리 주소와 CPU가 이해하는 논리주소를 서로 치환해주는 역할을 함
CPU는 논리주소만 알고 있고, 레지스터(메모리)는 물리 주소를 알고 있다.
논리주소만으로는 메모리 내 정확한 데이터의 위치를 알 수 없다.
그 위치를 알 수 있도록 도와주는 것이 MMU이다.
CPU가 논리주소로부터 메모리 위치를 찾는 방법
1. CPU가 논리주소 전달
2. MMU가 물리 주소 변환
3. 베이스 레지스터(물리 주소를 갖는 메모리)에서 물리주소 찾기
4. 물리 주소로 특정된 메모리 위치 찾음
베이스 레지스터
실행 중인 프로그램의 가장 작은 물리 주소를 저장한다.
한계 레지스터
논리 주소의 최대 크기를 저장한다.
해당 프로그램이 베이스 레지스터에 100, 한계 레지스터에 150이 저장되어 있다면
해당 프로그램의 크기는 100 ~ 249번지의 주소 공간을 갖는다.
한계 레지스터가 없다면?
다른 프로그램의 주소 공간을 침범할 수 있음.
-> 인터럽트(트랩) 발생
게임 서비스 중 동접자수(CCU)가 늘어나면?
-> 트래픽이 과다하게 쏠린다
-> 쓰레드가 아파한다.
수평적 샤딩(Horizontal Sharding)
서버를 늘려서 여러 서버에 분할하여 데이터를 저장시킨다. (DB 분산)
4개의 서버로 분산 -> DB를 사용하기 위한 서버의 비용이 4배 + @(백업서버도 필요)
서버가 줄어드는 상황이라면,
데이터의 재분배를 진행해야 한다.
이 때, 서버에 저장된 데이터의 양에 따라 데이터 이동은 시스템에 큰 부하를 줄 수 있다.
이 문제를 어느정도 해결하는 방법이 있다.
-> 해시 링 기반 (Consistent Hashing 기법)