KR20080072952A - 메모리 페이지를 프로그램과 연관시키기 위한 페이지컬러링 - Google Patents

메모리 페이지를 프로그램과 연관시키기 위한 페이지컬러링 Download PDF

Info

Publication number
KR20080072952A
KR20080072952A KR1020087015716A KR20087015716A KR20080072952A KR 20080072952 A KR20080072952 A KR 20080072952A KR 1020087015716 A KR1020087015716 A KR 1020087015716A KR 20087015716 A KR20087015716 A KR 20087015716A KR 20080072952 A KR20080072952 A KR 20080072952A
Authority
KR
South Korea
Prior art keywords
page
color
access
instruction
memory
Prior art date
Application number
KR1020087015716A
Other languages
English (en)
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 KR20080072952A publication Critical patent/KR20080072952A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

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

Abstract

메모리 페이지를 프로그램과 연관시키는 페이지 컬러링을 위한 장치 및 방법이 개시된다. 일 실시예에서, 장치는 페이징 유닛 및 메모리에 액세스하기 위한 인터페이스를 포함한다. 페이징 유닛은 변환 논리 및 비교 논리를 포함한다. 변환 논리는 제1 주소를 제2 주소로 변환한다. 제1 주소는 메모리의 제1 페이지에 저장된 명령어에 의해 제공될 수 있다. 변환은 데이터 구조의 엔트리에 기초하고, 그 엔트리는 제2 주소를 포함하는 메모리의 제2 페이지의 기본 주소를 포함한다. 비교 논리는 제1 페이지의 컬러를 제2 페이지의 컬러와 비교할 수 있다. 제1 페이지의 컬러는 제1 프로그램과의 제1 페이지의 연관 관계를 나타낼 수 있다. 데이터 구조 엔트리는 또한 제1 프로그램 또는 제2 프로그램과의 제2 페이지의 연관 관계를 나타내기 위해 제2 페이지의 컬러를 포함할 수 있다.
메모리 페이지, 페이지 컬러, 페이지 컬러링, 메모리 보호, 메모리 보안

Description

