KR20050041868A - 어드레스 번역 컨트롤을 위한 그림자 페이지 테이블 - Google Patents

어드레스 번역 컨트롤을 위한 그림자 페이지 테이블 Download PDF

Info

Publication number
KR20050041868A
KR20050041868A KR1020040072560A KR20040072560A KR20050041868A KR 20050041868 A KR20050041868 A KR 20050041868A KR 1020040072560 A KR1020040072560 A KR 1020040072560A KR 20040072560 A KR20040072560 A KR 20040072560A KR 20050041868 A KR20050041868 A KR 20050041868A
Authority
KR
South Korea
Prior art keywords
page
shadow
directory
pages
memory
Prior art date
Application number
KR1020040072560A
Other languages
English (en)
Other versions
KR101150079B1 (ko
Inventor
코헨에르네스트에스.
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20050041868A publication Critical patent/KR20050041868A/ko
Application granted granted Critical
Publication of KR101150079B1 publication Critical patent/KR101150079B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables

Abstract

가상 메모리를 사용하는 컴퓨터 시스템에서, 소정의 페이지의 다수의 버전들: 디렉토리 버전, 테이블 버전, 및 데이터 버전이 기억된다. 데이터 버전은 소프트웨어 객체가 페이지에 기억된다고 믿는 데이터를 포함한다. 페이지의 디렉토리 버전 및 테이블 버전은 가상 어드레스 시스템에 의해 사용되는 어드레스 번역 맵에 대한 제한에 순응하는 소정의 방식으로 변경된 페이지 콘텐츠의 버전들을 포함한다. 페이지가 디렉토리 또는 테이블로서 가상 어드레스 시스템에 의해 사용될 때, 해당 페이지의 디렉토리 버전 또는 테이블 버전이 각각 사용된다. 페이지가 판독 요청의 타겟일 때, 페이지의 데이터 버전이 사용된다.

Description

어드레스 번역 컨트롤을 위한 그림자 페이지 테이블{SHADOW PAGE TABLES FOR ADDRESS TRANSLATION CONTROL}
본 발명은 일반적으로 컴퓨터의 메모리 관리 분야에 관한 것으로서, 특히, 가상 어드레스 시스템의 어드레스 번역 테이블의 관리에 관한 것이다.
현대 컴퓨터 시스템은 통상 몇몇 타입의 가상 어드레스 메카니즘을 제공한다. 본 기술 분야에 공지된 바와 같이, 컴퓨터 시스템과 관련된 메모리의 각각의 개별-액세스 가능 유닛은 메모리의 상기 유닛을 유일하게 식별하는 물리 어드레스를 갖는다. 그러나, 가상 어드레싱을 지원하는 컴퓨터 시스템에서, 물리 로케이션에 가상 어드레스를 할당할 수 있다. 가상 어드레스 시스템은 가상 어드레스를 물리 어드레스로 번역하기 위해 번역 맵을 사용한다.
가상 어드레싱 시스템의 한가지 특징은 물리 어드레스의 특정 집합들(예를 들어, 물리 메모리의 페이지들)이 임의의 가상 어드레스를 갖지 않도록 어드레스 번역 맵을 구성할 수 있다는 점이다. 전형적인 페이지 기반 메카니즘 관리 기법에서, 어드레스 번역 맵은 가상 페이지 디스크립터들을 물리 페이지 프레임 번호들로 번역한다. 따라서, 소정의 물리 페이지 프레임의 모든 로케이션들은 어드레스 번역 맵이 상기 페이지 프레임으로 인도하지 않음을 보장함으로써 가상 어드레스들을 거절당할 수 있다. 보다 일반적으로, 다수의 가상 어드레싱 기법들은 가상 어드레스를 통해 실행될 수 있는 액세스들(예를 들어, 판독, 판독/기록)을 가상 어드레스들에 붙이며; 페이지로의 어떠한 가상 어드레스 매핑도 거부된 액세스를 허용하지 않음을 보장함으로써 페이지에 대한 선택된 액세스들(예를 들어, 기록)이 방지될 수 있다. 어드레스 번역 맵의 이러한 양상은 메모리 보호 형태를 구현하는데 사용될 수 있다. 따라서, 소프트웨어 객체에 공개된 임의의 맵이 해당 페이지로의 어떠한 가상 어드레스 매핑도 액세스를 허용하지 않는 상태임을 보장함으로써 소프트웨어 객체(예를 들어, 운영 체제, 애플리케이션 레벨 프로세스, 또는 임의의 타입의 소프트웨어 객체)가 물리 어드레스 스페이스의 페이지에 대한 액세스를 거부당할 수 있다. 이러한 타입의 메모리 보호 기법은 특히 IA32 패밀리 프로세서들(예를 들어, INTEL x86 프로세서들)에 유용한데, 그 이유는 INTEL x86 프로세서들의 아키텍처가 보호 모드(프로세스의 정상 운영 상태)에서 운영할 때, 모든 메모리 액세스 요청들이 가상 어드레스 번역을 겪게 되도록 되어 있기 때문이다. 특정 물리 어드레스에 대한 특정 액세스를 허용하는 방식으로 수퍼바이저-모드 프로그램이 번역 테이블을 변경하는 것을 금지함으로써 동작하는 메모리 보호 기법은 "어드레스 번역 컨트롤" 또는 "ATC"라고 한다.
전형적인 아키텍처(예를 들어, x86)에서, 가상 어드레스에서 물리 어드레스로의 번역은 일상 메모리 페이지(소위 "페이지 맵" 페이지들)의 콘텐츠에 의해 제공된다. 이는 운영 체제를 기록하기에 편리한데, 그 이유는 가상 어드레스 맵이 일상 메모리 오퍼레이션에 의해 생성 및 변경될 수 있기 때문이다. 운영 체제가 ATC를 사용해서 구성되면, ATC는 운영 체제가 페이지 맵 페이지들에 직접 기록하는 것을 허용하는 매핑을 하지 않도록 방지해야만 하는데, 그 이유는 운영 체제가 상기 페이지들로의 기록을 사용해서 임의의 액세스의 임의의 물리 메모리 페이지들로의 매핑을 생성할 수 있기 때문이다. 따라서, 소프트웨어 객체 기록이 허용되지 않는 페이지들로의 판독-기록 매핑을 방지하는 것 외에, ATC는 페이지 맵 페이지들로의 판독-기록 매핑을 포함하는 "안전하지 않은" 맵들을 방지해야만 한다.
ATC에 의한 메모리 아이솔레이션이 유효하면서, 안전하지 않은 맵을 생성하지만 액세스 컨트롤 정책에는 위배되지 않는 기록 요청들을 어떻게 다루는 가에 대한 문제점이 발생한다. 이러한 기록 요청을 다루는 한가지 방법은 요청을 간단히 실패시키는 것이다; 그러나, 이는 운영 체제에 대한 상당한 리비전을 요구한다. 따라서, 몇몇 현 ATC 알고리즘들은 기록된 값을 변경하거나(예를 들어, 페이지 맵 페이지에 대한 기록-판독 매핑을 판독 전용 매핑으로 변경하거나) 또는 안전한 맵을 생성하도록 다른 페이지 맵 페이지들을 변경한다. 상기 기술의 문제점은 실제로는 타겟 로케이션이 상이한 값을 갖는 것으로 끝나는 데도 특정 값이 상기 타겟 로케이션에 기록된다고 믿는 소프트웨어 객체가 기록 요청을 실행한다는 점이다. 이러한 모순은 다양한 방식들로 나타날 수 있다 - 예를 들어, 소프트웨어 객체는 소프트웨어 객체가 기억된 것으로 생각하는 값들을 근거로 체크섬을 생성할 수도 있으며, 이러한 체크섬들은 ATC 시스템에 의해 생성된 변경된 값에 대해 타당성 검사를 하지 않는다.
본 발명의 한 실시예의 장점은 안전하지 않은 맵들을 생성하는(그러나 보호 정책에 따르는) 기록들이 (소프트웨어 객체의 관점에서 볼 때) 변경되지 않은 채로 성과를 거두는 것으로 나타나지만, 보호 정책을 회피하기 위해 결과 맵들이 사용될 수 없는 환경을 제공하는 것이며, 따라서, 종래 기술의 단점들이 극복된다.
본 발명은 어드레스 번역 컨트롤을 지원하기 위해 그림자 페이지를 사용한다. 전형적인 가상 어드레싱 시스템에서, 소정의 페이지는 (맵의 파트인 데이터를 포함하는) 맵 페이지이거나 또는 데이터 페이지(몇몇 가상 어드레스의 타겟)이거나 또는 둘 다일 수 있다. 맵 페이지 및 데이터 페이지는 상이한 문맥들로 액세스된다: 데이터 페이지의 엔트리들은 기본 판독 또는 기록 요청들의 타겟들이며; 한편, 맵 페이지의 엔트리들은 다른 페이지들의 위치를 정하기 위해 참조되지 않는다(dereferenced). 본 발명은 페이지가 (예를 들어, 후술되는 바와 같이, 디렉토리, 테이블, 또는 데이터 페이지로서) 사용될 수 있는 상이한 문맥들에 대응하는 다수의 페이지 복사본들을 유지한다. 본 발명은 페이지가 액세스되는 문맥에 따라 페이지의 적합한 복사본을 사용한다.
몇몇 가상 어드레싱 시스템(예를 들어, INTEL x86 패밀리 프로세서들에서 사용되는 가장 흔한 가상 어드레스 모드)은 2개의 타입들의 맵 페이지들: 디렉토리 및 테이블을 갖는다. 디렉토리는 테이블 및 대형 데이터 페이지와 관련되고, 테이블은 소형 데이터 페이지와 관련된다. ("대형" 및 "소형" 페이지들은 보다 상세하게 후술된다.) 따라서, 어드레스 번역 프로세스 관점에서 볼 때, 디렉토리로서, 테이블로서, 또는 타겟 데이터로서: 소정의 페이지가 액세스될 수 있는 최대 3개까지의 상이한 문맥들이 있다. 양호한 실시예에서, 소정의 페이지의 최대 3개까지의 버전들: 디렉토리 버전, 테이블 버전, 및 데이터 버전이 유지된다. 소정의 페이지가 액세스될 때, 페이지의 디렉토리, 테이블 또는 데이터 버전이 페이지가 액세스되는 문맥에 따라 사용된다.
ATC 하에서, 페이지의 콘텐츠는 페이지가 디렉토리 또는 테이블로서 사용되는 경우에만 메모리 액세스 정책 위반을 야기할 수 있다. 예를 들어, 페이지는 오프-리미트 페이지로의 링크를 포함할 수도 있다. 그러나, 페이지가 오프-리미트 페이지에 액세스하는데 사용될 위험성은 어드레스 번역기가 실제로 맵 파트로서 페이지를 사용하는 경우에만 존재한다; 페이지가 데이터 페이지로서 액세스되는 대신, 오프-리미트 페이지를 위한 가상 어드레스를 공개하지 않는다. 따라서, 소프트웨어 객체가 페이지에 기록되었다고 믿는 실제 데이터를 페이지의 데이터 복사본이 포함할 수도 있으며, 안전한 맵을 제공하는 변경된 버전들을 페이지의 테이블 복사본들이 포함할 수도 있다.
본 발명의 다른 특징들이 후술된다.
개요
어드레스 번역 컨트롤은 정책을 위반하는데 사용될 수 있었던 가상 어드레스 매핑을 효과적으로 거부함으로써 메모리 액세스 컨트롤 정책을 구현하는데 사용될 수 있다. 일반적으로, 어드레스 번역 컨트롤은 (맵이 소정의 소프트웨어 엔티티에 의해 오프-리미트인(또는 기록 불가능한) 페이지들로의 링크들을 해당 엔티티에 공개하지 않고, 신뢰할만 하지 않은 엔티티가 맵에 기록하는 것을 허용하지 않는다는 점에서) 맵이 항상 안전하게 유지되도록, 어드레스 번역 맵을 편집하고자 하는 시도들에 대해 상당한 제한점들을 부과하도록 작용한다. 통상, 요청을 실행할 때 바람직하지 않은 상태에서 맵이 배치되는 지를 결정하기 위해 맵을 편집하는 요청들을 평가함으로써 상기 상당한 제한점들이 부과된다; 결과로서 바람직하지 않은 상태가 되면, 바람직한 요청을 실행해서 바람직한 상태를 유지하도록 요청이 변경된다. (예를 들어, 정책 하에서 판독 가능하지만 기록 불가능한 페이지에 대한 판독/기록 링크를 야기하는 맵 편집 요청은 링크를 판독 전용으로 마크하도록 변경될 수 있다.) 이러한 기술의 문제점은 때때로 소프트웨어의 정확한 작용이 - 예를 들어, 체크섬을 검증하는 경우에, - 소프트웨어가 메모리에 기록되었다고 믿는 값들을 포함하는 메모리에 좌우된다는 점이며, 또한 요청을 변경하면 소프트웨어가 기록되었다고 믿는 값과 상이한 값을 메모리가 포함하게 된다는 점이다. 페이지 맵 페이지들로서 사용되는 페이지들의 상이한 버전들: 소프트웨어 객체에 공개되는 데이터 버전, 및 맵 안정성을 위배하지 않으면서 어드레스 번역 프로세스의 파트로서 사용될 수 있는 하나 이상의 맵 버전들을 유지함으로써 본 발명은 상기 문제점을 처리한다. 페이지에 대한 기록들이 ATC에 의해서만 방해될 수 있어서, 동기화된 상이한 버전들을 유지하도록 페이지들을 편집할 수 있도록, 페이지의 데이터 버전에 대한 맵은 판독 전용으로 달성된다.
일례의 컴퓨팅 배치
도 1은 본 발명의 양상들이 구현될 수도 있는 일례의 컴퓨팅 환경을 도시한다. 컴퓨팅 시스템 환경(100)은 단지 적합한 컴퓨팅 환경의 일례로서, 본 발명의 기능 또는 용도의 범위에 임의의 제한을 가하려는 의도가 아니다. 컴퓨팅 환경(100)은 일례의 컴퓨팅 환경(100)에 도시된 컴포넌트들 중 임의의 한 컴포넌트 또는 그 결합물과 관련해서 임의의 종속성 또는 요구 사항을 갖는 것으로 해석돼서는 안된다.
본 발명은 다수의 다른 범용 또는 특별 용도의 컴퓨팅 시스템 환경들 또는 구성들에 의해 동작될 수 있다. 본 발명에 의해 사용되기에 적합할 수도 있는 공지된 컴퓨팅 시스템들, 환경들 및/또는 구성들의 일례들은 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로프로세서-베이스 시스템, 셋탑 박스, 프로그래머블 컨수머 일렉트로닉스, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상술된 시스템들 또는 디바이스들 중 임의의 시스템 또는 디바이스를 포함하는 분산 컴퓨팅 환경 등을 포함하는데, 이들로만 제한되지 않는다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행 가능 명령들의 일반적인 문맥에서 기술될 수도 있다. 일반적으로, 프로그램 모듈들은 특정 태스크들을 실행하거나 특정 추상 데이터 타입들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 커뮤니케이션 네트워크 또는 다른 데이터 전송 매체를 통해 연결된 원격 처리 장치들에 의해 태스크들이 실행되는 분산 컴퓨팅 환경에서 구현될 수도 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들 및 다른 데이터는 메모리 기억 장치들을 포함해서 로컬 및 원격 컴퓨터 기억 매체들 모두에 위치할 수도 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 일례의 시스템이 컴퓨터(110) 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 컴포넌트들은 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(120)에 결합시키는 시스템 버스(121)를 포함할 수도 있는데, 이들로만 제한되지 않는다. 프로세싱 유닛(120)은 멀티-쓰레드 프로세서에서 지원되는 바와 같은 다수의 로지컬 프로세싱 유닛들을 나타낼 수도 있다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 및 다양한 버스 아키텍처들 중 임의의 아키텍처를 사용하는 로컬 버스를 포함하는 수개의 타입들의 버스 구조들 중 임의의 버스 구조일 수 있다. 예를 들어, 버스 아키텍처들은 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 (메저닌 버스로 공지된) PCI(Peripheral Component Interconnect) 버스를 포함하는데, 이들로만 제한되지 않는다. 시스템 버스(121)는 또한 통신 장치들 중에서 포인트-투-포인트 커넥션, 스위칭 패브릭 등으로서 구현될 수도 있다.
컴퓨터(110)는 통상 다양한 컴퓨터 판독 가능 매체들을 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 유용한 매체들일 수 있으며, 휘발성 및 비휘발성 매체들, 제거 가능 및 제거 불가능 매체들을 모두 포함한다. 예를 들어, 컴퓨터 판독 가능 매체는 컴퓨터 기억 매체 및 통신 매체를 포함할 수도 있는데, 이들로만 제한되지는 않는다. 컴퓨터 기억 매체는 컴퓨터 판독 가능 명령들, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보를 기억하기 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 제거 가능 및 제거 불가능 매체들을 모두 포함한다. 컴퓨터 기억 매체들은 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 다른 광 디스크 스토리지, 자기 카셋트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 기억 장치들, 또는 희망 정보를 기억하는데 사요될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 컴퓨터 기억 매체들을 포함하는데, 이들로만 제한되지 않는다. 통신 매체는 통상 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 반송파 또는 다른 전송 메카니즘과 같이 변조된 데이터 신호로 된 다른 데이터를 포함하며, 임의의 정보 전달 매체들을 포함한다. 용어 "변조된 데이터 신호"는 정보를 신호로 인코드하는 방식으로 설정되거나 변경된 특징들 중 하나 이상의 특징을 갖는 신호를 의미한다. 예를 들어, 통신 매체는, 유선 네트워크 또는 다이렉트-와이어드 커넥션과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체들과 같은 무선 매체를 포함하는데, 이들로만 제한되지 않는다. 상술된 바들의 임의의 결합도 컴퓨터 판독 가능 매체 범위 내에 포함된다.
시스템 메모리(130)는 판독 전용 메모리(ROM; 131) 및 랜덤 액세스 메모리(RAM; 132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 기억 매체들을 포함한다. 예를 들어, 시동 중과 같이, 컴퓨터(110) 내의 소자들 간의 정보 전송을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS; 133)은 통상 ROM(131)에 기억된다. RAM(132)은 통상 즉시 액세스될 수 있으며 및/또는 프로세싱 유닛(120)에 의해 현재 동작 중인 데이터 및/또는 프로그램 모듈들을 포함한다. 도 1은 예를 들어, 운영 체제(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만, 이들로만 제한되지 않는다.
컴퓨터(110)는 또한 다른 제거 가능/제거 불가능, 휘발성/비휘발성 컴퓨터 기억 매체들을 포함할 수도 있다. 도 1은 단지, 예를 들어, 제거 불가능 비휘발성 자기 매체 판독 또는 기록용 하드 디스크 드라이브(141), 제거 가능 비휘발성 자기 디스크(152) 판독 또는 기록용 자기 디스크 드라이브(151), 및 CD-ROM 또는 다른 광 매체들과 같은 제거 가능 비휘발성 광 디스크(156) 판독 또는 기록용 광 디스크 드라이브(155)를 도시한 것으로, 이들로만 제한되지 않는다. 일례의 운영 환경에서 사용될 수 있는 다른 제거 가능/제거 불가능, 휘발성/비휘발성 컴퓨터 기억 매체는 자기 테이프 카셋트, 플래시 메모리 카드, DVD, 디지털 비디오테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하는데, 이들로만 제한되지 않는다. 하드 디스크 드라이브(141)는 통상 인터페이스(140)와 같은 제거 불가능 메모리 인터페이스를 통해 시스템 버스(121)에 연결되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상 인터페이스(150)와 같은 제거 가능 메모리 인터페이스에 의해 시스템 버스(121)에 연결된다.
상술되고 도 1에 도시된 드라이브들 및 관련 컴퓨터 기억 매체들은 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들, 및 컴퓨터(110)용 다른 데이터를 위한 스토리지를 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146), 및 프로그램 데이터(147)를 기억하는 것으로 도시되어 있다. 상기 컴포넌트들은 운영 체제(134), 애플리케이션 프로그램들(135), 다른 프로그램 모듈들(136), 및 프로그램 데이터(137)와 동일할 수도 상이할 수도 있음을 주지하라. 운영 체제(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146) 및 프로그램 데이터(147)는 최소한 상이한 복사본들임을 설명하기 위해 상이한 번호들이 주어진다. 사용자는 키보드(162) 및 포인팅 디바이스(161)와 같은 입력 장치들을 통해 컴퓨터(110)에 커맨드 및 정보를 입력할 수도 있다. 포인팅 디바이스(161)는 통상 마우스, 트랙볼, 또는 터치 패드이다. 다른 입력 장치들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수도 있다. 여타 입력 장치들은 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스 및 버스 구조들에 의해 연결될 수도 있다. 모니터(191) 또는 다른 타입의 디스플레이 디바이스가 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터 외에, 컴퓨터들은 종종 출력 주변 인터페이스(195)를 통해 연결될 수도 있는 스피커(197) 및 프린터(196)와 같은 다른 주변 출력 장치들을 포함할 수도 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터들로의 로지컬 커넥션들을 사용해서 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 루터, 네트워크 PC, 피어 디바이스, 또는 다른 공통 네트워크 노드일 수 있으며, 메모리 기억 장치(181)만이 도 1에 도시되어 있지만, 컴퓨터(110)와 관련해서 상술된 소자들 중 다수 또는 전부를 통상 포함한다. 도 1에 도시된 로지컬 커넥션들은 근거리 통신망(LAN; 171) 및 광역 통신망(WAN; 173)을 포함하는데, 다른 네트워크들을 포함할 수도 있다. 네트워크 환경은 사무실에서 흔한 것으로, 기업간 컴퓨터 네트워크, 인트라넷 및 인터넷이다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(110)는 인터넷과 같은 WAN(173)을 통한 통신 설정을 위해 모뎀(172) 또는 다른 수단을 통상 포함한다. 내부 또는 외부에 있을 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적합한 메카니즘을 통해 시스템 버스(121)에 접속될 수도 있다. 네트워크 환경에서, 컴퓨터(110)와 관련해서 도시된 프로그램 모듈들, 또는 그 일부들은 원격 메모리 기억 장치에 기억될 수도 있다. 예를 들어, 도 1은 메모리 디바이스(181)에 상주하는 것으로 원격 애플리케이션 프로그램들(185)을 도시하고 있지만, 이들로만 제한되지 않는다. 도시된 네트워크 커넥션들은 단지 설명을 목적으로 한 것으로, 컴퓨터들 간에 통신 링크를 설정하는 다른 수단이 사용될 수도 있음을 알 것이다.
일례의 가상 어드레스 기법
도 2는 가상 어드레스 시스템의 일례를 도시한다. 가상 어드레싱이 세그먼트화와 같은 다른 모델들을 근거로 할 수 있다고 이해되더라도, 도 2에 도시된 일례는 페이지-타입 가상 어드레스 기법이다. 도 2에 도시된 기법은 INTEL x86 프로세서에 유용한 가상 어드레싱 기법들 중 하나와 같은 투-레벨 어드레스 기법이다. 상기 기법은 후술되는 바와 같이 가상 페이지 식별자를 물리 페이지로 번역하기 위해 인디렉션(indirection)의 두개의 레벨들을 사용해야만 한다는 점에서 "투-레벨"이다.
이러한 페이징 기법에서, 페이지 디렉토리(202)는 엔트리 집합을 포함한다. 엔트리의 일례의 구조는 도 3과 관련해서 보다 상세히 후술되는데, 본질적으로, 각각의 엔트리는 페이지 테이블들(204(1), 204(2), 또는 204(3))과 같은 특정 페이지 테이블의 물리 로케이션(즉, 페이지 프레임 번호 또는 "PFN")을 식별한다. 각각의 페이지 테이블은 엔트리 집합을 포함하는데, 각각의 엔트리는 페이지들(206(1), 206(2), 206(3) 또는 206(4))과 같은 특정 데이터 페이지의 물리 로케이션(페이지 프레임 번호)를 식별한다. 데이터 페이지는 RAM(132)의 인접 부분들로 길이로 정의된다. 데이터 페이지는 임의의 타입의 데이터를 기억할 수 있으며, 정상 데이터를 기억하는 것 외에도, 데이터 페이지들은 또한 페이지 디렉토리(202) 및 페이지들(204(1) 내지 204(3))의 콘텐츠들을 기억하는데 사용됨을 주지해야만 한다. 따라서, 소정의 페이지는 디렉토리, 테이블, 데이터 페이지일 수 있으며, 또는 상기 3개의 구조들의 임의의 결합물로서 다양한 역할을 할 수 있다.
특정 페이지의 위치를 정하기 위해 페이지 디렉토리(레벨 1) 및 페이지 테이블(레벨 2)을 모두 받아들일 필요가 있기에, 도 2에 도시된 가상 어드레스 기법은 투-레벨 가상 어드레스 기법이다. 본 기술 분야에 숙련된 자들은 임의의 수의 레벨들로 가상 어드레스 시스템을 설계할 수 있으며, 본 발명의 원칙들이 그와 같은 모든 가상 어드레스 기법들에 적용될 수 있음을 알 것이다. 본 기술 분야에 공지된 바와 같이, INTEL x86 프로세서는 하나의, 두개의, 또는 세개의 레벨들을 갖는 가상 어드레스들을 지원하며, 통상 "소형" 페이지들(즉, 길이가 4 킬로바이트인 페이지들)이 투-레벨 가상 어드레스들을 사용하고, "대형" 페이지들(즉, 길이가 4 메가바이트인 페이지들)이 원-레벨 가상 어드레스들을 사용하는 "하이브리드" 기법을 사용한다.
도 2의 페이징 기법에서, 페이지의 임의의 바이트는 페이지 디렉토리 오프셋(211), 페이지 테이블 오프셋(212), 및 페이지 오프셋(213)을 포함하는 가상 어드레스(210)에 의해 식별될 수 있다. (가상 어드레스의 이러한 구조는 소형 페이지들에 기억된 데이터에 적용된다; 대형 페이지들은 후술된다.) 따라서, 물리 어드레스의 위치를 정하기 위해, 어드레스 번역을 실행하는 메모리 관리 유닛(MMU; 220)은 페이지 디렉토리(202)의 특정 엔트리의 위치를 정하기 위해 페이지 디렉토리 오프셋(211)을 사용한다. 예를 들어, 오프셋(211)은 0과 동일할 수도 있는데, 이는 페이지 디렉토리(202)의 0번째 엔트리가 고려돼야만 함을 나타낸다. 상기 엔트리는 페이지 테이블이 기억된 PFN을 포함하며, 따라서, MMU(220)는 페이지 테이블들 중 하나(예를 들어, 페이지 테이블(204(1)))의 위치를 정하기 위해 상기 PFN을 사용한다. 그 후 MMU(220)는 식별된 페이지 테이블로의 인덱스로서 페이지 테이블 오프셋(212)을 사용하고, 상기 오프셋에서 발견된 엔트리를 검색한다. 엔트리는 데이터 페이지(예를 들어, 페이지(206(1)))의 PFN을 포함해서, MMU(220)는 물리 메모리의 특정 바이트의 위치를 정하기 위해 식별된 페이지의 베이스 어드레스에 페이지 오프셋(213)을 더한다. MMU(220)는 또한 어드레스의 단순한 번역 외에 다양한 다른 기능들을 실행하도록 적응될 수도 있다: 예를 들어, MMU(220)는 테이블의 페이지 엔트리가 "존재하지 않음"으로 마크되어 있는 경우 디스크로부터 페이지를 로드할 수도 있다; MMU(220)는 페이지가 "판독 전용"이라고 마크되어 있는 경우 기록 액세스를 불허할 수도 있다.
가상 어드레스가 대형 페이지와 관련되면, 가상 어드레스의 구조, 어드레스 번역 프로세스는 상술된 바와 약간 상이하다. 가상 어드레스는 디렉토리로의 인덱스인 하나의 오프셋만을 포함한다. 오프셋에 위치한 디렉토리 엔트리는 페이지 테이블의 PFN을 포함하는 대신, 대형 데이터 페이지의 PFN을 포함한다. 디렉토리 엔트리는 엔트리가 페이지 테이블 대신 대형 페이지와 관련됨을 나타내도록 설정된 비트를 갖는다. 대형 페이지 비트가 설정될 때, 가상 어드레스는 페이지 테이블로의 인덱스를 포함하지 않아서, 어떠한 페이지 테이블도 번역 프로세스에서 사용되지 않는다; 대신, 가상 어드레스의 나머지(즉, 디렉토리로의 인덱스 외의 부분)가 대형 페이지로의 인덱스로서 처리된다. 페이지 테이블 레벨은 회피되어서, 오직 한 레벨의 번역만이 발생한다.
도 2의 가상 어드레스 기법에서, 페이지 디렉토리 자체의 로케이션(즉, PFN)은 스토리지 로케이션(201)에 기억된다. MMU(220)는 가상 어드레스(210) 번역을 개시할 때 페이지 디렉토리(202)의 위치를 정하기 위해 스토리지 로케이션의 콘텐츠를 사용한다. 따라서, 다수의 페이지 맵들이 존재할 수 있으며, 특정 맵이 소정의 맵의 페이지 디렉토리의 PFN을 포함하기 위해 스토리지 로케이션(201)의 콘텐츠를 설정함으로써 현재 사용되기 위해 선택될 수 있다. INTEL x86 프로세서의 일례에서, 스토리지 로케이션(201)은 레지스터 CR3에 대응한다.
상술된 바와 같이, 페이지 테이블 또는 페이지 디렉토리의 각각의 엔트리는 특정 물리 페이지의 PFN을 포함하며, 다른 특정 데이터를 포함할 수도 있다. 도 3은 페이지 테이블 또는 페이지 디렉토리의 엔트리(300)의 일례의 구조를 도시한다.
엔트리(300)는 특정 물리 페이지의 PFN(302)을 포함한다. 예를 들어, 엔트리(300)가 페이지 디렉토리의 파트이면, PFN(302)은 어드레스 번역 프로세스의 다음 레벨에서 고려돼야만 하는 페이지 테이블의 PFN이다(또는, 대형 페이지 링크의 경우에, 엔트리는 간단히 엔트리가 참조하는 대형 데이터 페이지의 PFN을 포함한다). 또한, 엔트리(300)는 엔트리가 대형 페이지를 위한 것인지 또는 소형 페이지를 위한 것인지를 나타내는 비트(304)를 포함한다. (상기 비트는 엔트리(300)가 페이지 디렉토리의 파트일 때만 의미가 있다. 편의상, 테이블의 경우에, 비트(304)의 의미가 정의되지 않더라도, 엔트리의 포맷은 디렉토리의 파트이든 또는 테이블의 파트이든 간에 동일할 수도 있다.)
판독 전용 비트(306)는 엔트리의 최종 타겟인 데이터 페이지가 판독/기록(비트 클리어)로서 처리되는지 아니면 판독 전용(비트 세트)으로서 처리되는지를 나타낸다. 타겟 데이터 페이지가 판독 전용이면, 해당 페이지에 대한 기록 요청들은 실패한다. (MMU(220)는 페이지의 판독 전용 상태를 강제로 시행하는데 사용될 수 있다.) 판독 전용 비트는 디렉토리 및 테이블 엔트리들 모두에 존재할 수 있다; 결국 데이터 페이지로 이르게 되는 디렉토리 및 테이블 링크들이 각각의 판독 전용 비트들의 상충되는 세팅들을 가지면, 상충 해결 규칙이 타겟 데이터 페이지가 판독/기록인지 판독 전용인지를 결정하는데 사용될 수 있다. 예를 들어, 상충 규칙상, 페이지가 판독/기록으로 처리되게 하기 위해, 해당 페이지로 인도하는 디렉토리 및 테이블 링크들 모두는 판독/기록으로 마크돼야만 한다(즉, 양 엔트리들의 판독 전용 비트(306)가 클리어돼야만 한다). 동일한 페이지는 맵을 통해 상이한 경로들에 의해 도달될 수도 있으며, 페이지가 판독/기록으로 처리될지 판독 전용으로 처리될 지의 여부는 어떤 경로가 해당 페이지에 도달하는데 사용되는지에 좌우될 수도 있다.
존재 비트(308)는 타겟 데이터 페이지가 물리 메모리에 현재 존재하는 지를 나나내거나, 또는 디스크로부터 메모리로 복사될 필요가 있다. 예를 들어, 존재 비트(308)가 (타겟 페이지가 존재하지 않음을 나타내면서) 클리어되면, 해당 페이지에 대한 액세스 요청은 페이지 폴트를 생성할 수도 있으며, 이는 그 후 페이지의 콘텐츠를 디스크로부터 물리 메모리로 복사하는 인터럽트 서비스 루틴에 의해 처리되며, 페이지의 물리 로케이션을 반영하기 위해 어드레스 번역 맵을 조정한다. 존재 비트가 소정의 매핑에서 페이지 디렉토리 및 페이지 테이블 엔트리들에서 상이하게 설정되는 경우, 상기 비트들 간의 상충은 판독/기록 비트에 대해 상술된 바와 유사한 상충 해결 규칙에 의해 해결될 수 있다 - 예를 들어, 디렉토리 및 테이블 엔트리들이 존재하는 것으로 마크되는 경우 매핑은 존재로서 처리된다.
어드레스 번역 테이블 엔트리 편집 컨트롤(ATC)을 사용하는 메모리 액세스 컨트롤
도 2 및 도 3과 관련해서 기술된 가상 어드레스 기법의 한가지 특징은 대응 가상 어드레스가 존재하지 않는 물리 메모리의 일부가 존재할 수 있다는 점이다. 이러한 관측 결과는, 메모리의 임의의 일부가 주어진 경우, 어드레스 번역 맵이 메모리의 상기 일부에 이르지 않는다는 점을 보장함으로써 메모리 상기 일부에 대한 액세스를 제한할 수 있다. 사실상, 메모리 로케이션은 가상 어드레스를 갖지 않기 때문에 오프 리미트로 렌더링된다. (다수의 시스템에서 - 예를 들어, INTEL x86 프로세서에서 - 거의 모든 메모리 액세스 요청들이 가상 어드레스에 의해 달성된다; 액세스 요청이 물리 어드레스에 의해 달성되는 이러한 제한된 상황에서, 병렬 액세스 컨트롤 메카니즘이 사용될 수 있다.)
ATC가 메모리 액세스 컨트롤을 달성하는데 사용되는 방법은 이하의 표기 용어들로 설명된다: NA("액세스 불허")는 소정의 정책 하에서 액세스가 불허되는 페이지 집합이다. MP("매핑 페이지")는 어드레스 번역 맵을 통해 액세스될 수 있는 페이지 집합 - 즉, 가상 어드레스가 존재하는 페이지 집합이다. 조건 NA ∩ MP = φ이 계속해서 참으로 유지되는 한, NA의 멤버인 페이지에 대한 액세스는 방지될 수 있다. 상기 조건은 도 4에 벤 도식으로 도시된다: 즉, 페이지(406)는 기계에서 유용한 물리 페이지 집합이다; MP(402)는 가상 어드레스가 존재하는 페이지 집합이다; NA(404)는 정책하에서 액세스가 허용되지 않는 페이지 집합이다. 도 4의 조건이 계속해서 참인 한, 정책 하에서 오프-리미트인 페이지에 액세스하기 위해 가상 어드레스를 사용할 수 없는데, 그 이유는 맵이 상기 페이지로 인도하지 않기 때문이다(즉, 페이지가 가상 어드레스를 갖지 않기 때문이다). 따라서, 도 4에 도시된 조건은 ATC를 통해 메모리 액세스 컨트롤을 달성하는데 사용될 수 있다. ATC의 목적은 참 상태로부터 참이 아닌 상태로 조건이 변경되는 것을 방지하기 위해 어드레스 번역 맵에 대한 변경을 제한하는 것이기 때문에, 상기 조건은 "불변"이라고 한다.
도 4는 메모리 액세스 컨트롤을 위해 사용될 수 있는 간단한 불변 조건을 도시하는데, 도시된 바는 단지 설명을 위한 것이다. 액세스 컨트롤이 발생하는 환경에 따라 보다 복잡합 조건들이 가능하다. 예를 들어, 디렉토리에서(또는 테이블에서) 엔트리들이 포함될 수도 있는 바에 대한 특정 규칙들을 설정할 수 있으며, 액세스 컨트롤 조건 시행을 돕기 위해 판독 전용 및/또는 존재 비트들을 사용해서 액세스 컨트롤을 정련할 수 있다. 예를 들어, INTEL x86 프로세서에서 ATC를 통해 메모리 액세스 컨트롤을 달성하는데 사용될 수 있는 규칙 집합의 일례가 후술된다.
D1은 페이지 디렉토리로서 사용될 수 있는 페이지 집합이다. D2는 페이지 테이블로서 사용될 수 있는 페이지 집합이다. D = D1 ∪ D2. "존재"로 마크된 페이지 디렉토리 또는 페이지 테이블의 각각의 엔트리는 "링크"라고 한다. D1의 소정의 페이지로부터 해당 D2 페이지로의 소형 판독-기록 링크가 존재하면 D2의 페이지는 "기록-액티브"이다. ("소형" 링크는 디렉토리로부터 테이블로의 링크이다 - 즉, 소형 페이지로 결국 인도하는 디렉토리의 링크이다. "대형" 링크는 대형 페이지를 향하는 디렉토리의 링크이다.) 몇몇 엔티티가 판독 및/또는 기록 액세스가 허용되는 페이지들을 정의하는 정책이 있다고 생각된다.
다음의 불변 조건들이 유지된다:
- CR3는 D1에 있다;
- 모든 D1 및 D2 페이지들은 관련 정책 하에서 판독 가능하다;
- D1 페이지로부터의 모든 소형 링크는 D2 페이지를 향한다;
- D2 페이지들로부터의 링크들은 ATC정책 하에서 판독 가능한 페이지를 향한다;
- 기록-액티브 D2 페이지로부터의 모든 판독-기록 링크는 정책 하에서 기록 가능하며 D에 있지 않은 페이지를 향한다;
- D1 페이지로부터의 대형 링크의 대형 페이지 타겟에 포함된 모든 소형 페이지는 정책 하에서 판독 가능하다; 링크가 판독-기록이면, 소형 페이지는 정책 하에서 기록 가능하며 D에 있지 않다.
ATC는 상기 불변 조건들을 위배하는 어드레스 번역 맵에 대한 변경들이 방지됨을 보장하는데 사용된다. 상기 불변 조건들을 유지해서 해당 엔티티가 정책을 위배할 수 없음을 보장한다.
어떤 불변 조건이 부과되든지 간에, 실제로 실행되는 경우 요청이 불변 조건이 계속해서 유지되는 상태가 되게 하는지를 결정하기 위해 각각의 액세스 요청을 평가함으로써 불변 조건의 참이 유지될 수 있다. 결과 상태가 불변 조건을 만족시키면, 요청이 실행된다. 그러나, 불변 조건 유지에 실패하면, 적어도 두가지 옵션들이 존재한다:
- (1) 요청을 거부한다; 또는
- (2) 불변 조건을 계속해서 만족시킬 형태로 요청을 변경한다.
옵션(1)은 실제로 다수의 액세스 요청들이 거부될 필요가 있다는 점에서 단점을 갖는데, 이는 컴퓨터 시스템의 기능에 혼란을 준다. 그러나, 옵션(2)의 경우, 소프트웨어 객체는 값을 스토리지 로케이션에 기록하고, 스토리지 로케이션은 소프트웨어 객체가 기록했다고 믿는 값과 상이한 변경된 값을 기억하는 것으로 끝날 수 있다; 상술된 바와 같이, 소프트웨어의 정확한 기능(예를 들어, 체크섬 타당성 검사)은 소프트웨어가 메모리에 기록했다고 믿는 실제 값들을 기억하는 메모리에 좌우될 수도 있으므로, 옵션(2)도 소프트웨어의 기능에 혼란을 줄 수 있다. 본 발명은 이러한 문제점을 페이지의 다수의 버전들을 기억함으로써 해결한다. 한 버전은 프로그램이 페이지에 기록중이라고 믿는 정확한 데이터를 포함한다. 페이지의 다른 복사본들은 어드레스 번역 프로세스에서 사용된 경우, 관련 불변 조건이 유지되게 하는 데이터의 버전들을 포함한다.
그림자 페이지
본 발명의 한 특징에 따라, 페이지의 다양한 표현들이 존재할 수도 있다. 동일한 페이지의 다양한 표현들은 프로그램이 실제로 페이지에 기록하는 데이터를 포함하는 페이지의 한 버전이 존재하고, 또한 페이지 디렉토리들 및 페이지 테이블들로서 어드레스 번역 프로세스에서 사용되기에 안전한 페이지의 다른 ("그림자") 버전들이 존재함을 보장한다. 상기 문맥에서, "사용하기에 안전한"의 의미는 디렉토리(또는, 테이블)로서 그림자 페이지를 사용해도 ATC 시스템에 의해 적용된 불변 조건이 위배되지 않는다는 의미이다.
양호하게, 페이지 x가 제공되면, d(x), t(x), m(x)라고 하는 상기 페이지의 3개의 버전들이 존재한다. d(x)는 페이지의 "디렉토리" 버전 - 즉, 상술된 어드레스 번역 프로세스에서 페이지 디렉토리로서 사용되기에 적합한 페이지의 버전이다. t(x)는 페이지 테이블로서 사용되기에 안전한 페이지의 버전이다. m(x)는 페이지의 "메모리" 버전 - 즉, 하나 이상의 프로그램들에 의해 페이지에 기록된 실제 데이터를 포함하는 버전이다. 본 설명에서, 용어 "d(x)"는 페이지 x의 디렉토리 버전의 콘텐츠와 관련될 수도 있고, 아니면 페이지 x의 디렉토리 버전이 기억된 PFN과 관련될 수도 있다. t(x) 및 m(x)도 마찬가지다. 용어들 d(x), t(x), m(x)가 페이지의 콘텐츠와 관련되던, PFN와 관려되던 간에, 문맥으로부터 명백해질 것이며, 또는 상세히 지시될 것이다.
도 5는 어드레스 번역 프로세스에서 d(x), t(x), m(x)가 어떻게 사용되는지를 도시한다. 도 5는 x, y, z로 라벨이 붙은 3개의 페이지들(참조 부호들 (502), (504), (506))과 관련된다. 페이지 x는 페이지 디렉토리이고, 페이지 y는 페이지 테이블이고, 페이지 z는 데이터 페이지이다. 페이지들 x, y, z는 다양한 역할을 할 수도 있음을 주지해야만 한다. 따라서, x는 상황에 따라 페이지 디렉토리로서 또는 데이터 페이지로서 작용할 수도 있다. 페이지 y는 몇몇 문맥들에서 페이지 테이블로서 동작할 수 있으며, 다른 문맥들에서는 페이지 디렉토리로서 작용할 수도 있다. 그러나, 도 5는 특정 가상 어드레스가 번역중인 것으로 생각되며, 상기 어드레스를 번역하기 위해, 페이지들 x, y, z가 각각 디렉토리, 테이블, 및 데이터페이지로서 역할을 한다.
페이지 x는 버전들 d(x), t(x), m(x)에 존재한다. 해당 어드레스를 번역하기 위해, 페이지 x의 디렉토리 버전(즉, d(x))이 고려된다. 디렉토리로서, x의 엔트리들은 타겟 페이지 테이블들의 PFN들을 포함하며, x와 d(x)의 주요한 차이점은 페이지 디렉토리 x의 각각의 타겟 ti에 대해, x가 ti의 PFN을 포함하며, d(x)가 t(ti)의 PFN을 포함한다는 점이다 - 다시 말해서, d(x)가 상기 페이지들의 고유 버전들 대신 타겟 페이지들의 테이블 버전들을 가리키도록 변경된다.
페이지 d(x)가 고려될 때, d(x)의 관련 엔트리(즉, 가상 어드레스의 디렉토리 오프셋 부분에 의해 지시된 엔트리, 도 2의 요소(211))는 페이지 t(y)를 가리킨다. 페이지 t(y)는 그 후 특정 데이터 페이지의 위치를 정하는데 고려된다. t(y)의 엔트리들은 타겟 데이터 페이지들의 PFN들을 포함한다. t(y)와 y의 관계는 d(x)와 x의 관계와 유사하다: y에 의해 참조되는 각각의 데이터 페이지 di에 있어서, t(y)는 di의 PFN 대신 m(di)의 PFN을 포함한다. (그러나, 페이지의 고유 로케이션에 페이지의 데이터 버전을 기억하는 것이 일반적으로 메모리 사용에 있어서 가장 효율적이기 때문에, m(di)의 PFN이 일반적으로 di의 PFN과 동일함을 주지해야만 한다.) 가상 어드레스의 테이블 오프셋 필드(예를 들어, 도 2의 요소(212))에 의해 지시되는 오프셋을 사용해서, 테이블 t(y)의 적합한 엔트리의 위치가 정해진다. 상기 엔트리는 특정 데이터 페이지의 PFN, 본 일례에서는 m(z)와 관련된다.
페이지 m(z)가 식별된 후에, 페이지 m(z)의 데이터의 적합한 유닛은 가상 어드레스의 지시된 페이지 오프셋(도 2의 요소(213))을 근거로 액세스된다.
따라서, 종래의 어드레스 번역 프로세스에서, 데이터 페이지로의 경로는 페이지 x로부터 페이지 y 및 페이지 z로 인도된다. 본 발명에 따라, 그림자 페이지 테이블이 사용될 때, 번역 페이지는 페이지 d(x)로부터 페이지 t(y) 및 페이지 m(z)로 인도된다.
페이지들 d(x), t(x), m(x) 생성
페이지들 d(x), t(x), m(x)은 페이지 x에 대한 정의된 변형들을 실행함으로써 생성된다. 이러한 변형의 양호한 실시예가 후술된다.
양호하게, m(x)는 임의의 타입의 변경 또는 필터링 없이 프로그램들이 페이지 x에 기록하는 실제 데이터를 나타낸다. 다시 말해서, x로부터 m(x)로의 변형은 본질적으로 아이덴티티 변형이다.
양호하게, d(x) 및 t(x)는 이하의 규칙들에 의해 생성된다. 존재라고 마크된 페이지 x의 엔트리와 관련된 모든 페이지 ti에 대해, d(x)의 대응 엔트리가 ti의 PFN 대신 t(ti)의 PFN과 관련된다는 점을 제외하고 d(x)는 x와 동일하다. 존재라고 마크된 페이지 x의 엔트리와 관련된 각각의 페이지 di에 대해, t(x)가 di의 PFN 대신 m(di)의 PFN과 관련된다는 점을 제외하고 t(x)는 x와 동일하다. 또한, 타겟 페이지가 관련 정책하에서 판독 가능하지만 기록 불가능하면, 또는 타겟 페이지가 페이지 디렉토리이거나 페이지 테이블이면, 엔트리는 판독 전용으로 마크된다.
이하에는 d(x) 및 t(x)가 어떻게 생성되는지에 대한 보다 형식적인 설명이 기술된다. 설명을 위해, D1은 페이지 디렉토리로서 사용될 수 있는 PFN 집합이고, D2는 페이지 테이블로서 사용될 수 있는 PFN 집합이다. 문장 D1.x는 x가 D1의 멤버라는 의미이고, D2.x는 x가 D2의 멤버라는 의미이다. 메모리 액세스 컨트롤 기법이 시행될 관련 소프트웨어 객체에 의해 보여지는 바와 같이, M을 메모리 맵이라고 하자. M.x.e는 PFN이 x인 물리 페이지의 e번째 엔트리에 기억된 값과 관련된다. R.x는 x가 관련 정책하에서 판독 가능함을 의미하고, W.x는 x가 관련 정책하에서 기록 가능함을 의미한다. m, t, d 및 P는 이하의 사항들과 관련된다(각각의 경우에, v를 M.x.e라고 하고, D.x = D1.x ∨ D2.x라고 하자):
- If R.x, m.x = t.x = d.x = undefined, 여기서 "undefined"는 페이지의 pfn이 물리 메모리에 있지 않다는 뜻이다.
- d.x = if D1.x then x else undefined
- D2.x ⇒ t.x = undefined
- P.(m.x).e = v(즉, P에서, m.x.는 꼭 x가 M에 있는 것 같다)
- d.x ≠ undefined ⇒ P.(d.x).e = if v.present then v [pfn ← t.(v.pfn)] else v
- t.x ≠ undefined ⇒ P.(t.x).e = if v.present then v [pfn ← m.(v.pfn), rw ← (v.rw ∧ (R.(v.pfn) ⇒ W.(v.pfn)) ∧ D.(v.pfn))] else v
다시 말해서, x의 디렉토리 버전은 x의 메모리 버전 같지만, pfn들은 테이블 버전들로 방향을 돌렸다; x의 테이블 버전은 x의 메모리 버전 같지만, pfn들은 판독 버전들로 방향을 돌렸고, 판독-기록 비트들은 판독 가능하지만 기록 불가능하거나, 또는 D에 있는 타겟들에 대해 클리어된다(또는 엔트리 표현이 판독/기록 비트를 포함하는지 판독 전용 비트를 포함하는 지에 따라 판독 전용 비트들이 상기 타겟들에 대해 설정된다). 디렉토리의 경우, x에서 x의 디렉토리 버전을 유지하지만, 테이블의 경우, D2로부터 x를 제거하는 비용을 최소화하기 위해(예를 들어, 디스크로 교환하기 위해) x에서 x의 판독 버전을 유지함을 주지하라. 버전들이 (예를 들어, ATC가 허용한 디렉토리 및 테이블에 대해) 동일한 데이터를 유지할 때마다, 동일한 물리 페이지를 공유해서, 기록을 시도하지 않은 소프트웨어 객체에 대해, ATC가 거부 또는 변경해서, 그림자 페이지가 생성될 필요가 없다.
도 6 및 도 7은 d(x) 및 t(x)를 생성하기 위한 일례의 프로세스들을 각각 도시한다.
이제 도 6을 참조하면, 맵(즉, 상술된 맵 M)의 파트인 페이지 x가 존재하고, x를 근거로 페이지 d(x)를 생성하기를 희망한다고 가정된다. 먼저, 페이지 x가 관련 정책하에서 판독 가능한지가 결정된다(602). x가 판독 불가능하면, d(x)는 undefined(비정의)이고(606), 프로세스가 종료된다. x가 판독 가능하면, x가 D1의 멤버인지가 - 즉, x가 페이지 디렉토리로서 사용될 수 있도록 설계됐는지가 결정된다(604). x가 D1의 멤버가 아니면, d(x)는 undefined 이다(606). x가 D1의 멤버이면, 존재한다고 마크된 엔트리들의 PFN 필드들이 타겟들의 테이블 버전들을 가리키도록 변경되는 점을 제외하고 페이지 d(x)는 페이지 x와 동일한 콘텐츠를 포함하도록 생성된다. 이러한 결과는 n = 0으로 설정함으로써(607) 달성될 수 있으며, 그 후, n의 소정의 값에 대해, x의 n번째 엔트리가 존재로 마크되어 있는지가 결정된다(608). x의 n번째 엔트리가 존재로 마크되어 있지 않으면, d(x)의 x의 n번째 엔트리는 x의 n번째 엔트리와 동일하게 설정된다(610). x의 n번째 엔트리가 존재로 마크되어 있으면, PFN 필드가 테이블 버전을 가리키도록 변경되는 점을 제외하고 d(x)의 x의 n번째 엔트리는 x의 n번째 엔트리와 동일하게 설정된다(612) - 즉, P.n.pfn이 페이지 P의 PFN 필드와 관련되고, v가 상술된 의미를 가지면, d(x).n.pfn = t(v.pfn) 이다. d(x)의 n번째 엔트리가 설정된 후에, n은 증가되고(614), 프로세스는 다음 엔트리를 설정하기 위해 (608)로 리턴한다.
이제 도 7을 참조하면, 맵의 파트인 페이지 x가 존재하고, 페이지 t(x)를 생성하기를 희망한다고 가정된다. 먼저, x가 관련 정책하에서 판독 가능한지가 결정된다(702). x가 판독 불가능하면, t(x)는 undefined 값으로 설정되고(706), 프로세스가 종료된다. x가 정책하에서 판독 가능하면, x가 D2의 멤버인지가 결정된다(704). x가 D2의 멤버가 아니면, t(x)는 undefined 로 설정된다(706). x가 D2의 멤버이면, 존재로 마크된 페이지들의 PFN들이 타겟 페이지의 메모리 버전을 가리키도록 조정되고, 특정 판독/기록 링크들이 판독 전용으로 조정되는 점을 제외하고, 엔트리들의 값들이 x와 동일하도록 페이지 t(x)가 생성된다. 페이지 t(x)의 콘텐츠를 생성하기 위해, 초기에 카운트 n은 0으로 설정된다(708). 그 후 페이지 x의 n번째 엔트리가 존재로 마크되어 있는지가 결정된다. 엔트리가 존재로 마크되어 있지 않으면, t(x)의 n번째 엔트리는 x의 n번째 엔트리와 동일하게 설정된다(712). n번째 페이지가 존재로 마크되어 있으면, 엔트리의 PFN 필드가 타겟 페이지의 메모리 버전을 가리키도록 설정된다는 점을 제외하고, t(x)의 n번째 엔트리는 x의 n번째 엔트리와 동일하게 설정된다(714) - 즉, x의 n번째 엔트리의 타겟 페이지가 PFN = A를 가지면, t(x)의 n번째 엔트리의 PFN 필드가 m(A)와 동일하게 설정된다. (상술된 바와 같이, m(A)의 PFN은 A의 PFN과 종종 동일하다.) 그 다음, n번째 엔트리의 타겟 페이지가 관련 정책하에서 판독 가능하지만 기록 불가능한 페이지인지가 결정된다. 타겟 페이지가 판독 가능하지만 기록 불가능하면, t(x)의 n번째 엔트리는 판독 전용으로 마크된다(720). 그렇지 않으면, x의 n번째 엔트리의 타겟 페이지가 D1 또는 D2의 멤버인지가 결정된다(718). 그렇다면, t(x)의 n번째 엔트리는 판독 전용으로 마크된다(720). 카운터 n은 증가되고(722), 프로세스는 t(x)의 다음 엔트리를 생성하기 위해 (714)로 루프 백한다.
그림자 페이지 기억
페이지가 보다 효율적으로 표현될 수 있게 해주는 특정한 최적화가 있더라도, 모든 페이지(즉, d(x), t(x), m(x))의 3개의 복사본들을 기억할 수 있다. 먼저, 상술된 알고리즘들이 이미 기억된 버전과 동일한 그림자 페이지를 생성하면 그림자 페이지는 생성될 필요가 없다. 따라서, 대부분의 페이지의 경우, 페이지의 하나의 버전만이 기억될 필요가 있으며, 그러한 경우에, 페이지 x에 있어서, d(x), t(x), m(x)의 PFN들은 모두 동일하다.
디렉토리 외의 모든 페이지들의 경우, 양호하게 페이지 x의 고유 복사본은 페이지의 데이터 버전으로서 작용한다. 따라서, 논-디렉토리 페이지들(즉, 프레임 번호가 D1의 멤버가 아닌 페이지들)의 경우, m(x)의 PFN는 x의 PFN과 동일하다; x의 디렉토리 및 테이블 버전들은 다른 장소에 기억된다. 그러나, 디렉토리 페이지 경우에, 양호하게 페이지의 고유 로케이션은 페이지의 디렉토리 버전으로 작용한다(몇몇 경우에, 그럴 필요가 있다). 디렉토리로서 작용할 수 있게 해주는 페이지들(예를 들어, INTEL x86 프로세서에서, PFN들이 CR3에 로드될 수 있는 페이지들)의 PFN들의 관점에서 세트 D1이 정의되기 때문에, 실제로 디렉토리 버전을 다른 PFN으로 이동하지 않는다: CR3이 그림자 페이지 존재를 인식하지 않을 수도 있는 소프트웨어 객체에 의해 로드될 수도 있기 때문에(예를 들어, CR3이 메모리 액세스가 ATC 시스템에 의해 제한되고 있는 운영 체제에 의해 로드될 수도 있기 때문에), 디렉토리 페이지들은 소프트웨어 객체가 페이지들이 위치하고 있다고 믿는 PFN들에 위치할 필요가 있을 수도 있다.
대형 페이지에 따른 그림자 페이지 사용
상술된 바와 같이, INTEL x86 프로세서(또한 다양한 다른 프로세서들)는 대형 페이지 사용을 지원하는데, 이러한 경우에, 페이지 테이블은 가상 어드레스를 물리 어드레스로 번역하는데 포함되지 않는다. 대형 페이지를 상술된 그림자 메카니즘에 넣기 위해, 그림자 페이지 테이블이 임의의 실제 페이지 테이블에 대응하지 않더라도, 그림자 페이지 테이블이 대형 페이지를 위해 생성될 수 있다. 따라서, 페이지 디렉토리 x가 대형 링크를 포함할 때, x의 대형 링크에 대응하는 엔트리의 소형 링크를 포함하는 페이지의 디렉토리 버전(즉, d(x))이 생성될 수 있다. 소형 링크는 그림자 페이지 테이블(즉, t(x))을 향하는데, 대형 페이지를 표시하는 개별 소형 페이지들로의 링크들을 포함한다. 상술된 그림자 알고리즘의 파트가 특정 페이지들을 판독 전용으로 마크하는 것을 포함하기에, 대형 페이지를 소형 페이지들로 나누는 것은 전체 대형 페이지가 판독 전용 페이지로 마크되는 것을 방지한다. 대형 페이지의 파트인 개별 소형 페이지들은 필요한 경우 판독 전용으로 마크될 수 있다. (대형 페이지를 판독 전용으로 마크하는 단점은 적용될 수 있는 불변 조건들을 위배하지 않고 기록이 발생할 수 있는 지를 결정하기 위해 상기 페이지에 대한 모든 기록 요청이 예외를 생성하고 보다 많은 특권이 주어진 컴포넌트(예를 들어, ATC를 실행하는 컴포넌트)에 의해 평가돼야만 한다는 점이다. 대형 페이지에 대한 모든 기록 요청이 상기 방식으로 처리될 필요가 있기에 시스템 성능이 상당히 강하될 수 있다.)
상기 일례들은 단지 설명을 목적으로 제공되었고 본 발명을 제한하려는 의미로 생각돼서는 안됨을 주지해야만 한다. 본 발명이 다양한 실시예들을 참조해서 기술되었는데, 본 명세서에서 사용된 단어들은 제한이 아닌 설명을 위한 단어들임을 알 것이다. 또한, 본 발명이 특정 수단, 재료 및 실시예들을 참조해서 본 명세서에 기술되었더라도, 본 발명은 본 명세서에 기술된 특정 사항들로만 제한되지 않는다; 오히려, 본 발명은 첨부된 청구항들의 범위 내에 있는 기능적으로 동등한 모든 구조, 방법 및 용도로 확장된다. 본 명세서의 내용을 이용할 수 있는 본 기술 분야에 숙련된 자들은 다양한 변경들을 달성할 수 있고 본 발명의 범위 원리 내에 속한 변경들이 달성될 수도 있다.
본 발명에 따르면, 안전하지 않은 맵들을 생성하는 기록들이 변경되지 않은 채로 성과를 거두는 것으로 나타나지만, 보호 정책을 회피하기 위해 결과 맵들이 사용될 수 없는 환경을 제공한다.
도 1은 본 발명의 특징들이 구현될 수도 있는 예시적인 컴퓨팅 환경의 블록도.
도 2는 예시적인 가상 어드레스 시스템의 블록도.
도 3은 어드레스 번역 맵의 예시적인 엔트리의 블록도.
도 4는 어드레스 번역 컨트롤을 통한 메모리 액세스 컨트롤에 대한 예시적인 불변 상태의 블록도.
도 5는 페이지가 사용되는 문맥에 따라 페이지의 상이한 버전이 사용되는, 다수의 버전들로 존재하는 페이지들의 블록도.
도 6은 페이지의 디렉토리 버전을 유도하기 위한 예시적인 프로세스의 플로우챠트.
도 7은 페이지의 테이블 버전을 유도하기 위한 예시적인 프로세스의 플로우챠트.
<도면의 주요 부분에 대한 부호의 설명>
201 : 스토리지 로케이션
202 : 페이지 디렉토리
204 : 페이지 테이블
206 : 페이지
210 : 가상 어드레스
220 : 메모리 관리 유닛(MMU)
300 : 엔트리
302 : 페이지 프레임 번호(PFN)
306 : 판독 전용 비트
308 : 존재 비트

Claims (24)

  1. 어드레스 번역 맵을 위한 그림자 페이지들을 생성하는 방법을 실행하는 컴퓨터 실행 가능 명령들이 인코드되어 있는 컴퓨터 판독 가능 매체에 있어서,
    상기 어드레스 번역 맵은 페이지 디렉토리 및 다수의 페이지 테이블을 포함하고, 상기 페이지 디렉토리는 상기 다수의 페이지 테이블로의 링크들을 포함하고, 상기 페이지 테이블들 각각은 다수의 데이터 페이지로의 링크들을 포함하며, 상기 페이지 디렉토리 및 페이지 테이블 각각은 상기 데이터 페이지들 중 하나에 기억되며,
    상기 방법은,
    다수의 페이지 테이블들 중 적어도 하나에 대해, 상기 다수의 페이지 테이블 중 상기 하나에 기초하여 제1 그림자 페이지 테이블을 생성하는 단계, 및
    상기 페이지 디렉토리에 기초하여 그림자 페이지 디렉토리를 생성하는 단계
    를 포함하고,
    상기 제1 그림자 페이지 테이블은, 상기 제1 그림자 페이지 테이블의 적어도 하나의 엔트리가 상기 다수의 페이지 테이블 중 상기 제1 페이지 테이블내 엔트리의 대응 링크와는 상이한 데이터 페이지로 링크하는 특징, 및 상기 제1 그림자 페이지 테이블이 상기 다수의 페이지 테이블 중 상기 제1 페이지 테이블내 대응 링크들이 판독/기록되는 하나 이상의 판독 전용 링크들을 포함하는 특징 중 적어도 하나로부터 상기 다수의 페이지 테이블 중 상기 제1 페이지 테이블과 상이하고,
    상기 페이지 디렉토리는 상기 다수의 페이지 테이블 중 상기 하나의 페이지 테이블로의 링크를 포함하고, 상기 그림자 페이지 디렉토리는 상기 다수의 페이지 테이블 중 상기 하나의 페이지 테이블로의 링크 대신 상기 그림자 페이지 테이블로의 링크를 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  2. 제1항에 있어서,
    정책이 메모리 액세스를 관리하고, 상기 가상 어드레스에 적용된 상기 어드레스 번역 맵에 기초한 상기 메모리에 대한 액세스는 상기 정책을 위배하며, 상기 가상 어드레스에 적용된 상기 그림자 페이지 디렉토리 및 상기 제1 그림자 페이지 테이블에 기초한 상기 메모리에 대한 액세스는 상기 정책을 위배하지 않는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  3. 제1항에 있어서,
    상기 데이터 페이지들 각각은 메모리의 특정 프레임에 기억되고, 상기 페이지 디렉토리는 제1 프레임에 기억되며,
    상기 방법은,
    상기 제1 프레임과 상이한 제2 프레임에 상기 페이지 디렉토리의 복사본을 유지하는 단계; 및
    상기 제1 프레임에 그림자 페이지 디렉토리를 기억하는 단계
    를 더 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  4. 제1항에 있어서,
    상기 페이지 디렉토리는 제1 크기 페이지로의 링크를 포함하고, 상기 제1 크기 페이지는 다수의 제2 크기 페이지를 포함하며,
    상기 방법은,
    상기 다수의 제2 크기 페이지로의 링크들을 포함하는 제2 그림자 페이지 테이블을 생성하는 단계를 더 포함하며,
    상기 그림자 페이지 디렉토리는 상기 제2 그림자 페이지 테이블로의 링크를 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  5. 메모리 사용을 관리하기 위한 시스템에 있어서,
    판독 및 기록될 수 있는 다수의 개별 어드레스 가능 컴포넌트들 - 상기 개별 어드레스 가능 컴포넌트들 각각은 관련된 물리 어드레스를 구비함 - 을 포함하는 메모리,
    상기 개별 어드레스 가능 컴포넌트들의 가상 어드레스들과 물리 어드레스들 간의 매핑을 정의하는 어드레스 번역 데이터 구조, 및
    상기 개별 어드레스 가능 컴포넌트들 중 제1 개별 어드레스 가능 컴포넌트에 액세스하려는 요청을 수신하는 메모리 관리자
    를 포함하고,
    상기 요청은 가상 어드레스를 근거로 상기 개별 어드레스 가능 컴포넌트들 중 상기 제1 개별 어드레스 가능 컴포넌트를 식별하고, 상기 메모리 관리자는 상기 어드레스 번역 구조의 그림자 표현을 포함하는 데이터를 근거로 상기 개별 어드레스 가능 컴포넌트들 중 상기 제1 개별 어드레스 가능 컴포넌트의 물리 어드레스로 상기 가상 어드레스를 번역하는 것을 특징으로 하는 시스템.
  6. 제5항에 있어서,
    상기 메모리는 다수의 페이지로 조직화되고, 상기 개별 어드레스 가능 컴포넌트들 중 상기 제1 개별 어드레스 가능 컴포넌트는 상기 다수의 페이지 중 하나의 페이지에 위치하며, 상기 어드레스 번역 구조는 (1) 상기 다수의 페이지로의 링크들을 포함하는 다수의 페이지 테이블들, 및 (2) 상기 다수의 페이지 테이블로의 링크들을 포함하는 페이지 디렉토리를 포함하며, 상기 어드레스 번역 구조의 상기 그림자 표현은 적어도 하나의 링크와 관련하여 상기 어드레스 번역 구조와 상이한 것을 특징으로 하는 시스템.
  7. 제6항에 있어서,
    상기 페이지 디렉토리 및 상기 페이지 테이블들에 포함된 링크들 각각은 하나 이상의 속성들을 포함하고, 상기 그림자 표현의 적어도 하나의 링크가 적어도 하나의 속성과 관련하여 상기 어드레스 번역 구조의 대응 링크와 상이한 것을 특징으로 하는 시스템.
  8. 제6항에 있어서,
    상기 페이지 디렉토리 및 상기 페이지 테이블들 각각은 상기 다수의 페이지 중 하나에 기억되고, 상기 페이지들 각각은 관련된 물리 로케이션 디스크립터를 구비하며, 상기 페이지 디렉토리 및 페이지 테이블들의 링크들 각각은 상기 물리 로케이션 디스크립터를 근거로 상기 페이지들 중 하나를 식별하는 것을 특징으로 하는 시스템.
  9. 제8항에 있어서,
    상기 그림자 표현은 상기 페이지 디렉토리의 적어도 하나 또는 상기 페이지 테이블들 중 하나의 대안 버전을 포함하고, 상기 대안 버전은 그 대안 버전이 근거로 하는 페이지와 상이한 물리 로케이션 디스크립터를 갖는 페이지에 기억되는 것을 특징으로 하는 시스템.
  10. 제5항에 있어서,
    정책은 메모리 액세스를 관리하고, 상기 어드레스 번역 구조는 메모리로 하여금 정책을 위배하게 하며,
    상기 시스템은,
    상기 어드레스 번역 구조를 근거로 상기 그림자 표현을 생성하고, 상기 그림자 표현이 가상 어드레스들을 근거로 한 메모리 액세스에 사용되는 경우 상기 정책을 위배하지 않게 됨을 보장하는 메모리 액세스 컨트롤 관리자를 더 포함하는 것을 특징으로 하는 시스템.
  11. 제10항에 있어서,
    상기 정책은 상기 메모리의 일부를 액세스 불가로 정의하고, 상기 메모리 액세스 컨트롤 관리자는 상기 그림자 표현이 상기 메모리의 상기 일부를 위해 가상 어드레스를 공개하지 않음을 보장하는 것을 특징으로 하는 시스템.
  12. 제10항에 있어서,
    상기 정책은 상기 메모리의 일부를 판독 가능 하지만 기록 불가능한 것으로 정의하고, 상기 메모리 액세스 컨트롤 관리자는 상기 메모리의 일부를 판독 전용으로 마크하는 하나 이상의 속성들을 상기 그림자 표현이 포함함을 보장하는 것을 특징으로 하는 시스템.
  13. 제10항에 있어서,
    상기 메모리 액세스 컨트롤 관리자는 (1) 어드레스 번역 구조; 및 (2) 그림자 표현 중 적어도 하나를 기억하는 상기 메모리의 일부분들을 판독 전용으로 마크하는 하나 이상의 속성들을 상기 그림자 표현이 포함함을 보장하는 것을 특징으로 하는 시스템.
  14. 메모리 액세스 요청을 실행하는 방법에 있어서,
    메모리의 한 유닛을 판독 또는 기록하려는 요청 - 상기 요청은 가상 어드레스를 근거로 상기 메모리의 상기 유닛을 식별함 - 을 수신하는 단계,
    가상 어드레스들과 물리 어드레스들간의 관계를 정의하는 맵의 표현을 근거로 메모리의 상기 유닛에 액세스하는 단계, 및
    상기 액세스 요청에 지정된 판독 또는 기록을 실행하는 단계
    를 포함하고,
    상기 맵은 상기 메모리의 하나 이상의 페이지들에 기억되고, 상기 맵의 상기 표현은 상기 하나 이상의 페이지들 중 제1 페이지를 근거로 한 적어도 하나의 그림자 페이지를 포함하며, 상기 맵은 상기 가상 어드레스를 근거로 한 상기 메모리 액세스에 사용되는 경우 메모리 액세스 정책을 위배하게 되는 적어도 하나의 특징을 포함하며, 상기 그림자 페이지는 상기 가상 어드레스를 근거로 상기 메모리에 액세스하기 위해 상기 맵의 상기 표현을 사용해서 상기 메모리 액세스 정책을 위배하지 않는다는 점에서 상기 하나 이상의 페이지들 중 상기 제1 페이지와 상이한 것을 특징으로 하는 방법.
  15. 제14항에 있어서,
    상기 메모리 액세스 정책은 상기 메모리의 일부를 액세스 불가로 정의하고, 상기 맵은 가상 어드레스 매핑을 정의하는 상기 메모리의 일부분들로의 기록 가능한 링크들을 공개하며, 상기 맵의 상기 표현은 가상 어드레스 매핑들을 정의하는 상기 메모리의 일부분들로의 기록 가능한 링크들을 공개하지 않는 것을 특징으로 하는 방법.
  16. 제14항에 있어서,
    상기 맵은 (1) 상기 하나 이상의 페이지들의 집합으로의 링크들을 포함하는 다수의 테이블, 및 (2) 상기 다수의 테이블로의 링크들을 포함하는 디렉토리를 포함하고, 상기 적어도 하나의 그림자 페이지는 그림자 디렉토리의 적어도 하나의 링크가 상기 다수의 페이지 중 하나 대신 그림자 페이지 테이블로 향한다는 점에서 상기 디렉토리와 상이한 그림자 디렉토리를 포함하는 것을 특징으로 하는 방법.
  17. 제14항에 있어서,
    상기 맵은 상기 하나 이상의 페이지들의 집합으로의 링크들을 포함하는 다수의 테이블을 포함하고, 상기 그림자 페이지는 상기 테이블들 중 하나를 근거로 한 표현을 포함하며, 상기 그림자 페이지는 상기 테이블들 중 상기 하나의 테이블에 존재하는 제1 링크의 표현을 포함하며, 상기 제1 링크는 상기 테이블들 중 상기 하나의 테이블의 판독/기록 링크이며, 상기 그림자 페이지는 상기 제1 링크의 상기 그림자 페이지의 표현이 판독 전용으로 마크되어 있다는 점에서 상기 테이블들 중 상기 하나의 테이블과 상이한 것을 특징으로 하는 방법.
  18. 제14항에 있어서,
    상기 그림자 페이지는 디렉토리를 포함하고, 메모리의 상기 유닛은 다수의 제2 크기 페이지를 포함하는 제1 크기 페이지에 의해 포함되며, 상기 맵은 상기 제1 크기 페이지로의 링크를 포함하는 디렉토리를 포함하며, 상기 그림자 페이지는 상기 디렉토리를 근거로 하며, 상기 그림자 페이지는 상기 제1 크기 페이지로의 링크 대신 테이블로의 링크를 포함한다는 점에서 상기 디렉토리와 상이하며, 상기 테이블은 상기 제1 크기 페이지 내에 포함된 제2 크기 페이지들로의 링크들을 포함하는 것을 특징으로 하는 방법.
  19. 어드레스 번역 맵을 표현하는 데이터 구조가 인코드되어 있는 컴퓨터 판독 가능 매체에 있어서,
    상기 어드레스 번역 맵은 페이지 디렉토리를 포함하고, 상기 디렉토리는 다수의 페이지 테이블로의 링크들을 포함하고, 상기 페이지 테이블들 각각은 상기 컴퓨터 판독 가능 매체 내의 특정 프레임에 기억되며, 상기 페이지 테이블들 각각은 상기 컴퓨터 판독 가능 매체의 다수의 페이지로의 링크들을 포함하며,
    상기 데이터 구조는,
    상기 다수의 페이지 테이블 중 제1 페이지 테이블을 근거로 한 그림자 페이지 테이블,
    상기 페이지 디렉토리를 근거로 한 그림자 페이지 디렉토리
    를 포함하고,
    상기 페이지 디렉토리는 상기 다수의 페이지 테이블 중 상기 제1 페이지 테이블로의 링크를 포함하는 제1 엔트리를 포함하고, 상기 그림자 페이지 테이블은 상기 제1 엔트리에 대응하는 제2 엔트리를 포함하며, 상기 제2 엔트리는 상기 다수의 페이지 테이블 중 상기 제1 페이지 테이블로의 링크 대신 상기 그림자 페이지 테이블로의 링크를 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  20. 제19항에 있어서,
    상기 다수의 페이지 테이블 중 제1 페이지 테이블은 제1 프레임에 기억되고, 상기 그림자 페이지 테이블은 제2 프레임에 기억되며, 상기 그림자 페이지 디렉토리는 상기 페이지 디렉토리의 링크가 상기 제1 프레임의 식별자를 포함하고 상기 그림자 페이지 디렉토리의 대응 링크가 상기 제2 프레임의 식별자를 포함한다는 점과 관련하여 상기 페이지 디렉토리와 상이한 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  21. 제19항에 있어서,
    상기 다수의 페이지 테이블 중 상기 제1 페이지 테이블은 상기 페이지들 중 제1 페이지로의 링크를 포함하고, 상기 그림자 페이지 테이블은 상기 페이지들 중 상기 제1 페이지로의 링크 대신 상기 페이지들 중 상기 제1 페이지를 근거로 한 표현으로의 링크를 포함하며, 상기 페이지들 중 상기 제1 페이지를 근거로 한 상기 표현은 상기 페이지들 중 상기 제1 페이지와 상이한 프레임에 기억되는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  22. 제21항에 있어서,
    상기 다수의 페이지 중 상기 제1 페이지는 상기 페이지 디렉토리 또는 상기 다수의 페이지 테이블 중 상기 제1 페이지 테이블을 기억하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  23. 제22항에 있어서,
    상기 다수의 페이지 테이블 중 상기 제1 페이지 테이블은 상기 다수의 페이지 중 상기 제1 페이지를 판독 가능 및 기록 가능으로 지정하는 링크를 포함하고, 상기 그림자 페이지 테이블의 상기 대응 링크는 상기 다수의 페이지 중 상기 제1 페이지를 판독 전용으로 지정하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  24. 제19항에 있어서,
    상기 페이지 디렉토리 및 상기 다수의 페이지 테이블 중 상기 제1 페이지 테이블은, 가상 어드레스를 근거로 한 메모리 액세스에 사용되는 경우, 메모리 액세스 정책을 위배하게 되는 적어도 하나의 특징을 포함하고, 상기 그림자 페이지 디렉토리 및 그림자 페이지 테이블은 상기 가상 어드레스를 근거로 상기 그림자 페이지 디렉토리 및 그림자 페이지 테이블을 통해 상기 메모리에 액세스하여 상기 메모리 액세스 정책을 위배하지 않게 되는 데이터를 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
KR1020040072560A 2003-10-30 2004-09-10 어드레스 번역 컨트롤을 위한 그림자 페이지 테이블 KR101150079B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/697,197 2003-10-30
US10/697,197 US7310721B2 (en) 2003-10-30 2003-10-30 Shadow page tables for address translation control

Publications (2)

Publication Number Publication Date
KR20050041868A true KR20050041868A (ko) 2005-05-04
KR101150079B1 KR101150079B1 (ko) 2012-06-01

Family

ID=34423388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040072560A KR101150079B1 (ko) 2003-10-30 2004-09-10 어드레스 번역 컨트롤을 위한 그림자 페이지 테이블

Country Status (10)

Country Link
US (1) US7310721B2 (ko)
EP (1) EP1528474B1 (ko)
JP (1) JP4928721B2 (ko)
KR (1) KR101150079B1 (ko)
CN (1) CN1612112B (ko)
AU (1) AU2004218602B2 (ko)
BR (1) BRPI0404279A (ko)
CA (1) CA2482872C (ko)
MX (1) MXPA04009350A (ko)
RU (1) RU2373566C2 (ko)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430570B1 (en) 2003-04-28 2008-09-30 Ibrix, Inc. Shadow directory structure in a distributed segmented file system
WO2004107130A2 (en) * 2003-05-28 2004-12-09 Caymas Systems, Inc. Multilayer access control security system
TWI249670B (en) * 2004-04-29 2006-02-21 Mediatek Inc System and method capable of sequentially writing a flash memory
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7721094B2 (en) * 2005-05-06 2010-05-18 Microsoft Corporation Systems and methods for determining if applications executing on a computer system are trusted
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
EP1883865A4 (en) * 2005-05-24 2010-12-15 Marathon Techn Corp FAULT TOLERANT COMPUTER SYSTEM WITH SYMMETRIC MULTIPROCESSOR
US7657725B2 (en) 2005-06-24 2010-02-02 Sigmatel, Inc. Integrated circuit with memory-less page table
US7814287B2 (en) * 2005-07-15 2010-10-12 Xensource, Inc. Using writeable page tables for memory address translation in a hypervisor environment
US7681200B2 (en) * 2005-07-22 2010-03-16 Microsoft Corporation Secure hardware desktop buffer composition
CA2632235A1 (en) * 2005-12-02 2007-06-07 Citrix Systems, Inc. Method and apparatus for providing authentication credentials from a proxy server to a virtualized computing environment to access a remote resource
WO2008011030A2 (en) * 2006-07-17 2008-01-24 Xensource, Inc Tracking current time on multiprocessor hosts and virtual machines
US7739466B2 (en) * 2006-08-11 2010-06-15 Intel Corporation Method and apparatus for supporting immutable memory
GB2442495B (en) * 2006-10-02 2009-04-01 Transitive Ltd Method and apparatus for handling dynamically linked function cells with respect to program code conversion
US7885932B2 (en) * 2006-11-01 2011-02-08 Ab Initio Technology Llc Managing storage of individually accessible data units
US7865589B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US7870277B2 (en) 2007-03-12 2011-01-11 Citrix Systems, Inc. Systems and methods for using object oriented expressions to configure application security policies
US7853679B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
JP4897578B2 (ja) * 2007-06-06 2012-03-14 株式会社日立製作所 仮想計算機の制御プログラムおよび仮想計算機システム
JP5260081B2 (ja) 2008-02-25 2013-08-14 パナソニック株式会社 情報処理装置及びその制御方法
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8024546B2 (en) * 2008-10-23 2011-09-20 Microsoft Corporation Opportunistic page largification
US8301863B2 (en) * 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US8135937B2 (en) * 2008-11-17 2012-03-13 International Business Machines Corporation Logical partition memory
US10255463B2 (en) 2008-11-17 2019-04-09 International Business Machines Corporation Secure computer architecture
US8225069B2 (en) 2009-03-31 2012-07-17 Intel Corporation Control of on-die system fabric blocks
US20100262722A1 (en) * 2009-04-10 2010-10-14 Christophe Vauthier Dynamic Assignment of Graphics Processing Unit to a Virtual Machine
JP4915756B2 (ja) * 2009-12-16 2012-04-11 インターナショナル・ビジネス・マシーンズ・コーポレーション アドレス変換を高速化する方法及びシステム
US8812907B1 (en) 2010-07-19 2014-08-19 Marathon Technologies Corporation Fault tolerant computing systems using checkpoints
US8954697B2 (en) * 2010-08-05 2015-02-10 Red Hat, Inc. Access to shared memory segments by multiple application processes
US8364932B2 (en) * 2010-10-29 2013-01-29 Vmware, Inc. System and method to prioritize large memory page allocation in virtualized systems
US9606936B2 (en) * 2010-12-16 2017-03-28 Advanced Micro Devices, Inc. Generalized control registers
US20130013605A1 (en) 2011-07-08 2013-01-10 Stanfill Craig W Managing Storage of Data for Range-Based Searching
WO2013048943A1 (en) 2011-09-30 2013-04-04 Intel Corporation Active state power management (aspm) to reduce power consumption by pci express components
US9135161B2 (en) 2012-06-12 2015-09-15 International Business Machines Corporation Flash translation layer system for maintaining data versions in solid state memory
US9122581B2 (en) * 2012-06-12 2015-09-01 International Business Machines Corporation Data versioning in solid state memory
US9122582B2 (en) * 2012-06-12 2015-09-01 International Business Machines Corporation File system for maintaining data versions in solid state memory
US9116793B2 (en) * 2012-06-12 2015-08-25 International Business Machines Corporation Maintaining versions of data in solid state memory
US9798695B2 (en) * 2012-08-07 2017-10-24 Nokia Technologies Oy Access control for wireless memory
US9251002B2 (en) 2013-01-15 2016-02-02 Stratus Technologies Bermuda Ltd. System and method for writing checkpointing data
US9436844B2 (en) 2013-08-29 2016-09-06 Microsoft Technology Licensing, Llc Access enablement security circuit
US9716708B2 (en) 2013-09-13 2017-07-25 Microsoft Technology Licensing, Llc Security certificates for system-on-chip security
WO2015102875A1 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Checkpointing systems and methods of using data forwarding
JP6518672B2 (ja) 2013-12-30 2019-05-22 ストラタス・テクノロジーズ・バミューダ・リミテッド 動的チェックポインティングシステムおよび方法
EP3090345B1 (en) 2013-12-30 2017-11-08 Stratus Technologies Bermuda Ltd. Method of delaying checkpoints by inspecting network packets
US9805194B2 (en) 2015-03-27 2017-10-31 Intel Corporation Memory scanning methods and apparatus
US9836410B2 (en) * 2015-04-15 2017-12-05 Qualcomm Incorporated Burst translation look-aside buffer
US10387325B2 (en) 2017-11-28 2019-08-20 International Business Machines Corporation Dynamic address translation for a virtual machine
CN109388524B (zh) * 2018-10-09 2021-10-01 郑州云海信息技术有限公司 虚拟磁盘格式的寻址方法和计算机可读存储介质
CN111290714B (zh) * 2020-02-06 2023-09-05 北京百度网讯科技有限公司 数据读取方法和装置
CN112988508B (zh) * 2021-03-04 2022-03-18 浙江中控研究院有限公司 一种基于内存隔离的可信plc嵌入式系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6299844A (ja) * 1985-10-28 1987-05-09 Hitachi Ltd アドレス変換装置
JP3102495B2 (ja) * 1989-12-28 2000-10-23 株式会社日立製作所 仮想記憶管理方法
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
DE69638018D1 (de) * 1995-02-13 2009-10-15 Intertrust Tech Corp Systeme und Verfahren zur Verwaltung von gesicherten Transaktionen und zum Schutz von elektronischen Rechten
US5960463A (en) * 1996-05-16 1999-09-28 Advanced Micro Devices, Inc. Cache controller with table walk logic tightly coupled to second level access logic
JPH10312338A (ja) * 1997-05-13 1998-11-24 Toshiba Corp メモリ制御装置、及びメモリ制御方法
US6105103A (en) * 1997-12-19 2000-08-15 Lsi Logic Corporation Method for mapping in dynamically addressed storage subsystems
US6233668B1 (en) * 1999-10-27 2001-05-15 Compaq Computer Corporation Concurrent page tables
US6889296B2 (en) 2001-02-20 2005-05-03 International Business Machines Corporation Memory management method for preventing an operating system from writing into user memory space
JP2003256278A (ja) * 2002-02-28 2003-09-10 Hitachi Ltd 情報保護方法及びその実施装置並びにその処理プログラム
US7003702B2 (en) * 2002-03-18 2006-02-21 Emc Corporation End-to-end checksumming for read operations
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US7565509B2 (en) * 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US7478235B2 (en) * 2002-06-28 2009-01-13 Microsoft Corporation Methods and systems for protecting data in USB systems

Also Published As

Publication number Publication date
AU2004218602A8 (en) 2010-01-07
CN1612112A (zh) 2005-05-04
RU2004131609A (ru) 2006-04-10
EP1528474B1 (en) 2017-11-15
MXPA04009350A (es) 2005-05-04
CN1612112B (zh) 2011-09-28
CA2482872A1 (en) 2005-04-30
US20050097298A1 (en) 2005-05-05
RU2373566C2 (ru) 2009-11-20
AU2004218602B2 (en) 2010-01-21
EP1528474A3 (en) 2008-07-02
CA2482872C (en) 2013-07-30
EP1528474A2 (en) 2005-05-04
JP2005135396A (ja) 2005-05-26
JP4928721B2 (ja) 2012-05-09
BRPI0404279A (pt) 2005-06-21
AU2004218602A1 (en) 2005-05-19
KR101150079B1 (ko) 2012-06-01
US7310721B2 (en) 2007-12-18

Similar Documents

Publication Publication Date Title
KR101150079B1 (ko) 어드레스 번역 컨트롤을 위한 그림자 페이지 테이블
KR100918530B1 (ko) 어드레스 매핑 캐시들의 엔트리 소거 방법, 및 사용 관리 시스템
US7058768B2 (en) Memory isolation through address translation data edit control
JP4672281B2 (ja) 最適化を用いたメモリアクセス制御の実装
JP4467249B2 (ja) アドレス変換に対する制限の使用によるアドレス指定可能なエンティティへのアクセスの制御
US8375195B2 (en) Accessing memory locations for paged memory objects in an object-addressed memory system
JP4237190B2 (ja) 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム
US7882317B2 (en) Process isolation using protection domains
KR20190026909A (ko) 컴퓨팅 장치의 메모리 내 페이지 접근 제어
US20060047959A1 (en) System and method for secure computing
US5875487A (en) System and method for providing efficient shared memory in a virtual memory system
KR20100109403A (ko) 정보 처리 프로그램 기억 매체, 정보 처리 장치 및 정보 처리 방법
US5940869A (en) System and method for providing shared memory using shared virtual segment identification in a computer system
JPH1173372A (ja) コンピュータ・ウィルスによる不正アクセス検出方法
CN115238297B (zh) 多层级权限控制内存保护方法和装置
KR20240045550A (ko) 데이터 보호 시스템

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 8