본문 바로가기
Computer Science

가상 메모리

by PROGRAMMER_황금돼지코 2023. 3. 26.
반응형

개요

가상 메모리는 컴퓨터 시스템에서 실행 중인 프로세스가 필요로 하는 메모리 공간이 실제 메모리 크기보다 큰 경우에 사용되는 기법입니다. 이 개념의 핵심은 실행 중인 프로세스가 참조하는 주소를 메모리에서 사용하는 주소와 분리하는 것입니다. 또한, 현재 필요한 일부만 메모리에 적재함으로써 전체 프로그램 및 데이터를 메모리에 저장하지 않고도 프로세스의 실행이 가능하게 합니다. 이때, 실행 프로세스가 참조하는 주소를 가상 주소라고 하며, 이와 달리 실제 메모리에서 사용하는 주소를 실주소 또는 물리적 주소라고 합니다. 또한, 실행 프로세스가 참조하는 가상 주소의 범위를 프로세스의 가상 주소 공간이라 하며 이를 V라고 표현합니다. 그리고 특정 컴퓨터 시스템에서 사용 가능한 실제 메모리 주소의 범위를 실제 주소 공간 R이라고 합니다. 실행 중인 프로세스는 가상 주소만을 참조하지만, 이 주소는 메모리에서 실행되어야 합니다. 그래서 가상주소와 실제 메모리 주소 간의 변환 작업이 필요합니다. 이 변환 작업을 "사상(mapping)"이라 하며, 변환 함수로 표시됩니다. 이러한 사상 작업은 운영체제가 수행하므로 사용자는 가상주소와 실주소의 사상에 대해 걱정할 필요가 없습니다. 그러나 이러한 사상 작업이 느리게 수행된다면 컴퓨터의 실행 성능이 저하될 수 있습니다. 따라서 가상주소와 실제 메모리 주소를 연관시키기 위한 다양한 방법이 개발되어 왔습니다. 프로세스가 실행되는 동안 가상주소를 실주소로 변환하는 절차를 동적 주소 변환(Dynamic Address Translation, DAT)이라고 합니다. 이 방법은 프로세스의 가상주소 공간에서 연속적인 속성이 필요하지 않으며, 사용자는 프로그램과 데이터가 어디에 위치할지에 대해 걱정할 필요가 없습니다. 만약 사용자의 가상주소 공간이 실제 메모리 공간보다 크고 여러 사용자가 메모리를 공유하면서 효율적인 다중 프로그래밍 시스템을 구축하려면 프로그램과 데이터를 용량이 큰 보조기억 장치에 저장하는 방법이 필요합니다.

 

블록 단위 주소 변환

동적 주소 변환(Dynamic Address Translation, DAT) 방법은 가상 메모리에서의 위치를 나타내는 주소 변환 사상표(address translation mapping table)를 유지해야 합니다. 그러나 항목별로 주소 변환을 수행하면 정보의 양이 많아져서 가상 메모리를 효율적으로 구현할 수 없습니다. 이를 위해 정보를 블록 단위로 분류하여 각 블록이 주기억장치의 어디에 위치하는지만을 관리합니다. 블록 사상 시스템의 주소는 두 부분으로 구성되며, 특정 항목을 참조하기 위해 프로그램은 그 항목이 들어 있는 블록과 그 블록의 시작 부분으로부터 항목까지의 변위(displacement)를 지정합니다. 이를 순서쌍 (b, d)로 표현합니다. 블록의 크기가 동일할 때 이를 페이지(page)라 하며, 이러한 가상 메모리 구성을 페이징(paging) 기법이라고 합니다. 블록의 크기가 다를 때는 세그먼트(segment)라 하며, 이러한 가상 메모리 구성을 세그먼테이션(segmentation) 기법이라고 합니다. 두 기법을 결합하여 고정된 크기의 페이지로 이루어진 다양한 크기의 세그먼트를 구현하는 시스템도 있습니다. 블록의 크기가 커질수록 사상 기법이 필요로 하는 기억장치의 크기가 작아지지만, 블록을 보조기억장치에서 주기억장치로 이동하는 데 필요한 전송시간이 길어지며, 메모리를 많이 소모하고, 프로세스의 수를 제한할 수 있습니다.

 

페이지 호출기법

주기억장치의 관리를 위한 중요한 방법 중 하나인 페이지 호출 기법은 요구 페이지 호출과 예상 페이지 호출 두 가지 방법이 있다. 요구 페이지 호출은 페이지가 필요해지면 주기억장치로 옮겨지는 방식이고, 예상 페이지 호출은 미리 필요한 페이지를 예측하여 미리 주기억장치에 옮겨 놓는 방식이다. 이러한 페이지 호출 기법은 프로그램 수행 속도를 높이고 메모리 공간을 효율적으로 활용할 수 있게 한다. 그러나 예상 페이지 호출 방법은 불필요한 페이지를 미리 적재할 수도 있어서 오히려 성능에 악영향을 끼칠 수 있다. 따라서 적절한 페이지 호출 전략을 선택하는 것이 중요하다.

 

페이징 교체기법

페이징 기법에서는 일반적으로 모든 페이지 프레임이 사용 중인 상태이다. 이 경우, 운영체제는 메모리에 적재되어야 할 페이지를 위해 적절한 교체 대상 페이지 프레임을 선택하여 해당 페이지를 보조기억장치에 보관한 후 새로운 페이지를 적재한다. 최적의 성능을 얻기 위해서는 교체되어야 할 페이지가 그 이후로 가장 오랫동안 사용되지 않을 페이지를 선택하는 최적화 원칙(principle of optimality)을 따르면 된다. 그러나 이는 이론적으로는 최적이지만, 미래를 예측할 수 없기 때문에 실제로는 불가능하다. 따라서 이 기법은 다른 페이지 교체 기법과 비교하여 최적성을 평가하는 데 사용된다. 페이지 교체 기법을 선택할 때는 교체 대상을 선택하는 시간 및 공간 오버헤드가 적은 방법을 선택하는 것이 좋다. 또한 효율적인 동작을 위해 교체되지 않아야 하는 페이지들도 있다. 예를 들어 페이징을 위한 슈퍼바이저 코드 영역, 커널에 속하지 않은 보조기억장치 드라이버 영역, 시간을 맞춰 동작해야 하는 코드 영역, DMA 등에 의해 입출력장치로부터 직접 데이터가 교환되어야 하는 데이터 버퍼 영역 등이 있다.

반응형

'Computer Science' 카테고리의 다른 글

순차접근 저장장치  (0) 2023.03.26
입출력 처리 유형  (0) 2023.03.26
데이터베이스 관리 시스템(DBMS)의 개요 및 목적  (0) 2023.03.26
데몬  (0) 2023.03.26
운영체제의 부팅  (0) 2023.03.26

댓글