메모리 페이지를 프로그램과 연관시키기 위한 페이지 컬러링{PAGE COLORING TO ASSOCIATE MEMORY PAGES WITH PROGRAMS}
본 발명은 일반적으로 정보 처리 분야에 관련된 것이고, 좀더 구체적으로는 메모리 관리 및 보호 분야에 관련된 것이다.
메모리 기반 공격은 정보 처리 시스템에 상당히 위협적이다. 일부 이러한 공격은 컴퓨터 시스템의 메모리에 바이러스나 웜과 같은 악의적인 코드, 또는 악의적인 데이터를 저장시켜, 적법한 프로그램을 실행함에도 이러한 악의적인 코드에 제어를 이전하거나 이러한 악의적인 데이터를 사용하도록, 버그 및/또는 버퍼 오버플로를 악용하는 것과 관련된다. 이러한 유형의 공격을 방지하기 위한 하나의 접근법은 데이터가 실행 불능 파일(non-executable)로서 저장되는 페이지를 지정하는데 사용될 수 있는 페이지 테이블 엔트리에 "실행 불능(execute disable)" 비트와 관련된 것으로서, 악의적인 코드가 데이터로서 저장되어 동일한 물리적, 선형적 또는 논리적 메모리 공간 내에서 실행될 수 없게 한다. 그러나, 메모리 기반 공격 기술은 점점 더 정교해지고 있고, 이러한 공격을 방지하기 위한 추가적인 접근법이 요구될 수 있다. 여기에는 현존하는 코드를 실행하거나 메모리를 손상시키는(corrupt) 버퍼 오버플로, 악의적인 커널 또는 응용 프로그램 컴포넌트, 루트킷, 스파이웨어, 트로이 목마 및 컴퓨터 바이러스로부터의 보호가 포함된다. 여기에는 또한 선형 주소 공간 내의 다른 프로그램 또는 하위프로그램의 데이터를 손상시키는 응용 프로그램 프로그래밍 인터페이스(API) 악용 및 런어웨이 포인터와 같은 버기 코드(buggy code)로부터의 보호가 포함된다.
본 발명이 비제한적이고 예시적인 방식으로 첨부된 도면에 도시된다.
도 1은 메모리 페이지를 프로그램과 연관시키는 페이지 컬러링을 위한 논리를 포함하는 프로세서에 대한 본 발명의 일 실시예를 도시한다.
도 2는 메모리 페이지를 프로그램과 연관시키는 페이지 컬러링을 초기화하기 위한 방법에 대한 본 발명의 일 실시예를 도시한다.
도 3은 메모리 페이지를 프로그램과 연관시키는 페이지 컬러링을 위한 방법에 대한 본 발명의 일 실시예를 도시한다.
이하의 설명에는 메모리 페이지를 프로그램 및 그것의 연관된 데이터와 연관시키는 페이지 컬러링을 위한 기술의 실시예들이 기술된다. 이하의 설명에서, 본 발명을 좀더 완전하게 이해할 수 있도록, 프로세서 및 시스템 구성과 같은 다수의 특정 세부사항이 상술된다. 그러나, 당업자라면 그러한 특정 세부사항들 없이도 본 발명을 실시할 수 있음을 인정할 것이다. 또한, 본 발명을 불필요하게 모호하게 하지 않도록, 일부 주지된 구조, 회로 등은 상세히 도시되지 않았다.
본 발명의 실시예들은 특정 페이지를 특정 프로그램 및 데이터와 연관시키는데 사용되도록 메모리 페이지에 속성을 할당할 수 있게 한다. 이러한 속성은 운영 체제 정책에 기초한 운영 체제 맵퍼에 의한 방식, 또는 기본 입/출력 시스템, 가상 머신 모니터 또는 본 발명이 구현되는 시스템 상의 기타 임의의 관리 엔티티(management entity)에 의한 방식과 같은 임의의 접근법에 따라 할당될 수 있다.
이러한 속성은 페이지 "컬러"라고 지칭되는 것으로서, 어떤 프로그램이 다른 프로그램의 메모리 공간을 액세스하는 것을 금지하거나, 심지어는 하나의 프로그램의 부분이 동일한 프로그램의 다른 부분의 메모리 공간을 액세스하는 것을 금지하기에 충분히 세밀한 조밀도(granularity)로 메모리를 논리적으로 구획하는데 사용될 수 있다. 본 발명의 실시예에 따른 기술은 현존 페이지-기반(existing page-based) 메모리 관리 데이터 구조, 가상화 기술(virtualization technologies)에 의해 사용되는 중첩 페이지-기반(nested page-based) 메모리 관리 데이터 구조, 그리고 현존하는 데이터 구조와 상호 관련된 병렬 액세스 데이터 구조 내에 구현될 수 있어서, 본 발명의 실시예를 이용해도 컬러 정보를 추출하기 위한 추가적인 메모리 액세스로 인해 성능이 열화되지 않도록 한다. 기타 기술에는 페이지 컬러 속성을 포함하는 병렬 페이지 테이블 구조가 포함될 수 있는데, 이 구조는 관련 페이지 테이블 엔트리가 메모리로부터 인출(fetch)될 때마다 메모리로부터 추출되어 그것과 연관된 변환 색인 버퍼("TLB") 하드웨어로 로딩된다.
도 1은 메모리 페이지를 프로그램과 연관시키는 페이지 컬러링을 위한 논리를 포함하는 프로세서인 프로세서(110)에 대한 본 발명의 일 실시예를 도시한다. 메모리(120)를 또한 포함하는 시스템(100)에 프로세서(110)가 도시되어 있다.
프로세서(110)는 Pentium® 프로세서 패밀리, Itanium® 프로세서 패밀리 또는 인텔사의 기타 프로세서 패밀리와 같은 다양한 상이한 유형의 프로세서들 중 임의의 것이거나 다른 회사의 임의의 기타 범용 또는 기타 프로세서일 수 있다. 도 1은 프로세서에 구현된 본 발명을 도시하지만, 본 발명은 임의의 다른 유형의 데이터 처리 컴포넌트 또는 장치에 구현될 수 있다. 도 1의 실시예에서, 프로세서(110)는 인터페이스(112) 및 페이징 유닛(130)을 포함한다.
인터페이스(112)는 버스 유닛이거나, 또는 프로세서(110)로 하여금 임의의 유형의 버스, 포인트 투 포인트(point to point), 기타 접속를 통해 칩셋 또는 메모리 컨트롤러와 같은 임의의 다른 컴포넌트를 통하거나 직접적으로 메모리(120)와 통신할 수 있게 하는 임의의 기타 유닛, 포트 또는 인터페이스일 수 있다.
페이징 유닛(130)은 변환 논리(132), 비교 논리(134) 및 액세스 논리(136)를 포함한다. 이하에 기술되는 바와 같이, 변환 논리는 주소 변환을 수행하는 논리이다. 이하에 기술되는 바와 같이, 비교 논리는 페이지 컬러를 비교하는 논리이다. 이하에 기술되는 바와 같이, 액세스 논리(136)는 페이지 컬러에 기초하여 특정 페이지에 대한 액세스를 금지 또는 허용하는 논리이다.
변환 논리(132)는 임의의 알려진 페이지-기반 메모리 관리 기술에 따라 주소 변환, 예컨대, 논리 주소 또는 선형 주소의 물리적 주소로의 변환을 수행한다. 주소 변환을 수행하기 위해, 변환 논리(132)는 프로세서(110), 메모리(120), 도 1에 도시되지 않은 시스템(100)의 임의의 기타 저장 위치, 및/또는 이들 컴포넌트들과 위치들의 임의의 조합에 저장된 하나 이상의 데이터 구조를 참조한다. 본 발명의 실시예에 따라 수정된 Pentium® 프로세서 패밀리의 구조에 따른 페이지 디렉토리 및 페이지 테이블 및/또는 TLB에 저장된 테이블이 이러한 데이터 구조에 포함될 수 있다.
일 실시예에서, 변환 논리(132)는 실행되는 명령어에 의해 제공되는 선형 주소 및/또는 프로세서(110)에 의해 인출되는 데이터의 선형 주소를 수신한다. 변환 논리(132)는 페이지 테이블을 비롯한 계층적 테이블에 대한 인덱스로서 선형 주소의 일부를 사용한다. 페이지 테이블은 엔트리를 포함하고, 각 엔트리는 메모리(120) 내의 페이지의 기본 주소를 위한 필드, 예컨대, Pentium® 프로세서 패밀리의 확장 메모리 64 기술에 따른 페이지 테이블 엔트리의 39번 내지 12번 비트를 포함한다. 본 발명의 범위 내에서 임의의 페이지 크기(예컨대, 4000 바이트)가 사용될 수 있다. 결국, 프로그램이 메모리(120)를 액세스하는데 사용하는 선형 주소가 프로세서(110)가 메모리(120)를 액세스하는데 사용하는 물리적 주소로 변환될 수 있다.
비교 논리(134)는 변환 논리(132)에 의해 찾아낸 페이지의 페이지 컬러를 인출되는 명령어 또는 데이터에 대한 선형 주소를 제공했던 명령어를 포함하는 페이지의 페이지 컬러와 비교한다. 이러한 비교는 임의의 알려진 접근법에 따라 수행될 수 있다. 변환 논리(132)가 주소 변환을 수행하는데 사용하는 데이터 구조의 엔트리에 저장된 값이 나타내는 페이지의 속성이 페이지 컬러이다. 예컨대, 페이지 컬러는 페이지 테이블 엔트리 내의 8개의 비트 필드, 예컨대, Pentium® 프로세서 패밀리의 확장 메모리 64 기술에 따른 페이지 테이블 엔트리의 47번 내지 40번 비트에 의해 나타내질 수 있다. 따라서, 8개의 비트 필드를 사용하여 256 엔트리 컬러 테이블에 대한 인덱스를 제공함으로써, 그래픽 디스플레이의 픽셀에 대한 컬러 값을 정의하는 것과 유사하게, 페이지에 대한 컬러 값은 256개의 값 중 임의의 값일 수 있다.
액세스 논리(136)는 비교 논리(136)로부터의 결과를 사용하여, 선형 주소를 사용하는 명령어가 번역 논리(134)에 의해 발견된 물리적 페이지를 액세스하는 것을 금지하거나 허용한다. 일 실시예에서, 명령어를 포함하는 페이지에 대한 페이지 테이블 엔트리와 연관된 페이지 컬러가 변환 논리(134)에 의해 발견된 페이지에 대한 페이지 테이블 엔트리와 연관된 페이지 컬러와 동일한 경우, 액세스 논리(136)가 이러한 액세스를 허용하며, 페이지 컬러가 상이한 경우에는 이러한 액세스를 금지한다. 액세스 논리(136)는 페이지 폴트 예외(page fault exception)를 트리거링함으로써 이러한 액세스를 금지할 수 있다.
따라서, 운영 체제 또는 기타 감시 프로그램(supervisor program)은 그것이 메모리에 로드하는 어떤 프로그램으로부터의 모든 페이지에는 특정한 페이지 컬러를 할당하고, 그것이 메모리에 로드하는 다른 프로그램으로부터의 모든 페이지에는 상이한 페이지 컬러를 할당하는 등의 방식으로, 양쪽 프로그램이 동일한 선형 또는 논리 주소 공간 내에 상주하더라도 한쪽 프로그램이 다른 프로그램과 연관된 페이지를 액세스할 수 없도록 할 수 있다. 또한, 중요 프로그램 컴포넌트 또는 데이터 구조가 특수 함수 호출을 사용하거나 프로그램의 특정 엔트리 포인트(entry point)를 통해서만 액세스될 수 있도록, 하나의 프로그램의 상이한 부분들에 상이한 페이지 컬러들이 할당될 수도 있다.
액세스 논리(136)는 추가적인 기준에 기초해 엑세스를 허용할지 여부를 결정할 수 있다. 예컨대, 컬러가 없다고 표시된 페이지는 다른 모든 페이지에 의해 엑세스될 수 있도록, 하나의 컬러 값(예컨대, 0x00)이 "컬러 없음"을 나타낼 수 있다. 또한, 페이지가 "은닉"되는지 여부를 정의하는, Pentium® 프로세서 패밀리의 확장 메모리 64 기술에 따른 페이지 테이블 엔트리의 48번 비트와 같은 필드 또는 비트가 페이지 테이블 엔트리에 포함될 수 있다. 컬러 비교의 결과와 무관하게, 은닉된 페이지의 컬러와 다른 컬러를 가진 임의의 페이지에 의한 참조된 은닉 페이지로부터의 판독을 허용하려면 이 비트를 0으로 설정하고, 액세스 논리(136)가 컬러 비교 부정합(color comparison mismatch) 상의 액세스를 금지하거나 판독할 수 있게 하려면 이 비트를 1로 설정할 수 있다.
액세스 논리(136)는 또한 명령어 제어 흐름에 기초해 엑세스를 허용할지 여부를 결정할 수 있다. 예컨대, 프로그램에 대한 허용된 엔트리 포인트를 표시하는데 명령어가 사용될 수 있다. Pentium® 프로세서 패밀리의 아키텍처에 따른 일 실시예에서는, (예컨대, "Directed Address Vector" 또는 "DAV" 명령어 등의) 새로운 명령어가 이러한 목적으로 추가될 수 있다. 어떤 컬러의 페이지로부터 다른 컬러의 페이지의 DAV 명령어로의 점프, 호출 또는 기타 제어 흐름 명령어가 실행되면, 액세스가 허용되지 않을 것이다. 그러나, DAV 명령어에 대한 것이 아니라 다른 컬러의 페이지에 대한 점프나 호출인 경우, 액세스가 허용되지 않을 것이다. 따라서, DAV 명령어는 소프트웨어 작성자에 의해 제어되는 정의된 보안 인터페이스(secure interface)를 제공할 수 있는 예상되는 포인트에서만 프로그램으로의 엔트리를 허용하는데 사용될 수 있다. 프로그램의 무작위이거나 예기치 못한 구역에 대한 다른 컬러의 프로그램으로부터의 점프 또는 호출에는 프로세서에 의해 예외라는 플래그가 표시될 수 있다. 또한, DAV 명령어는 예상된 컬러의 프로그램이 DAV 식별 엔트리 포인트(DAV identified entry point)를 구현하는 프로그램을 액세스하려고 하는지 여부를 결정하기 위한 컬러 비교를 수행하는데 변수 파라미터를 사용할 수 있다. 마지막으로, DAV 명령어는 (예컨대, Pentium® 프로세서 패밀리의 아키텍처에 따른 XD비트를 사용하여 실행 불능화되지 않은) 실행 가능한 페이지에서만 실행될 수 있어서, DAV 명령어인 것처럼 보이는 위조 비트 시퀀스를 갖는 데이터 페이지가 프로세서에 의해 실행되지 않을 것을 보장한다.
다른 실시예에서, 페이지는 "변환" 페이지로 지정될 수 있다. 변환 페이지는 주기적인 특정 오프셋에서만 그 페이지로부터의 명령어의 인출을 허용할 수 있다. "변환 페이지 비트"가 정의되어 그것의 페이지 테이블 엔트리를 통해 임의의 컬러의 페이지와 연관된다. 이러한 변환 비트는 상이한 컬러의 페이지가 특정 단어 정렬에서 연관된 컬러의 페이지로 변환될 수 있음을 프로세서에게 나타낼 수 있다. 따라서, 모든 컬러링된 페이지가 동일한 컬러의 다른 페이지에 대한 관문으로서 동작하는 변환 페이지가 될 수 있다. 예컨대, 매 64 바이트마다와 같이, 변환 페이지의 특정 포인트에서만 다른 컬러의 페이지로부터 그 변환페이지로 제어 흐름이 이전될 수 있다. 변환 페이지 상의 64바이트 정렬된 명령어에 대한 점프 및 호출은 실행될 수 있지만, 변환 페이지로의 64바이트 정렬 상에 있지 않은 제어 흐름 이전은 페이지 폴트를 트리거링할 수 있다. 변환 페이지에 대한 엔트리 포인트의 실제 정렬은 정렬 요구사항을 특정하는 피보호 프로세서 레지스터(protected processor register)를 통해 설정 가능할 수 있다. 프로세서는 페이지 폴트를 트리거링하지 않고 변환 페이지에 들어갈 수 있음을 특정 포인트에서만 보장하기 때문에, 이하에 기술되는 이전 페이지 컬러 레지스터(previous page color register)에 대한 적절한 컬러 테스트가 수행되어, 그 액세스 제어 테스트를 통해 수용가능함이 증명되면 상이한 컬러의 페이지로 변환되도록, 이러한 엔트리 포인트들 사이에 코드가 삽입될 수 있다. 유사하게, 엔트리 포인트 이후의 코드는 병렬 피보호 스택에서의 스택으로부터의 리턴 주소(return address)와 같은 상태를 저장할 수 있어서, 순차적으로 호출되는 페이지로부터의 리턴이 변환 페이지를 통해 역방향으로 재전환될 수 있다. 이러한 방식으로, 상이한 컬러의 함수로부터의 레거시 호출 및 리턴이 변환 페이지에 의해 중개되어 적절한 제어 흐름을 검증하면서 페이지 폴트를 피할 수 있다.
액세스 논리(136)는 또한 특수 컬러링 기술을 구현하는데 사용될 수 있다. 일 실시예에서, 다른 컬러의 프로그램의 임의의 부분으로의 점프 또는 호출이 허용된 운영 체제 컴포넌트를 위하여 특수 페이지 컬러(예컨대, 0xFF)가 할당될 수 있다. 이 컬러의 페이지로부터의 점프 또는 호출 명령어는 액세스 논리(136)에 의해 항상 허용될 수 있다. 이 컬러는 운영 체제 스케쥴러 및 인터럽트 서비스 루틴에 의해 사용되어 그것들로 하여금 인터럽트된 프로그램을 인터럽트 포인트로부터 페이지 폴트를 초래하지 않고 재개하게 할 수 있다. 이 컬러의 페이지는 다른 컬러의 페이지에 대한 기록 액세스 또는 다른 컬러의 은닉 페이지에 대한 판독 액세스를 갖지 못할 수 있다. 이러한 특수 페이지 컬러의 페이지가 실행되는 경우, 프로세서는 이하에 기술되는 이전 페이지 컬러 레지스터를 변경하지 않을 수 있고, 그 특수 페이지 컬러의 페이지는 인터럽트된 프로그램으로 리턴하기에 앞서 이전 페이지 컬러 레지스터를 예상되는 값으로 복원하는 기능을 가질 수 있다.
다른 실시예에서, 다른 컬러의 페이지에 대한 완전한 판독 및 기록 액세스를 갖는 감시 페이지를 위하여 특수 컬러가 사용될 수 있다. 운영 체제 컴포넌트가 다른 프로그램을 검증하여, 필요시 그것의 컨텐츠를 수정하는데 이러한 특수 컬러가 사용된다. 다른 컬러는 제한된 프로세서 레지스터, 제한된 프로세서 명령어, 또는 고급 프로그램 가능 인터럽트 컨트롤러("APIC") 관련 메모리 위치에 대한 액세스와 연관될 수 있다. 특권 컬러(privileged color)로 컬러링된 프로그램만이 그 특권 컬러와 연관되는 제한된 프로세서 특징을 액세스할 수 있을 것이다. 프로세서는, 예컨대, 운영 체제 부트 업 시퀀스의 일부로서 이러한 특수 색을 설정하기 위하여 설정 레지스터를 제공할 수 있다.
다른 실시예에서, 이미 논의된 바와 같이, 컬러 없음으로 표시된 페이지는 다른 컬러의 페이지 또는 컬러가 없는 다른 페이지로부터 보호되지 않을 수 있다. 그러나, 컬러가 없는 페이지는 컬러가 할당된 페이지에 대한 기록, 점프 또는 호출 액세스를 할 수 없다.
나아가, 액세스 논리(136)는 또한 페이지 컬러 부정합 또는 위반에 의해 페이지 폴트가 일어났는지 여부를 보고할 수 있다. 예컨대, 페이지 폴트 에러 코드(예컨대, Pentium® 프로세서 패밀리의 아키텍처에 따른 스택 상으로 푸싱(pushing)된 페이지 폴트 에러 코드의 5번 비트)가 페이지 컬러 위반 비트로 지정되는데, 1로 설정되면 컬러 부정합에 의해 페이지 폴트가 트리거링되었음을 나타낼 수 있다. 이 비트는 다른 플래그와 관련하여 해석될 수 있다. 예컨대, 명령어 인출(instruction fetch)에 의해 페이지 컬러 위반이 일어난 경우, 에러 코드의 명령어 인출 비트가 1로 설정될 수 있다. 판독 또는 기록에 의해 페이지 컬러 위반이 일어난 경우, 판독의 경우에는 판독/기록 비트가 1로 설정되고, 기록의 경우에는 0으로 설정될 수 있다. 또한, 폴트를 일으킨 선형 주소가, 예컨대, Pentium® 프로세서 패밀리의 아키텍처에 따른 프로세서의 CR2 제어 레지스터에 저장될 수 있다.
또한, DAV 명령어를 사용해 이미 기술한 바와 같이, 프로세서(110)는 어떤 프로그램에서 다른 프로그램으로의 변환을 지원하기 위해 판독-전용 레지스터(140) 또는 기타 저장 위치를 포함할 수 있다. 일 실시예에서, 이러한 레지스터는 "이전 페이지 컬러" 레지스터 또는 "PPC" 레지스터라고 지칭된다. 프로세서(110)가 현재 실행 중인 명령어와 상이한 색의 페이지로부터 명령어를 인출하기 시작하면, 액세스 논리(136)가 페이지 컬러의 부정합을 탐지할 수 있다. 액세스 논리(136)는 이미 논의된 DAV 명령어 프로토콜에 따라 이러한 인출을 허용하면서 그 페이지 컬러의 변경을 허용하지만, 이전 페이지 컬러를 PPC 레지스터(140)에 저장한다. 따라서, 새로운 페이지로부터의 명령어는 이전 페이지 색을 판정하기 위해 PPC 레지스터(140)에 질의(query)할 수 있어서, 프로그램은 특정 DAV 정의 엔트리 포인트(DAV defined entry point)에서 현재 실행 중인 프로그램을 액세스하는 것이 어떤 상이한 색의 프로그램에 허용되었는지를 판정함으로써 그것의 서비스에 대한 액세스를 제어할 수 있게 된다. 특수 컬러의 페이지에 의해 일어난 변환이 PPC 레지스터(140)에 저장되지 않을 수 있는데, 운영 체제 스케쥴러에 의한 변환은 페이지 컬러 변환으로 기록할 필요가 없고, 인터럽트 및 리턴으로 기록하여야 한다.
도 1에서, 메모리(120)는 정적 또는 동적 랜덤 액세스 메모리, 반도체-기반 판독 전용 또는 플래시 메모리, 자기 또는 광 디스크 메모리, 프로세서(120)에 의해 판독가능한 임의의 기타 유형의 매체, 또는 이러한 매체들의 임의의 조합일 수 있다.
도 2는 메모리 페이지를 프로그램과 연관시키는 페이지 컬러링을 초기화하기 위한 방법인 방법(200)에 대한 본 발명의 일 실시예를 도시한다. 블록(210)에서, 메모리 할당 루틴이 이후 로딩되는 루틴 및 프로그램에 대해 개별 페이지 컬러를 설정할 수 있도록, 운영 체제 로더가 메모리 할당 루틴을 메모리로 로딩하여, 모두 최초의 컬러를 이용해, 페이지 테이블 구조를 메모리에 생성하는데, 이들 다른 루틴 및 프로그램이 메모리 관리자와 동일한 특권 수준으로 실행되더라도 이들 다른 루틴 및 프로그램으로부터의 페이지 테이블 및 메모리 관리자를 보호한다. 블록(220)에서, 스케쥴러가 다른 모든 프로그램, 스케쥴 스레드 및 멀티태스크로의 점프 또는 호출을 할 수 있도록 스케쥴러가 로딩되어 0xFF로 컬러링된다. 나아가, DAV 명령어가 없는 레거시 프로그램 인터페이스를 훅킹(hooking)하여 레거시 프로그램을 보호하고 레거시 프로그램 및 하위-프로그램 사이의 적절한 제어 흐름을 보장하도록 운영 체제에 의하여 이러한 특수 컬러의 페이지가 구성될 수 있다. 이들 부가적인 페이지는 레거시 프로그램을 대신하여 PPC 레지스터(140)를 사용해, 필요한 엔트리 포인트 액세스 제어를 수행할 수 있다.
블록(230)에서, 운영 체제의 가변 컴포넌트들(variant components)이 메모리로 로딩되어 그것들에 상이한 페이지 컬러들이 할당된다. 예컨대, 드라이버가 디스크로부터 로딩되어, 공급자 서명(vendor signatures)을 검증함으로써 무결성 확인이 이루어지며, 메모리에 로딩될 때, 다른 커널 컴포넌트로부터 드라이버를 보호하기 위해 드라이버에 페이지 컬러가 할당될 수 있다. 그러면, 드라이버는 자신과 동일한 컬러의 메모리를 할당할 수 있다.
블록(240)에서, 응용 프로그램들이 메모리에 로딩되어 그것들에 상이한 페이지 컬러들이 할당된다. 페이지가 컬러링되면, 운영 체제의 불변 응용 프로그램 프로그래밍 인터페이스(API)는 프로그램으로 하여금 그것의 서명 및 검증된 이미지가 주어진 다른 프로그램의 컬러를 질의하도록 할 수 있다. 데이터 구조는 다른 컬러의 프로그램에 대해 판독가능하게 공유될 수 있지만, 페이지가 은닉으로 표시되지 않은 경우에 한한다. 이러한 방식으로, 데이터에 대한 하나의 기록기 및 다수의 판독기가 존재하도록 단방향 선입선출(FIFO) 버퍼가 구성될 수 있다.
또한, 하나의 컬러의 페이지의 소유자는 원래 프로그램이 그 페이지에 기록하는 것을 완료한 후에 그것의 페이지 컬러들 중 하나의 컬러를 다른 프로그램의 컬러로 변경할 것을 운영 체제에 요청할 수 있다. 이러한 방식으로, 메모리 관리자와 같은 운영 체제의 불변요소에 시그널링으로써 페이지의 소유자가 변경될 수 있다. 소유자를 변경하는(컬러를 변경하는) 페이지가 비-실행가능 데이터만을 포함하여 실행 불능화(XD 비트가 설정됨)된 경우에는, 이러한 요청이 운영 체제에 의해 안전하게 이행될 수 있으므로, 컬러 변경 후에는 그 컨텐츠가 다른 컬러의 프로그램에 의해 실행할 수 없다.
다수의 컬러가 동시에 페이지에 할당되거나, 개별 페이지가 다수의 색을 가진 영역들로 분할될 수 있다. 이는 페이지 테이블 엔트리가 페이지 내의 그러한 컬러의 시작 및 종료 범위와 연관된 오프셋 및 다수의 색을 특정하도록 함으로써 이루어질 수 있다. 예컨대, 페이지 테이블 엔트리는 물리적 페이지를 위한 2개의 색, 그리고 제1 컬러가 종료하고 제2 컬러가 시작하는 위치를 페이지의 시작부에 대해 상대적으로 특정하는 오프셋을 특정할 수 있다. 소프트웨어는 이러한 속성을 사용하여 호출자의 스택 프레임을 하나의 컬러로 컬러링하고, 피호출자의 스택 프레임을 다른 컬러로 컬러링함으로써 피호출자에 대해 액세스될 수 없는 호출자의 스택 변수를 생성하여 호출자의 호출 스택을 피호출자로부터 보호할 수 있다. 이러한 방식으로, 호출자 및 피호출자 모두에 대한 스택 프레임들이 하나의 페이지 내에 포함되어 있더라도, 호출자의 스택 프레임은 피호출자에 의해 손상되지 않게 된다. 유사하게, 동일한 페이지 상에 상주하는 인접한 프로그램들은 페이지별 다수의 컬러와 그것들과 연관된 범위를 사용하여 상이하게 컬러링될 수 있다.
도 3은 메모리 페이지를 프로그램과 연관시키는 페이지 컬러링을 위한 방법인 방법(300)에 대한 본 발명의 일 실시예를 도시한다. 블록(310)에서, 명령어가 메모리 내의 페이지에 대한 액세스를 시도한다. 블록(312)에서, 그 페이지가 TLB로 로딩되고, 페이지의 컬러 및 허용이 기록된다. 블록(320)에서, 페이지가 컬러링되었는지 여부(예컨대, 컬러 값이 0x00이 아닌지 여부)에 대한 판정이 이루어진다. 컬러링되지 않은 경우에는, 블록(390)에서 페이지에 대한 액세스가 허용된다.
블록(320)에서 페이지가 컬러링된 경우, 블록(322)에서 페이지가 명령어를 포함하는 페이지인지 여부에 대한 판정이 이루어진다. 그러한 경우, 블록(390)에서 페이지에 대한 액세스가 허용된다. 그렇지 않은 경우, 블록(324)에서 페이지가 기록인지 여부에 대한 판정이 이루어진다.
블록(324)에서 액세스가 기록인 경우, 블록(350)에서, 액세스하고 있는 명령어를 포함하는 페이지의 컬러와 그 페이지의 컬러가 동일한지 여부에 대한 판정이 이루어진다. 그렇지 않으면, 블록(352)에서 페이지 폴트를 트리거링함으로써 액세스가 금지된다. 컬러가 동일한 경우, 블록(390)에서 페이지에 대한 액세스가 허용된다.
블록(324)에서 액세스가 기록이 아닌 경우, 블록(330)에서 페이지 액세스가 명령어 인출로 인한 것인지 여부에 대한 판정이 이루어진다. 그렇지 않으면, 블록(332)에서 액세스가 판독인지 여부에 대한 판정이 이루어진다. 액세스가 판독인 경우, 블록(334)에서 페이지의 은닉 비트가 설정되어 있는지 여부에 대한 판정이 이루어진다. 은닉 비트가 설정되어 있지 않은 경우, 블록(390)에서 페이지에 대한 액세스가 허용된다. 은닉 비트가 설정되어 있는 경우, 블록(350)에서, 액세스하고 있는 명령어를 포함하는 페이지의 컬러와 그 페이지의 컬러가 동일한지 여부에 대한 판정이 이루어진다. 그렇지 않은 경우, 블록(352)에서 그렇지 않으면, 페이지 폴트를 트리거링함으로써 액세스가 금지된다. 컬러가 동일한 경우, 블록(390)에서 페이지에 대한 액세스가 허용된다.
블록(330)으로 돌아와서, 페이지 액세스가 명령어 인출로 인한 것인 경우, 블록(340)에서 인출 명령어를 포함하는 페이지의 컬러를 확인하여 다른 컬러의 페이지로 점프 또는 호출하는 것이 허용되는지 여부를 판정한다. 그러한 경우, 블록(390)에서 페이지에 대한 액세스가 허용된다. 허용되지 않는 경우, 블록(342)에서 인출된 명령어가 DAV 명령어인지 여부에 대한 판정이 이루어지거나, 변환 페이지 내의 허용된 엔트리 포인트에 대한 액세스인지 여부에 대한 판정이 이루어진다. 그러한 경우, 블록(344)에서 인출 명령어의 페이지 컬러가 PPC 레지스터에 저장되고, 블록(390)에서 페이지에 대한 액세스가 허용된다. 그렇지 않은 경우, 블록(350)에서, 액세스하고 있는 명령어를 포함하는 페이지의 컬러와 그 페이지의 컬러가 동일한지 여부에 대한 판정이 이루어진다. 그렇지 않은 경우, 블록(352)에서, 페이지 폴트를 트리거링하여 액세스가 금지된다. 컬러가 동일한 경우, 블록(390)에서 페이지에 대한 액세스가 허용된다.
본 발명의 범위 내에서, 도시된 블록이 동시에 수행되거나, 도시된 블록이 생략되거나, 추가적인 블록이 부가되거나, 블록의 재정렬, 조합, 생략 또는 추가 등이 조합되어 방법(200 및 300)이 상이한 순서로 수행될 수 있다.
프로세서(110) 또는 본 발명의 실시예에 따라 설계된 임의의 기타 프로세서나 컴포넌트는 설계에서 시뮬레이션, 가공(fabrication)에 이르는 다양한 단계에서 설계될 수 있다. 설계를 나타내는 데이터는 다양한 방식으로 설계를 나타낼 수 있다. 먼저, 시뮬레이션에서 유용하도록, 하드웨어 기술 언어 또는 다른 기능적 기술 언어를 사용해 하드웨어를 나타낼 수 있다. 부가적으로 또는 선택적으로, 논리 및/또는 트랜지스터 게이트를 이용한 회로 수준 모델이 설계 프로세스의 일부 단계들에서 생성될 수 있다. 나아가, 대부분의 설계는 어떤 단계에서 그 설계가 각종 장치의 물리적 배치를 나타내는 데이터를 이용해 모델링될 수 있는 수준에 도달할 것이다. 종래의 반도체 가공 기술이 사용되는 경우에는, 장치 배치 모델을 나타내는 데이터가 집적 회로를 생산하는데 사용되는 마스크를 위한 상이한 마스크 레이어들에 대한 각종 특징의 존재 또는 부존재를 특정하는 데이터일 수 있다.
이러한 설계에 대한 임의의 표현에 있어서, 데이터가 임의의 형태의 머신-판독가능 매체(machine-readable medium)에 저장될 수 있다. 변조되거나, 또는 이러한 정보를 전송하기 위해 생성된 광파 또는 전자파, 메모리 또는 디스크와 같은 광 저장 장치나 자기 저장 매체가 머신-판독가능 매체일 수 있다. 이러한 매체들 중 임의의 것이 오류 회복 루틴의 명령어와 같은 본 발명의 실시예에서 사용되는 기타 정보, 또는 이러한 설계를 "수송"하거나 "나타낼" 수 있다. 정보를 수송하거나 나타내는 전기적 반송파(electrical carrieer wave)가 그 전기 신호의 복사, 버퍼링 또는 재전송이 수행될 수 있도록 전송되는 경우, 새로운 사본이 생성된다. 따라서, 통신 제공자 또는 네트워크 제공자의 동작은 본 발명의 기술을 구현하는 물품, 예컨대, 반송파의 사본을 생성하는 것일 수 있다.
이와 같이, 메모리 페이지를 프로그램과 연관시키는 페이지 컬러링을 위한 기술이 개시되어 있다. 특정한 실시예들이 기술되고 첨부된 도면에 도시되었지만, 당업자라면 이러한 개시를 연구하여 다양한 다른 수정을 가할 수 있으므로, 이러한 실시예들이 본 발명에 대해 예시적·비제한적이고, 본 발명은 도시되고 기술된 특정 구성 및 배치로 제한되지 않음이 인정될 것이다. 발달이 빠르고, 향후 발전을 용이하게 예측할 수 없는 이러한 기술 분야에서는, 기술적 발전의 실현에 따라 용이해지므로, 개시된 실시예들은 배치 및 상세사항에 있어 첨부된 청구항의 범위 또는 본 개시의 기술적 사상에서 벗어나지 않고 용이하게 수정될 수 있다.

