기술(IT)

가상기억장치 (Virtual memory)

2019. 10. 13.
728x90

컴퓨팅에서 가상 메모리는 메모리의 사용자에게 착각을 일으키는특정 시스템에서 실제로 사용할 수 있는 스토리지 자원의 추상화를 제공하는 메모리 관리 기법이다. 프로세스 또는 태스크에서 볼 수 있는 주 저장소는 연속 주소 공간 또는 인접 세그먼트의 집합으로 나타난다. 컴퓨터의 운영 체제는 하드웨어와 소프트웨어를 조합하여 가상 주소라고 하는 프로그램에서 사용하는 메모리 주소를 컴퓨터 메모리의 물리적 주소에 매핑한다.  운영 체제는 가상 주소 공간과 가상 메모리에 대한 실제 메모리의 할당을 관리한다. 흔히 메모리 관리 단위 또는 MMU라고 하는 CPU의 주소 변환 하드웨어는 가상 주소를 자동으로 물리적 주소로 변환한다. 운영 체제 내의 소프트웨어는 실제 메모리의 용량을 초과할 수 있는 가상 주소 공간을 제공하기 위해 이러한 기능을 확장할 수 있으며, 따라서 컴퓨터에 물리적으로 존재하는 것보다 더 많은 메모리를 참조할 수 있다.

가상 메모리의 주요 이점은 애플리케이션에서 공유 메모리 공간을 관리하지 않아도 되고, 메모리 분리로 인해 보안이 강화되며, 페이징 기술을 사용하여 물리적으로 사용할 수 있는 메모리보다 개념적으로 더 많은 메모리를 사용할 수 있다는 것이다. 가상 메모리의 거의 모든 현재 구현은 가상 주소 공간을 연속된 가상 메모리 주소 블록인 페이지로 나눈다. 현대 시스템의 페이지는 보통 최소 4킬로바이트의 크기인데, 가상 주소 범위나 실제 메모리의 양이 큰 시스템은 일반적으로 더 큰 페이지 크기를 사용한다.

페이지 테이블
페이지 테이블은 응용 프로그램에서 볼 수 있는 가상 주소를 하드웨어에서 명령을 처리하기 위해 사용하는 물리적 주소로 변환하는 데 사용된다. 이러한 특정 번역을 처리하는 하드웨어는 흔히 메모리 관리 장치로 알려졌다. 페이지 테이블의 각 항목에는 해당 페이지가 실제 메모리에 있는지 여부를 나타내는 플래그가 들어 있다. 실제 메모리에 있는 경우 페이지 테이블 항목에는 페이지가 저장되는 실제 메모리 주소가 포함된다. 하드웨어가 페이지를 참조할 때 페이지의 페이지 테이블 항목에 현재 실제 메모리에 있지 않다고 표시되면 하드웨어는 페이지 장애 예외를 발생시켜 운영 체제의 페이징 감독자 구성요소를 호출한다. 시스템에는 전체 시스템에 대해 하나의 페이지 테이블, 각 애플리케이션과 세그먼트에 대해 별도의 페이지 테이블, 큰 세그먼트를 위한 페이지 테이블 트리 또는 이들의 일부 조합이 있을 수 있다. 페이지 테이블이 하나만 있는 경우, 동시에 실행되는 다른 애플리케이션은 단일 범위의 가상 주소에서 서로 다른 부분을 사용한다. 페이지 또는 세그먼트 테이블이 여러 개 있는 경우 가상 주소 공간과 별도의 페이지 테이블을 가진 동시 애플리케이션이 서로 다른 실제 주소로 리디렉션된다.

페이징 감독자 (Paging supervisor)
운영 체제의 이 부분은 페이지 테이블을 생성하고 관리한다. 하드웨어가 페이지 장애 예외를 제기할 경우, 호출 감독자는 보조 스토리지에 액세스하여 페이지 장애를 초래한 가상 주소를 가진 페이지를 반환하고, 페이지 테이블을 업데이트하여 가상 주소의 실제 위치를 반영하고, 변환 메커니즘에 요청을 다시 시작하도록 지시한다. 모든 물리적 메모리가 이미 사용 중인 경우, 페이징 감독자는 스왑 인 페이지를 보관하기 위해 기본 저장소의 페이지를 확보해야 한다. 감독자는 어떤 페이지를 자유롭게 사용할지 결정하는 데 가장 최근에 사용한 것과 같은 다양한 페이지 교체 알고리즘 중 하나를 사용한다.

 

