KR101396831B1 - 메모리 접근 제어 방법 - Google Patents

메모리 접근 제어 방법 Download PDF

Info

Publication number
KR101396831B1
KR101396831B1 KR1020070031947A KR20070031947A KR101396831B1 KR 101396831 B1 KR101396831 B1 KR 101396831B1 KR 1020070031947 A KR1020070031947 A KR 1020070031947A KR 20070031947 A KR20070031947 A KR 20070031947A KR 101396831 B1 KR101396831 B1 KR 101396831B1
Authority
KR
South Korea
Prior art keywords
memory
virtual machine
operating system
guest operating
access
Prior art date
Application number
KR1020070031947A
Other languages
English (en)
Other versions
KR20080089002A (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 삼성전자주식회사
Priority to KR1020070031947A priority Critical patent/KR101396831B1/ko
Priority to US12/056,438 priority patent/US8352694B2/en
Publication of KR20080089002A publication Critical patent/KR20080089002A/ko
Priority to US13/736,531 priority patent/US8943288B2/en
Application granted granted Critical
Publication of KR101396831B1 publication Critical patent/KR101396831B1/ko

Links

Images

Classifications

    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Abstract

본 발명은 메모리 접근 관리에 관한 것으로, 메모리의 전 영역에 대한 제1 순위의 접근 권한인 특권 모드로 실행되는 제1 계층 요소와 메모리의 일부 영역에 대한 제2 순위의 접근 권한인 비특권 모드로 실행되는 제2 및 제3 계층 요소를 포함하는 시스템에서, 특권 모드와 비특권 모드 중 어느 모드로 실행되는 계층 요소가 메모리에 현재 접근하고자 하는가에 따라 소정의 주소 공간 단위인 페이지 단위로 메모리의 접근 가능 여부를 결정하고, 메모리의 다수의 영역들 중 현재 접근하고자 하는 영역이 제1 내지 제3 계층 요소 중 어느 것에 할당된 영역인지에 따라 메모리의 접근 가능 여부를 결정함으로써, 게스트 운영 체제 커널과 마찬가지로 비특권 모드에서 동작하는 어플리케이션으로부터 게스트 운영 체제 커널에 할당된 메모리 영역을 효과적으로 보호할 수 있다.

Description

메모리 접근 제어 방법{Method of Controlling Memory Access}
도 1은 종래의 가상화 기술이 적용되지 않은 시스템을 나타내는 개념도이다.
도 2는 종래의 가상화 기술이 적용된 시스템을 나타내는 개념도이다.
도 3은 본 발명의 일 실시예에 따른 가상화 기술이 적용된 시스템을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 프로세서를 이용한 가상화 시스템에서 리눅스(Linux)를 게스트 운영 체제로 사용하였을 때에 가상 어드레스, 메모리 영역 및 페이지 테이블의 접근 허용 규칙을 나타낸 개념도이다.
도 5는 본 발명의 일 실시예에 따른 메모리 접근 제어 방법을 나타내는 흐름도이다.
본 발명은 메모리 접근 관리에 관한 것이며, 더욱 상세하게는 가상화(virtualization) 기술이 적용된 시스템에서 메모리 접근 제어 방법에 관한 것이다.
가상화 기술이란 운영 체제(operating system, OS)에 대하여 프로세서, 메모 리, 네트워크, 디바이스, 그래픽스 기능 등의 하드웨어 자원을 가상화하는 것이다. 대부분의 운영 체제는 스스로가 컴퓨터의 자원을 독점적으로 점유하고 있는 것을 전제로 동작한다. 따라서, 자원을 독점적으로 점유하는 경우 여러 운영 체제를 한대의 컴퓨터 상에서 동시에 실행시키는 것은 설치된 운영 체제 간의 경합을 부르기 때문에 일반적으로 불가능하다. 가상화 기술은 하드웨어와 운영 체제의 사이에 운영 체제에 대해 가상적인 하드웨어 인터페이스를 제공하는 것으로 한대의 컴퓨터 상에서 여러 운영 체제를 동시에 실행 가능하도록 한다.
기존의 가상화 기술은 PC(personal computer) 서버 상에서 서버 통합(server consolidation)을 목표로 개발되었지만, 3G(3Generation) 이상의 환경에서는 휴대폰, PDA(personal digital assistant), DMB(digital multimedia broadcasting) 기기 등과 같은 임베디드 시스템(embedded system)에서도 안전한 모바일(mobile) 기기를 구현하기 위한 필수 요소로 가상화 기술이 적용되고 있다.
도 1은 종래의 가상화 기술이 적용되지 않은 시스템을 나타내는 개념도이다.
도 1을 참조하면, 시스템(10)은 하드웨어(11), 운영 체제(OS, operating system) 커널(12) 및 복수의 어플리케이션(applications, 13)을 포함한다. 운영 체제 커널(12)은 운영 체제의 핵심으로, 컴퓨터의 하드웨어와 다양한 어플리케이션의 보안 접근을 책임지는 소프트웨어이다. 시스템의 자원은 제한되어 있지만 어플리케이션은 많기 때문에 운영 체제 커널(12)은 한 어플리케이션이 언제 얼만큼 자원을 사용해야 할지 결정해야 하며, 이를 스케줄링이라고 한다.
일반적으로 운영 체제 커널(12)과 어플리케이션(13)은 하나의 페이지 테이 블(page table)을 공유하여 동일한 주소 공간(address space)에 존재하며, 이 경우 어플리케이션(13)이 운영 체제 커널(12)의 메모리 영역을 침범하지 못하도록 접근을 제어할 필요가 있다.
일반적으로 마이크로프로세서는 기본적으로 특권 모드(privileged mode)와 비특권 모드(unprivileged mode)의 두 가지 수행 모드를 제공한다. 특권 모드는 소프트웨어가 메모리 및 입출력 장치와 같은 시스템의 중요한 부분을 조작하는 제한된 동작을 수행할 수 있는 모드이며, 어플리케이션(13)은 특권 모드로 실행될 수 없고, 운영 체제 커널(12) 또는 시스템에 부착된 장치들을 제어하는 장치 구동기는 특권 모드로 실행될 수 있다. 다시 말해, 특권 모드로 실행하는 프로그램들은 메모리 및 시스템 자원에 대한 제한 없이 접근이 허가된다. 반면, 비특권 모드로 실행되는 프로그램들은 특정 메모리 영역 및/또는 장치 시스템에 대한 접근이 제한된다. 따라서, 운영 체제 커널(12)은 특권 모드에서 접근 가능하고, 어플리케이션(13)은 비특권 모드에서 접근 가능하도록 하여 어플리케이션(13)이 운영 체제 커널(12)의 메모리 영역을 침범하지 못하도록 한다.
도 2는 종래의 가상화 기술이 적용된 시스템을 나타내는 개념도이다.
도 2를 참조하면, 시스템(20)은 하드웨어(21), 가상 머신 모니터(virtual machine monitor, VMM, 22), 제1 게스트 운영 체제 커널(23), 제2 게스트 운영 체제커널(24), 제1 복수의 어플리케이션(25) 및 제2 복수의 어플리케이션(26)을 포함한다. 이 경우, 게스트 운영 체제의 동작 환경을 가상 머신(virtual machine, VM)이라고 한다.
고기능 x86 프로세서와 같이 수행 모드가 세분화되어 있는 경우에는 각 메모리 영역 별로 접근 가능한 모드를 설정하여 접근을 제어할 수 있다. 구체적으로, 가상 머신 모니터(22)가 수행되는 가상 머신 모니터(VMM) 모드, 제1 및 제2 게스트 운영 체제 커널(23, 24)이 수행되는 가상 머신 커널(VM kernel) 모드, 및 제1 및 제2 복수의 어플리케이션(25, 26)이 수행되는 및 가상 머신 사용자(VM user) 모드를 각각 정의할 수 있다.
이와 달리, 임베디드 시스템과 같이 특권 모드와 비특권 모드의 두 가지의 수행 모드만을 가지는 시스템의 경우에는 가상 머신 모니터(22)는 특권 모드에서 수행되고, 제1 및 제2 게스트 운영 체제 커널(23, 24) 및 제1 및 제2 복수의 어플리케이션(25, 26)은 비특권 모드에서 수행된다. 이 경우, 제1 및 제2 게스트 운영 체제 커널(23, 24) 및 제1 및 제2 복수의 어플리케이션(25, 26)은 동일한 수행 모드인 비특권 모드에서 수행되므로, 보다 상세한 수행 모드로 구별할 필요가 있다. 따라서, 제1 및 제2 게스트 운영 체제 커널(23, 24)의 수행 모드를 가상 머신 커널 모드로, 제1 및 제2 복수의 어플리케이션(25, 26)의 수행 모드를 가상 머신 사용자 모드로 하여 구별한다.
그러나, 가상 머신 커널 모드 및 가상 머신 사용자 모드는 둘 다 비특권 모드에 대응되므로, 동일한 메모리 접근 권한을 가지게 된다. 즉, 가상 머신 사용자 모드에서 제1 및 제2 게스트 운영 체제 커널(23, 24)에 해당하는 메모리 영역에 접근 가능하게 되는 문제가 발생한다.
본 발명이 이루고자 하는 기술적 과제는 시스템이 두 가지 수행 모드를 가질 경우 동일한 수행 모드에서 동작하는 서로 다른 계층 사이의 메모리 접근 제어 방법을 제공하는데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는 두 가지 수행 모드를 가질 경우 동일한 수행 모드에서 동작하는 서로 다른 계층 사이의 메모리 영역을 보호할 수 있는 시스템을 제공하는데 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 메모리 접근제어 방법은 메모리의 전 영역에 대한 제1 순위의 접근 권한인 특권 모드로 실행되는 제1 계층 요소와 상기 메모리의 일부 영역에 대한 제2 순위의 접근 권한인 비특권 모드로 실행되는 제2 및 제3 계층 요소를 포함하는 시스템에서, 상기 특권 모드와 상기 비특권 모드 중 어느 모드로 실행되는 계층 요소가 상기 메모리에 현재 접근하고자 하는가에 따라 소정의 주소 공간 단위인 페이지 단위로 상기 메모리의 접근 가능 여부를 결정하는 단계; 및 상기 메모리의 다수의 영역들 중 현재 접근하고자 하는 영역이 상기 제1 내지 제3 계층 요소 중 어느 것에 할당된 영역인지에 따라 상기 메모리의 접근 가능 여부를 결정하는 단계를 포함한다.
또한, 상기 기술적 과제는 메모리의 전 영역에 대한 제1 순위의 접근 권한인 특권 모드로 실행되는 제1 계층 요소와 상기 메모리의 일부 영역에 대한 제2 순위의 접근 권한인 비특권 모드로 실행되는 제2 및 제3 계층 요소를 포함하는 시스템에서, 상기 특권 모드와 상기 비특권 모드 중 어느 모드로 실행되는 계층 요소가 상기 메모리에 현재 접근하고자 하는가에 따라 소정의 주소 공간 단위인 페이지 단위로 상기 메모리의 접근 가능 여부를 결정하는 단계; 및 상기 메모리의 다수의 영역들 중 현재 접근하고자 하는 영역이 상기 제1 내지 제3 계층 요소 중 어느 것에 할당된 영역인지에 따라 상기 메모리의 접근 가능 여부를 결정하는 단계를 포함하는 메모리 접근 제어 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 의해 달성된다.
또한, 상기 다른 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 시스템은 메모리의 전 영역에 대해 접근할 수 있는 특권 모드로 실행되는 제1 계층 요소와 상기 메모리의 일부 영역에 대해 접근할 수 있는 비특권 모드로 실행되는 제2 및 제3 계층 요소를 포함하는 시스템에 있어서, 상기 메모리; 및 상기 특권 모드와 상기 비특권 모드 중 어느 모드로 실행되는 계층 요소가 상기 메모리에 현재 접근하고자 하는가에 따른 소정의 주소 공간 단위인 페이지 단위로 상기 메모리의 접근 가능 여부를 결정하고, 상기 결정 결과에 대해서 상기 메모리의 다수의 영역들 중 현재 접근하고자 하는 영역이 상기 제1 내지 제3 계층 요소 중 어느 것에 할당된 영역인지에 따라 상기 메모리의 접근 가능 여부를 재결정하는 프로세서를 포함한다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 구성요소에 대해 사용하였다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 3은 본 발명의 일 실시예에 따른 가상화 기술이 적용된 시스템을 나타내는 블록도이다. 상술한 바와 같이, 가상화 기술이 적용된 시스템은 하드웨어, 적어도 하나의 게스트 운영 체제 커널, 적어도 하나의 어플리케이션, 그리고 하드웨어와 게스트 운영 체제 커널을 인터페이싱하는 가상 머신 모니터(virtual machine monitor, VMM)를 포함한다.
도 3을 참조하면, 가상화 기술이 적용된 시스템에 포함된 하드웨어는 프로세 서(31) 및 메모리(32)를 포함한다. 메모리는 제1 내지 제3 메모리 영역(321, 322, 323)을 포함할 수 있다.
프로세서(31)는 특권 모드(privileged mode) 및 비특권 모드(unprivileged mode)의 두 가지의 수행 모드만을 가진 경우 가상화 기술을 적용하기 위하여 현재 실행되는 프로세스에 따라 가상 모드를 제공한다. 구체적으로, 현재 실행되는 프로세스가 가상 머신 모니터인 경우 특권 모드에서 동작하는 제1 가상 모드를 제공하고, 현재 실행되는 프로세스가 게스트 운영 체제 커널인 경우 비특권 모드에서 동작하는 제2 가상 모드를 제공하며, 현재 실행되는 프로세스가 어플리케이션인 경우 비특권 모드에서 동작하는 제3 가상 모드를 제공한다. 여기서, 제1 가상 모드는 가상 머신 모니터(VMM) 모드라고 할 수 있고, 제2 가상 모드는 가상 머신 커널(VM kernel) 모드라고 할 수 있으며, 제3 가상 모드는 가상 머신 사용자(VM user) 모드라고 할 수 있다. 프로세서(31)는 마이크로프로세서, 디지털 신호 처리기, 마이크로 컨트롤러 등 소프트웨어를 실행할 수 있는 임의의 형태일 수 있다.
메모리(32)는 제1 내지 제3 메모리 영역(321, 322, 323)을 포함하고, 제1 메모리 영역(321)은 가상 머신 모니터에 할당되고, 제2 메모리 영역(322) 게스트 운영 체제 커널에 할당되며, 제3 메모리 영역(323)은 어플리케이션에 할당될 수 있다. 메모리(32)는 하드 디스크, 플로피 디스크, RAM, ROM, 플래시 메모리, 또는 프로세서에 의해 판독 가능한 임의의 머신 매체일 수 있다.
가상 머신 커널 모드 및 가상 머신 사용자 모드는 비특권 모드에서 동작하므로, 가상 머신 커널 모드에서 동작하는 게스트 운영 체제 커널과 가상 머신 사용자 모드에서 동작하는 어플리케이션은 프로세서(31)의 수행 모드가 동일하다. 이 경우, 동일한 수행 모드인 비특권 모드에서 동작하지만, 가상 머신 사용자 모드에서 동작하는 어플리케이션은 게스트 운영 체제 커널에 할당된 제2 메모리 영역(322)에 대한 접근할 수 없도록 해야 한다.
따라서, 프로세서(31)의 수행 모드에 따라 메모리(32)에 대한 접근 가능 여부를 페이지 단위로 설정함과 동시에, 즉, 페이지 테이블에서 메모리 접근 권한을 설정함과 동시에, 프로세서(31)의 가상 모드에 따라, 다시 말해, 현재 실행되는 프로세스에 따라 메모리(32)에 대한 접근 가능 여부를 메모리 영역 단위로 설정해서 현재 실행되는 프로세스의 메모리 접근을 제어해야 한다.
도 4는 본 발명의 일 실시예에 따른 프로세서를 이용한 가상화 시스템에서 리눅스(Linux)를 게스트 운영 체제로 사용하였을 때에 가상 어드레스, 메모리 영역 및 페이지 테이블의 접근 허용 규칙을 나타낸 개념도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 프로세서는 두 가지 수행 모드, 즉, 특권 모드 및 비특권 모드에 따라 메모리 접근 권한을 제어한다. 상술한 바와 같이, 가상화 기술이 적용된 시스템은 하드웨어, 가상 머신 모니터, 적어도 하나의 게스트 운영 체제 커널 및 적어도 하나의 어플리케이션을 포함한다.
이 경우, 가상 머신 모니터는 특권 모드에서 동작하는 가상 머신 모니터 모드에서 수행되고, 게스트 운영 체제 커널은 비특권 모드에서 동작하는 가상 머신 커널 모드에서 수행되며, 어플리케이션은 비특권 모드에서 동작하는 가상 머신 사용자 모드에서는 수행된다. 그러나, 본 발명에 따르면, 게스트 운영 체제 커널과 어플리케이션은 메모리 영역 및 페이지 테이블의 설정으로 구분되는 접근 권한이 부여됨으로써, 각자 자신에게 할당되지 않는 메모리 영역을 침범하지 않고, 다른 프로세스로부터 자신의 메모리 영역을 침범 당하지 않을 수 있다.
메모리 영역이란, 가상 머신 모니터, 게스트 운영 체제 커널 및 어플리케이션에 각각 할당되도록 미리 설정된 가상 어드레스의 각 영역을 말한다. 예를 들어, 도 4는 32비트 가상 어드레싱(총 용량이 약 4GB)을 예로 든 것으로, 가상 메모리 공간은 0xFFFF FFFF부터 0x0000 0000까지 설정된다. 그 중에서, 가상 머신 모니터에 할당된 가상 머신 모니터 영역(D0)은 0xFFFF FFFF부터 0xFC00 0000까지 지정되고, 게스트 운영 체제 커널에 할당된 가상 머신 커널 영역(D1)은 0xC080 0000부터 0xC000 0000까지 지정되며, 어플리케이션에 할당된 가상 머신 사용자 영역(D2)은 0xC000 0000부터 0x0000 0000까지 지정된다.
페이지 테이블(page table)은 가상 어드레스와 물리 어드레스를 매핑하는 테이블이다. 페이지는 가상 어드레싱의 최소 단위로서, 예를 들어 32비트 어드레싱을 채택할 경우 일반적으로 4KB의 가상 메모리 공간을 말한다. 가상 어드레스로 지시되는 어떤 페이지와 연계되는 물리 어드레스를 프레임(frame)이라 하며, 한 프레임의 크기도 일반적으로 4KB 이다. 즉, 페이지 테이블은 페이지와 프레임 사이의 매핑 테이블이다.
가상 어드레싱 기법은 각자 물리적 어드레싱 특징이 다른 수많은 장치들마다 별도로 프로그래밍하지 않고, 공통되는 가상의 어드레싱 공간을 가정하여 프로그래밍을 하는 기법이다. 가상 머신 상에서 동작하는 프로세스들은 가상 어드레스를 기 반으로 동작하며, 프로세서는 페이지 테이블을 통해 얻은 실제의 물리 어드레스에 데이터나 코드를 쓰거나 그 물리 어드레스로부터 데이터나 코드를 읽어낼 수 있다.
프로세서의 현재 수행 모드가 특권 모드이든 또는 비특권 모드이든지 상관없이 어떤 명령어 코드가 실행되면서 실제 어드레스에 접근하고자 할 때에는, 페이지 테이블을 통해 가상 어드레스를 실제 어드레스로 매핑해서 접근하여야 한다. 따라서, 가상화 모드의 종류에 따라 페이지 테이블을 통한 어드레스 매핑을 적절하게 통제함으로써 비특권 모드에서 동작하는 가상 머신 사용자 모드에서 동작하는 프로세스가 게스트 운영 체제 커널에 할당된 가상 머신 커널 영역에 접근하는 것을 막을 수 있다.
이하에서는, 프로세서에서 현재 실행되는 프로세스에 따른 메모리에 대한 접근 권한에 대하여 자세히 설명하기로 한다. 다시 말해, 가상 머신 모니터 모드, 가상 머신 커널 모드, 및 가상 머신 사용자 모드의 세 가지 가상화 모드에 따른 메모리 영역에 대한 접근 권한에 대하여 자세히 설명하기로 한다.
먼저, 프로세서에서 현재 실행되는 프로세스가 가상 머신 모니터인 경우, 즉, 가상 머신 모니터 모드에서는 가상 머신 모니터가 가상 머신 모니터 영역, 가상 머신 커널 영역, 가상 머신 사용자 영역에 대해 모두 읽고 쓸 수 있어야 한다.
다음으로, 프로세서에서 현재 실행되는 프로세스가 게스트 운영 체제 커널인 경우, 즉, 가상 머신 커널 모드에서는 게스트 운영 체제 커널은 가상 머신 모니터 영역에 대해서는 전반적으로 접근할 수 없어야 하지만, 예를 들어 가상 머신과 물리 장치 사이의 입출력 인터페이스에 관한 일부 영역과 같이 가상 머신 모니터와 게스트 운영 체제 커널이 공유하는 영역에서는 읽기가 허용되어야 한다. 또한, 게스트 운영 체제 커널은 가상 머신 커널 영역에 대해서는 전반적으로 읽기와 쓰기가 모두 허용되어야 하나, 게스트 운영 체제 커널이 사용하는 페이지 테이블과 같은 일부 영역에서는 읽기만 가능하여야 한다. 그리고, 게스트 운영 체제 커널은 가상 머신 사용자 영역에 대해서는 읽기와 쓰기가 모두 허용되어야 한다.
마지막으로, 프로세서에서 현재 실행되는 프로세스가 어플리케이션인 경우, 즉, 가상 머신 사용자 모드에서는 어플리케이션은 가상 머신 모니터 영역과 가상 머신 커널 영역에는 접근이 불허되며, 가상 머신 사용자 영역에만 읽기와 쓰기가 허용되어야 한다.
이러한 규칙을 특권 모드와 비특권 모드만을 가지는 프로세서에 적용하기 위해서, 메모리 공간을 가상 머신 모니터 영역, 가상 머신 커널 영역, 가상 머신 사용자 영역으로 나누고, 페이지 테이블의 접근 권한을 다음과 같이 할당한다.
가상 머신 모니터 영역에 대해서는 특권 모드일 때에 읽기와 쓰기가 가능하고, 비특권 모드에서는 접근이 불허되나 예외적으로 가상 머신 모니터와 게스트 운영 체제 커널이 공유하는 메모리 영역에 대해서는 비특권 모드에서도 읽기가 허용된다. 가상 머신 커널 영역에 대해서는 특권 모드일 때에 읽기와 쓰기가 모두 허용되고, 비특권 모드일 때에는 전반적으로 읽기와 쓰기가 모두 허용되나 게스트 운영 체제 커널이 사용하는 페이지 테이블과 같은 일부 영역은 읽기만 허용된다. 가상 머신 사용자 영역에 대해서는 특권 모드와 비특권 모드에서 언제나 읽고 쓰기가 허용된다.
다시 도 4를 참조하면, 영역0(D0)은 특권 모드에서는 읽기(read)와 쓰기(write)가 모두 허용되나, 비특권 모드에서는 일부 영역에 대해 읽기만 허용하는 것을 제외하면, 일반적으로 접근이 불허(no access)된다. 영역1(D1)은 특권 모드에서는 읽기와 쓰기가 모두 허용되고, 비특권 모드에서는 페이지 테이블에 대해 읽기만 허용하는 것을 제외하면, 읽기와 쓰기가 모두 허용된다. 영역2(D2)는 특권 모드 및 비특권 모드에서 모두 읽기와 쓰기가 허용된다.
최종적으로 위와 같이 각 메모리 영역에 대한 접근을 제어할 수 있다면, 특권 모드와 비특권 모드만을 갖는 프로세서에서 가상 머신 모니터 모드, 가상 머신 커널 모드 및 가상 머신 사용자 모드의 세 가지의 가상화 모드를 갖는 가상화 기술을 구현할 수 있다.
메모리 영역 단위의 접근 제어 설정은 수행 모드에 따라 설정되는 것이 아니고, 가상화 환경의 세 가지의 가상화 모드의 전환에 따라 설정되며, 그 접근 설정이 되어 있을 경우 페이지 테이블 접근 제어보다 우선하여 적용된다. 이렇게, 메모리 영역 단위의 접근 제어 및 페이지 테이블 접근 제어를 순차적으로 적용하여, 최종적으로 위와 같은 메모리 영역에 대한 가상화 모드 별 접근 허용 결과를 얻을 수 있다.
아래의 표 1은 프로세서에서 현재 실행되는 프로세스가 가상 머신 모니터인 경우, 즉, 가상 머신 모니터 모드에서 메모리 영역 접근 제어 설정 및 페이지 테이블 접근 제어 설정과, 그러한 접근 제어 설정에 따른 메모리 영역 접근 허용 상태를 나타내는 표이다.
메모리 영역 VMM 영역 VM 커널 영역 VM 사용자 영역
메모리 영역
접근 설정
페이지 테이블
설정에 따름
페이지 테이블
설정에 따름
페이지 테이블
설정에 따름
페이지 테이블
접근 설정
-특권 모드: 읽기 쓰기 모두 허용
-비특권 모드: 접근 불허, 일부 영역 읽기만 허용
-특권 모드: 읽기 쓰기 모두 허용
-비특권 모드: 접근 허용, 일부 영역 읽기만 허용
-특권 모드: 읽기 쓰기 모두 허용
-비특권 모드: 읽기 쓰기 모두 허용
메모리 영역
접근 허용 상태
읽기 쓰기
모두 허용됨
읽기 쓰기
모두 허용됨
읽기 쓰기
모두 허용됨
표 1을 참조하면, 가상 머신 모니터 모드일 때에, 메모리 영역 접근 설정은 페이지 테이블 설정에 따르도록 설정되거나 또는 그냥 바이패스(bypass)되도록 설정된다. 따라서, 최종적으로 페이지 테이블 접근 설정에 따라 각 메모리 영역에 대한 접근이 결정된다. 이때, 프로세서는 특권 모드로 동작하기 때문에, 페이지 테이블 접근 설정 중 특권 모드일 때의 설정이 적용된다. 결과적으로, 가상 머신 모니터 모드에서는 가상 머신 모니터는 모든 메모리 영역에 대해 읽기 및 쓰기가 허용된다.
아래의 표 2는 프로세서에서 현재 실행되는 프로세스가 게스트 운영 체제 커널인 경우, 즉, 가상 머신 커널 모드에서 메모리 영역 접근 제어 설정 및 페이지 테이블 접근 제어 설정과, 그러한 접근 제어 설정에 따른 메모리 영역 접근 허용 상태를 나타내는 표이다.
메모리 영역 VMM 영역 VM 커널 영역 VM 사용자 영역
메모리 영역
접근 설정
페이지 테이블
설정에 따름
페이지 테이블
설정에 따름
페이지 테이블
설정에 따름
페이지 테이블
접근 설정
-특권 모드: 읽기 쓰기 모두 허용
-비특권 모드: 접근 불허, 일부 영역 읽기만 허용
-특권 모드: 읽기 쓰기 모두 불허
-비특권 모드: 접근 허용, 일부 영역 읽기만 허용
-특권 모드: 읽기 쓰기 모두 허용
-비특권 모드: 읽기 쓰기 모두 허용
메모리 영역
접근 허용 상태
읽기 쓰기
모두 불허되고,
일부 영역에 대해 읽기만 허용됨
읽기 쓰기
모두 허용되나,
일부 영역에서는 읽기만 허용됨
읽기 쓰기
모두 허용됨
표 2를 참조하면, 가상 머신 커널 모드일 때에, 메모리 영역 접근 설정은 페이지 테이블 설정에 따르도록 설정되거나, 또는 그냥 바이패스 되도록 설정된다. 따라서, 최종적으로 각 메모리 영역에 대한 접근은 페이지 테이블 접근 설정에 따라 결정된다. 이때, 프로세서는 비특권 모드로 동작하기 때문에, 페이지 테이블 접근 설정 중 비특권 모드일 때의 설정이 적용된다. 결과적으로, 가상 머신 커널 모드에서는 게스트 운영 체제 커널은 가상 머신 모니터 영역에 대해서는 읽기 쓰기가 모두 불허되나 일부 영역에 대해 읽기만 허용되며, 가상 머신 커널 영역에 대해서는 읽기 쓰기 모두 허용되나 일부 영역에서는 읽기만 허용되며, 가상 머신 사용자 영역에 대해서는 읽기 쓰기 모두 허용된다.
아래의 표 3은 프로세서에서 현재 실행되는 프로세스가 어플리케이션인 경우, 즉, 가상 머신 사용자 모드에서 메모리 영역 접근 제어 설정 및 페이지 테이블 접근 제어 설정과, 그러한 접근 제어 설정에 따른 메모리 영역 접근 허용 상태를 나타내는 표이다.
메모리 영역 VMM 영역 VM 커널 영역 VM 사용자 영역
메모리 영역
접근 설정
접근 불허 접근 불허 페이지 테이블
설정에 따름
페이지 테이블
접근 설정
-특권 모드: 읽기 쓰기 모두 허용
-비특권 모드: 접근 불허, 일부 영역 읽기만 허용
-특권 모드: 읽기 쓰기 모두 불허
-비특권 모드: 접근 허용, 일부 영역 읽기만 허용
-특권 모드: 읽기 쓰기 모두 허용
-비특권 모드: 읽기 쓰기 모두 허용
메모리 영역
접근 허용 상태
읽기 쓰기
모두 불허됨
읽기 쓰기
모두 불허됨
읽기 쓰기
모두 허용됨
표 3을 참조하면, 가상 머신 사용자 모드일 때에, 메모리 영역 접근 설정은 가상 머신 모니터 영역과 가상 머신 커널 영역에 대해서는 접근을 불허한다. 가상 머신 사용자 영역에 대해서는 페이지 테이블 설정에 따르도록 설정되거나 또는 그냥 바이패스 되도록 설정되는데, 이때 프로세서는 비특권 모드로 동작하기 때문에, 가상 머신 사용자 영역에 대해서는 페이지 테이블 접근 설정 중 비특권 모드일 때의 설정이 적용된다. 결과적으로, 가상 머신 사용자모드에서는 어플리케이션은 가상 머신 모니터 영역 및 가상 머신 커널 영역에 대해서는 읽기 쓰기가 모두 불허되고, 가상 머신 사용자 영역에 대해서는 읽기 쓰기 모두 허용된다.
위와 같이 설정함으로써, 특권 모드와 비특권 모드만 가지는 프로세서에서 가상 머신 모니터 모드, 가상 머신 커널 모드 및 가상 머신 사용자 모드의 세 가지 모드의 가상화 환경을 구현하고, 동시에 어플리케이션이 가상 머신 커널 영역을 침범하는 것을 막을 수 있다.
표 1 내지 표 3을 참조하면, 프로세서에서 실행되는 프로세스의 전환이 일어날 때, 즉, 각 가상화 모드 사이에서 전환이 일어날 때, 가상 머신 모니터 모드 및 가상 머신 커널 모드와 가상 머신 사용자 모드 사이의 전환 시를 제외하면 메모리 영역 접근 설정을 변경할 필요가 없다. 또한, 페이지 테이블 접근 설정은 가상화 모드 전환과 상관없이 그 설정이 유지된다.
아래의 표 4는 표 1 내지 표 3을 하나의 표로 정리한 것이다.
메모리 영역 VMM 영역 VM 커널 영역 VM 사용자 영역
메모리 영역
접근 설정
-VMM 또는 VM 커널 모드: 페이지 테이블 설정에 따름
-VM 사용자 모드: 접근 불허
-VMM 모드, VM 커널 모드, VM 사용자 모드: 페이지 테이블 설정에 따름
페이지
테이블
접근 설정
-특권 모드:
읽기 쓰기 모두
허용
-비특권 모드:
접근 불허, 일부
영역 읽기만 허용
-특권 모드:
읽기 쓰기 모두
허용
-비특권 모드:
접근 허용, 일부
영역 읽기만 허용
-특권 모드:
읽기 쓰기 모두
허용
-비특권 모드:
읽기 쓰기 모두 허용
메모리 영역
접근 허용 상태
-VMM 모드: 읽기 쓰기 모두 허용
-VM 커널 모드: 읽기 쓰기 모두 불허되나 일부 허용
-VM 사용자 모드: 읽기 쓰기 모두 불허
-VMM 모드: 읽기 쓰기 모두 허용
-VM 커널 모드: 읽기 쓰기 모두 허용되나 일부 읽기만 허용
-VM 사용자 모드: 읽기 쓰기 모두 불허
-VMM 모드: 읽기 쓰기 모두 허용
-VM 커널 모드: 읽기 쓰기 모두 허용
-VM 사용자 모드: 읽기 쓰기 허용
표 4를 참조하면, 각 메모리 영역에 대해 메모리 영역 접근 설정과 페이지 테이블 접근 설정을 각각 참조하고, 두 가지의 접근 설정을 모두 통과한 결과로써 각 가상화 모드에서 특정 메모리 영역에 접근할 수 있는 지 판정될 수 있다. 그 판정 결과에 따라 프로세서는 현재 실행 중인 프로세스의 메모리 접근을 제어할 수 있다. 실시예에 따라, 각 세그먼트의 정보를 기술한 x86 세그먼트 디스크립터(descriptor)에 해당 세그먼트를 접근할 수 있는 최소 특권 레벨을 설정할 수 있고, ARM9 프로세서의 도메인 접근 제어(domain access control)를 통해 개별적 접근 권한을 갖도록 정의된 메모리 영역인 도메인으로 설정된 메모리 영역에 대해 페이지 테이블의 접근 제어 설정을 오버로드(overload)할 수 있다.
결론적으로, 메모리 영역 접근 설정은 프로세서에서 현재 실행되는 프로세스에 따라, 즉, 가상 머신 모니터 모드, 가상 머신 커널 모드 및 가상 머신 사용자 모드의 세 가지의 가상화 모드에 따라 각 메모리 영역 별로 설정되어 있고, 페이지 단위의 접근 설정은 특권 모드 및 비특권 모드의 두 가지의 프로세서의 수행 모드에 따라 페이지 테이블에 설정되어 있다.
메모리 영역에 대한 접근 설정은 가상 머신 모니터가 변경할 수 있다. 예를 들어, 가상 머신 사용자 모드에서 가상 머신 모니터 모드로 전환될 때에는, 가상 머신 모니터 모드로 진입 직후에 가상 머신 모니터는 위 접근 설정을 가상 머신 모니터 모드에 맞게 변경할 수 있다. 가상 머신 모니터 모드에서 가상 머신 사용자 모드로 전환될 때에는, 가상 머신 모니터는 가상 머신 사용자 모드의 전환 직전에 접근 설정을 변경할 수 있다. 또한, 가상 머신 커널 모드에서 가상 머신 사용자 모드로 전환되거나 가상 머신 사용자 모드에서 가상 머신 커널 모드로 전환될 때에는, 가상 머신 커널이 가상 머신 모니터의 해당 기능을 호출(hypercall)하면 가상 머신 사용자 모드 전환 직전 또는 직후에 가상 머신 모니터가 접근 설정을 변경할 수 있다.
페이지 테이블 접근 설정은 변경이 전혀 불필요하고, 위의 네 가지 경우를 제외하면 메모리 영역 접근 설정 변경 또한 불필요하므로, 접근 설정 변경에 따른 성능 상의 오버헤드(overhead)가 적다. 또한 종래의 가상 머신 모니터와 게스트 운영 체제 커널에 대해서도, 메모리 영역 접근 설정 및 변경에 관한 사항 외에는 수정이 불필요하여 거의 그대로 종래의 가상 머신 모니터와 게스트 운영 체제 커널을 이용할 수 있다.
한편, 가상 어드레스를 이용하는 대부분의 프로세서들은 어드레스의 번역을 하드웨어적으로 지원하기 위한 메모리 관리 유닛(memory management unit, MMU)을 가지고 있다. 이 메모리 관리 유닛 내부에는 자주 참조되는 어드레스를 일시적으로 저장하는 캐시(cache)의 일종으로서 번역 룩어사이드 버퍼(translation lookaside buffer, TLB)를 사용한다. 최근에 액세스되었던 메모리 페이지들은 가까운 미래에 다시 액세스될 수 있기 때문에, 어드레스 번역 테이블들이 가상 페이지 기술어(descriptor)를 물리적 페이지 위치로 번역하기 위해서 사용했던 경우에, 가상 페이지와 물리적 페이지 사이의 대응 관계(correspondence)가 번역 룩어사이드 버퍼에 저장된다.
어드레스 번역이 수행될 필요가 있을 때마다, 번역 룩어사이드 버퍼가 요청된 메모리 유닛이 위치된 페이지에 대한 캐시된 매핑을 포함하는지를 판정하기 위해서 번역 룩어사이드 버퍼가 조사된다. 관련된 매핑이 번역 룩어사이드 버퍼에서 캐시 되었다면, 캐시 복사본이 사용된다. 그렇지 않다면, 어드레스는 번역 테이블들로부터 번역된다. 번역 룩어사이드 버퍼를 액세스하는 것이 메모리 내의 번역 테이블들을 액세스하는 것보다 더 빠르기 때문에, 번역 룩어사이드 버퍼의 사용은 일반적인 경우인 연속적인 메모리 액세스들이 동일한 그룹의 페이지들에 위치된 경우에 성능이 촉진된다.
페이지 테이블은 가상 머신의 종류에 따라, 또한 동일한 가상 머신에서 어떤 사용자 프로세스가 동작되느냐에 따라 다르게 구성된다. 페이지 테이블이 변경되면, 프로세서 내의 번역 룩어사이드 버퍼의 내용도 갱신되어야 할 수 있으므로 성능을 낮추는 원인이 될 수 있으므로, 번역 룩어사이드 버퍼의 동작을 최적화할 필요가 있다. 즉, 페이지 테이블이 변경되더라도, 번역 룩어사이드 버퍼의 내용이 변경되지 않도록 함으로써 성능의 하락을 막는 것이다.
자주 사용되기 때문에 히트(hit)율이 높아야 하는 코드를 핫스팟(hotspot)이라고 하는데, 본 발명의 일 실시예에서는 가상 머신 모니터 및 게스트 운영 체제 커널의 핫스팟들을 선택하여 프로파일링(profiling)한다. 가상 머신 모니터의 경우, 예외(exception) 코드, 하드웨어 인터럽트 처리(hardware interrupt handling) 코드, 소프트웨어 인터럽트 처리(software interrupt handling) 코드, 비특권 모드로의 전환(return) 코드, 스케쥴링 코드 등이 핫스팟으로 선택될 수 있다. 게스트 운영 체제 커널의 경우, 가상 머신 모니터로부터의 이벤트 처리(event handling) 코드, 어플리케이션으로부터의 시스템 콜 인터페이스(system call interface) 코드, 스케쥴링 코드 등이 핫스팟으로 선택될 수 있다.
이러한 가상 머신 모니터의 핫스팟들과 게스트 운영 체제 커널의 핫스팟들은 원래 다른 페이지에 배치될 수 있으나, 본 발명의 실시예에서는 이들을 각각 연속적으로 배치하고 코딩함으로써, 최소한의 페이지를 구성하도록 한다. 페이지는 핫스팟들을 모두 저장할 수 있는 크기로 할당될 수 있다. 또한, 가상 머신 모니터는 게스트 운영 체제 커널의 핫스팟들의 가상 메모리 어드레스를 가상 머신 모니터가 인식할 수 있도록 설정한다.
가상 머신 모니터는 시스템의 초기화 후, 가상 머신 모니터의 핫스팟들은 번역 룩어사이드 버퍼에 고정된다. 가상 머신 모니터는 가상 머신의 게스트 운영 체제 커널을 로딩하면서 게스트 운영 체제 커널의 핫스팟들도 번역 룩어사이드 버퍼에 고정시킨다.
가상 머신 사이의 전환이 있을 때에는 가상 머신 모니터는 번역 룩어사이드 버퍼내의 기존의 게스트 운영 체제 커널 커널의 핫스팟들을 무효화하고 새로운 게스트 운영 체제 커널의 새로운 핫스팟들을 번역 룩어사이드 버퍼에 고정시킨다.
도 5는 본 발명의 일 실시예에 따른 메모리 접근 제어 방법을 나타내는 흐름도이다.
도 5를 참조하면, 메모리 접근 제어 방법은 51 단계에서 프로세서의 수행 모드에 따른 메모리에 대한 접근 가능 여부를 페이지 단위로 가상 어드레스와 물리 어드레스를 매핑하는 페이지 테이블을 설정한다. 프로세서는 특권 모드 및 비특권 모드를 가질 수 있고, 특권 모드 및 비특권 모드에 따른 접근 권한을 페이지 단위로 설정하여 페이지 테이블에 저장한다. 특권 모드는 메모리의 전 영역에 대한 제1 순위의 접근 권한이며, 비특권 모드는 메모리의 일부 영역에 대한 제2 순위의 접근 권한이다. 페이지는 소정의 주소 공간 단위로써, 이는 본 발명의 일 실시예이고, 실시예에 따라 다른 주소 공간 단위로 메모리에 대한 접근 가능 여부를 설정할 수 있음은 당업자에게 자명하다.
52 단계에서 프로세서에서 현재 실행되는 프로세스에 따른 메모리에 대한 접근 가능 여부를 메모리 영역 단위로 설정한다. 다시 말해, 가상 모드에 따른 메모리에 대한 접근 가능 여부를 메모리 영역 단위로 설정한다. 프로세서는 특권 모드 및 비특권 모드의 두 가지의 수행 모드만을 가지고 있으나, 가상화 기술을 적용함으로써 세 가지의 가상 모드를 가질 수 있다. 구체적으로, 특권 모드에서 가상 머신 모니터가 동작하는 가상 머신 모니터 모드, 비특권 모드에서 게스트 운영 체제 커널이 동작하는 가상 머신 커널 모드, 및 비특권 모드에서 어플리케이션이 동작하는 가상 머신 사용자 모드의 세 가지의 가상 모드를 가질 수 있다. 이 경우, 각각의 가상 모드에 따른 메모리 영역 접근 권한을 설정할 수 있다.
53 단계에서 설정된 페이지 및 메모리 영역 단위에 따라 프로세스의 메모리에 대한 메모리 접근을 제어한다. 따라서, 비특권 모드에서 어플리케이션이 실행될 때, 어플리케이션은 비특권 모드에서 동작하는 게스트 운영 체제 커널에 할당된 메모리 영역에 접근할 수 없게 된다.
본 발명은 상술한 실시예에 한정되지 않으며, 본 발명의 사상 내에서 당업자에 의한 변형이 가능함은 물론이다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 하드디스크, 플로피디스크, 플래쉬 메모리, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
상술한 바와 같이, 본 발명에 메모리 접근 제어 방법 및 시스템에 의하면, 메모리 영역 및 페이지 단위에 따라 메모리 접근을 제어함으로써, 프로세서의 비특권 모드로 동작하는 게스트 운영 체제에 할당된 메모리 영역을 마찬가지로 비특권 모드로 동작하는 어플리케이션으로부터 효과적으로 보호할 수 있다.
또한, 본 발명에 의한 가상 머신 시스템은 종래의 하드웨어 구조를 변경할 필요가 없고, 종래의 가상 머신 모니터, 가상 머신 커널의 구조도 거의 변경할 필요가 없다.

Claims (19)

  1. 메모리의 전 영역에 대한 제1 순위의 접근 권한인 특권 모드로 실행되는 제1 계층 요소와 상기 메모리의 일부 영역에 대한 제2 순위의 접근 권한인 비특권 모드로 실행되는 제2 및 제3 계층 요소를 포함하는 시스템에서의 메모리 접근 제어 방법에 있어서,
    (a) 상기 특권 모드와 상기 비특권 모드 중 어느 모드로 실행되는 계층 요소가 상기 메모리에 현재 접근하고자 하는가에 따라 소정의 주소 공간 단위인 페이지 단위로 상기 메모리의 접근 가능 여부를 결정하는 단계; 및
    (b) 상기 메모리의 다수의 영역들 중 현재 접근하고자 하는 영역이 상기 제1 내지 제3 계층 요소 중 어느 것에 할당된 영역인지에 따라 상기 메모리의 접근 가능 여부를 결정하는 단계를 포함하며,
    상기 제1 계층 요소는 상기 시스템의 하드웨어와 적어도 하나의 게스트 운영 체제 커널을 인터페이싱하는 가상 머신 모니터이고,
    상기 제2 계층 요소는 상기 게스트 운영 체제 커널이고,
    상기 제3 계층 요소는 적어도 하나의 어플리케이션을 포함하는 것을 특징으로 하는 메모리 접근 제어 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 (a) 단계는
    상기 가상 머신 모니터가 상기 메모리에 현재 접근하고자 하는 경우 상기 가상 머신 모니터가 할당된 제1 메모리 영역, 상기 게스트 운영 체제 커널이 할당된 제2 메모리 영역 및 상기 어플리케이션이 할당된 제3 메모리 영역에 접근을 허용하고,
    상기 게스트 운영 체제 커널 또는 상기 어플리케이션이 상기 메모리에 현재 접근하고자 하는 경우 상기 제1 메모리 영역에 접근을 불허하고, 상기 제2 및 제3 메모리 영역에 접근을 허용하도록 상기 페이지 단위로 가상 어드레스와 물리 어드레스를 매핑하는 페이지 테이블을 설정하는 것을 특징으로 하는 메모리 접근 제어 방법.
  4. 제3항에 있어서,
    상기 (a) 단계는
    상기 제1 메모리 영역 중 상기 가상 머신 모니터 및 상기 게스트 운영 체제 커널이 공유하는 특정 메모리 영역에 대해서 상기 게스트 운영 체제 커널은 읽기만 허용되도록 상기 페이지 테이블을 설정하는 것을 특징으로 하는 메모리 접근 제어 방법.
  5. 제3항에 있어서,
    상기 (a) 단계는
    상기 제2 메모리 영역 중 상기 페이지 테이블이 저장된 특정 메모리 영역에 대해서 상기 게스트 운영 체제 커널은 읽기만 허용되도록 상기 페이지 테이블을 설정하는 것을 특징으로 하는 메모리 접근 제어 방법.
  6. 제3항에 있어서,
    상기 (b) 단계는
    상기 가상 머신 모니터 또는 상기 게스트 운영 체제 커널이 상기 메모리에 접근하고자 하는 경우 상기 페이지 테이블의 설정을 따르고,
    상기 어플리케이션이 상기 메모리에 접근하고자 하는 경우 상기 제1 및 제2 메모리 영역에 접근을 불허하고, 상기 제3 메모리 영역에 접근을 허용하도록 메모리 영역 단위로 상기 메모리에 대한 접근 가능 여부를 설정하는 것을 특징으로 하는 메모리 접근 제어 방법.
  7. 제6항에 있어서,
    상기 메모리에 현재 접근하고자 하는 계층 요소가 상기 가상 머신 모니터에서 상기 어플리케이션으로 전환되거나 상기 어플리케이션에서 상기 가상 머신 모니터로 전환되는 경우, 상기 가상 머신 모니터가 상기 메모리 영역 단위의 설정을 갱신하는 단계; 및
    상기 메모리에 현재 접근하고자 하는 계층 요소가 상기 게스트 운영 체제 커 널에서 상기 어플리케이션으로 전환되거나 상기 어플리케이션에서 상기 게스트 운영 체제 커널로 전환되는 경우, 상기 게스트 운영 체제 커널로부터 호출을 받은 후 상기 가상 머신 모니터가 상기 메모리 영역 단위의 설정을 갱신하는 단계를 더 포함하는 것을 특징으로 하는 메모리 접근 제어 방법.
  8. 제1항에 있어서,
    상기 시스템은 가상 어드레스를 캐싱하는 번역 룩어사이드 버퍼(translation lookaside buffer)를 더 포함하여,
    상기 메모리 접근 제어 방법은
    상기 가상 머신 모니터 또는 상기 게스트 운영 체제 커널의 코드들 중에서 선별된 핫스팟들을 상기 번역 룩어사이드 버퍼에 고정적으로 저장하는 단계를 더 포함하는 것을 특징으로 하는 메모리 접근 제어 방법.
  9. 제8항에 있어서,
    상기 핫스팟들을 저장하는 단계는
    상기 번역 룩어사이드 버퍼에 상기 핫스팟들의 가상 어드레스들이 연속하도록 상기 핫스팟들을 저장하는 것을 특징으로 하는 메모리 접근 제어 방법.
  10. 제8항에 있어서,
    가상 머신 사이의 전환 시에 상기 번역 룩어사이드 버퍼에 고정적으로 저장 되는 핫스팟들을 갱신하는 단계를 더 포함하는 것을 특징으로 하는 메모리 접근 제어 방법.
  11. 제1항 및 제3항 내지 제10항 중 어느 한 항의 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  12. 메모리의 전 영역에 대해 접근할 수 있는 특권 모드로 실행되는 제1 계층 요소와 상기 메모리의 일부 영역에 대해 접근할 수 있는 비특권 모드로 실행되는 제2 및 제3 계층 요소를 포함하는 시스템에 있어서,
    상기 메모리; 및
    상기 특권 모드와 상기 비특권 모드 중 어느 모드로 실행되는 계층 요소가 상기 메모리에 현재 접근하고자 하는가에 따른 소정의 주소 공간 단위인 페이지 단위로 상기 메모리의 접근 가능 여부를 결정하고, 상기 결정 결과에 대해서 상기 메모리의 다수의 영역들 중 현재 접근하고자 하는 영역이 상기 제1 내지 제3 계층 요소 중 어느 것에 할당된 영역인지에 따라 상기 메모리의 접근 가능 여부를 재결정하는 프로세서를 포함하며,
    상기 제1 계층 요소는 상기 시스템의 하드웨어와 적어도 하나의 게스트 운영 체제 커널을 인터페이싱하는 가상 머신 모니터이고,
    상기 제2 계층 요소는 상기 게스트 운영 체제 커널이고,
    상기 제3 계층 요소는 적어도 하나의 어플리케이션을 포함하는 것을 특징으로 하는 시스템.
  13. 삭제
  14. 제12항에 있어서,
    상기 프로세서는
    상기 가상 머신 모니터가 상기 메모리에 현재 접근하고자 하는 경우 상기 가상 머신 모니터가 할당된 제1 메모리 영역, 상기 게스트 운영 체제 커널이 할당된 제2 메모리 영역 및 상기 어플리케이션이 할당된 제3 메모리 영역에 접근을 허용하고,
    상기 게스트 운영 체제 커널 또는 상기 어플리케이션이 상기 메모리에 현재 접근하고자 하는 경우 상기 제1 메모리 영역에 접근을 불허하고, 상기 제2 및 제3 메모리 영역에 접근을 허용하도록 상기 페이지 단위로 가상 어드레스와 물리 어드레스를 매핑하는 페이지 테이블을 설정하는 것을 특징으로 하는 시스템.
  15. 제14항에 있어서,
    상기 프로세서는
    상기 제1 메모리 영역 중 상기 가상 머신 모니터 및 상기 게스트 운영 체제 커널이 공유하는 특정 메모리 영역에 대해서 상기 게스트 운영 체제 커널은 읽기만 허용되도록 상기 페이지 테이블을 설정하는 것을 특징으로 하는 시스템.
  16. 제14항에 있어서,
    상기 프로세서는
    상기 제2 영역 중 페이지 테이블이 저장된 특정 메모리 영역에 대해서 상기 게스트 운영 체제 커널은 읽기만 허용되도록 상기 페이지 테이블을 설정하는 것을 특징으로 하는 시스템.
  17. 제14항에 있어서,
    상기 프로세서는
    상기 가상 머신 모니터 또는 상기 게스트 운영 체제 커널이 상기 메모리에 접근하고자 하는 경우 상기 페이지 테이블의 설정을 따르고,
    상기 어플리케이션이 상기 메모리에 접근하고자 하는 경우 상기 제1 및 제2 메모리 영역에 접근을 불허하고, 상기 제3 메모리 영역에 접근을 허용하도록 메모리 영역 단위로 상기 메모리에 대한 접근 가능 여부를 설정하는 것을 특징으로 하는 시스템.
  18. 제17항에 있어서,
    상기 가상 머신 모니터는
    상기 메모리에 현재 접근하고자 하는 계층 요소가 상기 가상 머신 모니터에서 상기 어플리케이션으로 전환되거나 상기 어플리케이션에서 상기 가상 머신 모니 터로 전환되는 경우, 상기 메모리 영역 단위의 설정을 갱신하고,
    상기 메모리에 현재 접근하고자 하는 계층 요소가 상기 게스트 운영 체제 커널에서 상기 어플리케이션으로 전환되거나 상기 어플리케이션에서 상기 게스트 운영 체제 커널로 전환되는 경우, 상기 게스트 운영 체제 커널로부터 호출을 받은 후 상기 메모리 영역 단위의 설정을 갱신하는 것을 특징으로 하는 시스템.
  19. 제12항에 있어서,
    가상 어드레스를 캐싱하고, 상기 가상 머신 모니터 또는 상기 게스트 운영 체제 커널의 코드들 중에서 선별된 핫스팟들을 고정적으로 저장하는 번역 룩어사이드 버퍼(translation lookaside buffer)를 더 포함하는 것을 특징으로 하는 시스템.
KR1020070031947A 2007-03-30 2007-03-30 메모리 접근 제어 방법 KR101396831B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020070031947A KR101396831B1 (ko) 2007-03-30 2007-03-30 메모리 접근 제어 방법
US12/056,438 US8352694B2 (en) 2007-03-30 2008-03-27 Method of controlling memory access
US13/736,531 US8943288B2 (en) 2007-03-30 2013-01-08 Method of controlling memory access

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070031947A KR101396831B1 (ko) 2007-03-30 2007-03-30 메모리 접근 제어 방법

Publications (2)

Publication Number Publication Date
KR20080089002A KR20080089002A (ko) 2008-10-06
KR101396831B1 true KR101396831B1 (ko) 2014-05-21

Family

ID=39796308

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070031947A KR101396831B1 (ko) 2007-03-30 2007-03-30 메모리 접근 제어 방법

Country Status (2)

Country Link
US (2) US8352694B2 (ko)
KR (1) KR101396831B1 (ko)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8423747B2 (en) * 2008-06-30 2013-04-16 Intel Corporation Copy equivalent protection using secure page flipping for software components within an execution environment
CN101903867B (zh) * 2007-12-17 2012-12-12 大陆-特韦斯贸易合伙股份公司及两合公司 存储器映射系统、请求控制器、多处理配置、中央中断请求控制器、用于控制存储器访问的装置、方法
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
US8132167B2 (en) * 2008-12-23 2012-03-06 Hewlett-Packard Development Company, L.P. Context based virtualization
US8381284B2 (en) * 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US8397306B1 (en) * 2009-09-23 2013-03-12 Parallels IP Holdings GmbH Security domain in virtual environment
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
US20110167067A1 (en) * 2010-01-06 2011-07-07 Muppirala Kishore Kumar Classification of application commands
US8301856B2 (en) * 2010-02-16 2012-10-30 Arm Limited Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
JP5541036B2 (ja) 2010-09-21 2014-07-09 富士通株式会社 メモリアクセス制御プログラム、メモリアクセス制御方法、及び情報処理装置
KR101155123B1 (ko) * 2010-10-26 2012-06-11 한국과학기술원 커널 코드의 오류로부터 응용 프로그램의 메모리를 보호하는 장치 및 방법
US8832389B2 (en) * 2011-01-14 2014-09-09 International Business Machines Corporation Domain based access control of physical memory space
WO2013078085A1 (en) 2011-11-22 2013-05-30 Mips Technologies, Inc. Processor with kernel mode access to user space virtual addresses
US9262340B1 (en) 2011-12-29 2016-02-16 Cypress Semiconductor Corporation Privileged mode methods and circuits for processor systems
KR102051816B1 (ko) * 2013-02-05 2019-12-04 에이알엠 리미티드 메모리 보호 유닛들을 사용한 가상화 지원 게스트 오퍼레이팅 시스템
KR101460451B1 (ko) * 2013-09-06 2014-11-12 포항공과대학교 산학협력단 프로세스 주소 공간을 제어하는 장치 및 방법
US10198572B2 (en) * 2013-09-17 2019-02-05 Microsoft Technology Licensing, Llc Virtual machine manager facilitated selective code integrity enforcement
US10904201B1 (en) * 2013-10-11 2021-01-26 Cisco Technology, Inc. Updating distributed caches in network devices in the event of virtual machine changes in a virtualized network environment
US9292686B2 (en) * 2014-01-16 2016-03-22 Fireeye, Inc. Micro-virtualization architecture for threat-aware microvisor deployment in a node of a network environment
CN104318152B (zh) * 2014-09-28 2017-04-12 江苏科技大学 一种VxWorks系统驱动层块设备数据访问控制方法
US9628279B2 (en) * 2014-09-30 2017-04-18 Microsoft Technology Licensing, Llc Protecting application secrets from operating system attacks
US10489309B2 (en) * 2014-10-21 2019-11-26 Intel Corporation Memory protection key architecture with independent user and supervisor domains
KR101592782B1 (ko) * 2014-11-05 2016-02-12 플러스기술주식회사 전가상화 시스템에서 자원을 감시하는 장치 및 방법
CN107003882B (zh) 2014-12-18 2020-12-29 英特尔公司 用于转换高速缓存闭包和持久快照的方法、系统和装置
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US20160210069A1 (en) * 2015-01-21 2016-07-21 Bitdefender IPR Management Ltd. Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
US9589105B2 (en) * 2015-03-25 2017-03-07 International Business Machines Corporation Securing protected health information based on software designation
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
US9912681B1 (en) 2015-03-31 2018-03-06 Fireeye, Inc. Injection of content processing delay in an endpoint
US10956571B2 (en) * 2015-05-15 2021-03-23 Intel Corporation Kernel runtime integrity using processor assists
KR101673774B1 (ko) * 2015-06-01 2016-11-08 주식회사 수산아이앤티 가상화 시스템에서 파일 입출력 제어를 위한 방법
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
CN106502759B (zh) * 2015-09-06 2019-11-15 华为技术有限公司 一种数据访问方法、代码调用方法及虚拟机监视器
US10176028B2 (en) * 2015-09-25 2019-01-08 International Business Machines Corporation Upgrading a kernel or kernel module with a configured persistent memory unused by the kernel
DE102015223335A1 (de) * 2015-11-25 2017-06-01 Robert Bosch Gmbh Verfahren zum Betreiben eines Mikrocontrollers
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10379745B2 (en) * 2016-04-22 2019-08-13 Samsung Electronics Co., Ltd. Simultaneous kernel mode and user mode access to a device using the NVMe interface
US10191861B1 (en) 2016-09-06 2019-01-29 Fireeye, Inc. Technique for implementing memory views using a layered virtualization architecture
GB2554940B (en) 2016-10-14 2020-03-04 Imagination Tech Ltd Out-of-bounds recovery circuit
US10318209B2 (en) * 2017-01-30 2019-06-11 Forcepoint Llc Secure file transfer to process
KR102120044B1 (ko) * 2017-11-28 2020-06-09 현대오트론 주식회사 복수의 소프트웨어 레벨을 포함하는 컨트롤러 및 그 동작 방법
KR102044075B1 (ko) * 2017-12-04 2019-11-12 한국과학기술원 메모리 오류 감지 방법
US11275587B2 (en) 2018-05-02 2022-03-15 Micron Technology, Inc. Static identifications in object-based memory access
US10909046B2 (en) 2018-06-15 2021-02-02 Micron Technology, Inc. Memory access determination
JP6990150B2 (ja) 2018-06-18 2022-01-12 ルネサスエレクトロニクス株式会社 データ処理装置及びメモリ保護方法
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10942863B2 (en) * 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US11182507B2 (en) * 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US11544069B2 (en) 2018-10-25 2023-01-03 Micron Technology, Inc. Universal pointers for data exchange in a computer system having independent processors
KR102183648B1 (ko) * 2018-11-30 2020-11-26 서울대학교산학협력단 중첩 페이징 없이 커널을 보호하는 방법 및 그 장치
KR101980581B1 (ko) * 2019-02-11 2019-05-21 (주)베스트케이에스 탠덤 시스템의 메모리 관리방법
JP7151631B2 (ja) * 2019-06-11 2022-10-12 株式会社デンソー 車両用制御装置、車両用表示システム、及び車両用表示制御方法
KR20210026233A (ko) * 2019-08-29 2021-03-10 삼성전자주식회사 디바이스 리소스에 대한 접근을 제어하기 위한 전자 장치 및 그의 동작 방법
KR102199509B1 (ko) * 2019-10-16 2021-01-06 숭실대학교산학협력단 가상화 시스템에서 메모리를 공유하기 위한 메모리 공유 시스템, 방법 및 이를 수행하기 위한 프로그램을 기록한 기록매체

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060127206A (ko) * 2004-03-19 2006-12-11 노키아 코포레이션 보안 모드 제어 메모리

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US6282657B1 (en) * 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7073059B2 (en) * 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
KR20030003945A (ko) 2001-07-04 2003-01-14 엘지전자 주식회사 임베디드 컴퓨터 시스템의 다중 부트모드 구현방법 및부트모드 전환장치
US6970990B2 (en) * 2002-09-30 2005-11-29 International Business Machines Corporation Virtual mode virtual memory manager method and apparatus
US7278030B1 (en) * 2003-03-03 2007-10-02 Vmware, Inc. Virtualization system for computers having multiple protection mechanisms
US7975117B2 (en) * 2003-03-24 2011-07-05 Microsoft Corporation Enforcing isolation among plural operating systems
KR20050011603A (ko) 2003-07-23 2005-01-29 삼성전자주식회사 임베디스 시스템의 부팅 방법 및 그 장치
US7370324B2 (en) * 2003-09-30 2008-05-06 Intel Corporation Switching between a service virtual machine and a guest virtual machine in a virtual machine monitor environment
US8024730B2 (en) * 2004-03-31 2011-09-20 Intel Corporation Switching between protected mode environments utilizing virtual machine functionality
KR100621095B1 (ko) * 2004-04-07 2006-09-08 삼성전자주식회사 주변 장치 초기화를 위한 부팅 시스템 및 부팅 방법
US7213125B2 (en) * 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
US20060026687A1 (en) * 2004-07-31 2006-02-02 Cyrus Peikari Protecting embedded devices with integrated permission control
US7277998B1 (en) * 2004-08-12 2007-10-02 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US7281102B1 (en) * 2004-08-12 2007-10-09 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US20060112212A1 (en) * 2004-11-23 2006-05-25 Hob Gmbh & Co. Kg Virtual machine computer system for running guest operating system on a central processing means virtualized by a host system using region ID virtual memory option
KR100625167B1 (ko) 2005-02-02 2006-09-20 서울통신기술 주식회사 임베디드 운영체계의 부팅방법
US20060218425A1 (en) * 2005-02-25 2006-09-28 Zhimin Ding Integrated microcontroller and memory with secure interface between system program and user operating system and application
US8856473B2 (en) * 2005-07-01 2014-10-07 Red Hat, Inc. Computer system protection based on virtualization
US20070106986A1 (en) * 2005-10-25 2007-05-10 Worley William S Jr Secure virtual-machine monitor
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060127206A (ko) * 2004-03-19 2006-12-11 노키아 코포레이션 보안 모드 제어 메모리

Also Published As

Publication number Publication date
US8352694B2 (en) 2013-01-08
US20080244206A1 (en) 2008-10-02
US20130132695A1 (en) 2013-05-23
US8943288B2 (en) 2015-01-27
KR20080089002A (ko) 2008-10-06

Similar Documents

Publication Publication Date Title
KR101396831B1 (ko) 메모리 접근 제어 방법
US9996475B2 (en) Maintaining processor resources during architectural events
US7461232B2 (en) Translation look-aside buffer supporting mutually untrusted operating systems
US20120159103A1 (en) System and method for providing stealth memory
JPH03220648A (ja) データ処理システム
KR20150117278A (ko) 메모리 보호 유닛들을 사용한 가상화 지원 게스트 오퍼레이팅 시스템
US11474956B2 (en) Memory protection unit using memory protection table stored in memory system
US11609863B2 (en) Capability write address tracking
KR102075701B1 (ko) 명령어 레벨 데이터 격리 방법 및 장치
US11907301B2 (en) Binary search procedure for control table stored in memory system
WO2007030524A1 (en) Method and apparatus to provide separation of system software components
Krzyzanowski MemoryáManagement: áPaging
KR20240004738A (ko) 캐퍼빌리티를 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
TW202340955A (zh) 使用能力約束記憶體存取之技術
Mejia Alvarez et al. Virtual Memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170427

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 5