Claims (20)

  1. 메모리를 액세스하기 위한 인터페이스; 및
    페이징 유닛(paging unit)으로서,
    데이터 구조의 엔트리에 기초해 제1 주소를 제2 주소로 변환(translate)하기 위한 변환 논리 - 상기 제1 주소는 상기 메모리의 제1 페이지에 저장된 명령어에 의해 제공되며, 상기 엔트리는 상기 제2 주소를 포함하는 상기 메모리의 제2 페이지의 기본 주소를 포함함 - ; 및
    상기 제1 페이지의 컬러를 상기 제2 페이지의 컬러와 비교하기 위한 비교 논리 - 상기 제1 페이지의 상기 컬러는 상기 제1 명령어를 포함하는 제1 프로그램과의 상기 제1 페이지의 연관 관계를 나타내며, 상기 엔트리는 상기 제1 프로그램 및 제2 프로그램 중 하나의 프로그램과의 상기 제2 페이지의 연관 관계를 나타내는 상기 제2 페이지의 상기 컬러를 더 포함함 -
    를 포함하는 페이징 유닛
    을 포함하는 장치.
  2. 제1항에 있어서,
    상기 제1 페이지의 상기 컬러 및 상기 제2 페이지의 상기 컬러가 상이한 경우, 상기 명령어가 상기 제2 페이지를 액세스하는 것을 금지하기 위한 액세스 논리를 더 포함하는 장치.
  3. 제2항에 있어서,
    상기 액세스 논리는 페이지 폴트 예외(page fault exception)를 트리거링함으로써 상기 명령어가 상기 제2 페이지를 액세스하는 것을 금지하는 장치.
  4. 제1항에 있어서,
    상기 제2 페이지의 상기 컬러가 상기 제2 페이지가 컬러링되지 않았음을 나타내도록 설정된 경우, 상기 명령어가 상기 제2 페이지를 액세스하는 것을 허용하기 위한 액세스 논리를 더 포함하는 장치.
  5. 제1항에 있어서,
    상기 액세스가 판독 액세스이고, 상기 엔트리가 상기 제2 페이지가 은닉되지 않음을 나타내는 표시를 더 포함하는 경우, 상기 명령어가 상기 제2 페이지를 액세스하는 것을 허용하기 위한 액세스 논리를 더 포함하는 장치.
  6. 제1항에 있어서,
    상기 액세스가 상기 제2 페이지 내의 허용된 엔트리 포인트 명령어에 대한 점프 및 호출 중 하나인 경우, 상기 명령어가 상기 제2 페이지를 액세스하는 것을 허용하기 위한 액세스 논리를 더 포함하는 장치.
  7. 제1항에 있어서,
    상기 액세스가 점프 또는 호출 명령어 중 하나이고 상기 제1 페이지의 상기 컬러가 상기 제1 페이지로부터 상기 제1 페이지의 상기 컬러와 상이한 컬러의 페이지들로의 점프들 또는 호출들이 허용됨을 나타내도록 설정된 경우, 상기 명령어가 상기 제2 페이지를 액세스하는 것을 허용하기 위한 액세스 논리를 더 포함하는 장치.
  8. 제3항에 있어서,
    상기 액세스 논리는 상기 명령어가 상기 제2 페이지를 액세스하는 것에 대한 금지를 페이지 컬러 위반으로서 오류 코드에서 보고하는 장치.
  9. 제1항에 있어서,
    상기 명령어가 점프 또는 호출 명령어 중 하나이고 상기 점프 또는 호출 중 하나가 허용되는 경우, 상기 제1 페이지의 상기 컬러를 저장하기 위한 저장 위치를 더 포함하는 장치.
  10. 제1항에 있어서,
    상기 액세스가 상기 제2 페이지의 경계로부터 미리 결정된 정렬에서의 포인트에 대한 것이고 상기 엔트리가 상기 포인트에서의 상기 제2 페이지에 대한 액세스들이 허용됨을 나타내는 표시를 더 포함하는 경우, 상기 명령어가 상기 제2 페이 지를 액세스하는 것을 허용하기 위한 액세스 논리를 더 포함하는 장치.
  11. 제1 페이지의 컬러를 제2 페이지의 컬러와 비교하는 단계; 및
    상기 제1 페이지의 상기 컬러가 상기 제2 페이지의 상기 컬러와 동일한 경우, 상기 제1 페이지로부터의 명령어가 상기 제2 페이지를 액세스하는 것을 허용하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 제1 페이지의 상기 컬러가 상기 제2 페이지의 상기 컬러와 상이한 경우, 상기 명령어가 상기 제2 페이지를 액세스하는 것을 금지하는 단계를 더 포함하는 방법.
  13. 제11항에 있어서,
    상기 제2 페이지가 컬러링되지 않은 경우, 상기 명령어가 상기 제2 페이지를 액세스하는 것을 허용하는 단계를 더 포함하는 방법.
  14. 제11항에 있어서,
    상기 액세스가 판독 액세스이고, 상기 제1 페이지의 상기 컬러와 상기 제2 페이지의 상기 컬러가 상이하며 상기 제2 페이지가 은닉된 경우, 상기 명령어가 상 기 제2 페이지를 액세스하는 것을 금지하는 단계를 더 포함하는 방법.
  15. 제11항에 있어서,
    상기 액세스가 점프 또는 호출 중 하나이고, 상기 제1 페이지의 상기 컬러가 상기 제1 페이지로부터 상기 제1 페이지의 상기 컬러와 상이한 컬러들의 페이지들에 대한 점프들 및 호출들이 허용됨을 나타내도록 설정된 경우, 상기 명령어가 상기 제2 페이지를 액세스하는 것을 허용하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서,
    스케쥴러의 일부를 상기 제1 페이지로 로딩하는 단계; 및
    상기 제1 페이지로부터 상기 제1 페이지의 상기 컬러와 상이한 컬러들의 페이지들로의 점프들이 허용됨을 나타내도록 상기 제1페이지의 상기 컬러를 설정하는 단계
    를 포함하는 방법.
  17. 제11항에 있어서,
    상기 액세스가 허용된 엔트리 포인트에 대한 명령어 인출(instruction fetch)인 경우, 상기 명령어가 상기 제2 페이지를 액세스하는 것을 허용하는 단계를 더 포함하는 방법.
  18. 제11항에 있어서,
    상기 제2 페이지의 상기 컬러를 찾기 위해 페이지 테이블을 참조하는 단계를 더 포함하는 방법.
  19. 메모리의 제1 페이지로 메모리 관리 루틴의 일부를 로딩하는 단계;
    상기 메모리의 제2 페이지에 페이지 테이블을 생성하는 단계;
    상기 제1 페이지 및 상기 제2 페이지의 컬러를 복수의 컬러 중 하나의 컬러로 설정하는 단계;
    상기 메모리의 제3 페이지로 응용 프로그램의 일부를 로딩하는 단계; 및
    상기 복수의 컬러 중 다른 컬러를 상기 제3 페이지의 컬러로 설정하는 단계
    를 포함하는 방법.
  20. 동적 랜덤 액세스 메모리 및 상기 메모리에 연결된 프로세서를 포함하는 시스템으로서, 상기 프로세서는
    데이터 구조의 엔트리에 기초해 제1 주소를 제2 주소로 변환하기 위한 변환 논리 - 상기 제1 주소는 상기 메모리의 제1 페이지에 저장된 명령어에 의해 제공되며, 상기 엔트리는 상기 제2 주소를 포함하는 상기 메모리의 제2 페이지의 기본 주소를 포함함 - ; 및
    상기 제1 페이지의 컬러를 상기 제2 페이지의 컬러와 비교하기 위한 비교 논리 - 상기 제1 페이지의 상기 컬러는 상기 제1 명령어를 포함하는 제1 프로그램과 의 상기 제1 페이지의 연관 관계를 나타내며, 상기 엔트리는 상기 제1 프로그램 및 제2 프로그램 중 하나의 프로그램과의 상기 제2 페이지의 연관 관계를 나타내는 상기 제2 페이지의 상기 컬러를 더 포함함 -
    를 구비하는 페이징 유닛을 포함하는 시스템.