스래싱 (Thrashing) 
호출과 페이지 도난을 사용할 경우 컴퓨터가 페이지를 백업 저장소로 주고받는 데 시간이 너무 오래 걸려 유용한 작업이 느려지는 스래싱이라는 문제가 발생할 수 있다. 작업의 작업 세트는 유용한 진행을 위해 메모리에 있어야 하는 최소 페이지 집합이다. 스래싱은 모든 활성 프로그램의 작업 세트를 저장할 수 있는 메모리가 부족할 때 발생한다. 실제 메모리를 추가하는 것이 가장 간단한 대응이지만 애플리케이션 설계, 스케줄링 및 메모리 사용을 개선하는 것이 도움이 될 수 있다. 또 다른 해결책은 시스템의 활성 작업 수를 줄이는 것이다. 이를 통해 하나 이상의 프로세스 전체 작업 세트를 교체하여 실제 메모리에 대한 수요를 줄일 수 있다. 

고정된 페이지 (Pinned pages)
어떤 페이지는 짧은 시간 동안 고정될 수도 있고, 어떤 페이지는 오랫동안 고정될 수도 있고, 또 어떤 페이지는 영구적으로 고정될 필요가 있을 수도 있다. 운영 체제에는 고정되어 있는 메모리 영역이 있다(보조 스토리지로 전환된 적이 없음). 사용되는 다른 용어는 잠금, 고정 또는 유선 페이지 입니다. 예를 들어 인터럽트 메커니즘은 I/O 완료 및 페이지 장애와 같은 핸들러에 대한 일련의 포인터에 의존한다. 이러한 포인터를 포함하는 페이지나 호출하는 코드가 페이지 가능했다면 인터럽트 처리는 특히 페이지 장애의 경우 훨씬 더 복잡하고 시간이 많이 소요될 것이다. 따라서, 페이지 테이블 구조의 일부 부분은 페이지를 표시할 수 없다. 예를 들어 다음과 같다. 페이지가 있는 2차 저장 장치의 호출 감독자 코드와 드라이버는 영구적으로 고정되어야 한다. 그렇지 않으면 필요한 코드를 사용할 수 없기 때문에 호출이 작동하지 않을 것이기 때문이다. 시간 의존적 구성요소는 가변 페이징 지연을 방지하기 위해 고정될 수 있다. 직접 메모리 접근 또는 I/O 채널을 사용하는 주변 장치가 직접 접근하는 데이터 버퍼는 I/O 작업이 진행되는 동안 버스의 메모리 마력이 있는지 여부에 관계없이 물리적 메모리 주소에 위치한 데이터 버퍼를 찾을 수 있기 때문에 I/O 작업이 진행되는 동안 고정된 페이지에 있어야 한다.


가상현실 작업 (Virtual-real operation)
이 모드에서 모든 가상 주소는 동일한 실제 주소에 해당한다. 이 모드는 인터럽트 메커니즘, 이전 시스템의 페이징 감독자 및 페이지 테이블 및 비표준 I/O 관리를 사용하는 애플리케이션 프로그램에 사용된다. 

세그먼트 가상 메모리 (Segmented virtual memory)
분할과 페이징은 각 세그먼트를 페이지로 나누어 함께 사용할 수 있다. 세그먼트는 해당 공간에 들어가고 나올 수 있으며, 페이지는 메인 메모리에서 페이지로 이동할 수 있으며, 두 가지 수준의 가상 메모리를 제공할 수 있으며, 운영 체제가 페이징만 사용하는 경우는 거의 없다.  페이징 시스템과 분할 시스템 간의 차이는 메모리 분할에만 있는 것이 아니라, 메모리 모델 의미학의 일부로서 사용자 프로세스에서 분할을 볼 수 있다. 따라서 하나의 큰 공간처럼 보이는 기억 대신 여러 개의 공간으로 구조화된다. 이 차이는 중요한 결과를 낳는다. 세그먼트는 길이가 가변적이거나 주소 공간을 늘리는 간단한 방법이 아니다. 프로세스 메모리와 파일 시스템 간에 차이가 없는 단일 레벨 메모리 모델을 제공할 수 있는 분할은 프로세스의 잠재적 주소 공간에 매핑된 세그먼트 목록으로만 구성된다. 파일의 링크 섹션에는 포인터를 레지스터에 로드하거나 포인터를 통해 간접적으로 참조하려고 시도하는 포인터가 포함될 수 있다.

 

트랩이 발생하여 트랩을 일으킨 지시를 재실행하였다. 이렇게 하면 링크기가 완전히 필요하지 않으며 서로 다른 프로세스가 동일한 파일을 개인 주소 공간에서 서로 다른 위치에 매핑할 때 작동한다. 해결되지 않은 포인터는 포인터가 참조하는 세그먼트 이름과 세그먼트 내의 오프셋을 포함한다. 트랩의 핸들러는 세그먼트를 주소 공간에 매핑하고, 세그먼트 번호를 포인터에 넣고, 더 이상 트랩을 발생시키지 않도록 포인터의 태그 필드를 변경하고, 다음 코드로 돌아간다. 

LIST

댓글

추천 글