LISTORY

[윈도우즈 시스템 프로그래밍] 가상 메모리(2) 본문

IT/윈도우 프로그래밍

[윈도우즈 시스템 프로그래밍] 가상 메모리(2)

LiStoryTeller 2018. 10. 14. 22:37


뇌를 자극하는 윈도우즈 시스템 프로그래밍 책 관련 강의 정리이다.


지난 시간에 이어 가상메모리 강의 정리를 이어가겠다.


YouTube 주소 : 가상메모리(2)



가상메모리



가상메모리는 프로그래머 관점에서 보면 혼란.. cpu 관점에서 보아야 한다.


cpu는 우리 프로그래머를 대변해준다. 그냥 요청을 대신 해줄뿐이다.


실제로 메모리를 적절히 활용하는 것은 MMU의 역할이다.



SW적으로 메모리는 블럭 단위 이동을 한다. 이것을 페이지라고 한다.


물리메모리 관점에서 블럭을 가르켜 페이지 프레임이라 한다.


페이지와 페이지 프레임의 크기는 일치


왜? 페이지 단위로 데이터를 할당하고 페이지 단위로 데이터를 해지하기 때문이다.



느린 속도의 개선



저번 시간에 이어 느린 속도를 개선하기 위한 방법에 대해 설명하겠다.


메모리 공간이 부족하여 RAM 메모리와 하드디스크의 메모리 둘 다 사용하는 것이 가상메모리 기법이라 하였는데,


순수하게 그대로 사용했을 경우, RAM으로 하는 메모리 접근은 빠르고 하드디스크로 하는 메모리 접근은 매우 느려 


속도가 왔다갔다 할 것이다. 이렇게 되서는 안된다.


그래서 하드디스크와 램의 관계를 캐시관계로 구성한다.


하드디스크에 실질적인 2기가에 대한 전체 그림을 두고 필요한 것은 RAM에 둔다. 마치 캐시와 RAM 관계와 같다.


어떤식으로 캐시하는지 보자


이미 RAM의 공간이 가득 찬 상태에서 새로운 4~8k를 할당하겠다고  CPU가 명령을 내렸다.


그럼 RAM에 일부를 빼야한다. 근데 어떤식으로 메모리를 빼야할까?


식당으로 따지면 음식을 거의 다 먹은 사람일 것이다.


마찬가지다. 캐시 알고리즘에서 LRU라고 사용된지 오래된 것들은 빼고 다시 새로운 데이터를 저장하는 알고리즘이 있다.


즉, 가장 오래 사용 안된 것을 하드디스크에 저장하고  그 공간에 4~8K 할당하는 것이다.


만일 다시 8~12K 할당된 것을 CPU가 요구하면 어떻게 해야할까?


그럼 다시 RAM의 1~4번중 사용 빈도가 가장 적은 것을 하드디스크에 두고, 그 공간에 원하는 데이터를 가져온다.


여기서 하드디스크는 데이터 저장을 파일로 하는데,


프로세스의 가상메모리 공간 확장을 위해 생성한 파일을 SWAP 파일이라고 한다.



둘 이상의 프로세스와 가상메모리


이제 SWAP 파일이 두개 이상이 있어도 전혀 문제가 되지 않는다.




만일 세개의 프로세스 만들었을 경우엔 12기가의 메모리가 필요하다. 이는 각각을 스왑파일에 저장하므로 가능한 것이다.


현재 A 프로세스 실행 그럼 RAM은 A 프로세스와 일체가 되어 메모리 공간을 구성한다.


근데 B 프로세스 구성 그럼 RAM은 B 프로세스와 일체가 되어 메모리 공간을 구성한다.


이렇게 프로세스가 이동할 때 마다 RAM에 있는 데이터가 비워지고 채워지고 해야하는데 사실 이건 부담스러운 작업이기도 하다.


이 작업은 컨텍스트 스위칭의 범주에 포함된다.



Comments