KR1020087015716A 2005-12-30 2006-12-21 메모리 페이지를 프로그램과 연관시키기 위한 페이지컬러링 KR20080072952A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/323,446 US9390031B2 (en) 2005-12-30 2005-12-30 Page coloring to associate memory pages with programs
US11/323,446 2005-12-30

Publications (1)

Publication Number Publication Date
KR20080072952A true KR20080072952A (ko) 2008-08-07

Family

ID=38093456

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087015716A KR20080072952A (ko) 2005-12-30 2006-12-21 메모리 페이지를 프로그램과 연관시키기 위한 페이지컬러링

Country Status (5)

Country Link
US (1) US9390031B2 (ko)
JP (1) JP4759059B2 (ko)
KR (1) KR20080072952A (ko)
CN (1) CN101351774B (ko)
WO (1) WO2007079011A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930672B2 (en) 2010-10-08 2015-01-06 Snu R&Db Foundation Multiprocessor using a shared virtual memory and method of generating a translation table

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9390031B2 (en) 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US7512768B2 (en) * 2006-07-21 2009-03-31 Intel Corporation Dynamically sharing a stack between different code segments
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US7802050B2 (en) * 2006-09-29 2010-09-21 Intel Corporation Monitoring a target agent execution pattern on a VT-enabled system
US8671248B2 (en) * 2007-01-05 2014-03-11 International Business Machines Corporation Architecture support of memory access coloring
US7895392B2 (en) * 2007-01-05 2011-02-22 International Business Machines Color-based cache monitoring
US8799581B2 (en) * 2007-01-05 2014-08-05 International Business Machines Corporation Cache coherence monitoring and feedback
JP2009104555A (ja) * 2007-10-25 2009-05-14 Intel Corp Vt環境で動作するソフトウェアエージェントの改竄防止、方法および装置
US8782435B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
KR101179275B1 (ko) 2011-05-04 2012-09-03 성균관대학교산학협력단 메모리 관리 장치 및 방법
CN102663115B (zh) * 2012-04-16 2015-01-14 中国人民大学 基于页面染色技术的内存数据库访问优化方法
DE102012218363A1 (de) * 2012-10-09 2014-04-10 Continental Automotive Gmbh Verfahren zur Steuerung eines getrennten Ablaufs von verknüpften Programmblöcken und Steuergerät
EP3044719B1 (en) 2013-09-12 2019-08-28 Virsec Systems Inc. Automated runtime detection of malware
CN104572493A (zh) 2013-10-23 2015-04-29 华为技术有限公司 一种存储器资源优化方法和装置
US9785558B2 (en) * 2013-10-29 2017-10-10 Hua Zhong University Of Science Technology Mixed cache management
US9632832B2 (en) * 2014-02-27 2017-04-25 Empire Technology Development Llc Thread and data assignment in multi-core processors based on cache miss data
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
WO2015200508A1 (en) 2014-06-24 2015-12-30 Virsec Systems, Inc Automated root cause analysis of single or n-tiered applications
US10162694B2 (en) 2015-12-21 2018-12-25 Intel Corporation Hardware apparatuses and methods for memory corruption detection
US10585809B2 (en) 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
EP3472746B1 (en) 2016-06-16 2020-05-13 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
US20180024944A1 (en) * 2016-07-22 2018-01-25 Qualcomm Incorporated Methods and apparatus for access control in shared virtual memory configurations
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US10686605B2 (en) 2017-09-29 2020-06-16 Intel Corporation Technologies for implementing mutually distrusting domains
GB2570691B (en) * 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3916385A (en) 1973-12-12 1975-10-28 Honeywell Inf Systems Ring checking hardware
FR2547945B1 (fr) * 1983-06-21 1986-05-02 Raffinage Cie Francaise Nouvelle structure de cable electrique et ses applications
IN165278B (ko) 1984-09-21 1989-09-09 Digital Equipment Corp
US4809160A (en) * 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
CA2029628A1 (en) 1989-11-13 1991-05-14 Anantakotirajv Vagesna Translation look aside buffer with parallel exception checking and update bypass
JPH03244054A (ja) 1990-02-21 1991-10-30 Nec Corp 記憶保護方式
JP3454854B2 (ja) * 1992-01-16 2003-10-06 株式会社東芝 メモリ管理装置及び方法
JPH09512122A (ja) * 1994-04-22 1997-12-02 ゲーエムデー−フォルシュングスツェントルム インフォルマチオンシュテクニク ゲーエムベーハー データ記憶用キャッシュ記憶装置
DE19611311A1 (de) 1996-03-22 1997-09-25 Dyneon Gmbh Schichtstoff
US6347364B1 (en) * 1998-11-20 2002-02-12 International Business Machines Corp. Schedulable dynamic memory pinning
US6654859B2 (en) * 2001-07-26 2003-11-25 International Business Machines Corporation NUMA page selection using coloring
JP2003211748A (ja) * 2001-11-09 2003-07-29 Canon Inc 画像形成装置、画像形成方法およびプログラム
US6823433B1 (en) 2001-11-13 2004-11-23 Advanced Micro Devices, Inc. Memory management system and method for providing physical address based memory access security
US7199896B2 (en) * 2003-05-29 2007-04-03 Xerox Corporation Systems and methods for efficiently generating and supplying image data for tandem printers
US9390031B2 (en) 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930672B2 (en) 2010-10-08 2015-01-06 Snu R&Db Foundation Multiprocessor using a shared virtual memory and method of generating a translation table

