KR20220093379A - 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 방법 및 장치 - Google Patents

제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20220093379A
KR20220093379A KR1020227020341A KR20227020341A KR20220093379A KR 20220093379 A KR20220093379 A KR 20220093379A KR 1020227020341 A KR1020227020341 A KR 1020227020341A KR 20227020341 A KR20227020341 A KR 20227020341A KR 20220093379 A KR20220093379 A KR 20220093379A
Authority
KR
South Korea
Prior art keywords
operating system
kernel
page table
address space
information
Prior art date
Application number
KR1020227020341A
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 KR20220093379A publication Critical patent/KR20220093379A/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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/46Indexing scheme relating to G06F9/46
    • G06F2209/463Naming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • 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/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

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

Abstract

본 출원은 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법 및 장치를 제공한다. 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법은, 제1 운영 체제가 초기화될 때 커널 페이지 테이블 및 사용자 페이지 테이블을 하위 주소 공간에 저장하고, 상위 주소 공간을 예약하도록 메모리를 구성하는 단계와, 제2 운영 체제로부터 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 단계와, 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보에 기초하여 제1 운영 체제의 상위 주소 공간의 레지스터를 구성하여, 상위 주소 공간이 제2 운영 체제의 커널 리소스에 직접 액세스할 수 있게 하는 단계를 포함한다. 본 출원에서 제공하는 기술 솔루션에 따르면, 제2 운영 체제의 리소스에 직접 액세스할 때 제1 운영 체제의 성능이 향상될 수 있다.

Description

