WinCNT

페이지 교체와 알고리즘 본문

게임 프로그래밍(학습 내용 정리)/자료구조와 알고리즘

페이지 교체와 알고리즘

WinCNT_SSS 2022. 1. 3. 14:18

페이지 교체 알고리즘은 왜 필요한가

프로그램을 실행(프로세스)시키거나 저장된 데이터를 오픈하거나

결국은 모두 메모리에 로드해야 한다

 

기준 - 실행 코드, 데이터

코드를 관리하는 메모리 영역과 데이터를 관리하는 메모리 영역은 다르다

 

메모장을 두 번 실행하면 OS가 각각 다른 프로세스 영역을 만든다

그리고 CPU 내부 메모리 영역(레지스터)에 가져와서 실제로 처리를 한다

 

레지스터도 실행(수행), 버퍼(데이터)로 나눠진다

 

하드 디스크는 느리고 크다

메모리는 프로세스 실행에 필요한 것을 자져온다

CPU는 당장 수행에 필요한 데이터를 가져온다

CPU가 메모리에서 데이터를 가져오는 데에도 시간이 걸린다

그래서 메모리보다 빠른 Cache라는 곳에

미리 필요한, 혹은 최근에 사용한 코드나 데이터를 넣어둬서

데이터를 가져오는 시간을 줄이는 방법을 채택하고 있다

프로세스와 가상 주소 공간

MMU가 캐시를 살펴보고 없으면 가져온다???

 

데이터를 가져오는 것 자체도 비용(시간이 걸림)

필요한 만큼 가져오는 기준을 어떻게 할 것인가

자주 조금씩 필요한 만큼 가져오기? 특정 크기만큼 가져와서 횟수를 줄일 것인가?

 

특정 크기 만큼 가져오는 것이 페이지 기법이라고 하고

그 때의 특정 크기를 Page Frame이라고 한다

 

프로세스에서도 페이지라고 쓰고 RAM에서도 페이지라고 쓴다

같아야 교체가 가능하기 때문

OS는 RAM을 페이지 프레임(줄여서 페이지)라고 부르는 동일한 크기의 파티션으로 분할한다(Intel의 경우 4Kb)

마찬가지로 OS는 프로세스를 블록이라는 동일한 크기의 파티션으로 분할한다

OS는 블록의 크기가 페이지 프레임크기가 같도록 프로세스를 분할한다

페이지 프레임의 크기 = 4Kb = 블록의 크기

또한 OS는 CPU에서 실행 중인 프로세스에 대해 페이지 프레임 테이블RAM에서 관리한다

페이지 프레임 테이블에는 각 프로세스 블록에 대한 매핑 정보와 RAM의 해당 페이지 프레임이 들어있다

(RAM에 로드된 프로세스의 개수만큼 페이지 프레임 테이블이 만들어짐)

 

CPU는 한 번에 하난의 프로세스만 실행하며, 실행되는 프로세스에 연관된 페이지 프레임 테이블이 활성화된다.

CPU는 활성화된 페이지 프레임 테이블에서만 메모리 주소에 Access한다

 

OS는 프로세스와 관련된 모든 블록을 로드하지 않고, 프로그램에서 사용하는 블록만 로드한다

Virtual Memory - On Demand Paging

가상 메모리 주소 공간은 OS가 부족한 메모리를 페이지 단위로 사용하는 것

 

하지만 RAM도 부족하기 때문에 OS마다 여러 기법을 도입하고 있다

예) 하드 디스크도 RAM인 것처럼 사용

사실 하드 디스크를 RAM처럼 사용한다는 것이 사실 말이 안 된다

가상 메모리 파일을 키우는 것이 현실적이다

 

게임의 exe 파일은 의외로 크지 않다

캐릭터나 그림 등의 Data가 큰 경우가 대부분

만약 Data가 너무 커서 한 번에 RAM에 올라가지 않으면 어떻게 해야 할까

Data를 하드 디스크에 페이지 파일로 만들어 두면 한번에 메모리에 올리지 않아도 된다

 

게임을 실행하면 exe나 당장에 필요한 데이터는 메모리에 로드하고

그 외의 Data들은 하드 디스크에 가상 메모리 페이지 파일로 만들어 둔다

(가상 메모리 페이지 파일은 OS가 특별히 관리함)

그리고 게임을 실행하다 필요한 데이터가 가상 메모리 페이지 파일에 있으면

RAM의 페이지와 하드 디스크의 가상 메모리 페이지 파일을 교체하여 사용한다

더티 비트

Swap In, Swap Out할 때 바뀐 게 있으면 복사하고 없으면 안 하는 등의 효율을 높이기 위해 사용하는 비트

언리얼 엔진에도 더티 비트가 있음

변경된 내용이 있을 때만 동기화하게 설정할 수 있다

매번 동기화하면 시간이 오래 걸리기 때문

 

페이지 교체 알고리즘의 종류

LRU Cache 알고리즘이 보통 많이 사용된다

자세한 것은 인터넷으로 검색해보자

 

참고 사이트

https://www.learncomputerscienceonline.com/virtual-memory/

 

Virtual Memory | What Is Virtual Memory And How It Is Managed By OS ?

Virtual Memory is a mechanism used by the operating system to run processes that exceeds the available RAM size. Operating System Memory Management.

www.learncomputerscienceonline.com

 

SSS