Also Published As

Publication number Publication date
JP4759059B2 (ja) 2011-08-31
JP2009516310A (ja) 2009-04-16
US20070157003A1 (en) 2007-07-05
WO2007079011A3 (en) 2007-11-22
US9390031B2 (en) 2016-07-12
WO2007079011A2 (en) 2007-07-12
CN101351774A (zh) 2009-01-21
CN101351774B (zh) 2011-04-20

Similar Documents

Publication Publication Date Title
KR20080072952A (ko) 메모리 페이지를 프로그램과 연관시키기 위한 페이지컬러링
US10810309B2 (en) Method and system for detecting kernel corruption exploits
US20230401294A1 (en) Secure processor for detecting and preventing exploits of software vulnerability
CN109840410B (zh) 一种进程内数据隔离与保护的方法和系统
Dautenhahn et al. Nested kernel: An operating system architecture for intra-kernel privilege separation
CN109643290B (zh) 用于具用扩展分段的面向对象的存储器管理的技术
US8341369B2 (en) Providing protected access to critical memory regions
US9158710B2 (en) Page coloring with color inheritance for memory pages
Schrammel et al. Jenny: Securing Syscalls for {PKU-based} Memory Isolation Systems
US11966382B2 (en) Protecting against invalid memory references
US20050022172A1 (en) Buffer overflow protection and prevention
WO2019237866A1 (zh) 一种运行时访问控制方法及计算装置
CN114902178A (zh) 域转换禁用配置参数
US8645704B2 (en) Protecting caller function from undesired access by callee function
US7484239B1 (en) Detecting heap and stack execution in the operating system using regions
Manès et al. Domain Isolated Kernel: A lightweight sandbox for untrusted kernel extensions
WO2022193629A1 (zh) 软件的保护方法、装置、电子设备及存储介质
WO2023034586A1 (en) Systems and methods for on-demand loading of metadata
US8261065B2 (en) Protecting caller function from undesired access by callee function
Xiong et al. SILVER: Fine-grained and transparent protection domain primitives in commodity OS kernel
Liu et al. A buffer overflow detection and defense method based on RISC-V instruction set extension
Bratus et al. The cake is a lie: privilege rings as a policy resource
Kuzuno et al. Protection Mechanism of Kernel Data Using Memory Protection Key
WO2022128142A1 (en) Apparatus and method for managing access to data memory by executable codes based on execution context
GB2618116A (en) Exception return state lock parameter

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20110207

Effective date: 20120723