Uncategorized

1 2 4 가상 메모리 (Virtual Memory) 페이징 단편화 세그먼트

Written by

🚀 **이 문서는 보다 쉽게 이해할 수 있도록 정리되었습니다.**

가상메모리의 개념
컴퓨터 시스템의 메모리는 그 한계가 있다. 그 한계를 극복하려는 시도 중에 하나가 바로 가상 메모리이다. 가상 메모리를 물리적 메모리의 한계를 극복하여 하드디스크의 일부를 메모리처럼 사용하는 것이다.

가상 메모리의 정의
가상 메모리라는 것은 물리적 메모리보다 보다 많은 메모리를 프로그램에서 사용할 수 있도록 디스크의 일부를 메모리처럼 사용하는 논리적 메모리이다. 아래의 그림과 같이 표현 할 수 있다.

한계를 갖는 물리적 메모리 공간 환경에서 여러 개의 응용 프로그램이 동시에 수행되어야 한다. 이미 개념을 이해 했다면 설명을 위해서 사용된 ‘동시’라는 단어가 시분할 컴퓨터에서 갖는 의미를 알 수 있을 것이다. 열심히 번갈아 가면서 CPU가 수행하고 있는 것이다.
이때 CPU는 물리적 메모리를 접근하여 프로그램을 수행시킨다. 그 물리적 메모리를 한계가 있고 고가의 디바이스이다. 무조건 물리적 메모리를 늘려서 효율을 늘리는 것은 비용대비 한계가 있는 것이다. 이를 위해서 나온 개념이 ‘가상 메모리’이다.
사용자에게 주기억장치보다 더 큰 용량의 가상기억공간을 제공하는 기억장치관리기법이다. 디스크 상에 위치한 보다 큰 기억장치를 주기억장치처럼 사용한다. 프로세스 참조주소(가장주소)를 실제 주기억장치에서 사용 가능한 주소(실주소)와 분리된다. 사용자의 프로그램을 여러 블록으로 분할하여 주기억장치에 적재, 실행한다. 프로그램의 분할과 적재 알고리즘 필요하다.

가상 주소의 개념
이 가상 메모리 개념을 지원하기 위해서 나온 개념이 ‘가상 주소(Virtual Address)’이다. 실제 메모리 주소가 아닌 가상 메모리 영역을 가리키는 주소를 말한다. 논리적 주소라고도 표현한다. 프로그램은 논리적 주소인 가상 주소를 사용하지만 실제 CPU는 물리적 주소에 접근을 하여야 한다. 이때 물리적 주소와 논리적 주소 사이에 상호 변환이 가능해야 한다. 변환이 가능한 테이블을 운영체제가 제공해준다. 운영체제는 프로그램이 엉뚱한 물리적 주소에 쓰려는 경우를 막고 응용 프로그램간의 메모리 충돌이 일어나지 않도록 해준다.

가상 기억 장치 관리 기법
물리적 메모리에 데이터를 체계적으로 적재하기 위해서 일정한 크기로 나누어 저장/로드를 한다. 이때의 기준이 하나의 블록을 페이지라고 한다. 가상 메모리에서는 페이지라 하고 접근하고자 하는 데이터가 있는 경우 히트라고 하며 없는 경우는 페이지 폴트(Page Fault) 혹은 Miss라고 한다.
캐쉬, 가상 메모리 모두 중간 버퍼 역활을 하는 메모리여서 개념적으로 비슷한 부분이 많다.
교체 방식, 페이지 폴트 등이 유사한데, 캐쉬의 경우 접근 단위를 블록 또는 프레임으로 표현하고 가상 메모리의 경우는 ‘페이지’라고 한다.

가상 기억 장치 분할 기법 ‘페이징 기법’
페이징 기법에 대해서 설명하기 위해서 고전의 방식으로 프로그램이 물리적 메모리를 접근하는 상황을 생각해보자. 프로그램 수행하기 위해서는 프로그램의 일부를 실제 메모리에 올리고 그 메모리에 올라와 있는 영역의 명령어를 CPU가 순차적으로 수행해야 한다. 이때 프로그램의 일부가 메모리가 올라가 있어서 이는 프로세스라고 말할 수 있다. 이런식으로 프로그램의 일부를 메모리에 올려놓고 프로그램을 수행하는 것은 구현은 쉬울지 모르나 생각해보면 문제점을 갖고 있다. 다른 프로그램이 수행되려고 하면 이 전체 메모리를 다시 내려야 하는 상황이 발생되는 것이다.

메모리에 올라와 있는 프로그램이 다 수행 또는 퀀텀타임 후에 다른 프로그램에게 CPU사용권을 넘길 경우 메모리에서 내려가야 하는 상황에서 Context Switching과 함께 다른 프로그램이 메모리에 일부가 적재된다. 그리고 나서 다시 이와 같은 작업이 반복될 때에는 프로그램의 수행부의 위치가 바뀔 수 있지만 그 범위가 0k-30k에서 10k-42k로 될 수 있다. 이때 아까 메모리에 10k부분이 남아 있었더라면 메모리를 다시 올릴 필요 없이 수행이 가능했을 것이다. 이와 같은 메모리의 비효율적인 사용에서 점차 진화하는 것이 메모리의 효율적 사용을 위한 방

Leave a Comment