KR100858237B1 - Tlb를 이용한 메모리 접근 제어 방법 - Google Patents

Tlb를 이용한 메모리 접근 제어 방법 Download PDF

Info

Publication number
KR100858237B1
KR100858237B1 KR1020060109531A KR20060109531A KR100858237B1 KR 100858237 B1 KR100858237 B1 KR 100858237B1 KR 1020060109531 A KR1020060109531 A KR 1020060109531A KR 20060109531 A KR20060109531 A KR 20060109531A KR 100858237 B1 KR100858237 B1 KR 100858237B1
Authority
KR
South Korea
Prior art keywords
memory
memory area
accessed
access
tlb
Prior art date
Application number
KR1020060109531A
Other languages
English (en)
Other versions
KR20080041436A (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 KR1020060109531A priority Critical patent/KR100858237B1/ko
Publication of KR20080041436A publication Critical patent/KR20080041436A/ko
Application granted granted Critical
Publication of KR100858237B1 publication Critical patent/KR100858237B1/ko

Links

Images

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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명에 따른 메모리 접근 제어 방법은 보호하고자 하는 메모리 영역에 대하여 페이지 테이블 엔트리의 특정 플래그를 접근 불가 상태로 설정하고;
상기 메모리 영역에 대한 접근이 이루어질 경우 발생하는 페이지 폴트 인터럽트에 따라 페이지 폴트 핸들러를 생성하고;
상기 페이지 폴트 핸들러에서 접근하고자 하는 상기 메모리 영역의 주소와 복귀 주소를 비교하여 상기 메모리 영역에 대한 접근 의도를 판단하고; 그리고
데이터 형태의 접근에 대해서 데이터 TLB에 상기 메모리 영역의 주소를 저장하는;
단계로 이루어지는 것을 특징으로 한다.
메모리, 접근, 실행, 데이터, 제어, 페이지 폴트 핸들러

Description

TLB를 이용한 메모리 접근 제어 방법{Method of Controlling Memory Access for Execution and of Processing Page Fault Handler with Translation Look-aside Buffer Therefor}
도 1은 본 발명에 따른 메모리 접근 제어 방법을 설명하기 위한 개념도이다.
도 2는 본 발명에 따른 실행을 위한 메모리 접근 제어 방법에 대한 플로우차트이다.
도 3은 본 발명에 따른 실행을 위한 메모리 접근 제어 방법에서 페이지 폴트 핸들러의 처리 과정에 대한 플로우차트이다.
*도면의 주요부호에 대한 간단한 설명*
1: CPU 2: 페이지 테이블 엔트리
3: 물리적 메모리 11: TLB
111: 데이터 TLB 112: 인스트럭션 TLB
발명의 분야
본 발명은 실행을 위한 메모리 접근 제어 방법에 관한 것이다. 보다 구체적으로 본 발명은 메모리를 참조할 때 데이터 형태의 접근과 실행을 위한 접근을 구별하고, CPU의 처리 속도의 저하 없이 실행을 위한 목적으로 메모리를 참조하는 경우를 감지함으로써 메모리 영역으로의 외부 공격을 감지할 수 있는 실행을 위한 메모리 접근 제어 방법에 관한 것이다.
발명의 배경
일반적으로 운영체제에서 메모리를 참조하는 경우 메모리 영역을 비연속적인 페이지 단위로 나누어 주소를 할당하는 페이징 기법이 널리 사용되고 있다. 이 페이징 기법에서는 연속적인 실제의 주소를 비연속적인 논리적 주소로서 페이지에 할당하고, 페이지 테이블 엔트리(Page Table Entry: PTE)를 통해 실제 물리 주소를 맵핑(mapping)하는 방식으로 메모리를 참조하게 된다. 이 때, 논리적 주소와 실제 주소가 다르므로 이를 가상 메모리(Virtual Memory)라고 하며, 논리적 주소는 가상 주소(Virtual Adress)라고 한다.
이와 같은 메모리 참조 방식에서, 메모리에 대한 접근이 이루어질 경우 일반적으로 운영체제 또는 프로그램에서는 특정 페이지에 대해서는 읽기만 가능하도록 하고, 다른 특정 페이지에 대해서는 읽기와 쓰기가 가능하도록 하고 있다. 즉, 접 근하고자 하는 메모리에 대한 읽기와 쓰기로써 제어를 하고 있다.
이와 같은 메모리에 대한 제어 방법은 CPU가 데이터가 저장된 메모리 영역에 대해서는 읽기와 쓰기에 대해서만 제어가 가능하고, 실행에 대한 영역은 데이터와 동일하게 읽기로서만 제어가 가능할 뿐, 데이터가 저장된 메모리 영역에 실행을 위한 목적으로 접근하는 경우를 판별할 수 없다. 따라서, 최근 들어 많이 문제가 되고 있는 BOF(Buffer Overflow)를 이용한 메모리 영역에 대한 공격의 경우, 또는 데이터가 저장된 메모리 영역에 악성 코드와 같은 실행 파일이 압축 파일의 형태로 침투하여 압축이 해제되면서 사용자의 컴퓨터 시스템에 악영향을 미치는 경우에 취약할 수밖에 없다.
이를 해결하기 위하여, 최근에는 페이지 테이블 엔트리(PTE)에 특별한 플래그를 설정하여, 보호하고자 하는 메모리 영역의 주소가 포함된 페이지에 대하여 접근 불가 상태(invalid)로 설정하여 놓고, 이 메모리 영역에 접근할 때마다 페이지 폴트를 발생시켜, 페이지 폴트 핸들러를 통해 보호하고자 하는 메모리 영역에 대한 접근을 감지하도록 하고 있다.
그러나, 메모리 영역은 매우 빈번하게 접근되는데 매번 메모리 영역에 접근할 때마다 페이지 폴트 핸들러를 발생시키게 되면, 하나의 명령어를 실행할 때마다 페이지 폴트 핸들러에서 많은 처리를 필요로 하기 때문에 컴퓨터의 속도가 현실적으로 사용하지 못할 정도로 저하되는 문제점이 있다.
이에 본 발명자들은 데이터가 저장된 스택(Stack)이나 힙(Heap)과 같은 데이터가 저장된 메모리 영역을 참조할 경우, 실행을 위한 목적으로 접근(이하 '실행 형태의 접근'이라 함)하는 경우와 단순히 데이터 참조를 위한 목적으로 접근(이하 '데이터 형태의 접근'이라 함)하는 경우를 구분하여, 실행 형태의 접근에 대해서는 감지해 내도록 하고, 데이터 형태의 접근에 대해서는 CPU의 TLB(Translation Look-aside Buffers)를 참조하여 다시 동일한 메모리 영역을 데이터 형태로 참조할 때 페이지 폴트가 발생하지 않게 함으로써, 위 문제점들을 해결할 수 있는 메모리 접근 제어 방법을 개발하기에 이른 것이다.
본 발명의 목적은 실행 형태의 메모리 접근을 감지하기 위한 메모리 접근 제어 방법을 제공하기 위한 것이다.
본 발명의 다른 목적은 데이터 형태의 메모리 접근에 대해서는 TLB를 이용하여 페이지 폴트가 발생하지 않도록 함으로써 CPU의 처리 속도를 저하시키지 않는 메모리 접근 제어 방법 을 제공하기 위한 것이다.
본 발명의 상기 및 기타의 목적들은 하기 설명되는 본 발명에 의하여 모두 달성될 수 있다.
발명의 요약
본 발명에 따른 메모리 접근 제어 방법은 보호하고자 하는 메모리 영역에 대 하여 페이지 테이블 엔트리의 특정 플래그를 접근 불가 상태로 설정하고;
상기 메모리 영역에 대한 접근이 이루어질 경우 발생하는 페이지 폴트 인터럽트에 따라 페이지 폴트 핸들러를 생성하고; 그리고
상기 페이지 폴트 핸들러에서 접근하고자 하는 상기 메모리 영역의 주소와 복귀 주소를 비교하여 상기 메모리 영역에 대한 접근 의도를 판단하는;
단계로 이루어지는 것을 특징으로 한다.
상기 메모리 영역에 대한 접근 의도를 판단하는 단계는
접근하고자 하는 메모리 영역의 주소와 상기 페이지 폴트 인터럽트가 발생할 때 저장된 복귀 주소를 비교하고;
상기 접근하고자 하는 메모리 영역의 주소가 상기 복귀 주소와 동일하면 실행 형태의 접근으로 판단하고; 그리고
상기 접근하고자 하는 메모리 영역의 주소가 상기 복귀 주소와 상이하면 데이터 형태의 접근으로 판단하는;
단계로 이루어진다.
상기 접근 의도가 데이터 형태의 접근으로 판단되는 경우에,
데이터 TLB와 인스트럭션 TLB를 포함하여 구성되는 TLB에 저장된 모든 내용을 플러쉬하고;
접근된 메모리 영역에 대한 PTE의 특정 플래그를 접근 가능한 상태로 설정하고;
상기 접근된 메모리 영역에 대한 주소를 상기 TLB의 데이터 TLB에 저장하고; 그리고
상기 PTE의 특정 플래그를 접근 불가능한 상태로 설정하는;
단계를 더 포함하도록 한다.
상기 데이터 TLB와 인스트럭션 TLB를 포함하여 구성되는 TLB에 저장된 모든 내용을 플러쉬하는 단계 이전에, 접근하고자 하는 메모리 영역에 대한 페이지가 활성화되어 있지 않은 경우 해당 메모리 영역에 대한 페이지를 활성화하는 단계를 더 포함하여도 좋다.
상기 페이지 폴트 핸들러가 발생된 이후에 상기 메모리 접근과 관련된 프로세스가 보호 대상이 아닐 경우 또는 접근하고자 하는 메모리 영역이 보호하고자 하는 메모리 영역이 아닐 경우 이전에 운영체제에 설치되었던 함수인 원본 핸들러를 호출하는 단계를 더 포함해도 좋다.
한편, 본 발명에 따른 메모리 접근 제어를 위해 메모리 영역에 대한 접근 의도를 판단하는 방법은,
접근하고자 하는 메모리 영역의 주소와 상기 페이지 폴트 인터럽트가 발생할 때 저장된 복귀 주소를 비교하고;
상기 접근하고자 하는 메모리 영역의 주소가 상기 복귀 주소와 동일하면 실행 형태의 접근으로 판단하고; 그리고
상기 접근하고자 하는 메모리 영역의 주소가 상기 복귀 주소와 상이하면 데이터 형태의 접근으로 판단하는;
단계로 이루어지는 것을 특징으로 한다.
또 한편, 본 발명에 따른 메모리 접근 제어를 위한 페이지 폴트 핸들러의 처리 방법은
보호하고자 하는 메모리 영역의 주소와 복귀 주소를 비교하여 상기 메모리 영역에 대한 접근 의도를 판단하고;
데이터 TLB와 인스트럭션 TLB를 포함하여 구성되는 TLB에 저장된 모든 내용을 플러쉬하고;
접근된 메모리 영역에 대한 PTE의 특정 플래그를 접근 가능한 상태로 설정하고;
상기 접근된 메모리 영역에 대한 주소를 상기 TLB의 데이터 TLB에 저장하고; 그리고
상기 PTE의 특정 플래그를 접근 불가능한 상태로 설정하는;
단계로 이루어지는 것을 특징으로 한다.
이하 본 발명의 내용을 첨부된 도면을 참조로 하여 하기에 상세히 설명한다.
발명의 구체예에 대한 상세한 설명
도 1은 본 발명에 따른 메모리 접근 제어 방법을 설명하기 위한 개념도이다.
도 1에 도시된 바와 같이 CPU(1)는 접근하고자 하는 메모리(가상 메모리)의 페이지 속성이 담겨 있는 페이지 테이블 엔트리(2)를 참조하여, 해당하는 주소의 물리적 메모리를 참조하게 된다. 이 때, 페이지 테이블 엔트리(2)에는 가상 메모리의 주소에 대응하는 물리적 메모리의 주소뿐만 아니라 접근 권한에 대한 플래그들을 가지고 있다.
예를 들어, 프리젠트 플래그(present flag)의 비트를 0으로 설정하면 접근이 불가능한 상태가 되어 해당 메모리에 대한 접근이 이루어질 경우 페이지 폴트 인터럽트가 발생하게 되고, 1로 설정할 경우 접근이 가능한 상태로 된다.
종래에는 접근하고자 하는 메모리 영역에 대한 페이지 테이블 엔트리의 특정 플래그를 접근 불가능한 상태(invalid)로 설정하여 놓은 후, 실행 형태 및 데이터 형태의 접근에 대해서 페이지 폴트를 발생시켜 페이지 폴트 핸들러를 통해 보호 또는 감시하고자 하는 메모리에 대한 접근을 감지하고 제어할 수 있도록 하고 있다. 그러나, 실행 형태 및 데이터 형태의 접근에 대해서 일일이 페이지 폴트를 발생시켜 처리하게 한다면 CPU의 처리 속도가 현저하게 저하되므로, 본 발명에서는 실행 형태의 접근과 데이터 형태의 접근에 대해 구별해 내어, 실행 형태의 접근을 감지해 내고, 동일한 주소를 참조하는 데이터 형태의 접근에 대해서는 CPU의 TLB(Translation Look-aside Buffers)를 통해 해당 물리적 메모리를 참조하게 함으로써 CPU의 처리 속도를 저하시키지 않도록 한다.
TLB(11)란 CPU 내의 소형 초고속 메모리, 레지스터들의 집합 또는 캐쉬(cache)를 말하는데, 페이지 테이블의 일부 속성을 저장하며, CPU는 TLB에 저장된 페이지 테이블의 대응하는 물리적 주소에 대해서는 페이지 테이블을 참조하지 않고 직접 TLB를 참조하여 물리적 주소로 접근한다. 이 TLB(11)는 도 1에 도시된 바와 같이, 데이터 TLB(111)와 인스트럭션 TLB(Instruction TLB)(112)로 이루어진다. 데이터 TLB(111)에는 스택이나 힙과 같은 데이터가 저장된 영역의 메모리 주소가 저장되며, 인스트럭션 TLB(112)에는 실행을 위한 코드가 저장된 영역의 메모리 주소가 저장된다.
본 발명에서는 페이지 테이블 엔트리의 특정 플래그를 접근 불가능한 상태로 설정하여 놓고, 접근하고자 하는 메모리 영역에 대하여 접근이 이루어지는 경우 페 이지 폴트 인터럽트를 발생시켜 페이지 폴트 핸들러에서 메모리에 대한 접근이 실행 형태의 접근인지 아니면 데이터 형태의 접근인지를 판별한다. 또한, 데이터 형태의 접근인 경우 접근하고자 하는 메모리 영역의 주소를 TLB에 저장하여 다시 동일한 주소에 대하여 데이터 형태의 접근이 이루어질 경우 페이지 테이블을 참조하지 않고 직접 TLB를 통해 데이터 접근이 이루어지도록 하는데, 그 과정에 대해서, 이하에서 도 2를 참조하여 상세히 설명한다.
도 2는 본 발명에 따른 실행을 위한 메모리 접근 제어 방법에 대한 플로우차트이다.
도 2에 도시된 바와 같이, 먼저 처음 단계 S100에서 보호(또는 감시, 이하 같음)하고자 하는 메모리 영역에 대하여 페이지 테이블 엔트리의 특정 플래그를 접근 불가능한 상태로 설정한다.
페이지 테이블 엔트리의 플래그에는 접근 권한의 형태에 따라 다양한 플래그가 존재하는데, 프리젠트 플래그(Present Flag), U/S 플래그(User/Supervisor Flag), R/W 플래그(Read/Write Flag) 등이 있다.
특정 플래그를 접근 불가능한 상태로 설정한다는 것은 프리젠트 플래그의 경우, 해당 비트를 0으로 설정한다는 것을 의미한다. 프리젠트 플래그의 비트를 0으로 설정하면, 접근하고자 하는 메모리의 페이지를 참조하는 경우 페이지 폴트 인터럽트(Page Fault Interrupt)가 발생한다. 반대로, 프리젠트 플래그의 비트를 1로 설정하면, 접근하고자 하는 메모리의 페이지를 참조하여도 인터럽트가 발생하지 않는다.
다른 예로, U/S 플래그의 해당 비트를 0으로 설정하면 유저 레벨에서의 접근에 대해 페이지 폴트 인터럽트를 발생시키며, 1로 설정하면 유저 레벨에서의 접근을 허용한다. 또 다른 예로, R/W(Read/Write) 플래그의 해당 비트를 0으로 설정하면 쓰기 형태의 접근에 대해서는 페이지 폴트 인터럽트를 발생시키며, 1로 설정하면 쓰기 형태의 접근을 허용한다. 결국, 본 발명에서 페이지 테이블 엔트리의 특정 플래그는 어느 하나의 플래그에 한정되지는 않는다.
이와 같이 특정 플래그를 접근이 불가능한 상태로 설정하고 나면, 단계 S200에서와 같이 보호하고자 하는 메모리 영역에 대한 접근이 이루어질 경우, 페이지 폴트 인터럽트가 발생하며, 이 인터럽트를 처리하기 위한 페이지 폴트 핸들러(Page Fault Handler)가 생성된다.
다음 단계 S300에서 이 페이지 폴트 핸들러가 메모리 영역에 대한 접근 형태, 즉 실행 형태의 접근인지 데이터 형태의 접근인지를 판단한다.
판단하는 방법은 접근하고자 하는 메모리 영역의 주소와 페이지 폴트 인터럽트가 발생할 때 저장되는 복귀 주소(Return Address)를 비교하는 방식으로 판단한다. 이 때, 접근하고자 하는 메모리 영역의 주소가 복귀 주소와 동일하면 실행 형의 접근이며, 상이하면 데이터 형태의 접근으로 판단한다.
이와 같이, 페이지 폴트 핸들러에서는 실행 형태의 접근과 데이터 형태의 접근을 구별하여 처리하게 되는데 자세한 처리 과정은 도 3을 참조로 설명한다.
도 3은 본 발명에 따른 실행을 위한 메모리 접근 제어 방법에서 페이지 폴트 핸들러의 처리 과정에 대한 플로우차트이다.
도 2에 도시된 바와 같이, 단계 S310에서 페이지 폴트 핸들러는 해당 프로세스가 보호 대상인 프로세스인지를 판단하고, 보호 대상이 아닌 프로세스일 경우 이전에 운영체제에 설치되었던 함수인 원본 핸들러를 호출(S325)하여 원래 의도되었던 프로세스를 진행하도록 한다. 해당 프로세스가 보호 대상인지의 여부는 사용자의 설정에 따르도록 할 수 있다.
다음 단계 S320에서 접근하고자 하는 메모리 영역이 보호하고자 하는 메모리 영역인지를 판단한다. 보호하고자 하는 메모리 영역은 스택(Stack) 이나 힙(Heap)과 같은 데이터가 저장되는 영역이다. 보호하고자 하는 프로세스가 아닐 경우에는 단계 S310과 마찬가지로 이전에 운영체제에 설치되었던 함수인 원본 핸들러를 호출(S325)하여 원래 의도되었던 프로세스를 진행하도록 한다. 해당 메모리 영역이 보호 대상인지의 여부는 사용자의 설정 등에 따르도록 할 수 있다.
단계 S330에서, 보호대상 프로세스의 보호하고자 하는 메모리 영역에 대해서, 접근하고자 하는 의도가 실행 형태의 접근인지, 데이터 형태의 접근인지를 판단한다. 판단 방법은 앞서 설명한 단계 S300과 동일하다. 실행 형태의 데이터 접근일 경우 별도로 실행 코드에 대한 처리가 필요한데(S335), 처리 방법은 사용자에게 경고 문구를 디스플레이하거나, 해당 코드에 대한 삭제 처리 등 프로세스의 종류나 필요에 따라 처리 방법을 설정할 수 있다.
데이터 형태의 접근으로 판단되면, 다음 단계 S340에서 접근하고자 하는 메모리 영역에 대한 페이지가 활성화되어 있는지의 여부를 판단하여, 만일 페이지가 활성화되어 있지 않은 경우 페이지를 활성화하여(S345), 다음 단계를 진행한다.
이후의 단계에서는 TLB를 이용하여 다시 동일한 메모리 영역으로의 접근이 이루어질 경우 페이지 테이블 엔트리를 참조하지 않고 직접 TLB에 저장된 메모리 영역의 주소를 참조함으로써 페이지 폴트 인터럽트를 발생하지 않도록 하기 위한 처리가 이루어진다.
먼저, 데이터 TLB와 인스트럭션 TLB를 포함하여 구성되는 TLB에 저장된 모든 내용을 플러쉬한(S350) 다음, PTE의 특정 플래그를 접근 가능한 상태로 설정한다(S360). 이렇게 설정해 놓으면 해당 메모리 영역에 대해서는 접근이 가능한 상태가 되어 저장된 데이터를 읽어올 수 있게 된다.
그 다음, 접근된 메모리 영역의 주소를 데이터 TLB에 저장한다(S370). 따라서, 이후에 동일한 주소의 메모리 영역을 참조하게 되는 경우 페이지 테이블 엔트리를 참조하지 않고 바로 TLB에 저장된 메모리 영역을 참조하기 때문에 페이지 폴트 인터럽트가 발생하지 않게 된다.
다음 단계에서, PTE의 특정 플래그를 다시 접근 불가 상태로 설정한다. 따라서, 해당 메모리 영역을 참조하고자 하는 경우 페이지 폴트 인터럽트가 다시 발생하도록 한다.
이와 같은 단계로 이루어지는 페이지 폴트 핸들러의 처리 과정을 통해 데이터 형태의 접근에 대하여 반복적인 메모리 참조에 대해서는 TLB를 참조하기 때문에 페이지 폴트 인터럽트가 발생하지 않아 CPU의 처리 속도를 저하시키지 않고 메모리에 대한 접근 제어가 가능해진다.
본 발명은 실행 형태의 메모리 접근을 감지하는 동시에, 데이터 형태의 메모 리 접근에 대해서는 TLB를 이용하여 다시 동일한 형태의 메모리 접근이 이루어질 경우, 페이지 폴트가 발생하지 않도록 함으로써 CPU의 처리 속도를 저하시키지 않는 메모리 접근 제어 방법을 제공하는 발명의 효과를 갖는다.
본 발명의 단순한 변형 내지 변경은 이 분야의 통상의 지식을 가진 자에 의하여 용이하게 이용될 수 있으며, 이러한 변형이나 변경은 모두 본 발명의 영역에 포함되는 것으로 볼 수 있다.

Claims (9)

  1. 보호하고자 하는 메모리 영역에 대하여 페이지 테이블 엔트리의 특정 플래그를 접근 불가 상태로 설정하고;
    상기 메모리 영역에 대한 접근이 이루어질 경우 발생하는 페이지 폴트 인터럽트에 따라 페이지 폴트 핸들러를 생성하고; 그리고
    상기 페이지 폴트 핸들러에서 접근하고자 하는 상기 메모리 영역의 주소와 복귀 주소를 비교하여 상기 메모리 영역에 대한 접근 의도를 판단하는;
    단계로 이루어지는 것을 특징으로 하는 메모리 접근 제어 방법.
  2. 제1항에 있어서, 상기 메모리 영역에 대한 접근 의도를 판단하는 단계는
    접근하고자 하는 메모리 영역의 주소와 상기 페이지 폴트 인터럽트가 발생할 때 저장된 복귀 주소를 비교하고;
    상기 접근하고자 하는 메모리 영역의 주소가 상기 복귀 주소와 동일하면 실행 형태의 접근으로 판단하고; 그리고
    상기 접근하고자 하는 메모리 영역의 주소가 상기 복귀 주소와 상이하면 데이터 형태의 접근으로 판단하는;
    단계로 이루어지는 것을 특징으로 하는 메모리 접근 제어 방법.
  3. 제2항에 있어서, 상기 접근 의도가 데이터 형태의 접근으로 판단되는 경우에,
    데이터 TLB와 인스트럭션 TLB를 포함하여 구성되는 TLB에 저장된 모든 내용을 플러쉬하고;
    접근된 메모리 영역에 대한 PTE의 특정 플래그를 접근 가능한 상태로 설정하고;
    상기 접근된 메모리 영역에 대한 주소를 상기 TLB의 데이터 TLB에 저장하고; 그리고
    상기 PTE의 특정 플래그를 접근 불가능한 상태로 설정하는;
    단계를 더 포함하는 것을 특징으로 하는 메모리 접근 제어 방법.
  4. 제3항에 있어서, 상기 데이터 TLB와 인스트럭션 TLB를 포함하여 구성되는 TLB에 저장된 모든 내용을 플러쉬하는 단계 이전에, 접근하고자 하는 메모리 영역에 대한 페이지가 활성화되어 있지 않은 경우 해당 메모리 영역에 대한 페이지를 활성화하는 단계를 더 포함하는 것을 특징으로 하는 메모리 접근 제어 방법.
  5. 제1항에 있어서, 상기 페이지 폴트 핸들러가 발생된 이후에 상기 메모리 접근과 관련된 프로세스가 보호 대상이 아닐 경우 이전에 운영체제에 설치되었던 함수인 원본 핸들러를 호출하는 단계를 더 포함하는 것을 특징으로 하는 메모리 접근 제어 방법.
  6. 제5항에 있어서, 상기 메모리 접근과 관련된 프로세스가 보호 대상일 경우에, 접근하고자 하는 메모리 영역이 보호하고자 하는 메모리 영역이 아닐 경우 이전에 운영체제에 설치되었던 함수인 원본 핸들러를 호출하는 단계를 더 포함하는 것을 특징으로 하는 메모리 접근 제어 방법.
  7. 접근하고자 하는 메모리 영역의 주소와 상기 페이지 폴트 인터럽트가 발생할 때 저장된 복귀 주소를 비교하고;
    상기 접근하고자 하는 메모리 영역의 주소가 상기 복귀 주소와 동일하면 실행 형태의 접근으로 판단하고; 그리고
    상기 접근하고자 하는 메모리 영역의 주소가 상기 복귀 주소와 상이하면 데이터 형태의 접근으로 판단하는;
    단계로 이루어지는 것을 특징으로 하는 메모리 접근 제어를 위해 메모리 영역에 대한 접근 의도를 판단하는 방법.
  8. 보호하고자 하는 메모리 영역에 대하여 데이터 형태의 접근이 이루어진 경우 데이터 TLB와 인스트럭션 TLB를 포함하여 구성되는 TLB에 저장된 모든 내용을 플러쉬하고;
    접근된 메모리 영역에 대한 PTE의 특정 플래그를 접근 가능한 상태로 설정하고;
    상기 접근된 메모리 영역에 대한 주소를 상기 TLB의 데이터 TLB에 저장하고; 그리고
    상기 PTE의 특정 플래그를 접근 불가능한 상태로 설정하는;
    단계로 이루어지는 것을 특징으로 하는 메모리 접근 제어를 위한 페이지 폴트 핸들러의 처리 방법.
  9. 제8항에 있어서, 상기 데이터 TLB와 인스트럭션 TLB를 포함하여 구성되는 TLB에 저장된 모든 내용을 플러쉬하는 단계 이전에, 접근하고자 하는 메모리 영역에 대한 페이지가 활성화되어 있지 않은 경우 해당 메모리 영역에 대한 페이지를 활성화하는 단계를 더 포함하는 것을 특징으로 하는 메모리 접근 제어를 위한 페이지 폴트 핸들러의 처리 방법.
KR1020060109531A 2006-11-07 2006-11-07 Tlb를 이용한 메모리 접근 제어 방법 KR100858237B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060109531A KR100858237B1 (ko) 2006-11-07 2006-11-07 Tlb를 이용한 메모리 접근 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060109531A KR100858237B1 (ko) 2006-11-07 2006-11-07 Tlb를 이용한 메모리 접근 제어 방법

Publications (2)

Publication Number Publication Date
KR20080041436A KR20080041436A (ko) 2008-05-13
KR100858237B1 true KR100858237B1 (ko) 2008-09-12

Family

ID=39648604

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060109531A KR100858237B1 (ko) 2006-11-07 2006-11-07 Tlb를 이용한 메모리 접근 제어 방법

Country Status (1)

Country Link
KR (1) KR100858237B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101646768B1 (ko) 2009-02-27 2016-08-09 삼성전자주식회사 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서
KR101671494B1 (ko) 2010-10-08 2016-11-02 삼성전자주식회사 공유 가상 메모리를 이용한 멀티 프로세서 및 주소 변환 테이블 생성 방법
KR101694284B1 (ko) * 2010-12-21 2017-01-10 한국전자통신연구원 페이지 테이블 동기화 장치 및 그 방법
KR101673774B1 (ko) * 2015-06-01 2016-11-08 주식회사 수산아이앤티 가상화 시스템에서 파일 입출력 제어를 위한 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940000971A (ko) * 1992-06-05 1994-01-10 이문기 계층적 페이지 분할 구조의 가상 메모리를 지원하는 폴리어소시에이티브 테이블 룩 어사이드 버퍼
JPH1021141A (ja) 1996-03-08 1998-01-23 Sun Microsyst Inc キャッシュ・メモリの自己チェックおよび訂正
JPH11242633A (ja) 1998-02-26 1999-09-07 Hitachi Ltd メモリ保護方式
KR20000076653A (ko) * 1999-03-05 2000-12-26 썬 마이크로시스템즈, 인코포레이티드 간단한 고성능 메모리 관리 유닛
KR20060069041A (ko) * 2004-12-17 2006-06-21 엘지전자 주식회사 버퍼 오버플로우로부터 복귀주소를 보호하기 위한 메모리스택 분리 방법 및 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940000971A (ko) * 1992-06-05 1994-01-10 이문기 계층적 페이지 분할 구조의 가상 메모리를 지원하는 폴리어소시에이티브 테이블 룩 어사이드 버퍼
JPH1021141A (ja) 1996-03-08 1998-01-23 Sun Microsyst Inc キャッシュ・メモリの自己チェックおよび訂正
JPH11242633A (ja) 1998-02-26 1999-09-07 Hitachi Ltd メモリ保護方式
KR20000076653A (ko) * 1999-03-05 2000-12-26 썬 마이크로시스템즈, 인코포레이티드 간단한 고성능 메모리 관리 유닛
KR20060069041A (ko) * 2004-12-17 2006-06-21 엘지전자 주식회사 버퍼 오버플로우로부터 복귀주소를 보호하기 위한 메모리스택 분리 방법 및 장치

Also Published As

Publication number Publication date
KR20080041436A (ko) 2008-05-13

Similar Documents

Publication Publication Date Title
US10303620B2 (en) Maintaining processor resources during architectural events
US7069389B2 (en) Lazy flushing of translation lookaside buffers
US8028341B2 (en) Providing extended memory protection
US8190914B2 (en) Method and system for designating and handling confidential memory allocations
US20060036830A1 (en) Method for monitoring access to virtual memory pages
EP1898311A1 (en) Method and apparatus for preventing software side channel attacks
TW201502780A (zh) 頁表資料管理
JP5583274B2 (ja) コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス
TWI812798B (zh) 用於控制記憶體存取的裝置及方法
KR20200116472A (ko) 메모리 액세스시의 보호 태그 검사 제어
KR100858237B1 (ko) Tlb를 이용한 메모리 접근 제어 방법
US8417903B2 (en) Preselect list using hidden pages
JP2021512405A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
US20050228951A1 (en) Virtualized load buffers
CN115516438A (zh) 内存管理装置及方法
KR20070096538A (ko) 메모리 보호 영역의 정보 보호 방법
GB2579614A (en) Page table isolation method
JP2008140161A (ja) マイクロコンピュータ

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: 20120928

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130905

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140905

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150907

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160905

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170905

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180905

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190905

Year of fee payment: 12