제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 방법 및 장치
본 출원은 "제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 방법 및 장치"라는 제목으로 2019년 11월 22일에 출원된 중국 특허 출원 번호 201911156149.8에 대한 우선권을 주장하며, 이는 그 전체가 본 명세서에 참조로 포함된다.
본 출원은 컴퓨터 기술 분야에 관한 것으로, 보다 상세하게는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법 및 장치에 관한 것이다.
컴퓨터 기술의 지속적인 발전과 함께, 전자 장치의 보안에 대한 관심이 높아지고 있다. 전자 장치의 풍부한 실행 환경(rich execution environment, REE) 기술은 보안 요구 사항을 충족할 수 없다. 보안을 향상시키기 위해, 신뢰할 수 있는 실행 환경(trusted execution environment, TEE)의 개념이 제공되어, 민감한 데이터가 다른 악성 타사 소프트웨어 응용 프로그램에 의해 변조되지 않고 안전하고 신뢰할 수 있는 격리 운영 체제에서 처리되도록 한다. TEE 운영 체제(operating system, OS)는 전자 장치에서 REE OS와 공존하고 REE OS에 대한 안정적인 보안 서비스를 제공하며 자체 실행 공간을 가지며 REE OS보다 높은 보안 수준을 가지는 실행 환경이다. 또한, TEE OS에 의해 액세스될 수 있는 소프트웨어 및 하드웨어 리소스는 REE OS와 분리되어 있다. TEE OS는 격리 운영 체제이다. TEE OS가 피어 REE OS 리소스에 액세스해야 하는 경우, TEE OS는 두 운영 체제의 서로 다른 페이지 테이블(page tables)로 인해 REE OS 리소스에 직접 액세스할 수 없다. 결과적으로, TEE OS에 배포된 동적 무결성 측정 모듈은 REE OS에 대한 무결성 보호를 제공하는 데 성능이 좋지 않다. 따라서, 제2 운영 체제의 리소스에 액세스할 때 제1 운영 체제의 성능을 어떻게 향상시킬 것인가는 해결해야 할 시급한 문제가 된다.
본 출원은 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법 및 장치를 제공한다. 제1 운영 체제의 상위 주소 공간(high-order address space)이 예약되고, 제1 운영 체제는 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성을 재사용하여 제1 운영 체제는 상위 주소 공간이 제2 운영 체제의 커널 공간에 있는 리소스를 직접 액세스할 수 있도록 한다. 이렇게 하면, 제2 운영 체제의 리소스에 액세스할 때 제1 운영 체제의 성능이 향상된다.
제1 양태에 따르면, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법이 제공되고, 이 방법은 제1 운영 체제에 의해 수행될 수 있거나, 또는 제1 운영 체제의 칩 또는 회로에 의해 수행될 수 있다. 이하에서는 설명의 편의를 위해, 이하에서는 제1 운영 체제가 설명하는 방법을 수행하는 예를 사용한다.
제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법은, 제1 운영 체제의 커널 공간 및 사용자 공간은 제1 운영 체제의 제1 주소 공간에서 구성되고 제2 주소 공간은 제2 운영 체제를 위해 예약되는 것을 포함한다. 제1 운영 체제의 가상 메모리 주소 공간은 제1 주소 공간과 제2 주소 공간을 포함한다. 제1 운영 체제는 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득한다. 제1 운영 체제는 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보에 기초하여 제1 운영 체제의 제2 레지스터를 구성한다. 제2 레지스터는 제1 운영 체제의 제2 주소 공간에 대응한다. 제1 운영 체제는 제2 주소 공간을 이용하여 제2 운영 체제의 커널 공간에 있는 리소스에 액세스한다.
본 출원의 이 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 제1 운영 체제는 제1 운영 체제의 상위 주소 공간을 예약함으로써 그리고 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보에 기초하여, 제1 운영 체제의 상위 주소 공간에 대응하는 제2 레지스터를 구성하여, 제1 운영 체제는 예약된 상위 주소 공간을 활성화할 때 제2 운영 체제의 커널 공간에 있는 리소스에 직접 액세스할 수 있고, 그에 따라 제2 운영 체제의 리소스에 액세스할 때 제1 운영 체제의 성능을 향상시킨다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 제1 주소 공간은 상위 주소 공간이고, 제2 주소 공간은 하위 주소 공간이며, 제1 운영 체제의 상위 주소 공간의 범위는 제2 운영 체제의 커널 주소 공간의 범위와 일치한다.
전술한 "제1 주소 공간" 및 "제2 주소 공간"은 각각 제1 운영 체제에서의 하위 주소 공간 및 상위 주소 공간을 지칭하며, 설명에 대한 제한을 피하기 위해 "제1 주소 공간" 및 "제2 주소 공간"으로 기술됨을 이해해야 한다. 본 출원의 보호 범위는 제한되지 않는다.
또한, 예약된 상위 주소 공간을 활성화할 때 제1 운영 체제가 제2 운영 체제의 커널 공간에 있는 리소스에 직접 액세스할 수 있도록 하기 위해, 제1 운영 체제의 상위 주소 공간의 범위는 제2 운영 체제의 커널 주소 공간의 범위와 일치한다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 방법은, 제1 운영 체제가 제2 운영 체제에 의해 전송된 커널 심볼 테이블 정보를 수신하는 것을 더 포함한다. 제1 운영 체제는 커널 심볼 테이블 정보를 파싱하여 제2 운영 체제의 상위 주소 공간의 변환 관계를 획득하고, 사용자 프로세스의 사용자 페이지 테이블 기본 주소 정보를 획득하고, 변환 관계를 사용하여 레벨별로 사용자 페이지 테이블 엔트리 콘텐츠를 판독하며, 제2 운영 체제의 사용자 공간에 있는 리소스에 액세스한다.
또한, 제1 운영 체제는 제2 운영 체제의 커널 심볼 테이블 정보를 획득하여, 제2 운영 체제의 상위 주소 공간의 변환 관계 및 사용자 프로세스의 사용자 페이지 테이블의 기본 주소 정보를 획득할 수 있다. 변환 관계를 알고 있다는 전제 하에, 제1 운영 체제는 레벨별로 사용자 페이지 테이블 엔트리 콘텐츠를 판독하고, 제2 운영 체제의 사용자 공간에 있는 리소스에 액세스할 수 있다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 제1 운영 체제의 커널 공간 및 사용자 공간이 제1 운영 체제의 제1 주소 공간에서 구성되는 것은, 제1 운영 체제가 제1 운영 체제의 커널 페이지 테이블 및 사용자 페이지 테이블을 제1 주소 공간의 페이지 테이블 메모리에 저장하는 것을 포함한다. 제1 운영 체제는 제1 주소 공간의 페이지 테이블 메모리를 제1 운영 체제의 제1 레지스터로 구성한다.
상위 주소 공간을 예약하는 방식이 제공되는데, 즉 커널 페이지 테이블과 사용자 페이지 테이블 모두는 하위 주소 공간의 페이지 테이블 메모리에 저장된다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 제2 운영 체제를 위해 제2 주소 공간이 예약된다는 것은, 제1 운영 체제가 제2 운영 체제의 상위 주소 공간에 기초하여 제2 주소 공간을 예약한다는 것을 포함한다.
구체적으로, 제1 운영 체제는 상위 주소 공간을 예약할 때, 제2 운영 체제의 상위 주소 공간의 범위를 참조하고, 그에 따라 제1 운영 체제는 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 기반으로, 제1 운영 체제의 상위 주소 공간에 대응하는 제2 레지스터를 성공적으로 구성할 수 있다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 방법은, 제1 운영 체제가 제2 운영 체제에 의해 전송된 요청 메시지를 수신하는 것을 더 포함한다. 요청 메시지는 제2 운영 체제의 커널 심볼 테이블 정보 및 커널 페이지 테이블의 레지스터 구성 정보를 전달한다.
본 출원의 이 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 제1 운영 체제가 제2 운영 체제의 커널 심볼 테이블 정보 및 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 것은, 제2 운영 체제에 의해 전송된 수신된 요청 메시지가 제2 운영 체제의 커널 심볼 테이블 정보 및 커널 페이지 테이블의 레지스터 구성 정보를 운반한다는 것일 수 있다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 클라이언트 애플리케이션(CA)이 제1 운영 체제에 배치된다. 제1 운영 체제가 제2 운영 체제를 위해 제2 주소 공간을 예약한다는 것은, CA 초기화 프로세스에서, 제1 운영 체제의 커널 페이지 테이블의 레지스터의 구성이 제2 운영 체제의 레지스터 구성 정보에 기초하여 수정되어, 제1 운영 체제의 제2 레지스터의 구성은 제2 운영 체제의 상위 레지스터의 구성과 동일하다는 것을 포함한다.
본 출원의 이 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 클라이언트 애플리케이션(client application, CA)은 제1 운영 체제에 배치된다. CA는 제2 운영 체제의 수신된 레지스터 구성 정보에 기초하여 제1 운영 체제의 레지스터의 구성을 수정하도록 초기화되어, 제1 운영 체제의 제2 레지스터의 구성은 제2 운영 체제의 상위 레지스터의 구성과 동일하다. 이것은 제1 운영 체제가 제2 운영 체제의 레지스터의 구성을 재사용하는 방법에 대한 실행 가능한 솔루션을 제공한다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 제1 운영 체제의 커널 페이지 테이블 및 사용자 페이지 테이블을 제1 주소 공간의 페이지 테이블 메모리에 저장하기 전에, 방법은, 제1 운영 체제가 사용자 액세스 불가능 권한 제어를 커널 페이지 테이블에 추가하는 것, 및 제1 운영 체제가 PXN(privileged execute never) 보호를 사용자 페이지 테이블에 추가하는 것을 더 포함한다.
본 출원의 본 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 제1 운영 체제의 커널 페이지 테이블 및 사용자 페이지 테이블은 동일한 페이지 테이블 메모리에 저장된다. 커널 페이지 테이블 및 사용자 페이지 테이블의 보안 요구사항을 충족하기 위해, 사용자 액세스 불가능 권한 제어가 커널 페이지 테이블에 추가되고, PXN 보호가 사용자 페이지 테이블에 추가되어, 커널 페이지 테이블 및 사용자 페이지 테이블은 안전하게 독립적이게 된다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보는 주소 변환 제어기의 구성 정보, 메모리 속성 제어기의 구성 정보, 및 커널 공간 페이지 테이블 기본 주소 레지스터의 구성 정보를 포함한다.
본 출원의 본 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 제1 운영 체제에 의해 수신된 제2 운영 체제의 레지스터 구성 정보는 제1 운영 체제가 제2 운영 체제의 레지스터 구성을 재사용할 수 있도록 보다 포괄적인 선택을 제공하기 위해, 복수의 유형의 구성 정보를 포함한다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 동적 무결성 측정 모듈이 제1 운영 체제에 배치되고, 이 동적 무결성 측정 모듈은 제2 운영 체제를 위한 보안 서비스를 제공하도록 구성된다.
본 출원의 이 실시예에서 제공된 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 제1 운영 체제는 제2 운영 체제에 대한 보안 보호를 제공하기 위해 동적 무결성 측정 모듈을 포함할 수 있다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 제1 운영 체제가 제2 운영 체제의 커널 공간에 있는 리소스에 액세스하는 동안 예외가 발생할 때, 제1 운영 체제는 예외 관련 정보를 제2 운영 체제에 전송한다.
본 출원의 본 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 교차-시스템 리소스 액세스(cross-system resource access)에서 예외가 발생하는 경우, 제2 운영 체제가 액세스 예외가 발생했음을 알 수 있도록 제1 운영 체제는 예외에 대한 관련 정보를 액세스되는 제2 운영 체제에 알릴 수 있다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 원격 프로시저 호출(RPC) 서비스가 제1 운영 체제에 배치된다. 제1 운영 체제가 제2 운영 체제에 예외 관련 정보를 전송한다는 것은, RPC 서비스가 예외 관련 정보를 제2 운영 체제에 전송하는 것을 포함한다.
본 출원의 이 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 원격 프로시저 호출(RPC) 서비스가 제1 운영 체제에 배치될 수 있다. 액세스 예외가 발생하면, 제1 운영 체제는 RPC 서비스를 사용하여 예외 정보를 제2 운영 체제에 알린다.
제2 양태에 따르면, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법이 제공되며, 이 방법은 제2 운영 체제에 의해 수행될 수 있거나, 또는 제2 운영 체제의 칩 또는 회로에 의해 수행될 수 있다. 설명의 편의를 위해, 이하에서는 제2 운영 체제가 설명될 방법을 수행하는 예를 사용한다.
제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법은 제2 운영 체제가 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 것을 포함한다. 제2 운영 체제는 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 제1 운영 체제로 전송한다.
본 출원의 이 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보는 교차-시스템 리소스 액세스 시나리오에서 액세스된 리소스의 제2 운영 체제로부터 획득될 수 있고, 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보는 제1 운영 체제로 전송된다. 이러한 방식으로, 제1 운영 체제는 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성을 재사용할 수 있으며, 이는 시스템 간 리소스 액세스 성능을 향상시킨다.
제2 양태를 참조하면, 제2 양태의 일부 구현에서, 방법은 제2 운영 체제가 제2 운영 체제의 커널 심볼 테이블 정보를 획득하는 단계를 더 포함한다. 제2 운영 체제는 커널 심볼 테이블 정보를 제1 운영 체제에 전송한다.
본 출원의 본 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 제2 운영 체제의 커널 심볼 테이블 정보는 교차-시스템 리소스 액세스 시나리오에서 액세스된 리소스의 제2 운영 체제로부터 획득될 수 있고, 커널 심볼 테이블 정보가 제1 운영 체제로 전송된다. 이와 같이, 제1 운영 체제는 레벨별로 제2 운영 체제의 사용자 페이지 테이블에 액세스할 수 있고, 이는 시스템 간 리소스 액세스 성능을 향상시킨다.
제2 양태를 참조하면, 제2 양태의 일부 구현에서, 커널 드라이버 모듈이 제2 운영 체제에 배치된다. 제2 운영 체제가 제2 운영 체제의 커널 심볼 테이블 정보 및/또는 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 것은, 커널 드라이버 모듈이 제2 운영 체제의 커널 심볼 테이블 정보 및/또는 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 것을 포함한다.
본 출원의 이 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 제2 운영 체제의 커널 심볼 테이블 정보 및 제2 운영 체제의 레지스터 구성 정보가 제2 운영 체제로부터 획득될 수 있는 것은, 커널 드라이버 모듈이 제2 운영 체제에 배치되고, 커널 드라이버 모듈이 제2 운영 체제의 커널 심볼 테이블 정보 및 레지스터 구성 정보를 획득하도록 구성된다는 것일 수 있다.
제2 양태를 참조하면, 제2 양태의 일부 구현에서, 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보는, 주소 변환 제어기의 구성 정보, 메모리 속성 제어기의 구성 정보, 및 커널 공간 페이지 테이블 기본 주소 레지스터의 구성 정보를 포함한다.
본 출원의 이 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에 따르면, 제2 운영 체제의 레지스터 구성 정보는 복수 유형의 구성 정보를 포함하므로, 제1 운영 체제가 제2 운영 체제의 레지스터 구성 정보를 재사용하도록 하기 위한 보다 포괄적인 선택을 제공한다.
제3 양태에 따르면, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치가 제공된다. 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 프로세서를 포함하고, 이 프로세서는 제1 양태에서 설명된 방법에서 제1 운영 체제의 기능을 구현하도록 구성된다.
선택적으로, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 메모리를 더 포함할 수 있고, 메모리는 프로세서에 연결되고, 프로세서는 제1 양태에서 설명한 방법에서 제1 운영 체제의 기능을 구현하도록 구성된다. 가능한 구현에서, 메모리는 프로그램 명령어 및 데이터를 저장하도록 구성된다. 메모리는 프로세서에 연결된다. 프로세서는 메모리에 저장된 프로그램 명령어를 호출하고 실행할 수 있으며, 제1 양태에서 설명된 방법에서 제1 운영 체제의 기능을 구현하도록 구성된다.
선택적으로, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 통신 인터페이스를 더 포함할 수 있고, 통신 인터페이스는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치가 다른 장치와 통신하는데 사용된다. 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하도록 하기 위한 장치가 제1 운영 체제인 경우, 통신 인터페이스는 트랜시버, 입/출력 인터페이스, 회로 등이다.
가능한 설계에서, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 프로세서 및 통신 인터페이스를 포함한다.
프로세서는 컴퓨터 프로그램을 실행하도록 구성되어, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치가 제1 양태에서 설명된 임의의 방법을 구현한다.
프로세서는 통신 인터페이스를 통해 외부의 객체와 통신한다.
외부의 객체는 프로세서 이외의 객체일 수도 있고, 장치 이외의 객체일 수도 있음을 이해할 수 있다.
다른 가능한 설계에서, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 칩 또는 칩 시스템이다. 통신 인터페이스는 칩 또는 칩 시스템 상의 입/출력 인터페이스, 인터페이스 회로, 출력 회로, 입력 회로, 핀, 관련 회로 등일 수 있다. 프로세서는 대안적으로 처리 회로 또는 로직 회로일 수 있다.
제4 양태에 따르면, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치가 제공된다. 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 프로세서를 포함하고, 이 프로세서는 제2 양태에서 설명된 방법에서 제2 운영 체제의 기능을 구현하도록 구성된다.
선택적으로, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 메모리를 더 포함할 수 있고, 이 메모리는 프로세서에 연결되고, 프로세서는 제2 양태에서 설명된 방법에서 제2 운영 체제의 기능을 구현하도록 구성된다. 가능한 구현에서, 메모리는 프로그램 명령어 및 데이터를 저장하도록 구성된다. 메모리는 프로세서에 연결된다. 프로세서는 메모리에 저장된 프로그램 명령어를 호출하고 실행할 수 있으며, 제2 양태에서 설명된 방법에서 제2 운영 체제의 기능을 구현하도록 구성된다. 선택적으로, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 통신 인터페이스를 더 포함할 수 있고, 통신 인터페이스는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치가 다른 장치와 통신하는데 사용된다. 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하도록 하기 위한 장치가 제2 운영 체제인 경우, 통신 인터페이스는 트랜시버, 입/출력 인터페이스, 회로 등이다.
가능한 설계에서, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 프로세서 및 통신 인터페이스를 포함한다.
프로세서는 통신 인터페이스를 통해 외부의 객체와 통신한다.
프로세서는 컴퓨터 프로그램을 실행하도록 구성되어, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치가 제2 양태에서 설명된 임의의 방법을 구현한다.
외부의 객체는 프로세서 이외의 객체일 수도 있고, 장치 이외의 객체일 수도 있음을 이해할 수 있다.
다른 가능한 설계에서, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치는 칩 또는 칩 시스템이다. 통신 인터페이스는 칩 또는 칩 시스템 상의 입/출력 인터페이스, 인터페이스 회로, 출력 회로, 입력 회로, 핀, 관련 회로 등일 수 있다. 프로세서는 대안적으로 처리 회로 또는 로직 회로일 수 있다.
제5 양태에 따르면, 컴퓨터 판독가능 저장 매체가 제공된다. 컴퓨터 판독가능 저장매체는 컴퓨터 프로그램을 저장한다. 컴퓨터 프로그램이 통신 장치에 의해 실행될 때, 통신 장치는 제1 양태 및 제1 양태의 가능한 구현들 중 어느 하나에 따른 방법을 구현할 수 있다.
제6 양태에 따르면, 컴퓨터 판독가능 저장 매체가 제공된다. 컴퓨터 판독가능 저장매체는 컴퓨터 프로그램을 저장한다. 컴퓨터 프로그램이 통신 장치에 의해 실행될 때, 통신 장치는 제2 양태 및 제2 양태의 가능한 구현들 중 어느 하나에 따른 방법을 구현할 수 있다.
제7 양태에 따르면, 명령어를 포함하는 컴퓨터 프로그램 제품이 제공된다. 명령어가 컴퓨터에 의해 실행될 때, 통신 장치는 제1 양태 및 제1 양태의 가능한 구현들 중 어느 하나에 따른 방법을 구현할 수 있다.
제8 양태에 따르면, 명령어를 포함하는 컴퓨터 프로그램 제품이 제공된다. 명령어가 컴퓨터에 의해 실행될 때, 통신 장치는 제2 양태 및 제2 양태의 가능한 구현들 중 어느 하나에 따른 방법을 구현할 수 있다.
제9 양태에 따르면, 제3 양태에 도시된 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치 및 제4 양태에 도시된 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치를 포함하는 전자 장치가 제공된다.
도 1은 2개의 운영 체제의 개략적인 블록도이다.
도 2는 본 출원의 실시예에 따른 공유 메모리의 개략적인 블록도이다.
도 3은 전자 장치(300)의 구조의 개략도이다.
도 4는 본 출원의 실시예에 따른 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법의 개략적인 흐름도이다.
도 5는 본 출원의 일 실시예에 따른 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 개략적인 블록도이다.
도 6은 본 출원의 실시예에 따른 사용자 페이지 테이블 액세스의 개략적인 흐름도이다.
도 7은 본 출원의 실시예에 따른 페이지 결함 예외 처리의 개략적인 흐름도이다.
도 8은 본 출원의 실시예에 따른 예외 처리의 개략적인 흐름도이다.
도 9는 본 출원의 실시예에 따른 운영 체제 소프트웨어의 개략적인 블록도이다.
도 10은 본 출원에 따른 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치(10)의 개략도이다.
도 11은 본 출원의 실시예에 적용 가능한 제1 운영 체제의 구조의 개략도이다.
도 12는 본 출원에 따른 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치(20)의 개략도이다.
도 13은 본 출원의 일 실시예에 적용 가능한 제2 운영 체제의 구조의 개략도이다.
다음은 첨부된 도면을 참조하여 본 출원의 기술적 솔루션을 설명한다.
본 출원의 실시예의 기술 솔루션은 2개의 운영 체제에 적용될 수 있다. 도 1은 2개의 운영 체제의 개략적인 블록도이다. 도 1에 도시된 바와 같이, 두 운영 체제는 로컬 운영 체제와 피어 운영 체제를 포함한다. 로컬 운영 체제와 피어 운영 체제는 중앙 처리 장치(central processing units, CPU), 메모리 관리 장치(memory management units, MMU), 변환 룩어사이드 버퍼(translation lookaside buffers, TLB) 및 페이지 전역 디렉토리(page global directories, PGD)와 같은 독립적인 내부 모듈을 가질 수 있고, 더 나아가 독립적인 외부 장치도 구비할 수 있다. 운영 체제의 외부 장치는 도 1에는 도시되어 있지 않고, 이는 본 출원에서 제한되지 않는다.
구체적으로, 로컬 운영 체제의 프로그램은 복수의 프로그램으로 분할되고, 복수의 프로그램은 메모리에 개별적으로 로딩된다. 물리적으로, 복수의 프로그램은 서로 연결될 필요가 없다. 논리적으로, 페이지 테이블은 논리적으로 연속적인 프로그램을 형성하기 위해 이산적으로 분산된 복수의 프로그램을 스트링하는 데 사용된다. 프로그램은 동일한 길이의 작은 블록으로 나뉘며, 이러한 작은 블록을 페이지(pages)라고 한다. 마찬가지로, 메모리도 페이지와 같이 동일한 크기의 페이지 프레임(frames)으로 나뉘어진다. 하나의 페이지는 하나의 페이지 프레임에 로딩될 수 있으며, 현재 작업의 페이지 테이블은 CPU에 제공되어야 한다. CPU는 프로그램을 실행할 때 페이지 테이블을 기반으로 메모리의 페이지 프레임에서 페이지를 검색한 다음 논리적 주소를 물리적 주소에 매핑한다. 도 1에 도시된 2개의 운영 체제에서, 로컬 운영 체제가 피어 운영 체제의 리소스에 액세스해야 할 때 로컬 운영 체제와 피어 운영 체제의 상이한 페이지 테이블에 의해 제한되는 경우, 로컬 운영 체제는 피어 운영 체제의 리소스에 직접 액세스할 수 없다. 상이한 운영 체제가 동일한 물리적 메모리에 있는 데이터 리소스를 액세스해야 하는 경우, 상이한 운영 체제는 모두 새로운 페이지 테이블 관계를 설정해야 한다.
예를 들어, 도 1에 도시된 바와 같이, 로컬 운영 체제는 로컬 운영 체제의 페이지 테이블과 가상 주소 #1에 따라 대응하는 물리적 주소 #1을 찾는다. 물리적 주소 #1은 물리적 메모리 블록 #1에 대응한다. 피어 운영 체제는 피어 운영 체제의 페이지 테이블과 가상 주소 #1에 따라 대응하는 물리적 주소 #2를 찾는다. 물리적 주소 #2는 물리적 메모리 블록 #2에 대응한다. 물리적 메모리 블록 #1은 물리적 메모리 블록 #2와 다르다. 따라서, 로컬 운영 체제와 피어 운영 체제는 서로 다른 페이지 테이블을 기반으로 서로 다른 물리적 메모리 블록에 액세스한다. 가상 주소 #1을 기반으로 물리적 메모리 블록 #2를 찾기 위해 로컬 운영 체제와 피어 운영 체제가 모두 활성화되어야 하는 경우, 로컬 운영 체제와 피어 운영 체제의 페이지 테이블은 가상 주소 #1과 물리적 메모리 블록 #2 간의 매핑 관계를 포함해야 한다. 즉, 로컬 운영 체제가 로컬 운영 체제의 페이지 테이블과 가상 주소 #1에 따라 대응하는 물리적 주소 #2를 찾을 수 있도록, 로컬 운영 체제의 페이지 테이블은 업데이트되어야 필요가 있다.
운영 체제가 페이지 테이블에 기초하여 물리적 메모리 블록에 액세스하는 특정 프로세스는 본 출원의 이 실시예에서 제한되지 않는다는 것을 이해해야 한다. 자세한 내용은 현재 프로토콜의 사양을 참조한다. 또한, 본 출원에서, 두 운영 체제에서 두 가지 다른 운영 체제를 로컬 운영 체제 및 피어 운영 체제라고 하는 것은 단지 예일 뿐이며 본 출원의 보호 범위에 대한 어떠한 제한도 구성하지 않는다는 점을 이해해야 한다. 예를 들어, 로컬 운영 체제는 제1 운영 체제로 지칭되고, 피어 운영 체제는 제2 운영 체제로 지칭될 수 있다. 로컬 운영 체제는 보안 격리 운영 체제라고도 하며 피어 운영 체제는 주류 운영 체제라고도 한다. 2개의 운영 체제는 또한 이중 시스템, 다중 프로세서 시스템 등으로 지칭될 수 있음이 추가로 이해되어야 한다.
제1 운영 체제가 TEE OS이고, 제2 운영 체제가 REE OS인 경우, REE OS의 보안 문제는 기밀성, 무결성, 가용성 등을 포함한다. 가능한 구현에서, 동적 무결성 측정 기술은 REE OS에 대한 무결성 보안 서비스를 제공하는 데 사용된다. 특히, 동적 무결성 측정 기술은 REE OS 메모리 데이터를 분석함으로써, REE OS가 위협을 받는지 여부를 감지하여 REE OS 메모리 데이터를 무단 수정으로부터 보호한다. 동적 무결성 측정 모듈의 보안 보호를 위해, TEE OS에 동적 무결성 측정 모듈을 배치하여 동적 무결성 측정 모듈의 보안을 확보할 수 있다. 동적 무결성 측정 모듈은 TEE OS에 배치되어, REE OS 리소스에 액세스하는데, 이는 주로 REE OS 사용자 프로세스 코드 세그먼트, 커널 코드 세그먼트 및 동적 공유 라이브러리 코드 세그먼트와 같은 측정 개체에 액세스하는 것을 포함한다.
그러나, TEE OS에 배치된 동적 무결성 측정 모듈은 REE OS가 신뢰할 수 있음을 보장하기 위해 REE OS 리소스의 무결성을 모니터링할 필요가 있다. 이 경우, TEE OS는 REE OS와 격리되어 있기 때문에, 동적 무결성 측정 모듈은 REE OS 리소스에 실시간으로 효율적으로 액세스할 수 없다. 본 출원의 이 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법은 REE OS 리소스에 액세스하기 위해 TEE OS에 배치된 동적 무결성 측정 모듈의 성능을 향상시킬 수 있다. 다음은 실시예를 참조하여 설명을 제공한다.
선택적으로, 본 출원의 REE OS는 리눅스(Linux) 운영 체제, 안드로이드(Android) 운영 체제 등을 포함한다. 구체적으로, 본 출원에서 "제1", "제2" 및 다양한 숫자는 유사한 대상 간을 구별하기 위한 것이지만 반드시 특정 순서나 시퀀스를 나타내는 것은 아니다. 이러한 방식으로 사용된 데이터는 적절한 상황에서 상호 교환할 수 있음을 이해해야 한다. 이것은 본 출원의 실시예의 범위를 제한하려는 것이 아니다. 예를 들어, 서로 다른 운영 체제 간을 구별한다. 유사하게, 본 출원에서, "#1" 및 "#2"와 같은 레이블이 또한 유사한 객체 간을, 예컨대, 상이한 주소 간을 구별하는데 사용된다.
더 나아가, 상이한 운영 체제가 메모리를 공유할 수 있다. 공유 메모리 메커니즘이 사용되는 경우, 로컬 운영 체제 및 피어 운영 체제는 동일한 물리적 메모리 블록에 액세스할 수 있다. 구체적인 구현 절차는 도 2에 도시되어 있다. 도 2는 본 출원의 실시예에 따른 공유 메모리의 개략적인 블록도이다.
로컬 운영 체제가 피어 운영 체제에서 실행되는 애플리케이션 코드 세그먼트에 액세스할 때, 로컬 운영 체제는 피어 운영 체제에서 실행되는 애플리케이션 코드 세그먼트의 물리적 주소를 미리 알아야 한다. 운영 체제 간의 물리적 주소 교환을 통해, 피어 운영 체제는 물리적 주소를 로컬 운영 체제로 적극적으로 전송한다. 물리적 주소를 수신한 후, 로컬 운영 체제는 물리적 페이지 프레임을 능동적으로 매핑하고 물리적 페이지 프레임을 로컬 운영 체제의 페이지 테이블 엔트리에 추가한다. 이러한 방식으로, 피어 운영 체제와 로컬 운영 체제는 공유 메모리와 유사한 방식으로 메모리 블록에 직접 액세스할 수 있다.
피어 운영 체제에서 프로세스 코드 세그먼트의 물리적 주소가 불연속적이고 이산 분포로 존재할 때, 로컬 운영 체제는 많은 양의 물리적 메모리 블록을 매핑할 필요가 있음을 이해해야 한다. 결과적으로, 성능은 매우 좋지 않다. 또한, 로컬 운영 체제는 피어 운영 체제의 모든 리소스를 매핑하므로 로컬 운영 체제의 보안이 영향을 받는다. 로컬 운영 체제가 물리적 메모리 블록의 내용을 식별할 수 없는 경우, 로컬 운영 체제에 의한 메모리 블록의 콘텐츠의 사용이 영향을 받는다. 피어 운영 체제에서 페이지 스와핑이 발생하면, 로컬 운영 체제가 피어 운영 체제의 데이터에 액세스할 때 비동기 문제가 발생한다.
또한, 로컬 운영 체제는 피어 운영 체제의 리소스에 액세스하는 목적을 구현하기 위해 피어 운영 체제의 페이지 테이블 리소스를 더 복사할 수 있다. 예를 들어, 로컬 운영 체제는 피어 운영 체제의 커널 페이지 테이블(또는 사용자 페이지 테이블)의 모든 엔트리를 소프트웨어 탐색 방식으로 로컬 운영 체제의 페이지 테이블 메모리에 복사하고, 로컬 운영 체제는 레벨별로 페이지 테이블 엔트리 매핑을 순차적으로 완료한다. 이러한 방식으로, 로컬 운영 체제와 피어 운영 체제는 동일한 페이지 테이블 변환 관계를 사용하여 동일한 페이지 프레임 콘텐츠에 액세스할 수 있다.
리눅스의 페이징 메커니즘에서, 페이지 전역 디렉토리(page global directory, PGD)는 여러 페이지 상위 디렉토리(page upper directories, PUD)의 주소를 포함하고, PUD는 여러 페이지 중간 디렉토리(page middle directories, PMD)의 주소를 순차적으로 포함하며, PUD는 여러 페이지 테이블 엔트리(page table entries, PTE)의 주소를 더 포함하고, 각 PTE는 페이지 프레임을 가리킨다.
리눅스 사용자 페이지 테이블이 일례로 사용된다. 로컬 운영 체제는 피어 운영 체제에서의 사용자 프로그램 가상 주소(virtual address, VA) 및 사용자 프로세스 페이지 테이블 기본 주소(일반적으로, PGD 주소는 페이지 테이블 기본 주소 레지스터에 직접 채워짐)를 알고 있다고 가정한다. 로컬 운영 체제는 사용자 페이지 테이블 기본 주소에서 순회를 시작하고 PGD 물리적 주소를 로컬 운영 체제의 커널 페이지 테이블에 매핑하고 매핑이 완료된 후, 로컬 운영 체제에서 페이지 테이블 변환 관계를 사용하여 PGD 가상 주소를 얻고, 가상 주소의 콘텐츠를 판독하며, 엔트리 콘텐츠를 획득한다. 레벨 1 페이지 테이블(페이지 상위 디렉토리, PUD)의 물리적 주소가 저장된다. 로컬 운영 체제는 동일한 메커니즘을 사용하여 PUD 엔트리 가상 주소를 얻고 현재 PUD 엔트리가 현재 매핑되어야 하는 VA를 포함하는지 여부를 확인한다. 현재 VA가 포함되지 않은 경우, PUD 엔트리는 하나의 레벨-1 페이지 테이블 단위를 오프셋한다. 로컬 운영 체제는 계속해서 PUD 엔트리가 VA를 포함하고 있는지 여부를 결정하고, PUD 엔트리가 VA를 포함하고 있지 않으면 빈 주소를 반환하고, PUD 엔트리가 VA를 포함하고 있으면 페이지 중간 디렉터리 엔트리로 이동한다. 동일한 방법을 사용하여 실제 PTE를 레벨별로 찾고 마지막으로 사용을 위해 해당 PTE를 로컬 운영 체제에 매핑한다.
피어 운영 체제에 많은 양의 페이지 테이블 엔트리가 있는 경우, 페이지 테이블을 복사하는 데 로컬 운영 체제에 의해 소비되는 시간이 매우 길다는 것을 이해해야 한다. 제2 운영 체제의 리소스에 액세스할 때 제1 운영 체제의 성능을 향상시키기 위해, 본 출원은 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법을 제공한다. 로컬 운영 체제는 피어 운영 체제의 레지스터 구성을 재사용하므로 페이지 테이블 복사, 페이지 테이블 동기화 등을 수행하지 않고 빠른 리소스 액세스가 구현된다.
먼저, 본 출원의 이 실시예에서 제공된 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법의 이해를 용이하게 하기 위해, 본 출원과 관련된 몇 가지 기본 개념이 아래에 간략하게 설명된다.
1. TEE
TEE는 전역 플랫폼(global platform, GP)에서 제공하는 개념이다. TEE OS는 장치 상에서 REE OS와 공존하는 실행 환경이고, REE OS에 대한 보안 서비스를 제공한다. TEE OS는 자체 실행 공간을 가지며 REE OS보다 높은 보안 수준을 갖는다. 본 출원에서는, REE OS와 TEE OS를 예로 들어 설명한다.
TEE OS는 전자 장치에서 동작하며, REE OS와 안전한 환경(safe environment, SE) 간의 보안을 위한 프레임워크를 제공한다. 예를 들어, 일부 소액결제나 기업용 가상 사설망(virtual private network, VPN)과 같은 데이터의 경우, 필요한 보안 보호의 강도가 높지 않고 보호를 위한 별도의 SE가 필요하지 않으며, 데이터는 REE OS에 직접 배치될 수 없어, REE OS의 개방성으로 인한 공격을 방지한다. 따라서, TEE OS는 이러한 애플리케이션에 대한 보안 보호를 제공하는 데 사용될 수 있다.
또한, TEE OS는 신뢰할 수 있는 애플리케이션(Trusted Application, TA)을 위한 안전한 실행 환경을 제공하고, TA 자원 및 데이터의 기밀성, 무결성 및 액세스 허가를 보호한다. TEE에서, 모든 TA는 상호 독립적이며 승인 없이는 서로 액세스할 수 없다.
다음은 본 출원의 실시예에서 제공 및 설계된 전자 장치, 이러한 전자 장치를 위한 사용자 인터페이스, 및 이러한 전자 장치를 사용하기 위한 실시예를 설명한다. 일부 실시예에서, 전자 장치는 휴대폰, 태블릿 컴퓨터 또는 무선 통신 기능을 갖는 웨어러블 전자 장치(예컨대, 스마트 워치)와 같은 다른 기능을 더 포함하는 휴대용 전자 장치일 수 있다. 휴대용 전자 장치의 예시적인 실시예는 iOS®, Android®, Microsoft®, 또는 다른 운영 체제를 사용하는 휴대용 전자 장치를 포함하지만 이에 제한되지 않는다. 휴대용 전자 장치는 대안적으로 랩톱(laptop)과 같은 다른 휴대용 전자 장치일 수 있다. 일부 다른 실시예에서, 전술한 전자 장치는 휴대용 전자 장치가 아니라 데스크탑 컴퓨터일 수 있음을 추가로 이해해야 한다. 일부 실시예에서, 전자 장치는 스마트 스피커 또는 스마트 홈 장치와 같은 스마트 가전 기기일 수 있다. 일부 실시예에서, 전자 장치는 차량 탑재 장치, 차량 등일 수 있다. 차량 탑재 장치는 지능형 운전 컴퓨팅 플랫폼 또는 차량 내 데이터 처리 플랫폼과 같은 처리 능력을 갖는 장치일 수 있으며, 전술한 제1 운영 체제 및 제2 운영 체제는 지능형 운전 컴퓨팅 플랫폼 또는 차량 내 데이터 처리 플랫폼에서 실행된다. 지능형 운전 컴퓨팅 플랫폼 또는 차량 내 데이터 처리 플랫폼은 모바일 데이터 센터(mobile data center, MDC)일 수 있다.
예를 들어, 도 3은 전자 장치(300)의 구조를 개략적으로 도시한다. 전자 장치(300)는 프로세서(310), 외부 메모리 인터페이스(320), 내부 메모리(323), 범용 직렬 버스(Universal Serial Bus, USB) 인터페이스(330), 충전 관리 모듈(340), 전원 관리 모듈(343), 배터리(342), 안테나 1, 안테나 2, 이동 통신 모듈(350), 무선 통신 모듈(360), 오디오 모듈(370), 스피커(370A), 수신기(370B), 마이크(370C), 헤드셋 잭(370D), 센서 모듈(380), 버튼(390), 모터(393), 인디케이터(392), 카메라(393), 디스플레이(394), 가입자 식별 모듈(subscriber identification module, SIM) 카드 인터페이스(395) 등을 포함할 수 있다. 센서 모듈(380)은 압력 센서(380A), 자이로스코프 센서(380B), 기압 센서(380C), 자기 센서(380D), 가속도 센서(380E), 거리 센서(380F), 광 근접 센서(380G), 지문 센서(380H), 온도 센서(380J), 터치 센서(380K), 주변광 센서(380L), 골전도 센서(380M) 등을 포함할 수 있다.
본 출원의 이 실시예에 도시된 구조는 전자 장치(300)에 대한 특정 제한을 구성하지 않는 것으로 이해될 수 있다. 본 출원의 일부 다른 실시예에서, 전자 장치(300)는 도면에 도시된 것보다 더 많거나 더 적은 구성요소를 포함할 수 있고, 또는 일부 구성요소가 결합되거나 일부 구성요소가 분할되거나 다른 구성요소 배열이 사용될 수 있다. 예시된 구성요소는 하드웨어 또는 소프트웨어와 하드웨어의 조합으로 구현될 수 있다. 예를 들어, 전자 장치(300)가 지능형 운전 컴퓨팅 플랫폼인 경우, 전자 장치(300)는 센서 모듈(380), 스피커(370A), 수신기(370B), 마이크(370C) 등의 구성요소를 포함하지 않을 수 있다. 대신, 데이터는 센서 모듈(380), 스피커(370A), 수신기(370B), 마이크(370C)로 유선 또는 무선으로 전송된다.
2. 페이지 테이블
페이지 테이블은 특수한 데이터 구조이고, 운영 체제 공간의 페이지 테이블 영역에 위치하며 가상 주소에서 물리 주소로의 매핑을 저장한다. 논리적 주소는 중앙 처리 장치(central processing unit, CPU)에 의해 생성된 주소를 의미한다. 구체적으로, CPU에 의해 생성되는 논리적 주소는 페이지 번호(p)와 페이지 오프셋(d)으로 나뉘어진다. 페이지 번호는 물리적 메모리에 있는 각 페이지의 기본 주소를 포함하며 페이지 테이블의 인덱스로 사용된다. 페이지 오프셋과 기본 주소는 장치의 물리적 메모리 주소를 결정하기 위해 결합된다. 물리적 주소는 메모리 유닛에서 볼 수 있는 주소를 나타낸다. 논리적 주소 공간이 2^m이고 페이지 크기가 2^n인 경우, 논리적 주소의 최상위 (m-n) 비트는 페이지 번호를 나타내고, 최하위 n 비트는 페이지 오프셋을 나타낸다. 이것은 페이지 번호에서 물리적 블록 번호로의 주소 매핑을 구현한다.
논리적 주소를 물리적 주소로 변환하는 과정은 다음과 같다. 페이지 테이블이 페이지 번호(p)를 이용하여 검색되고, 페이지의 물리적 블록 번호가 페이지 테이블로부터 얻어지고, 페이지의 물적리 블록 번호는 물리적 주소 레지스터에 로딩된다. 또한, 페이지 내 주소(d)는 물리적 주소 레지스터의 블록 내 주소 필드로 직접 전송된다. 이와 같이, 물리적 주소 레지스터의 콘텐츠는 물리적 주소와 논리적 주소를 연결하여 얻은 실제 액세스 메모리의 주소이며, 논리적 주소에서 물리적 주소로의 변환이 완료된다.
구체적으로, 논리적 주소 공간을 기술하기 위해 고정된 크기의 페이지가 사용되고, 물리적 메모리 공간을 기술하기 위해 동일한 크기의 페이지 프레임이 사용된다. 운영 체제는 논리적 페이지에서 물리적 페이지 프레임으로 페이지 매핑을 구현하고 모든 페이지를 관리하고 실행 중인 프로세스를 제어하는 역할을 한다.
3. 변환 룩어사이드 버퍼(translation lookaside buffer, TLB)
페이지 테이블 캐시. TLB의 각 행은 단일 페이지 테이블 엔트리(page table entry, PTE)을 포함하는 블록을 저장하며, 이러한 블록은 현재 액세스될 가능성이 가장 높은 페이지 테이블 엔트리이다. 페이지 번호가 TLB에 있으면, 메모리에 액세스하기 위한 프레임 번호가 얻어진다. 그렇지 않으면, 메모리 내의 페이지 테이블에서 프레임 번호가 얻어지며, 메모리에 액세스하기 위한 프레임 번호가 TLB에 저장된다.
4. 동적 무결성 측정 기술
메모리에서 프로세스 및 커널 모듈 무결성이 측정되어 메모리에서 실행되는 프로세스에 대한 악의적인 공격을 적시에 검출한다. 작동 원리는 운영 체제가 실행 중일 때 메모리의 불변 부분을 주기적으로/선제적으로 측정하고, 메모리의 무결성을 나타내는 해시(hash) 값을 계산하고, 해시 값을 기준 값과 비교하여, 악의적인 공격이 측정 개체의 메모리 매핑을 변형시키는지 여부를 결정하는 것을 포함한다. 베이스라인 값이 프로세스가 처음으로 메모리에 로딩될 때 메모리 매핑을 기반으로 계산되거나, 또는 대응하는 베이스라인 값이 애플리케이션에 대응하는 ELF 파일을 기반으로 오프라인으로 설정될 수 있다.
전술한 내용은 도 1을 참조하여, 본 출원의 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법이 적용될 수 있는 시나리오를 설명하고, 도 3을 참조하면, 본 출원의 실시예에서 제공되는 TEE OS 및 REE OS가 실행될 수 있는 전자 장치를 상세히 설명한다. 이하에서는 본 출원의 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스는 방법을 첨부된 도면을 참조하여 상세히 설명한다.
또한, 본 출원의 실시예의 이해를 용이하게 하기 위해, 다음의 몇 가지 설명이 제공된다.
첫째, 본 출원에서, "지시(indicate)하는데 사용되는"은 "직접적으로 지시하는데 사용되는" 및 "간접적으로 지시하는데 사용되는"을 포함할 수 있다. 지시 정보가 A를 지시하는데 사용되는 것으로 설명되는 경우, 지시 정보는 A를 직접적으로 지시하는데 사용될 수도 있고 또는 A를 간접적으로 지시하는데 사용될 수도 있지만, 지시 정보가 반드시 A를 포함한다는 것을 나타내는 것은 아니다.
지시에 사용되는 정보는 지시될 정보라고 할 수 있다. 특정 구현 과정에서, 지시될 정보는 복수의 방식으로 지시될 수 있다. 예를 들어, 지시될 정보는 직접 지시될 수 있고, 예를 들어 지시될 정보 또는 지시될 정보의 인덱스가 지시된다. 또는, 지시될 정보는 다른 정보를 지시함으로써 간접적으로 지시될 수 있으며, 다른 정보와 지시될 정보 사이에는 연관 관계가 존재한다. 또는, 지시될 정보의 일부만이 지시될 수 있고, 지시될 정보의 다른 부분은 이미 알고 있거나 사전 동의된다. 예를 들어, 지시 오버헤드를 어느 정도 줄이기 위해, 다양한 정보의 미리 동의된(예를 들어, 프로토콜에 지정된) 배열 순서를 사용하여 특정 정보가 지시될 수도 있다.
둘째, 본 출원에서 "제1", "제2" 및 다양한 숫자(예컨대, "#1" 및 #2")는 설명의 편의를 위해 객체 간을 구별하기 위해 사용된 것일 뿐, 본 출원의 실시예의 범위를 제한하기 위한 것이 아니다. 예를 들어, 서로 다른 운영 체제를 구별한다.
셋째, 본 출원에서 "저장"은 하나 이상의 메모리에 저장되는 것을 의미할 수 있다. 하나 이상의 메모리는 별도로 배치될 수 있거나, 인코더, 디코더, 프로세서, 또는 통신 장치에 통합될 수 있다. 대안적으로, 하나 이상의 메모리의 일부는 별도로 배치될 수 있고, 하나 이상의 메모리의 일부는 인코더, 디코더, 프로세서, 또는 통신 장치에 통합된다. 메모리의 유형은 임의의 형태의 저장 매체일 수 있다. 이것은 본 출원에에서 제한되지 않는다.
도 4는 본 출원의 실시예에 따른 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법의 개략적인 흐름도이다. 실행 본체는 제1 운영 체제와 제2 운영 체제를 포함하고, 제1 운영 체제와 제2 운영 체제 간의 상호작용은 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법을 설명하는 데 사용된다.
본 출원에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법은 도 1에서 설명된 두 가지 운영 체제 시나리오에 적용될 수 있다. 제1 운영 체제와 제2 운영 체제는 두 가지 운영 체제 시나리오를 형성한다. 선택적으로, 제1 운영 체제와 제2 운영 체제는 동일한 아키텍처에 속한다. 예를 들어, 제1 운영 체제와 제2 운영 체제는 모두 x86 아키텍처에 속하거나 제1 운영 체제와 제2 운영 체제는 모두 ARM 아키텍처에 속한다.
제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법은 다음 단계의 전부 또는 일부를 포함한다.
S110: 제1 운영 체제를 초기화한다.
본 출원의 이 실시예에서, 제1 운영 체제를 초기화하는 것은, 제1 운영 체제가 하위 주소 공간의 페이지 테이블 메모리에 제1 운영 체제의 커널 페이지 테이블 및 사용자 페이지 테이블을 저장하는 것을 포함한다.
제1 운영 체제가 커널 페이지 테이블 및 사용자 페이지 테이블을 획득하는 방법은 본 출원의 이 실시예에서 제한되지 않는다는 것을 이해해야 한다. 현재 프로토콜의 사양을 참조한다. 제1 운영 체제는 커널 페이지 테이블 및 사용자 페이지 테이블을 생성하기 위한 모듈을 포함한다.
본 출원의 이 실시예에서 커널 페이지 테이블은 기본 커널 페이지의 전역 디렉토리에 저장된 메모리 세그먼트를 포함하고, 하드웨어에 의해 직접 사용되지 않는다. 커널 페이지 테이블의 콘텐츠는 모든 프로세스에 의해 공유된다. 커널 페이지 테이블은 커널에 의해 유지 관리되고 업데이트된다. 본 출원의 이 실시예에서 사용자 페이지 테이블은 각 프로세스의 페이지 테이블을 포함하고, 프로세스의 페이지 디렉토리에 배치된다.
커널 페이지 테이블 및 사용자 페이지 테이블의 특정 형태는 본 출원의 이 실시예에서 제한되지 않는다는 것을 더 이해해야 한다. 자세한 내용은 현재 프로토콜의 설명을 참조한다. 본 출원의 이 실시예는 주로 페이지 테이블의 메모리 구성을 저장하는 레지스터에 관한 것이다.
하위 주소 공간의 페이지 테이블 메모리에 제1 운영 체제의 커널 페이지 테이블 및 사용자 페이지 테이블을 저장한 후, 제1 운영 체제는 하위 주소 공간의 페이지 테이블 메모리를 제1 레지스터로 구성한다. 제1 레지스터는 제1 주소 공간에 대응한다. 제1 운영 체제는 제2 운영 체제의 상위 주소 공간을 기반으로 제2 주소 공간을 예약한다. 제1 주소 공간은 사용자 및 커널에 의해 사용되며, 제1 주소 공간은 제2 주소 공간과 다르며, 제2 주소 공간은 사용된 제1 주소 공간이 아닌 제1 운영 체제의 가상 주소 공간에서의 주소 공간이다.
가상 메모리 설계가 현재 운영 체제에서 사용된다는 것을 이해해야 한다. 리눅스 시스템이 예로 사용된다. 일반적으로, 32비트 리눅스 가상 메모리 주소 공간은 0 내지 3G 사용자 공간과 3G 내지 4G 커널 공간으로 나뉘어진다. 0 내지 3G는 하위 주소 공간으로 이해되고 3G 내지 4G는 상위 주소 공간으로 이해된다. 상위 주소 공간은 리눅스 시스템 커널에서 사용되며 애플리케이션에 의해 액세스될 수 없다. 하위 주소 공간은 사용자 프로그램에 의해 액세스된다.
제1 운영 체제와 현재 운영 체제 간의 차이점은 본 출원의 이 실시예에서 제1 운영 체제의 커널 공간과 사용자 공간 모두가 제1 주소 공간을 사용한다는 것이다. 제1 주소 공간은 제1 운영 체제의 가상 메모리 주소 공간에서 하위 주소 공간으로 이해되고, 제1 레지스터는 하위 주소 공간에 대응하는 레지스터로 이해될 수 있다. 제2 주소 공간은 제1 운영 체제에서 예약하고 제1 운영 체제의 커널에 의해서는 사용되지 않는다. 제2 주소 공간은 상위 주소 공간으로 이해된다. 구체적으로, 제1 운영 체제의 초기화 과정에서, 제1 운영 체제의 상위 주소 공간은 제2 운영 체제의 가상 주소 공간의 상위 주소 공간을 기반으로 예약된다. 예를 들어, 제2 운영 체제가 32비트 리눅스 시스템인 경우, 제2 운영 체제의 가상 주소 공간은 0 내지 3G 사용자 공간과 3G 내지 4G 커널 공간으로 나뉜다. 이 경우, 제1 운영 체제는 제1 운영 체제의 3G 내지 4G 상위 주소 공간을 예약할 수 있다.
제1 운영 체제가 제1 운영 체제의 상위 주소 공간에 대응하는 제2 레지스터를 구성하기 위해 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성을 재사용할 수 있게 하기 위해, 제1 운영 체제의 주소 공간 분할은 제2 운영 체제의 주소 공간 분할과 일치해야 한다. 예를 들어, 제1 운영 체제와 제2 운영 체제의 가상 주소 공간 구분은 0 내지 3G가 하위 주소 공간이고 3G 내지 4G가 상위 주소 공간이다. 제1 운영 체제와 제2 운영 체제의 가상 주소 공간 분할에 있어서 0 내지 3G가 하위 주소 공간이고 3 내지 4G가 상위 주소 공간이라는 것은 하나의 예시일 뿐, 본 출원의 보호 범주에 대해 어떠한 제한도 구성하지 않는다. 시스템의 하위 주소 공간과 상위 주소 공간의 다른 가능한 분할에 대해서는 기존 분할 방식을 참조한다. 본 출원에서는 세부 사항이 설명되어 있지 않는다.
또한, 보안 성능을 향상시키기 위해, 제1 운영 체제의 커널 공간과 사용자 공간이 모두 하위 주소 공간을 사용할 때, 그리고 제1 운영 체제가 커널 페이지 테이블을 구성할 때, 사용자 액세스불가능한 권한 제어가 커널 페이지 테이블 엔트리에 추가된다. 제1 운영 체제가 사용자 페이지 테이블을 구성할 때, PXN(privileged execute Never) 보호가 사용자 페이지 테이블 엔트리에 추가된다. PXN 보호는 커널이 사용자 코드를 실행하는 것을 방지하는 것이다.
본 출원의 이 실시예에서, 제1 운영 체제가 제2 운영 체제의 커널 공간에 있는 리소스에 액세스할 수 있게 하기 위해, 제1 운영 체제는 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 얻을 수 있다.
가능한 구현에서, 제1 운영 체제는 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 능동적으로 획득한다. 예를 들어, 획득 모듈은 제1 운영 체제에 배치되고, 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하도록 구성된다.
다른 가능한 구현에서, 제1 운영 체제는 제2 운영 체제로부터 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 수신한다. 예를 들어, 수신 모듈은 제1 운영 체제에 배치되고, 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 수신하도록 구성된다.
또한, 제1 운영 체제는 제2 운영 체제의 커널 심볼 테이블 정보를 더 획득하고, 커널 심볼 테이블 정보를 파싱하고, 제2 운영 체제의 상위 주소 공간의 변환 관계를 획득하고, 사용자 프로세스의 사용자 페이지 테이블 기본 주소 정보를 획득하며, 변환 관계를 사용하여 레벨별로 사용자 페이지 테이블 엔트리 콘텐츠를 판독하고, 제2 운영 체제의 사용자 공간에 있는 리소스에 액세스할 수 있다. 커널 심볼 테이블 정보는 사용자 프로세스 커널 스택에 대한 정보 및 구조 오프셋(프로세스의 주소 공간 디스크립터(예컨대, 코드 세그먼트, 데이터 세그먼트, 스택 또는 파일 시스템 정보) 또는 프로세스 디스크립터)를 포함한다. 커널 스택 정보와 구조 오프셋을 기반으로 코드 세그먼트 또는 데이터 세그먼트가 사용되는 주소 범위가 얻어진다.
선택적으로, 제1 운영 체제가 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보 및/또는 제2 운영 체제의 커널 심볼 테이블 정보를 획득할 수 있게 하기 위해, 커널 드라이버 모듈이 제2 운영 체제에 배치되고, 커널 드라이버 모듈은 제2 운영 체제의 커널 심볼 테이블 정보 및 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하도록 구성된다.
가능한 구현에서, 제2 운영 체제의 커널 심볼 테이블 정보 및 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득한 후, 커널 드라이버 모듈은 정보를 제2 운영 체제의 로컬 저장 모듈에 저장하여, 제1 운영 체제가 그 정보를 능동적으로 얻을 수 있도록 한다.
다른 가능한 구현에서, 제2 운영 체제의 커널 심볼 테이블 정보 및 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득한 후, 커널 드라이버 모듈은 제2 운영 체제의 획득된 커널 심볼 테이블 정보 및 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 제1 운영 체제에 통지하기 위해 활성 요청을 개시할 수 있고, 도 4에 도시된 방법 절차는 다음을 더 포함할 수 있다.
S120: 제2 운영 체제가 제1 운영 체제에 요청 메시지를 전송한다.
요청 메시지는 제2 운영 체제의 커널 심볼 테이블 정보 및/또는 커널 페이지 테이블의 레지스터 구성 정보를 전달하고, 요청 메시지는 제1 운영 체제의 레지스터 구성을 수정할 것을 제1 운영 체제에 요청하는 데 사용된다.
구체적으로, 요청 메시지는 제2 운영 체제의 커널 심볼 테이블 정보 및/또는 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 포함하기 때문에, 제1 운영 체제가 요청 메시지를 수신한 후, 제1 운영 체제는 제2 운영 체제의 커널 페이지 테이블의 수시된 레지스터 구성 정보에 기초하여 제1 운영 체제의 레지스터 구성을 구성하여, 제1 운영 체제의 상위 주소 공간에 대응하는 레지스터 구성이 제2 운영 체제의 상위 주소 공간에 대응하는 레지스터 구성과 동일하도록 한다. 제1 운영 체제의 상위 주소 공간에 대응하는 레지스터 구성은 제2 운영 체제의 상위 주소 공간에 대응하는 레지스터 구성을 재사용하는 것으로 이해될 수 있다. 즉, 도 4에 도시된 방법 절차는, S130: 제1 운영 체제는 레지스터를 구성한다는 것을 더 포함한다.
가능한 구현에서, 요청 메시지가 수신되기 전에, 클라이언트 애플리케이션(client application, CA)이 제1 운영 체제에 배치되고, CA는 제2 운영 체제의 커널 페이지 테이블의 수신된 레지스터 구성 정보에 기초하여, 제1 운영 체제의 상위 주소 공간에 대응하는 레지스터 구성을 구성한다.
다른 가능한 구현에서, 요청 메시지가 수신된 후, CA는 제1 운영 체제에 배치되고, CA는 제2 운영 체제의 커널 페이지 테이블의 수신된 레지스터 구성 정보에 기초하여, 제1 운영 체제의 상위 주소 공간에 대응하는 레지스터 구성을 구성한다.
또 다른 가능한 구현에서, 요청 메시지가 수신되면, CA는 제1 운영 체제에 배치되고, CA는 제2 운영 체제의 커널 페이지 테이블의 수신된 레지스터 구성 정보에 기초하여, 제1 운영 체제의 상위 주소 공간에 대응하는 레지스터 구성을 구성한다.
제1 운영 체제가 CA를 배치하는 시간은 본 출원의 이 실시예에서 제한되지 않는다는 것을 이해해야 한다.
제2 운영 체제의 커널 페이지 테이블의 레지스터 구성은 주소 변환 제어기, 메모리 속성 제어기, 및 상위 공간 페이지 테이블 기본 주소 레지스터와 같은 구성을 포함한다. 제1 운영 체제가 제1 운영 체제의 상위 주소 공간에 대응하는 레지스터 구성을 완료한 후, 제1 운영 체제와 제2 운영 체제는 동일한 상위 공간 페이지 테이블 기본 주소 레지스터 구성을 갖는다.
선택에 따라, 제1 운영 체제는 요청 메시지를 수신한 후 제2 운영 체제의 커널 심볼 테이블 정보를 획득하고, 제1 운영 체제는 제2 운영 체제의 커널 심볼 테이블 정보를 저장할 수 있다.
구체적으로, 제1 운영 체제가 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보에 기초하여, 제1 운영 체제의 상위 주소 공간에 대응하는 제2 레지스터를 구성할 때, 그리고 제1 운영 체제가 상위 주소 공간을 활성화한 이후, 제1 운영 체제는 제2 운영 체제의 커널 공간의 리소스에 직접 액세스할 수 있는 권한을 가지며 제2 운영 체제와 동일한 상위 주소 공간에 액세스할 수 있다.
커널 심볼 테이블 정보를 수신한 후, 제1 운영 체제는 제2 운영 체제의 상위 주소 공간의 변환 관계를 획득하고, 사용자 프로세스의 사용자 페이지 테이블 기본 주소 정보를 획득하고, 변환 관계를 사용하여 레벨별로 사용자 페이지 테이블 엔트리 콘텐츠를 판독하며, 제2 운영 체제의 사용자 공간에 있는 리소스에 액세스할 수 있다.
직관적인 이해를 돕기 위해, 도 5를 참조하여 S110 내지 S130에 도시된 절차를 상세히 설명한다. 도 5는 본 출원의 실시예에 따라 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 개략적인 블록도이다.
선택적으로, 제1 운영 체제가 64비트 ARM 운영 체제이고 제2 운영 체제가 리눅스 OS인 예가 제1 운영 체제가 제2 운영 체제의 레지스터 구성을 재사용하는 방법을 추가로 설명하는 데 사용된. 리눅스 OS는 일반적으로 사용자 공간에 대해 64비트 주소 공간에서 0x0000-0000-0000-0000 내지 0x0000-7fff-ffff-f000의 128개의 T 주소를 사용하며, 0xffff-8000 내지 0000-0000은 시스템 커널 공간 주소이다.
제1 운영 체제가 초기화될 때, 커널 페이지 테이블과 사용자 페이지 테이블은 동일한 연속 메모리에 저장되고, 메모리 기본 주소는 TTBR0_EL1(하위 공간 페이지 테이블 기본 주소 레지스터)로 구성된다. 커널 공간과 사용자 공간 모두는 하위 주소 공간을 사용한다. 특히, 커널 페이지 테이블을 구성할 때, 제1 운영 체제는 사용자 모드 액세스 불가능 권한 제어를 추가하고, 사용자 페이지 테이블을 구성하며 PXN 보호를 추가한다. 또한, 제1 운영 체제의 상위 주소 공간의 범위가 제2 운영 체제의 커널 주소 공간의 범위와 일치하는지 확인해야 한다(예컨대, 제1 운영 체제의 64비트 주소 공간에서 0xffff-8000 ~ 0000 -0000은 상위 주소 공간이어야 한다).
또한, 커널 드라이버 모듈은 리눅스 OS에 배치되어, 리눅스 OS의 커널 심볼 테이블 정보 및 일부 주요 시스템 레지스터 구성(커널 페이지 테이블에 관련된 레지스터 구성 정보, 예를 들어 TCR_EL1(주소 변환 제어기 구성), TTBR1_EL1(하위 공간 페이지 테이블 기본 주소 레지스터), 또는 MAIR_EL1(메모리 속성 레지스터)과 같은 레지스터 구성)을 획득하고, 획득한 커널 심볼 테이블 정보 및 일부 주요 시스템 레지스터 구성을 제1 운영 체제로 전송하여, 제1 운영 체제가 제2 운영 체제의 상위 주소 공간 구성을 재사용하도록 한다. 따라서, 제1 운영 체제는 제2 운영 체제의 상위 주소 공간 범위 데이터에 액세스할 수 있다.
x86 운영 체제는 유사한 아키텍처를 가지고 있다. x86 운영 체제의 레지스터 구성은 로컬 운영 체제(제1 운영 체제)의 상위 주소 공간의 범위가 피어 운영 체제(제2 운영 체제)의 커널 주소 공간의 범위와 일치하는 것을 보장할 필요가 있다. x86 운영 체제의 레지스터와 ARM 운영 체제의 레지스터는 이름이 다를 수 있지만 원리는 같다. 본 출원에서는 세부 사항이 설명되어 있지 않는다.
또한, 제1 운영 체제는 소프트웨어(소프트웨어 관계: Table_Entry[(VA >> (39 - 레벨 x 9)) & 0x1FF], 여기서 레벨은 페이지 테이블 레벨임)를 사용하여 제2 운영 체제의 사용자 페이지 테이블 리소스에 액세스할 수 있다. 즉, 도 4에 도시된 방법 절차는, S140: 제1 운영 체제는 제2 운영 체제의 사용자 페이지 테이블 리소스에 액세스한다는 것을 더 포함한다.
구체적으로, 제1 운영 체제는 순회 방식으로 제2 운영 체제의 사용자 페이지 테이블 리소스에 액세스합니다. 이하에서는 특정 예를 사용하여 제1 운영 체제가 제2 운영 체제의 사용자 페이지 테이블 리소스에 액세스하는 특정 절차를 설명한다. 도 6은 본 출원의 이 실시예에 따른 사용자 페이지 테이블 액세스의 개략적인 흐름도이다. 제2 운영 체제는 4-레벨 페이징 메커니즘이라고 가정한다. PGD는 여러 PUD의 주소를 포함하고, PUD는 여러 PMD의 주소를 포함하고, PMD는 여러 PTE의 주소를 포함하며 각 PTE는 하나의 페이지 프레임을 가리킨다. 제1 운영 체제는 VA에 대응하는 물리적 페이지 프레임 콘텐츠에 액세스해야 한다. 구체적인 액세스 절차는 다음과 같다.
첫째, 제1 운영 체제는 기존의 상위 주소 변환 관계를 활용하여(위에서 표시된 바와 같이 제2 운영 체제의 페이지 테이블 리소스를 복사할 필요가 없음) 제2 운영 체제에서 사용자 프로세스 PGD에 대응하는 VA를 획득하고, PGD[(VA >> (39 - 3 x 9)) & 0x1FF]를 사용하여 VA로의 오프셋을 기반으로 레벨-1 페이지 테이블 엔트리의 엔트리 콘텐츠를 판독하며, VA를 포함하고 엔트리 콘텐츠에 대응하는 레벨-2 페이지 테이블 엔트리(PUD 엔트리의 물리적 주소)를 결정한다. 둘째, 레벨-2 페이지 테이블 엔트리가 유효한 엔트리인지가 판단된다. 레벨-2 페이지 테이블 엔트리가 유효한 엔트리이면, PUD[(VA >> (39 - 2 x 9)) & 0x1FF]가 사용되어 레벨-2 페이지 테이블 엔트리의 물리적 주소를 획득하고, 프로세스 코드 세그먼트에 대응하는 실제 페이지 프레임이 최종적으로 레벨별로 얻어질 수 있다. 마지막으로, 제2 운영 체제의 상위 주소 선형 관계를 이용하여 PTE 페이지 프레임에 대해 가상 현실 변환을 수행하여, 제1 운영 체제가 제2 운영 체제의 가상 주소의 콘텐츠에 액세스할 수 있도록 한다. 네 가지 간단한 선형 변환 단계만 수행하면 제2 운영 체제의 특정 물리적 페이지 프레임에서 리소스를 빠르게 얻을 수 있다. 즉, 제1 운영 체제는 소프트웨어 기반의 신속 인덱스를 이용하여 사용자 페이지 테이블 리소스에 빠르게 액세스할 수 있다.
제1 운영 체제는 주소 버스를 통해, 이 주소 버스에 연결된 물리적 메모리, I/O 장치 등을 포함하는 모든 주변 장치에 액세스할 수 있다. 그러나, 제1 운영 체제로부터 전송된 액세스 주소는 주소 버스에 있는 이러한 주변 장치의 물리적 주소 중 하나가 아니라 가상 주소이다. MMU는 가상 주소를 물리적 주소로 변환하고 주소 버스에서 물리적 주소를 전송한다. 가상 주소와 MMU의 물리적 주소 간의 변환 관계가 생성되어야 한다. 가상 주소에서 물리적 주소로의 매핑이 생성되지 않거나 부적절하게 설계된 프로그램으로 인해 잘못된 주소에 액세스한 경우, MMU는 제1 운영 체제에게 페이지 오류 예외의 생성을 알린다.
본 출원의 이 실시예에서, 제1 운영 체제가 제2 운영 체제의 리소스에 액세스할 때 예외가 발생하는 경우, 제1 운영 체제는 예외 관련 정보를 제2 운영 체제에 전송한다. 구체적으로, 원격 프로시저 호출(remote procedure call, RPC) 서비스가 제1 운영 체제에 배포되고 RPC 서비스는 제2 운영 체제에 예외 관련 정보를 보낸다.
예를 들어, 제1 운영 체제가 제2 운영 체제의 사용자 프로세스에 액세스하고 소프트웨어가 사용자 페이지 프레임을 빠르게 인덱싱하면, 빈 엔트리가 액세스되고 제1 운영 체제는 제2 운영 체제의 애플리케이션 콘텐츠를 정상적으로 읽을 수 없다. 이 경우, 제1 운영 체제는 페이지 결함 처리 메커니즘을 추가로 설계해야 한다. 도 7은 본 출원의 이 실시예에 따른 페이지 결함 예외 처리의 개략적인 흐름도이다.
RPC 서비스는 제1 운영 체제에 배치되고, 제1 운영 체제의 CA 프로그램은 RPC 서비스를 사용하여 페이지 결함 RPC 요청을 투명하게 다시 제2 운영 체제로 전송하고, 페이지 결함 프로세스 번호, 및 페이지 결함에 대응하는 가상 주소를 능동적으로 전달한다. 제1 운영 체제로부터 RPC 요청을 수신한 후, 제2 운영 체제는 제2 운영 체제의 페이지 결함 처리 프로그램을 이용하여 관련 메모리 페이지를 설정하고 메모리에서 메모리 페이지를 잠그고, 제1 운영 체제의 RPC 요청에 응답한다. 제1 운영 체제의 CA는 제2 운영 체제에 의해 반환된 결과를 기반으로 후속 대응 처리를 수행한다. 제2 운영 체제가 성공적으로 결과를 반환하면, 제2 운영 체제는 일반적으로 사용자 프로세스 리소스에 액세스할 수 있고, 그렇지 않으면 액세스가 거부된다.
다른 예에서, 제1 운영 체제가 주소에 액세스할 때 데이터 중단 예외(data abort exception)가 발생하면, 제1 운영 체제는 예외 처리 메커니즘을 설계할 필요가 있다. 도 8은 본 출원의 이 실시예에 따른 예외 처리의 개략적인 흐름도이다. 제1 운영 체제가 예외 처리를 수행할 때, 제1 운영 체제는 먼저 주소 소스를 분석해야 한다. 제1 운영 체제에서 주소 애게스 오류가 발생하면, 주소 액세스 오류는 제1 운영 체제의 예외 처리 프로그램에서 처리되고, 그렇지 않으면, 제1 운영 체제는 RPC 서비스를 사용하여, 주소 액세스 오류를 처리하기 위해 제2 운영 체제로 다시 라우팅하고 제2 운영 체제는 처리를 수행한다.
가능한 구현에서, 도 4에 도시된 방법은 도 1에 도시된 이기종 운영 체제에 적용될 수 있다. 구체적으로, 도 1에 도시된 이기종 운영 체제에 대응하는 소프트웨어 운영 체제는 도 9에 도시되어 있다. 도 9는 본 출원의 실시예에 따른 운영 체제 소프트웨어의 개략적인 블록도이다. 심볼로 시작되는 블록(block started by symbol,BBS) 세그먼트는 일반적으로 프로그램에서 초기화되지 않은 전역 변수를 저장하는 데 사용되는 메모리 영역이다. BSS 세그먼트는 정적 메모리 할당이다.
데이터 세그먼트(data segment)는 일반적으로 프로그램에서 초기화된 전역 변수를 저장하는 데 사용되는 메모리 영역이다. 데이터 세그먼트는 정적 메모리 할당이다.
코드 세그먼트(code segment/text segment)는 일반적으로 프로그램 실행 코드를 저장하는 데 사용되는 메모리 영역이다. 이 영역의 크기는 프로그램이 실행되기 전에 결정되며, 메모리 영역은 일반적으로 읽기 전용이다. 일부 아키텍처에서는 코드 세그먼트를 작성할 수도 있는데, 즉, 프로그램을 수정할 수 있다. 코드 세그먼트에는 스트링 상수와 같은 일부 읽기 전용 상수 변수가 포함될 수도 있다.
스택은 프로그램을 저장하기 위해 사용자가 임시로 생성한 지역 변수이다. 스택은 임시 데이터를 저장하고 교환하기 위한 메모리 영역으로 간주될 수 있다. 스택은 운영 체제에 의해 할당된다. 메모리 적용 및 회수는 시스템에 의해 관리된다.
BIN 파일은 기계 코드만을 포함하는 원시 바이너리(raw binary) 파일이다. ELF 파일에는 기계 코드 외에도, 로딩 주소, 실행 주소, 재배치 테이블, 세그먼트의 심볼 테이블과 같은 추가 정보가 포함되어 있다. 운영 체제 소프트웨어의 특정 부문은 본 출원에서 제한되지 않는다. 자세한 내용은 현재 두 운영 체제의 소프트웨어 부문을 참조한다.
운영 체제 소프트웨어는 보안 도메인과 비보안 도메인의 두 가지 도메인으로 나뉜다. 보안 도메인은 보안 격리 운영 체제에 대응하고 비보안 도메인은 주류 운영 체제에 대응한다. 동적 무결성 측정(dynamic integrity measurement, DIM) 모듈은 보안 격리 운영 체제에 배치될 수 있다. 본 출원의 이 실시예에서, 보안 격리 운영 체제는 로컬 운영 체제로 지칭될 수 있거나, 제1 운영 체제로 지칭될 수 있고, 주류 운영 체제는 피어 운영 체제로 지칭될 수 있거나, 또는 제2 운영 체제로 지칭될 수 있다. 다시 말해서, 동적 무결성 측정 모듈은 제2 운영 체제에 대한 보안 보호를 제공하기 위해 본 출원의 제1 운영 체제에 배치될 수 있다. 본 출원에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법은 자율주행 분야에 적용될 수 있다. 예를 들어, 제2 운영 체제는 사용자와 상호 작용하고 소프트웨어 보안 서비스 액세스는 제1 운영 체제에 배포된다.
전술한 프로세스의 시퀀스 번호는 전술한 방법 실시예에서의 실행 시퀀스를 의미하지 않는다는 것을 이해해야 한다. 프로세스의 실행 시퀀스는 프로세스의 기능 및 내부 로직에 따라 결정되어야 하며, 본 출원의 실시예의 구현 프로세스에 대한 제한으로 해석되어서는 안된다.
이상은 도 4 내지 도 9를 참조하여, 본 출원의 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법을 자세히 설명하였다. 이하에서는, 도 10 내지 도 13를 참조하여, 본 출원의 실시예에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 장치를 자세히 설명한다.
도 10은 본 출원에 따른 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치(10)의 개략도이다. 도 10에 도시된 바와 같이, 장치(10)는 처리 유닛(110) 및 수신 유닛(120)을 포함한다.
처리 유닛(110)은 제1 운영 체제의 제1 주소 공간에서 제1 운영 체제의 커널 공간 및 사용자 공간을 구성하고, 제2 운영 체제를 위한 제2 주소 공간을 예약하도록 구성된다. 제1 운영 체제의 가상 메모리 주소 공간은 제1 주소 공간과 제2 주소 공간을 포함한다.
수신 유닛(120)은 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하도록 구성된다.
처리 유닛(110)은 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보에 기초하여 제1 운영 체제의 제2 레지스터를 구성하도록 더 구성된다. 제2 레지스터는 제1 운영 체제의 제2 주소 공간에 대응한다.
처리 유닛(110)은 제2 주소 공간을 사용하여 제2 운영 체제의 커널 공간에 있는 리소스에 액세스하도록 추가로 구성된다.
장치(10)는 방법 실시예의 제1 운영 체제에 완전히 대응하고, 장치(10)는 방법 실시예의 제1 운영 체제, 또는 방법 실시예의 제1 운영 체제 내부의 칩 또는 기능 모듈일 수 있다. 장치(10)의 대응하는 유닛은 도 4에 도시된 방법 실시예에서 제1 운영 체제에 의해 수행되는 대응하는 단계를 수행하도록 구성된다.
장치(10)의 처리 유닛(110)은 방법 실시예에서 제1 운영 체제에 의해 내부적으로 구현되거나 처리되는 단계를 수행하는데, 예를 들어, 도 4의 초기화 단계(S110)를 수행하고, 도 4의 레지스터를 구성하는 단계(S130)를 더 수행하도록 구성된다.
수신 유닛(120)은 방법 실시예에서 제1 운영 체제에 의해 수신하는 단계를 수행하며, 예를 들어, 도 4의 제2 운영 체제로부터 요청 메시지를 수신하는 단계(S120)를 수행한다.
장치(10)는 제1 운영 체제에 의한 전송 단계를 수행하도록, 예를 들어 정보를 다른 장치에 전송하도록 구성된 전송 유닛을 더 포함할 수 있다. 전송 유닛 및 수신 유닛(120)은 트랜시버 유닛을 구성할 수 있으며, 수신 및 전송 기능을 모두 가질 수 있다. 처리 유닛(110)은 프로세서일 수 있다. 전송 유닛은 송신기일 수 있고, 수신 유닛(120)은 수신기일 수 있다. 수신기와 송신기는 통합되어 트랜시버를 형성할 수 있다.
도 11은 본 출원의 일 실시예에 적용될 수 있는 제1 운영 체제의 구조의 개략도이다. 제1 운영 체제는 도 1에 도시된 두 가지 운영 체제에 적용될 수 있다. 설명의 편의를 위해, 도 11은 제1 운영 체제의 주요 구성요소만을 나타낸다. 도 11에 도시된 바와 같이, 제1 운영 체제는 프로세서(1110)(도 10에 도시된 처리 유닛(110)에 대응함), 메모리(1120), 및 트랜시버(1130)(도 10에 도시된 수신 유닛(120)에 대응함)를 포함한다. 프로세서는 정보를 송수신하도록 트랜시버를 제어하도록 구성되고, 메모리는 컴퓨터 프로그램을 저장하도록 구성되며, 프로세서는 메모리에서 컴퓨터 프로그램을 호출 및 실행하여, 본 출원에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에서 제1 운영 체제에 의해 수행되는 해당 절차 및/또는 동작을 수행하도록 구성된다. 세부 사항은 여기에서 다시 설명되지 않는다.
설명의 편의를 위해, 도 11은 단 하나의 메모리와 단 하나의 프로세서를 도시하고 있다는 것을 당업자라면 이해할 수 있다. 실제 제1 운영 체제에는 복수의 프로세서와 메모리가 있을 수 있다. 메모리는 또한 저장 매체, 저장 장치 등으로 지칭될 수 있다. 이것은 본 출원의 이 실시예에서 제한되지 않는다.
도 12는 본 출원에 따른 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치(20)의 개략도이다. 도 12에 도시된 바와 같이, 장치(20)는 처리 유닛(210) 및 전송 유닛(220)을 포함한다.
처리 유닛(210)은 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하도록 구성된다.
전송 유닛(220)은 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 제1 운영 체제로 전송하도록 구성된다.
장치(20)는 방법 실시예의 제2 운영 체제에 완전히 대응하고, 장치(20)는 방법 실시예의 제2 운영 체제, 또는 방법 실시예의 제2 운영 체제 내부의 칩 또는 기능 모듈일 수 있다. 장치(20)의 대응하는 유닛은 도 4에 도시된 방법 실시예에서 제2 운영 체제에 의해 수행되는 대응하는 단계를 수행하도록 구성된다.
장치(20)의 전송 유닛(220)은 방법 실시예에서 제2 운영 체제에 의해 전송하는 단계를 수행하며, 예를 들어 도 4에서 제1 운영 체제에 요청 메시지를 전송하는 단계(S120)를 수행한다.
장치(20)의 처리 유닛(210)은 방법 실시예에서 제2 운영 체제에 의해 내부적으로 구현되거나 처리되는 단계를 수행한다.
장치(20)는 제2 운영 체제에 의해 수신하는 단계를 수행하는데, 예를 들어 다른 장치에 의해 전송된 정보를 수신하도록 구성된 수신 유닛을 더 포함할 수 있다. 수신 유닛 및 전송 유닛(210)은 트랜시버를 구성할 수 있으며, 수신 및 송신 기능을 모두 가질 수 있다. 처리 유닛(110)은 프로세서일 수 있다. 전송 유닛(210)은 송신기일 수 있다. 수신 유닛은 수신기일 수 있다. 수신기와 송신기는 통합되어 트랜시버를 형성할 수 있다.
도 13은 본 출원의 일 실시예에 적용 가능한 제2 운영 체제의 구조의 개략도이다. 제2 운영 체제는 도 1에 도시된 두 가지 운영 체제에 적용될 수 있다. 설명의 편의를 위해, 도 13은 제2 운영 체제의 주요 구성요소만을 도시한다. 도 13에 도시된 바와 같이, 제1 운영 체제는 프로세서(1310)(도 12에 도시된 처리 유닛(210)에 대응함), 메모리(1320), 및 트랜시버(1330)(도 12에 도시된 전송 유닛(220)에 대응함)를 포함한다. 프로세서는 정보를 송수신하도록 트랜시버를 제어하도록 구성되고, 메모리는 컴퓨터 프로그램을 저장하도록 구성되며, 프로세서는 메모리에서 컴퓨터 프로그램을 호출 및 실행하여, 본 출원에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에서 제1 운영 체제에 의해 수행되는 해당 절차 및/또는 동작을 수행하도록 구성된다. 세부 사항은 여기에서 다시 설명되지 않는다.
본 출원의 실시예는 제1 운영 체제 및 제2 운영 체제를 포함하는 전자 장치를 더 제공한다. 전자 장치는 도 3에 도시된 다른 주변 장치를 더 포함할 수 있다. 제1 운영 체제 및 제2 운영 체제는 모두 프로세서(310)에 배치될 수 있다.
본 출원은 컴퓨터 판독가능 저장 매체를 추가로 제공한다. 컴퓨터 판독가능 저장매체는 명령어를 저장한다. 명령어가 컴퓨터에서 실행될 때, 컴퓨터는 도 4에 도시된 방법에서 제1 운영 체제에 의해 수행되는 단계를 수행할 수 있다.
본 출원은 컴퓨터 판독가능 저장 매체를 추가로 제공한다. 컴퓨터 판독가능 저장매체는 명령어를 저장한다. 명령어가 컴퓨터에서 실행될 때, 컴퓨터는 도 4에 도시된 방법에서 제2 운영 체제에 의해 수행되는 단계를 수행할 수 있다.
본 출원은 명령어를 포함하는 컴퓨터 프로그램 제품을 추가로 제공한다. 컴퓨터 프로그램 제품이 컴퓨터에서 실행될 때, 컴퓨터는 도 4에 도시된 방법에서 제1 운영 체제에 의해 수행되는 단계를 수행할 수 있다.
본 출원은 명령어를 포함하는 컴퓨터 프로그램 제품을 추가로 제공한다. 컴퓨터 프로그램 제품이 컴퓨터에서 실행될 때, 컴퓨터는 도 4에 도시된 방법에서 제2 운영 체제에 의해 수행되는 단계를 수행할 수 있다.
본 출원은 프로세서를 포함하는 칩을 더 제공한다. 프로세서는 메모리에 저장된 컴퓨터 프로그램을 읽고 실행하여, 본 출원에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에서 제1 운영 체제에 의해 수행되는 해당 동작 및/또는 절차를 수행하도록 구성된다. 선택적으로, 칩은 메모리를 더 포함하고, 메모리는 회로 또는 배선을 통해 프로세서에 연결되고, 프로세서는 메모리에서 컴퓨터 프로그램을 읽고 실행하도록 구성된다. 또한, 선택적으로, 칩은 통신 인터페이스를 더 포함하고 프로세서는 통신 인터페이스에 연결된다. 통신 인터페이스는 처리될 필요가 있는 데이터 및/또는 정보를 수신하도록 구성되고, 프로세서는 통신 인터페이스로부터 데이터 및/또는 정보를 획득하고, 이 데이터 및/또는 정보를 처리한다. 통신 인터페이스는 칩 상의 입/출력 인터페이스, 인터페이스 회로, 출력 회로, 입력 회로, 핀, 관련 회로 등일 수 있다. 프로세서는 대안적으로 처리 회로 또는 로직 회로일 수 있다.
본 출원은 프로세서를 포함하는 칩을 더 제공한다. 프로세서는 메모리에 저장된 컴퓨터 프로그램을 읽고 실행하여, 본 출원에서 제공되는 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법에서 제2 운영 체제에 의해 수행되는 해당 동작 및/또는 절차를 수행하도록 구성된다. 선택적으로, 칩은 메모리를 더 포함하고, 메모리는 회로 또는 배선을 통해 프로세서에 연결되고, 프로세서는 메모리에서 컴퓨터 프로그램을 읽고 실행하도록 구성된다. 또한, 선택적으로, 칩은 통신 인터페이스를 더 포함하고 프로세서는 통신 인터페이스에 연결된다. 통신 인터페이스는 처리될 필요가 있는 데이터 및/또는 정보를 수신하도록 구성되고, 프로세서는 통신 인터페이스로부터 데이터 및/또는 정보를 획득하고, 이 데이터 및/또는 정보를 처리한다. 통신 인터페이스는 칩 상의 입/출력 인터페이스, 인터페이스 회로, 출력 회로, 입력 회로, 핀, 관련 회로 등일 수 있다. 프로세서는 대안적으로 처리 회로 또는 로직 회로일 수 있다.
전술한 칩은 또한 칩 시스템으로 대체될 수 있으며 세부 사항은 여기에서 설명되지 않음을 이해해야 한다.
본 출원에서, 용어 "포함하다", "갖다" 및 임의의 다른 변형은 비배타적 포함을 의미하는데, 예를 들어 일련의 단계 또는 유닛을 포함하는 프로세스, 방법, 시스템, 제품 또는 장치는 명확하게 나열된 단계 또는 유닛으로 반드시 제한되지는 않으며, 명시적으로 나열되지 않은 또는 이러한 프로세스, 방법, 시스템, 제품 또는 장치에 고유하지 않은 다른 단계 또는 유닛을 포함할 수 있다.
당업자라면, 본 명세서에 개시된 실시예에 설명된 예와 함께, 유닛 및 알고리즘 단계가 전자 하드웨어에 의해 또는 컴퓨터 소프트웨어와 전자 하드웨어의 조합에 의해 구현될 수 있음을 알 수 있다. 기능이 하드웨어에 의해 수행되는지 소프트웨어에 의해 수행되는지 여부는 기술 솔루션의 특정 애플리케이션 및 설계 제약 조건에 따라 다르다. 당업자는 각각의 특정 애플리케이션에 대해 설명된 기능을 구현하기 위해 상이한 방법을 사용할 수 있지만, 그러한 구현은 본 출원의 범위를 벗어나는 것으로 간주되어서는 안된다.
편리하고 간략한 설명을 위해, 전술한 시스템, 장치 및 유닛의 상세한 동작 과정에 대해서는 전술한 방법 실시예의 해당 프로세스를 참조한다는 것이 당업자에 의해 명확하게 이해될 수 있다. 세부 사항은 여기에서 다시 설명되지 않는다.
본 출원에 제공된 여러 실시예에서, 개시된 시스템, 장치 및 방법은 다른 방식으로 구현될 수 있음을 이해해야 한다. 예를 들어, 설명된 장치 실시예는 단지 예일 뿐이다. 예를 들어, 유닛들로의 분할은 단지 논리적 기능 분할이며 실제 구현에서는 다른 분할일 수 있다. 예를 들어, 복수의 유닛 또는 구성요소는 다른 시스템으로 결합 또는 통합될 수 있거나, 일부 기능이 무시되거나 수행되지 않을 수 있다. 또한, 표시되거나 논의된 상호 결합 또는 직접 결합 또는 통신 연결은 일부 인터페이스를 통해 구현될 수 있다. 장치 또는 유닛 간의 간접 결합 또는 통신 연결은 전자적, 기계적 또는 기타 형태로 구현될 수 있다.
별도의 부분으로 설명된 유닛은 물리적으로 분리되거나 분리되지 않을 수 있으며, 유닛으로 표시된 부분은 물리적 유닛일 수도 있고 아닐 수도 있으며, 한 위치에 있을 수도 있고, 복수의 네트워크 유닛에 분산될 수도 있다. 일부 또는 모든 유닛은 실시예에서 솔루션의 목적을 달성하기 위한 실제 요구사항에 따라 선택될 수 있다.
또한, 본 출원의 실시예에서 기능 유닛은 하나의 처리 유닛으로 통합될 수 있거나, 각각의 유닛이 물리적으로 단독으로 존재할 수 있거나, 또는 둘 이상의 유닛이 하나의 유닛으로 통합될 수 있다.
기능들이 소프트웨어 기능 유닛의 형태로 구현되어 독립된 제품으로 판매되거나 사용되는 경우, 그 기능들은 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 이러한 이해를 바탕으로, 본 출원의 기술적 솔루션, 또는 기존 기술에 기여하는 부분 또는 기술적 솔루션의 일부는 소프트웨어 제품의 형태로 구현될 수 있다. 컴퓨터 소프트웨어 제품은 저장 매체에 저장되며, 본 출원에 따른 방법의 모든 단계 또는 일부 단계를 수행하도록 컴퓨터 장치(개인용 컴퓨터, 서버 또는 네트워크 장치일 수 있음)에 지시하는 여러 명령어를 포함한다. 전술한 저장 매체에는 USB 플래시 드라이브, 이동식 하드 디스크, 읽기 전용 메모리(read-only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 자기 디스크 또는 광 디스크와 같은, 프로그램 코드를 저장할 수 있는 임의의 매체가 포함된다.
또한, 본 출원에서 "및/또는"이라는 용어는 연관된 객체 간의 연관 관계만을 설명하고 세 가지 관계가 존재할 수 있음을 나타낸다. 예를 들어, A 및/또는 B는 다음 세 가지 경우, 즉 A만 존재하는 경우, A와 B가 모두 존재하는 경우, B만 존재하는 경우를 나타낼 수 있다. 또한, 본 명세서에서 문자 "/"는 일반적으로 연관된 객체 간의 "또는" 관계를 나타낸다. 본 출원에서 "적어도 하나"라는 용어는 "하나" 및 "둘 이상"을 나타낼 수 있다. 예를 들어, A, B, C 중 적어도 하나는 다음 7가지 경우, 즉 A만 존재하는 경우, B만 존재하는 경우, C만 존재하는 경우, A와 B 모두 존재하는 경우, A와 C 모두 존재하는 경우, C와 B 모두 존재하는 경우, 및 A, B, C가 존재하는 경우를 나타낼 수 있다.
전술한 설명은 단지 본 출원의 특정 구현일 뿐이며, 본 출원의 보호 범위를 제한하려는 것은 아니다. 본 출원에 개시된 기술적 범위 내에서 당업자에 의해 용이하게 파악된 변형 또는 대체는 본 출원의 보호 범위에 속할 것이다. 따라서, 본 출원의 보호 범위는 청구범위의 보호 범위에 따른다.

Claims (31)

  1. 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법으로서,
    상기 제1 운영 체제의 제1 주소 공간에서 상기 제1 운영 체제의 커널 공간 및 사용자 공간을 구성하고, 상기 제2 운영 체제를 위해 상기 제1 운영 체제의 제2 주소 공간을 예약하는 단계- 상기 제1 운영 체제의 가상 메모리 주소 공간은 상기 제1 주소 공간 및 상기 제2 주소 공간을 포함함 -와,
    상기 제1 운영 체제에 의해, 상기 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 단계와,
    상기 제1 운영 체제에 의해, 상기 제2 운영 체제의 상기 커널 페이지 테이블의 상기 레지스터 구성 정보에 기초하여 상기 제1 운영 체제의 제2 레지스터를 구성하는 단계- 상기 제2 레지스터는 상기 제1 운영 체제의 상기 제2 주소 공간에 대응함 -와,
    상기 제1 운영 체제에 의해, 상기 제2 주소 공간을 사용하여 상기 제2 운영 체제의 커널 공간에 있는 리소스에 액세스하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 제1 주소 공간은 상위 주소 공간(high-order address space)이고, 상기 제2 주소 공간은 하위 주소 공간이며, 상기 제1 운영 체제의 상기 상위 주소 공간의 범위는 상기 제2 운영 체제의 커널 주소 공간의 범위와 일치하는
    방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제1 운영 체제에 의해, 상기 제2 운영 체제에 의해 전송된 커널 심볼 테이블 정보를 수신하는 단계와,
    상기 제1 운영 체제에 의해, 상기 커널 심볼 테이블 정보를 파싱하여 상기 제2 운영 체제의 상위 주소 공간의 변환 관계를 획득하고, 사용자 프로세스의 사용자 페이지 테이블 기본 주소 정보를 획득하고, 상기 변환 관계를 사용하여 사용자 페이지 테이블 엔트리 콘텐츠를 레벨별로 판독하며, 상기 제2 운영 체제의 사용자 공간에 있는 리소스에 액세스하는 단계를 더 포함하는
    방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 운영 체제의 제1 주소 공간에서 상기 제1 운영 체제의 커널 공간 및 사용자 공간을 구성하는 것은,
    상기 제1 운영 체제에 의해, 상기 제1 운영 체제의 커널 페이지 테이블 및 사용자 페이지 테이블을 상기 제1 주소 공간의 페이지 테이블 메모리에 저장하는 것과,
    상기 제1 운영 체제에 의해, 상기 제1 주소 공간의 상기 페이지 테이블 메모리를 상기 제1 운영 체제의 제1 레지스터로 구성하는 것을 포함하는
    방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제2 운영 체제를 위해 제2 주소 공간을 예약하는 것은, 상기 제1 운영 체제에 의해, 상기 제2 운영 체제의 상위 주소 공간에 기초하여 상기 제2 주소 공간을 예약하는 것을 포함하는
    방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제1 운영 체제에 의해, 상기 제2 운영 체제에 의해 전송된 요청 메시지를 수신하는 단계를 더 포함하고, 상기 요청 메시지는 상기 제2 운영 체제의 커널 심볼 테이블 정보 및 상기 커널 페이지 테이블의 상기 레지스터 구성 정보를 전달하는
    방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    클라이언트 애플리케이션(CA)이 상기 제1 운영 체제에 배치되고,
    상기 제1 동작에 의해, 상기 제2 운영 체제를 위해 제2 주소 공간을 예약하는 것은,
    CA 초기화 프로세스에서, 상기 제2 운영 체제의 상기 커널 페이지 테이블의 상기 레지스터 구성 정보에 기초하여 상기 제1 운영 체제의 레지스터의 구성을 수정하는 것을 포함하는
    방법.
  8. 제4항에 있어서,
    상기 제1 운영 체제에 의해, 상기 제1 운영 체제의 커널 페이지 테이블 및 사용자 페이지 테이블을 상기 제1 주소 공간의 페이지 테이블 메모리에 저장하는 것 이전에, 상기 방법은,
    상기 제1 운영 체제에 의해, 사용자 액세스 불가능한 권한 제어를 상기 커널 페이지 테이블에 추가하는 단계와,
    상기 제1 운영 체제에 의해, 상기 사용자 페이지 테이블에 PXN(privileged execute never) 보호를 추가하는 단계를 더 포함하는
    방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 제2 운영 체제의 상기 커널 페이지 테이블의 상기 레지스터 구성 정보는,
    주소 변환 제어기의 구성 정보, 메모리 속성 제어기의 구성 정보, 커널 공간 페이지 테이블 기본 주소 레지스터의 구성 정보를 포함하는
    방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    동적 무결성 측정 모듈이 상기 제1 운영 체제에 배치되고, 상기 동적 무결성 측정 모듈은 상기 제2 운영 체제를 위한 보안 서비스를 제공하도록 구성되는
    방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 제1 운영 체제가 상기 제2 운영 체제의 상기 커널 공간에 있는 리소스에 액세스하는 동안 예외가 발생하는 경우, 상기 제1 운영 체제에 의해, 예외 관련 정보를 상기 제2 운영 체제에 전송하는 단계를 더 포함하는
    방법.
  12. 제11항에 있어서,
    원격 프로시저 호출(RPC) 서비스가 상기 제1 운영 체제에 배치되고,
    상기 제1 운영 체제에 의해, 예외 관련 정보를 상기 제2 운영 체제로 전송하는 단계는,
    상기 RPC 서비스에 의해, 상기 예외 관련 정보를 상기 제2 운영 체제로 전송하는 단계를 포함하는
    방법.
  13. 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하는 방법으로서,
    상기 제2 운영 체제에 의해, 상기 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 단계와,
    상기 제2 운영 체제에 의해, 상기 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 상기 제1 운영 체제로 전송하는 단계를 포함하는
    방법.
  14. 제13항에 있어서,
    상기 제2 운영 체제에 의해, 상기 제2 운영 체제의 커널 심볼 테이블 정보를 획득하는 단계와,
    상기 제2 운영 체제에 의해, 상기 커널 심볼 테이블 정보를 상기 제1 운영 체제에 전송하는 단계를 더 포함하는
    방법.
  15. 제13항 또는 제14항에 있어서,
    커널 드라이버 모듈이 상기 제2 운영 체제에 배치되고,
    상기 제2 운영 체제에 의해, 커널 심볼 테이블 정보 및/또는 상기 제2 운영 체제의 상기 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 것은,
    상기 커널 드라이버 모듈에 의해, 상기 제2 운영 체제의 상기 커널 심볼 테이블 정보 및/또는 상기 커널 페이지 테이블의 상기 레지스터 구성 정보를 획득하는 것을 포함하는
    방법.
  16. 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치로서,
    상기 제1 운영 체제의 제1 주소 공간에서 상기 제1 운영 체제의 커널 공간 및 사용자 공간을 구성하고, 상기 제2 운영 체제를 위해 상기 제1 운영 체제의 제2 주소 공간을 예약하도록 구성된 처리 유닛- 상기 상기 제1 운영 체제의 가상 메모리 주소 공간은 제1 주소 공간 및 제2 주소 공간을 포함함 -과,
    상기 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하도록 구성된 수신 유닛을 포함하되,
    상기 처리 유닛은 상기 제2 운영 체제의 상기 커널 페이지 테이블의 레지스터 구성 정보에 기초하여 상기 제1 운영 체제의 제2 레지스터를 구성하도록 더 구성되며, 상기 제2 레지스터는 상기 제1 운영 체제의 상기 제2 주소 공간에 대응하고,
    상기 처리 유닛은 상기 제2 주소 공간을 사용하여 상기 제2 운영 체제의 커널 공간에 있는 자원에 액세스하도록 추가로 구성된
    장치.
  17. 제16항에 있어서,
    상기 수신 유닛은 상기 제2 운영 체제에 의해 전송된 커널 심볼 테이블 정보를 수신하도록 더 구성되고,
    상기 처리 유닛은 상기 제2 운영 체제의 상위 주소 공간의 변환 관계를 획득하기 위해 상기 커널 심볼 테이블 정보를 파싱하고, 사용자 프로세스의 사용자 페이지 테이블 기본 주소 정보를 획득하고, 상기 변환 관계를 사용하여 사용자 페이지 테이블 엔트리 콘텐츠를 레벨별로 판독하며, 상기 제2 운영 체제의 사용자 공간에 있는 리소스에 액세스하도록 더 구성되는
    장치.
  18. 제16항 또는 제17항에 있어서,
    상기 처리 유닛이 상기 제1 운영 체제의 제1 주소 공간에서 상기 제1 운영 체제의 커널 공간 및 사용자 공간을 구성하는 것은,
    상기 처리 유닛이 상기 제1 주소 공간의 페이지 테이블 메모리에 상기 제1 운영 체제의 커널 페이지 테이블 및 사용자 페이지 테이블을 저장하도록 구성되는 것을 포함하는
    장치.
  19. 제16항 내지 제18항 중 어느 한 항에 있어서,
    상기 처리 유닛이 상기 제2 운영 체제를 위한 제2 주소 공간을 예약하는 것은 상기 처리 유닛이 상기 제2 운영 체제의 상위 주소 공간에 기초하여 상기 제2 주소 공간을 예약하는 것을 포함하는
    장치.
  20. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 장치는, 상기 제2 운영 체제에 의해 전송된 요청 메시지를 수신하도록 구성된 상기 수신 유닛을 더 포함하되, 상기 요청 메시지는 상기 제2 운영 체제의 커널 심볼 테이블 정보 및 커널 페이지 테이블의 레지스터 구성 정보를 전달하는
    장치.
  21. 제16항 내지 제20항 중 어느 한 항에 있어서,
    클라이언트 애플리케이션(CA)이 상기 장치에 배치되고,
    상기 처리 장치가 상기 제2 운영 체제를 위해 제2 주소 공간을 예약하는 것은
    CA 초기화 프로세스에서, 상기 처리 유닛이 상기 제2 운영 체제의 상기 커널 페이지 테이블의 레지스터 구성 정보에 기초하여 상기 제1 운영 체제의 레지스터의 구성을 수정하는 것을 포함하는
    장치.
  22. 제21항에 있어서,
    상기 처리 유닛이 상기 제1 주소 공간의 페이지 테이블 메모리에 상기 제1 운영 체제의 커널 페이지 테이블 및 사용자 페이지 테이블을 저장하기 전에, 상기 처리 유닛은 사용자 액세스 불가능한 권한 제어를 상기 커널 페이지 테이블에 추가하고, PXN(privileged execute never) 보호를 상기 사용자 페이지 테이블에 추가하도록 더 구성된
    장치.
  23. 제16항 내지 제22항 중 어느 한 항에 있어서,
    동적 무결성 측정 모듈이 상기 장치에 배치되고, 상기 동적 무결성 측정 모듈은 상기 제2 운영 체제에 대한 보안 서비스를 제공하도록 구성되는
    장치.
  24. 제16항 내지 제23항 중 어느 한 항에 있어서,
    상기 처리 유닛이 상기 제2 운영 체제의 리소스에 액세스하는 동안 예외가 발생하는 경우, 상기 장치는 상기 제2 운영 체제에 예외 관련 정보를 전송하도록 구성된 전송 유닛을 더 포함하는
    장치.
  25. 제24항에 있어서,
    원격 프로시저 호출(RPC) 서비스가 상기 장치에 배치되고,
    상기 전송 유닛이 예외 관련 정보를 상기 제2 운영 체제에 전송하는 것은, 상기 RPC 서비스가 상기 예외 관련 정보를 상기 제2 운영 체제로 전송하는 것을 포함하는
    장치.
  26. 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 장치로서,
    상기 제2 운영 체제의 커널 페이지 테이블의 레지스터 구성 정보를 획득하도록 구성된 처리 유닛과,
    상기 제2 운영 체제의 상기 커널 페이지 테이블의 레지스터 구성 정보를 상기 제1 운영 체제로 전송하도록 구성된 전송 유닛을 포함하는
    장치.
  27. 제26항에 있어서,
    상기 처리 유닛은 상기 제2 운영 체제의 커널 심볼 테이블 정보를 획득하도록 더 구성되고,
    상기 전송 유닛은 상기 커널 심볼 테이블 정보를 상기 제1 운영 체제에 전송하도록 더 구성된
    장치.
  28. 제26항 또는 제27항에 있어서,
    커널 드라이버 모듈이 상기 장치에 배치되고,
    상기 처리 유닛이 상기 제2 운영 체제의 커널 심볼 테이블 정보 및/또는 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 것은,
    상기 커널 드라이버 모듈이 상기 제2 운영 체제의 상기 커널 심볼 테이블 정보 및/또는 상기 커널 페이지 테이블의 레지스터 구성 정보를 획득하는 것을 포함하는
    장치.
  29. 제16항 내지 제25항 중 어느 한 항에 따른 장치 및 제26항 내지 제28항 중 어느 한 항에 따른 장치를 포함하는 전자 장치.
  30. 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 판독가능 저장 매체는 컴퓨터 프로그램을 저장하고, 상기 컴퓨터 프로그램이 컴퓨터 상에서 실행되는 경우, 상기 컴퓨터는 제1항 내지 제15항 중 어느 한 항에 따른 방법을 수행할 수 있는
    컴퓨터 판독가능 저장 매체.
  31. 통신 인터페이스, 메모리, 및 프로세서를 포함하는 칩으로서,
    상기 메모리는 컴퓨터 프로그램을 저장하도록 구성되고, 상기 프로세서는 상기 메모리에 저장된 컴퓨터 프로그램을 읽고 실행하도록 구성되어, 상기 칩은 제1항 내지 제15항 중 어느 한 항에 따른 방법을 구현하는
    칩.
KR1020227020341A 2019-11-22 2020-07-15 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 방법 및 장치 KR20220093379A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201911156149.8A CN111124664B (zh) 2019-11-22 2019-11-22 第一操作系统访问第二操作系统资源的方法和装置
CN201911156149.8 2019-11-22
PCT/CN2020/102032 WO2021098244A1 (zh) 2019-11-22 2020-07-15 第一操作系统访问第二操作系统资源的方法和装置

Publications (1)

Publication Number Publication Date
KR20220093379A true KR20220093379A (ko) 2022-07-05

Family

ID=70498040

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227020341A KR20220093379A (ko) 2019-11-22 2020-07-15 제1 운영 체제가 제2 운영 체제의 리소스에 액세스하기 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US12007906B2 (ko)
EP (1) EP4053700A4 (ko)
JP (1) JP7443519B2 (ko)
KR (1) KR20220093379A (ko)
CN (1) CN111124664B (ko)
WO (1) WO2021098244A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124664B (zh) 2019-11-22 2023-12-08 华为技术有限公司 第一操作系统访问第二操作系统资源的方法和装置
CN114091110A (zh) * 2020-08-04 2022-02-25 华为技术有限公司 一种完整性度量方法和完整性度量装置
CN112231124B (zh) * 2020-12-14 2021-03-19 支付宝(杭州)信息技术有限公司 基于隐私保护的应用间通信方法及装置
CN114691532A (zh) * 2020-12-30 2022-07-01 华为技术有限公司 内存访问方法、内存地址分配方法及装置
CN115437717A (zh) * 2021-06-01 2022-12-06 北京小米移动软件有限公司 跨操作系统的调用方法、装置及电子设备
CN113538207B (zh) * 2021-09-17 2022-03-01 北京鲸鲮信息系统技术有限公司 跨进程调用的图形渲染方法、装置、电子设备与存储介质
CN114090096B (zh) * 2022-01-21 2022-04-15 成都云祺科技有限公司 一种网络虚拟文件系统实现方法、系统及存储介质
CN115658560B (zh) * 2022-12-28 2023-03-14 北京紫光芯能科技有限公司 一种数据共享管理方法、装置、系统、电子设备及存储介质
CN115858251B (zh) * 2023-01-18 2023-05-16 苏州浪潮智能科技有限公司 一种基板控制单元控制方法、装置及电子设备和存储介质
CN116185902B (zh) * 2023-04-13 2023-08-01 阿里云计算有限公司 一种表切分方法、系统、电子设备及可读介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697070B1 (en) * 1985-09-13 2004-02-24 Renesas Technology Corporation Graphic processing system
US6772419B1 (en) * 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
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
GB0226874D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
JP2007507779A (ja) * 2003-10-01 2007-03-29 ジャルナ エスアー オペレーティングシステム
JP2005275629A (ja) * 2004-03-23 2005-10-06 Nec Corp マルチプロセッサシステム、及び、メモリアクセス方法
WO2006103687A1 (en) * 2005-03-31 2006-10-05 Hewlett-Packard Development Company L.P. Partitioned resource reallocation system and method
JP2014089644A (ja) 2012-10-31 2014-05-15 Toshiba Corp プロセッサ、プロセッサ制御方法及び情報処理装置
CN102968342B (zh) * 2012-11-12 2015-03-11 华中科技大学 嵌入式平台下半虚拟化的快速切换客户操作系统的方法
JP6129702B2 (ja) * 2013-09-24 2017-05-17 株式会社東芝 情報処理装置、情報処理システム、プログラム
WO2015176046A1 (en) * 2014-05-15 2015-11-19 Lynx Software Technologies, Inc. Systems and methods involving features of hardware virtualization, hypervisor, apis of interest, and/or other features
JP6181004B2 (ja) 2014-06-20 2017-08-16 株式会社東芝 メモリ管理装置、プログラム、及び方法
CN105068859B (zh) * 2015-07-29 2017-12-15 上海谐桐信息技术有限公司 一种跨虚拟机的多服务调用方法及系统
JP6130612B1 (ja) 2015-08-25 2017-05-17 株式会社Seltech ハイパーバイザーを有するシステム
US10387681B2 (en) * 2017-03-20 2019-08-20 Huawei Technologies Co., Ltd. Methods and apparatus for controlling access to secure computing resources
US10438019B2 (en) * 2017-05-04 2019-10-08 Microsoft Technology Licensing, Llc Cross container user model
US11074114B1 (en) * 2017-12-29 2021-07-27 Virtuozzo International Gmbh System and method for executing applications in a non-native environment
US10599835B2 (en) * 2018-02-06 2020-03-24 Vmware, Inc. 32-bit address space containment to secure processes from speculative rogue cache loads
CN110348252B (zh) 2018-04-02 2021-09-03 华为技术有限公司 基于信任区的操作系统和方法
CN110874478B (zh) * 2018-08-29 2023-05-02 阿里巴巴集团控股有限公司 密钥处理方法及装置、存储介质和处理器
CN110245001B (zh) * 2019-05-05 2023-04-18 创新先进技术有限公司 数据隔离方法及装置、电子设备
CN111124664B (zh) 2019-11-22 2023-12-08 华为技术有限公司 第一操作系统访问第二操作系统资源的方法和装置

Also Published As

Publication number Publication date
WO2021098244A1 (zh) 2021-05-27
CN111124664A (zh) 2020-05-08
US20220276968A1 (en) 2022-09-01
CN111124664B (zh) 2023-12-08
US12007906B2 (en) 2024-06-11
JP7443519B2 (ja) 2024-03-05
EP4053700A1 (en) 2022-09-07
EP4053700A4 (en) 2022-11-23
JP2023503110A (ja) 2023-01-26

Similar Documents

Publication Publication Date Title
JP7443519B2 (ja) 第1のオペレーティングシステムが第2のオペレーティングシステムのリソースにアクセスするための方法及び装置
EP3629540B1 (en) Apparatus and method for secure memory access using trust domains
US10241931B2 (en) Controlling access to pages in a memory in a computing device
JP4237190B2 (ja) 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム
US8954697B2 (en) Access to shared memory segments by multiple application processes
TW202226782A (zh) 包括增強型密碼位址之密碼運算技術
US7234037B2 (en) Memory mapped Input/Output operations
CN113688072B (zh) 数据处理方法及设备
US20180129525A1 (en) Computing system for securely executing a secure application in a rich execution environment
US9715410B2 (en) Protected virtual machine function access
US10558584B2 (en) Employing intermediary structures for facilitating access to secure memory
US10705976B2 (en) Scalable processor-assisted guest physical address translation
US20240264768A1 (en) Request Processing Method, Apparatus, and System
US9158690B2 (en) Performing zero-copy sends in a networked file system with cryptographic signing
US20170277632A1 (en) Virtual computer system control method and virtual computer system
CN117769700A (zh) 动态可分配物理寻址元数据存储库
CN115098279A (zh) 内存地址的共享访问方法及装置
US11301282B2 (en) Information protection method and apparatus
CN116249972A (zh) 一种内存保护方法及保护代理控制装置
CN112711546A (zh) 内存配置方法、装置及存储介质
CN111666579A (zh) 计算机设备及其访问控制方法和计算机可读介质
EP4202702A1 (en) Method and apparatus to set guest physical address mapping attributes for trusted domain
CN118689784A (zh) 地址转换方法、装置、电子设备和计算机程序产品
CN115934382A (zh) 数据处理方法、装置、设备及存储介质
CN116561824A (zh) 在机密计算架构中管理内存的方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal