KR101920980B1 - 멀티-운영 체제 디바이스들에 대한 액세스 격리 - Google Patents

멀티-운영 체제 디바이스들에 대한 액세스 격리 Download PDF

Info

Publication number
KR101920980B1
KR101920980B1 KR1020167022261A KR20167022261A KR101920980B1 KR 101920980 B1 KR101920980 B1 KR 101920980B1 KR 1020167022261 A KR1020167022261 A KR 1020167022261A KR 20167022261 A KR20167022261 A KR 20167022261A KR 101920980 B1 KR101920980 B1 KR 101920980B1
Authority
KR
South Korea
Prior art keywords
operating systems
equipment
memory
operating system
foreground
Prior art date
Application number
KR1020167022261A
Other languages
English (en)
Other versions
KR20160108517A (ko
Inventor
케빈 리
빈센트 짐머
샤오후 조우
핑 우
쯔지안 유
마이클 로스만
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20160108517A publication Critical patent/KR20160108517A/ko
Application granted granted Critical
Publication of KR101920980B1 publication Critical patent/KR101920980B1/ko

Links

Images

Classifications

    • 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
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45541Bare-metal, i.e. hypervisor runs directly on hardware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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/4411Configuring for operating with peripheral devices; Loading of device drivers

Abstract

멀티-운영 체제 디바이스들에 대한 액세스 격리가 개시되어 있다. 일반적으로, 디바이스는, 펌웨어를 사용하여, 디바이스 상에서 동시에 동작하는 하나 초과의 운영 체제(OS)를 수용하거나 또는 하나의 OS로부터 다른 것으로 트랜지션하도록 구성될 수 있다. 펌웨어에서의 액세스 격리 모듈(AIM)은 디바이스 장비 구성을 결정할 수 있고, 다수의 운영 체제들에 의한 사용을 위해 장비를 파티셔닝할 수 있다. AIM은 OS-기반 장비 감지를 디스에이블할 수 있고, 맞춤화된 표들을 사용하여 각각의 OS에 장비의 적어도 부분을 할당할 수 있다. 운영 체제들 사이에서 트랜지션할 때, AIM은 하나의 OS로부터의 정보가 다른 것들에 대해 액세스가능하지 않음을 보장하는 것을 도울 수 있다. 예를 들어, AIM은 포어그라운드 OS가 백그라운드 OS에 의해 언제 대체되어야 하는지를 검출할 수 있고, 백그라운드 OS가 활성으로 되기 이전에 포어그라운드 OS의 파일들을 보호(예를 들어, 로크아웃 또는 암호화)할 수 있다.

Description

멀티-운영 체제 디바이스들에 대한 액세스 격리{ACCESS ISOLATION FOR MULTI-OPERATING SYSTEM DEVICES}
본 개시내용은 전자 디바이스들에 관한 것이며, 더 구체적으로는 복수의 운영 체제들의 동시 동작 및/또는 스위칭 거동을 관리하기 위한 디바이스에 관한 것이다.
디바이스는 디바이스에서의 장비의 동작을 용이하게 하기 위한 운영 체제(OS)를 포함할 수 있다. 예를 들어, OS는 장비에 대한 다양한 드라이버들, 파일 핸들링 및 처리 유틸리티들, 디바이스와의 사용자 상호작용을 용이하게 할 수 있는 사용자 인터페이스 소프트웨어 등을 포함할 수 있다. 디바이스들은 전통적으로 하나의 OS만으로 구성되는데, 왜냐하면 이것이 디바이스가 기능하는데 필요한 전부이기 때문이다. 그러나, 다양한 소스들로부터의 다양한 상이한 타입들의 운영 체제들의 도입은 멀티-운영 체제 디바이스들에 대한 관심을 발생시켰다. 예를 들어, 모바일 컴퓨팅 디바이스의 사용자는 디바이스가 정지형 방식으로(예를 들어, 외부 전력 및 유선 네트워크를 가지고) 사용되고 있을 때 더욱 강건한 OS를 사용하기를 원할 수 있고, 디바이스가 모바일일 때, 더욱 간소화되며 전력 효율적인 등의 OS로 스위칭할 수 있다. 대안적으로, "클라우드" 컴퓨팅 솔루션(예를 들어, 원격 처리, 원격 저장 등과 같은 서비스들을 제공할 수 있는 적어도 하나의 디바이스)에서의 관심의 증가는 디바이스들을 스케일링가능 처리 솔루션들을 위해 계산하는 더 작은 유닛들로 나눌 수 있는 필요성을 생성하였다. 어느 경우든, 다수의 운영 체제들을 개별적으로 또는 동시에 실행시키는 능력이 바람직한 능력이다.
디바이스에서 하나 초과의 OS를 사용하는 것이 그런 면에서 유리할 수 있지만, 이러한 시스템의 실제 구현예는 현재 문제가 있다. 기존의 솔루션들은 편리한 방식으로 하나의 OS로부터 다른 것으로 트랜지션하는 것, 또는 다수의 운영 체제들을 동시에 실행시키는 것을 허용하지 않는다. 대신, 디바이스는 한번에 하나의 OS만을 실행할 수 있고, OS 구성을 변경시키기 위해 재부팅될 필요가 있거나 할 수 있다. 결과적인 지연들 및/또는 바람직하지 않은 동작 제한들은 하나 초과의 OS의 사용을 부담스럽게 할 수 있다. 하나의 운영 체제의 인스턴스가 다른 OS 내에서 가상으로 실행되고, 이에 의해 하나 초과의 OS가 디바이스에서 동시에 활성으로 되는 것을 허용하는 것이 또한 가능할 수 있다. 이러한 솔루션은 동시에 하나 초과의 OS를 실행하거나 또는 상이한 운영 체제들 사이에서 신속하게 이동하는 유연성을 제공할 수 있지만, 각각의 OS가 수용가능한 방식으로 수행하도록 이 솔루션을 구현하는데 필요한 처리 및/또는 전력 리소스들은, 예를 들어, 처리 전력 및/또는 배터리 수명이 고려사항인 특정 구현예들(예를 들어, 모바일 통신 및/또는 컴퓨팅 디바이스들)에 대해 그것을 적합하게 하지 않으며, 여기서, 동시에 실행되는 복수의 운영 체제들에 적합한 리소스들, 보안성 및/또는 안정성을 제공하기 위해 디바이스에서의 장비를 세분하는 것이 요구된다.
청구되는 발명 대상의 다양한 실시예들의 특징들 및 장점들은 후속하는 상세한 설명이 진행됨에 따라 그리고 도면들에 대한 참조 시에 명백해질 것이며, 이러한 도면들에서 동일한 번호들은 동일한 부분들을 지시한다.
도 1은 본 개시내용의 적어도 하나의 실시예에 따라 멀티-운영 체제 디바이스들에 대한 액세스 격리를 위해 구성된 예시적인 디바이스를 예시한다.
도 2는 본 개시내용의 적어도 하나의 실시예에 따라 사용가능한 디바이스에 대한 예시적인 구성을 예시한다.
도 3은 본 개시내용의 적어도 하나의 실시예에 따라 멀티-운영 체제 디바이스들에 대한 액세스 격리를 위한 예시적인 동작들을 예시한다.
도 4는 본 개시내용의 적어도 하나의 실시예에 따른 선택적 장비 보고를 통한 장비 격리의 예를 예시한다.
도 5는 본 개시내용의 적어도 하나의 실시예에 따른 선택적 장비 보고를 통한 장비 격리를 위한 예시적인 동작들을 예시한다.
도 6은 본 개시내용의 적어도 하나의 실시예에 따른 메모리 로크아웃(memory lockout)을 통한 장비 격리의 예를 예시한다.
도 7은 본 개시내용의 적어도 하나의 실시예에 따른 메모리 로크아웃을 통한 장비 격리를 위한 예시적인 동작들을 예시한다.
도 8은 본 개시내용의 적어도 하나의 실시예에 따른 메모리 암호화를 통한 장비 격리의 예를 예시한다.
도 9는 본 개시내용의 적어도 하나의 실시예에 따른 메모리 암호화를 통한 장비 격리를 위한 예시적인 동작들을 예시한다.
후속하는 상세한 설명이 예시적인 실시예들을 참조하여 진행할 것이지만, 그것의 많은 대안들, 수정들 및 변형들은 본 기술분야의 통상의 기술자에게 명백할 것이다.
본 출원은 멀티-운영 체제 디바이스들에 대한 액세스 격리에 관한 것이다. 일반적으로, 디바이스는 펌웨어(예를 들어, 영속적 메모리 내의 프로그램 코드)를 사용하여 디바이스 상에서 동시에 동작하는 하나 초과의 운영 체제(OS)를 수용하거나 또는 하나의 OS로부터 다른 것으로 트랜지션하도록 구성될 수 있다. 일 실시예에서, 펌웨어 내의 액세스 격리 모듈(access isolation module)(AIM)은 디바이스 활성화에 후속하여 디바이스 장비 구성을 결정할 수 있고, 이후, 다수의 운영 체제들에 의한 사용을 위해 장비를 파티셔닝할 수 있다. AIM은 이후 장비 감지 서비스들을 디스에이블할 수 있고, 맞춤화된 표들을 사용하여 각각의 OS에 장비의 적어도 부분을 할당할 수 있다. 운영 체제들 사이에서 트랜지션할 때, AIM은 하나의 OS에 대응하는 정보가 다른 것들에 대해 액세스가능하지 않음을 보장하는 것을 보조할 수 있다. 예를 들어, AIM은 언제 포어그라운드 OS가 백그라운드 OS로 대체되어야 하는지를 검출할 수 있고, 백그라운드 OS가 활성으로 되기 이전에 포어그라운드 OS의 파일들을 보호할 수 있다. 보호의 예들은 그것이 백그라운드 OS에 대해 액세스불가능하도록 백그라운드 OS에 의해 사용되는 메모리를 로크아웃하는 것, 백그라운드 OS가 활성으로 되기 이전에 포어그라운드 OS에 의해 사용되는 메모리를 암호화하는 것 등을 포함할 수 있다. 암호화는 키들은 OS에서 활성인 유해한 프로그램들(예를 들어, 멀웨어)에 의해 액세스되는 것으로부터 보호하기 위해 보안 메모리 내의 키들의 저장을 수반할 수 있다.
일 실시예에서, 멀티-운영 체제 디바이스는, 예를 들어, 장비, 적어도 2개의 운영 체제들 및 펌웨어를 포함할 수 있다. 장비는 디바이스 내의 동작들을 지원할 수 있다. 적어도 2개의 운영 체제들은 장비의 적어도 부분과 상호작용할 수 있다. 펌웨어는 적어도 2개의 운영 체제들 각각에 대해 액세스가능한 디바이스 내의 장비의 부분을 결정하기 위한 AIM을 적어도 포함할 수 있다.
예를 들어, 장비의 부분을 결정하는 AIM은, 디바이스의 활성화에 후속하여, 장비를 적어도 2개의 운영 체제들에 의해 액세스가능한 부분들로 파티셔닝하는 AIM을 포함할 수 있다. 장비의 부분을 결정하는 AIM은 적어도 2개의 운영 체제들이 장비를 발견하는 것을 허용하는 펌웨어에서의 기능성을 비활성화시키는 AIM을 포함할 수 있다. 추가로, 장비의 부분을 결정하는 AIM은 적어도 2개의 운영 체제들 각각에 대응하는 표들을 발생시키는 AIM을 더 포함할 수 있고, 표들은 디바이스의 활성화에 후속하여 적어도 2개의 운영 체제들 각각에 대해 액세스가능한 장비의 부분의 ID(identification)를 적어도 포함한다. 적어도 2개의 운영 체제들은 이후 디바이스 내로 로딩하여, 표들에 의해 식별되는 장비의 부분들을 사용하여 동시에 동작할 수 있다.
일 실시예에서, 장비는 적어도 2개의 운영 체제들에 대응하는 데이터가 저장되는 메모리를 포함하는 메모리 모듈을 적어도 포함할 수 있다. 적어도 2개의 운영 체제들은 포어그라운드 시스템 및 백그라운드 시스템을 포함할 수 있고, 액세스 격리 모듈은 포어그라운드 운영 체제로부터 백그라운드 운영 체제로 트랜지션하기 위한 트리거를 추가로 검출한다. AIM은 추가로, 트리거의 검출 시에, 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 결정하고, 포어그라운드 운영 체제에 의해 사용되는 것으로 결정되는 메모리의 부분이 백그라운드 운영 체제에 대해 액세스불가능하게 할 수 있다. 포어그라운드 운영 체제에 의해 사용되는 것으로 결정되는 메모리의 부분을 백그라운드 운영 체제에 대해 액세스불가능하게 하는 AIM은 메모리의 부분에 대한 임의의 액세스를 방지하도록 메모리 제어기 레지스터 설정들을 조정하거나 로크다운하는 것 중 적어도 하나를 수행하는 AIM을 포함할 수 있다. 포어그라운드 운영 체제에 의해 사용되는 것으로 결정되는 메모리의 부분이 백그라운드 운영 체제에 대해 액세스불가능하게 하는 AIM은 암호화 키를 발생시키고, 키를 사용하여 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 암호화하고, 장비 내의 보안 메모리에 키를 저장하는 AIM을 포함할 수 있다. 더욱이, AIM은 추가로 보안 메모리로부터 제2 암호화 키를 획득하고, 제2 키를 사용하여 백그라운드 운영 체제에 의해 사용되는 메모리의 부분을 복호화하고, 포어그라운드 운영 체제가 백그라운드 운영 체제에 의해 대체되게 하도록 할 수 있다.
본 개시내용과 부합하는 디바이스 상의 다수의 운영 체제들을 수용하기 위한 방법은, 예를 들어, 디바이스에서 펌웨어 개입을 요구하는 이벤트를 검출하는 것, 디바이스 내에 존재하는 장비를 결정하는 것, 디바이스 내에 존재하는 적어도 2개의 운영 체제들과 장비 사이의 관계를 결정하는 것, 및 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것을 포함할 수 있다.
이벤트를 검출하는 것은, 예를 들어, 디바이스의 활성화를 검출하는 것 또는 디바이스에서 포어그라운드 운영 체제로부터 백그라운드 운영 체제로 트랜지션하기 위한 트리거를 검출하는 것 중 적어도 하나를 포함할 수 있다. 디바이스 내의 장비를 결정하는 것은 장비를 적어도 2개의 운영 체제들에 의해 액세스가능한 부분들로 파티셔닝하는 것을 포함할 수 있다. 일 실시예에서, 장비와 적어도 2개의 운영 체제들 사이의 관계를 결정하는 것은 적어도 2개의 운영 체제들이 장비를 발견하는 것을 허용하는 펌웨어에서의 기능성을 비활성화하는 것, 및 적어도 2개의 운영 체제들 각각에 대응하는 표들을 발생시키는 것을 포함할 수 있고, 표들은 디바이스의 활성화에 후속하여 적어도 2개의 운영 체제들 각각에 의해 액세스가능한 장비의 부분의 ID를 적어도 포함한다. 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것은 적어도 2개의 운영 체제들이 디바이스 내로 로딩하고 표들에 의해 식별되는 장비의 부분들을 사용하여 동시에 동작하는 것을 허용하는 것을 포함할 수 있다. 다른 실시예에서, 장비와 적어도 2개의 운영 체제들 사이의 관계를 결정하는 것은 적어도 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 결정하는 것을 포함할 수 있다. 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것은, 트랜지션 이전에, 메모리 제어기 레지스터 설정들을 조정하거나 로크다운하는 것 중 적어도 하나에 의해, 또는 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 암호화함으로써, 적어도 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 백그라운드 운영 체제에 대해 액세스불가능하게 하는 것을 포함할 수 있다. 동일한 또는 상이한 실시예에서, 하나 이상의 프로세서들에 의해 실행될 때 디바이스 상에 다수의 운영 체제들을 수용하기 위한 후속 동작들을 초래하는 명령어들을, 개별적으로 또는 조합하여, 저장하는 적어도 하나의 머신-판독가능 저장 매체는, 디바이스에서 펌웨어 개입을 요구하는 이벤트를 검출하는 것, 디바이스 내에 존재하는 장비를 결정하는 것, 디바이스 내에 존재하는 적어도 2개의 운영 체제들과 장비 사이의 관계를 결정하는 것, 및 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것을 포함한다. 매체 실시예는 방법 실시예와 유사한 예시적인 특징들을 더 포함할 수 있다.
도 1은 본 개시내용의 적어도 하나의 실시예에 따라 멀티-운영 체제 디바이스들에 대한 액세스 격리를 위해 구성된 예시적인 디바이스를 예시한다. 디바이스(100)의 예는, Android® OS, IOS®, Windows® OS, Mac OS, Tizen OS, Firefox OS, Blackberry® OS, Palm® OS, Symbian® OS 등에 기반하는 셀룰러 핸드셋 또는 스마트폰과 같은 모바일 통신 디바이스, iPad®, Surface®, Galaxy Tab®, Kindle Fire® 등과 같은 태블릿 컴퓨터, Intel Corporation에 의해 제조된 저전력 칩셋을 포함하는 Ultrabook®, 넷북, 노트북, 랩톱, 팜톱 등과 같은 모바일 컴퓨팅 디바이스, 데스크톱 컴퓨터와 같은 통상적으로 정지형 컴퓨팅 디바이스, 서버, 스마트 텔레비전, Intel Corporation으로부터의 NUC(Next Unit of Computing) 플랫폼과 같은 (예를 들어, 공간-제한적 애플리케이션들, TV 셋톱 박스들 등에 대한) 소형 폼 팩터 컴퓨팅 솔루션 등을 포함할 수 있지만, 이에 제한되지 않는다. 디바이스(100)는, 예를 들어, 적어도 펌웨어(102), 장비(104) 및 OS(106A), OS(106B) ...OS(106n)(집합적으로, "OS(106A...n)")와 같은 복수의 운영 체제들을 포함할 수 있다. 단지 세(3) 개의 OS(106A...n)가 디바이스(100)에 예시되지만, 본 개시내용에 부합하는 실시예들이 단지 세 개의 운영 체제들로 제한되지 않으며, 예를 들어, 디바이스(100)의 능력들에 따라 더 적거나 더 많이 포함할 수 있다.
펌웨어(102)는, 예를 들어, 디바이스(100) 내의 비휘발성(NV) 메모리에 저장되는 소프트웨어 코드, 프로그램들, 데이터 등을 포함할 수 있다. 예를 들어, 판독 전용 메모리(ROM)는 디바이스(100)가 활성화될 때(예를 들어, 비전력공급 상태로부터 파워 업될 때, 전력공급 상태로부터 재부팅될 때 등) 메모리에 로딩되는 정보를 사용하여 인코딩될 수 있다. 디바이스(100)의 메모리로 로딩되는 정보는, 예를 들어, OS(106A...n)와 장비(104) 사이의 인터페이스를 제공하기 위한 적어도 하나의 커널, 디바이스(100) 내의 적어도 하나의 가상 머신(VM)의 동작을 관리하기 위한 가상 머신 관리자(VMM) 또는 "하이퍼바이저(hypervisor)"와 같은 관리 프로그램들, 드라이버들, 유틸리티들, 보안 프로그램들 등을 포함할 수 있다. 펌웨어(102)에 의해 로딩되는 프로그램들은 보안 인증을 거칠 수 있고, 따라서 디바이스(100) 내의 다른 소프트웨어(예를 들어, OS(106A...n))보다 더 높은 특권 레벨에서 동작할 수 있다. 펌웨어(102)에 의해 로딩되는 적어도 하나의 프로그램은 AIM(108)일 수 있다. 일반적으로, AIM(108)은 OS(106A...n)의 동작 및 상호작용을 용이하게 할 수 있다. AIM(108)은, 예를 들어, 장비(104)의 부분들이 각각의 OS(106A...n)에 의해 액세스될 수 있는 방법을 제어할 수 있다. AIM(108)에 의해 수행될 수 있는 예시적인 액티비티들이 도 3 내지 도 9에 관하여 논의될 것이다.
장비(104)는 디바이스(100) 내의, 또는 다양한 동작들을 지원하고 그리고/또는 용이하게 할 수 있는, 적어도 디바이스(100)에 결합되는 하드웨어를 포함할 수 있다. 장비(104)는 디바이스(100)의 동작에 대해 더욱 중심에 있는 시스템들(예를 들어, 프로세서, 메모리, 버스 인터페이스, 입력/출력(I/O) 등)뿐만 아니라, 사용자 인터페이스 하드웨어, 외부 통신을 위한 유선 및/또는 무선 하드웨어 등과 같은 주변 시스템들을 포함할 수 있다. 일 실시예에서, AIM(108)은, 예를 들어, OS(106A)에 액세스가능한 장비(104A), OS(106B)에 액세스가능한 장비(104B), ... OS(106n)에 액세스가능한 장비(104n)(집합적으로 "장비(104A...n)")와 같은 장비(104)의 적어도 하나의 부분을 격리시킬 수 있다. 격리는, 본원에서 참조되는 바와 같이, 장비(104A...n)가 대응하는 OS(106A...n)에 의해서만 성공적으로 액세스되는 것을 허용하는(예를 들어, 데이터가 판독됨 및/또는 기록됨, 커맨드들이 실행됨 등) 프로그램상의 제어들이 설정될 수 있는 것을 나타낸다. 다른 OS(106A...n)에 의한 액세스 시도들은 시도가 차단되는 것, 에러가 발생되는 것 또는 (예를 들어, 데이터 암호화로 인한) 불가해한 데이터의 리턴 중 적어도 하나를 초래할 수 있다.
OS(106A...n)는 디바이스(100) 내의 장비(104)의 동작을 관리하도록 구성될 수 있는 소프트웨어의 집합들을 포함할 수 있다. OS(106A...n)는 판매용으로 회사에 의해 제조될 수 있고, 무료 사용을 위해 사용자 커뮤니티에 의해 컴파일될 수 있고(예를 들어, "오픈-소스(open-source)"), 또는 사설/공중 모델들의 하이브리드들일 수 있다. OS(106A...n)의 예들은, DOS(Disk Operating System), Windows, IOs, Android, Unix, Linux(예를 들어, 다양한 공중 배포 및 영리 목적 배포 모두를 포함함), Jolicloud 등을 포함할 수 있지만, 이에 제한되지 않는다. OS(106A...n)는 적어도 하나의 커널과 연관될 수 있다. 커널은 OS(106A...n)와 장비(104) 사이의 인터페이스로서 작용할 수 있는 소프트웨어 리소스들을 포함할 수 있다. 예를 들어, 커널은 장비(104)를 동작시키기 위해 사용될 수 있는 적어도 하나의 드라이버를 포함할 수 있다. 동작 동안, OS(106A...n)은 장비(104) 내의 다양한 하드웨어 리소스들에 액세스하기 위해 시스템을 호출할 수 있다. 커널은 이러한 호출들을 관리하고, 호출들을 장비(104) 내의 적절한 하드웨어에 할당할 수 있다. OS(106A...n)는 디바이스(100)에서 단독으로(예를 들어, 한번에 하나씩) 또는 동시에 동작할 수 있다. 두 동작 시나리오들 모두의 예들은 도 3 내지 9에 관하여 논의될 것이다.
도 2는 본 개시내용의 적어도 하나의 실시예에 따라 사용가능한 디바이스(100')에 대한 예시적인 구성을 예시한다. 특히, 디바이스(100')는 도 1에 개시되는 바와 같은 예시적인 기능성을 수행할 수 있다. 그러나, 디바이스(100')는 본 개시내용과 부합하는 실시예들에서 사용가능한 장치의 예로서만 의도되며, 이러한 다양한 실시예들을 임의의 특정 구현 방식으로 제한하도록 의도되지 않는다.
디바이스(100')는, 예를 들어, 디바이스 동작들을 관리하도록 구성되는 시스템 모듈(200)을 포함할 수 있다. 시스템 모듈(200)은, 예를 들어, 처리 모듈(202), 메모리 모듈(204), 전력 모듈(206), 사용자 인터페이스 모듈(208) 및 통신 인터페이스 모듈(210)을 포함할 수 있다. 디바이스(100')는 통신 모듈(212)을 또한 포함할 수 있다. 통신 모듈(212)이 시스템 모듈(200)과는 별도인 것으로서 예시되지만, 도 2에 도시된 예시적인 구현예들은 단지 설명을 위해 제공된다. 통신 모듈(212)과 연관된 기능성의 일부 또는 전부가 시스템 모듈(200) 내에 포함되는 것이 또한 가능하다.
디바이스(100')에서, 처리 모듈(202)은 별도의 컴포넌트들에 위치되는 하나 이상의 프로세서들, 또는 대안적으로, 단일 컴포넌트 내에 내장되는(예를 들어, 시스템 온 칩(SoC) 구성인) 하나 이상의 처리 코어들 및 임의의 프로세서-관련 지원 회로(예를 들어, 브리징 인터페이스들 등)를 포함할 수 있다. 예시적인 프로세서들은 Pentium, Xeon, Itanium, Celeron, Atom, Core i-시리즈 제품 계열, 고급 RISC(예를 들어, Reduced Instruction Set Computing) 머신 또는 "ARM" 프로세서 등 내의 마이크로프로세서들을 포함하는, Intel Corporation으로부터 입수가능한 다양한 x86-기반 마이크로프로세서들을 포함할 수 있지만, 이에 제한되지 않는다. 지원 회로의 예들은, 이를 통해 처리 모듈(202)이 디바이스(100') 내에서 상이한 속도로, 상이한 버스들 상에서 등의 식으로 동작할 수 있는 다른 시스템 컴포넌트들과 상호작용할 수 있는, 인터페이스를 제공하도록 구성되는 칩셋(예를 들어, Intel Corporation으로부터 입수가능한 Northbridge, Southbridge 등)을 포함할 수 있다. 지원 회로와 공통으로 연관되는 기능성의 일부 또는 전부는 프로세서와 동일한 물리적 패키지 내에(예를 들어, Intel Corporation으로부터 입수가능한 프로세서들의 Sandy Bridge 계열에서와 같이) 포함될 수 있다.
처리 모듈(202)은 디바이스(100')에서 다양한 명령어들을 실행하도록 구성될 수 있다. 명령어들은 처리 모듈(202)이 데이터의 판독, 데이터의 기록, 데이터의 처리, 데이터의 체계화(formulating), 데이터의 전환, 데이터의 변환 등에 관련된 액티비티들을 수행하게 하도록 구성되는 프로그램 코드를 포함할 수 있다. 정보(예를 들어, 명령어들, 데이터 등)는 메모리 모듈(204)에 저장될 수 있다. 메모리 모듈(204)은 고정식 또는 착탈식 포맷의 랜덤 액세스 메모리(RAM) 또는 ROM을 포함할 수 있다. RAM은 예를 들어, 정적 RAM(SRAM) 또는 동적 RAM(DRAM)과 같이, 디바이스(100')의 동작 동안 정보를 보유하도록 구성되는 휘발성 메모리를 포함할 수 있다. ROM은 기본 입/출력 시스템(BIOS), 통합형 확장가능 펌웨어 인터페이스(Unified Extensible Firmware Interface)(UEFI) 등을 사용하여, 디바이스(100')가 활성화될 때 명령어들을 제공하도록 구성되는 NV 메모리 모듈들, 전자적 프로그래밍가능 ROM들(EPROM들)과 같은 프로그래밍가능 메모리들, 플래시 등을 포함할 수 있다. 다른 고정식/착탈식 메모리는, 예를 들어, 플로피 디스크, 하드 드라이브 등과 같은 자기 메모리, 고체 상태 플래시 메모리(예를 들어, 임베디드 멀티미디어 카드(eMMC) 등), 착탈식 메모리 카드 또는 스틱(예를 들어, 마이크로 스토리지 디바이스(uSD), USB 등)과 같은 전자 메모리, 컴팩트 디스크-기반 ROM(CD-ROM), 디지털 비디오 디스크(DVD), 블루레이 디스크와 같은 광학 메모리 등을 포함할 수 있지만, 이에 제한되지 않는다.
전력 모듈(206)은 내부 전원들(예를 들어, 배터리, 연료 전지 등), 및/또는 외부 전원들(예를 들어, 전기기계식 또는 태양광 발전기, 전력 그리드, 연료 전지 등), 및 동작하기 위해 필요한 전력을 디바이스(100')에 공급하도록 구성되는 관련 회로를 포함할 수 있다. 사용자 인터페이스 모듈(208)은 예를 들어, 다양한 입력 메커니즘(예를 들어, 마이크로폰, 스위치, 버튼, 노브, 키보드, 스피커, 터치 감응형 표면, 이미지들을 캡처하고 그리고/또는 근접도, 거리, 움직임, 제스쳐, 배향을 감지하도록 구성되는 하나 이상의 센서 등) 및 다양한 출력 메커니즘(예를 들어, 스피커, 디스플레이, 조명식/섬광식 표시자, 진동, 모션에 대한 전기기계식 컴포넌트 등)과 같이, 사용자들이 디바이스(100')와 상호작용하는 것을 허용하기 위한 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 사용자 인터페이스 모듈(208) 내의 하드웨어는 디바이스(100') 내에 포함될 수 있고 그리고/또는 유선 또는 무선 통신 매체를 통해 디바이스(100')에 결합될 수 있다.
통신 인터페이스 모듈(210)은, 유선 및/또는 무선 통신을 지원하도록 구성되는 리소스를 포함할 수 있는, 통신 모듈(212)에 대한 패킷 라우팅 및 다른 제어 기능들을 관리하도록 구성될 수 있다. 일부 경우들에서, 디바이스(100')는 중앙집중형 통신 인터페이스 모듈(210)에 의해 모두 관리되는 하나 초과의 통신 모듈(212)(예를 들어, 유선 프로토콜 및/또는 무선 라디오에 대한 별도의 물리적 인터페이스 모듈들을 포함함)을 포함할 수 있다. 유선 통신은 예를 들어, 이더넷, 유니버설 직렬 버스(USB), Firewire, 디지털 비디오 인터페이스(Digital Video Interface)(DVI), 고화질 멀티미디어 인터페이스(High-Definition Multimedia Interface)(HDMI) 등과 같은 직렬 및 병렬 유선 매체들을 포함할 수 있다. 무선 통신은, 예를 들어, 근접 무선 매체들(예를 들어, 근접장 통신(Near Field Communications)(NFC) 표준, 적외선(IR) 등에 기초하는 것과 같은 라디오 주파수(RF)), 단거리 무선 매체(예를 들어, 블루투스, WLAN, Wi-Fi 등), 장거리 무선 매체(예를 들어, 셀룰러 광역 라디오 통신 기술, 위성-기반 통신 등) 또는 음파를 통한 전자 통신을 포함할 수 있다. 일 실시예에서, 통신 인터페이스 모듈(210)은 통신 모듈(212) 내에서 활성인 무선 통신이 서로 간섭하는 것을 방지하도록 구성될 수 있다. 이 기능을 수행할 시에, 통신 인터페이스 모듈(210)은 예를 들어, 전송 대기 중인 메시지들의 상대적인 우선순위에 기초하여, 통신 모듈(212)에 대한 액티비티들을 스케줄링할 수 있다. 도 2에 개시되는 실시예가 통신 모듈(212)로부터 분리된 통신 인터페이스 모듈(210)을 예시하지만, 통신 인터페이스 모듈(210) 및 통신 모듈(212)의 기능성이 동일한 모듈 내에 포함되는 것이 또한 가능할 수 있다.
도 2에 개시되는 예에서, 메모리 모듈(204)은, AIM(108')을 포함할 수 있는 펌웨어(102')를 포함할 수 있다(예를 들어, 메모리 모듈(204) 내의 NV 메모리에 저장됨). 동작의 예에서, 펌웨어(102')는 디바이스(100')의 활성화 시 RAM 메모리 내에 로딩될 수 있는 정보를 포함할 수 있다. 이 정보의 로딩은 멀웨어가 로딩되지 않음을 보장하기 위한 검증(예를 들어, 측정)을 포함할 수 있다. AIM(108')은 RAM 내에 로딩되는 정보의 일부일 수 있고, OS(106A...n)에 관련된 이벤트들에 대한 디바이스(100')에서의 동작들을 모니터링할 수 있다. 예시적인 이벤트들은 디바이스(100')의 활성화, 디바이스(100) 내로의 OS(106A...n)의 로딩, 포어그라운드 OS(106A...n)로부터 백그라운드 OS(106A...n)로 트랜지션하기 위한 트리거 등을 포함할 수 있다. 이벤트의 감지 시에, AIM(108')은 예를 들어, 도 2에 개시되는 바와 같이 모듈들(200 내지 212)과 연관되는 장비를 포함하는 장비(104)의 적어도 부분의 격리에 관련된 동작들을 수행할 수 있다.
도 3은 본 개시내용의 적어도 하나의 실시예에 따른 멀티-운영 체제 디바이스들에 대한 액세스 격리를 위한 예시적인 동작들을 예시한다. 도 3에 개시되는 예시적인 동작들은 본 개시내용에 부합하는 다양한 실시예들이 기반할 수 있는 기본 프레임워크로서의 역할을 할 수 있다. 동작(300)에서, 디바이스(100) 내의 펌웨어(102)에 의한(예를 들어, AIM(108)에 의한) 개입을 요구하는 이벤트가 검출될 수 있다. 이벤트들의 예들은 디바이스(100)의 활성화, 포어그라운드 OS(106A...n)로부터 백그라운드 OS(106A...n)로 트랜지션하기 위한 트리거 등을 포함할 수 있다. 디바이스(100) 내의 장비(104)는 이후 동작(302)에서 결정될 수 있다. 장비(104)를 결정하는 것은, 예를 들어, 디바이스(100) 내에 포함된 그리고/또는 디바이스에 결합된 하드웨어를 발견하는 것을 포함할 수 있다. 동작(302)에서 장비(104)가 결정된 이후, 다음으로 동작(304)에서, 장비(104) 대 OS(106A...n)의 관계가 결정될 수 있다. 예를 들어, 동작(304)에서, 장비(104)의 적어도 하나의 부분은 각각의 OS(106A...n)와 연관될 수 있다. 이러한 연관은 전망(prospective) 기반(예를 들어, 디바이스(100)의 초기화 동안, 그러나, OS(106A...n)의 로딩 이전에)으로 또는 반사(reflective) 기반으로(예를 들어, OS(106A...n)에 의해 실제로 사용된 디바이스(100) 내의 리소스들에 기초하여) 이루어질 수 있다. 연관은 동작(306)에서 장비(104)의 적어도 하나의 부분이 격리되는 것을 허용한다. 예를 들어, 장비의 부분들(104)이 격리될 수 있고, 따라서, 각각의 운영 체제가 다른 OS(106A...n)로부터의 간섭에 대한 우려 없이 장비(104)의 세트에 대한 액세스를 가질 수 있다.
도 4는 본 개시내용의 적어도 하나의 실시예에 따른 선택적 장비 보고를 통한 장비 격리의 예를 예시한다. 클라우드 컴퓨팅과 같은 동작 시나리오들에서, 디바이스(100)는 상당한 리소스들을 포함하는 서버와 같은 정지형 컴퓨팅 디바이스일 수 있다. 예를 들어, 단일 디바이스(100)는 각각이 복수의 코어들을 포함하는 복수의 프로세서들, 복수의 대용량 데이터 스토리지 컴포넌트들, 대량의 RAM 메모리 등을 포함하여, 단일 OS(106A...n)에 의해 효과적으로 사용될 수 있는 것보다 더 많은 컴퓨팅 전력을 초래할 수 있다. 그 결과, 더 작은 컴퓨팅 유닛들로 디바이스(100)를 유연하게 파티셔닝할 수 있는 것에 대한 요구가 존재한다. 클라우드 컴퓨팅 시나리오가 주어지는 경우, 장비(104)를 디바이스(100) 상에서 동시에 동작할 수 있는 상이한 OS(106A...n)로 유연하게 배분하는 능력은, 클라우드 리소스 제공자가 소프트웨어 기반 OS-인-OS 또는 가상화 솔루션의 추가되는 오버헤드 없이 클라우드 사용자에 의한 리소스들의 처리, 저장 등을 개척(carve out)하는 것을 허용할 것이다. 이러한 타입의 유연성은 랙-스케일 아키텍처(rack-scale architecture)(RSA) 컴퓨팅을 구현하기 위해 요구되는 모듈성(modularity)을 제공할 수 있으며, 여기서, 개별 서버들의 전체 랙들은 효율성을 증가시키고, 열 발생을 감소시키는 것 등을 위해 전력, 냉각, 처리, 메모리 등과 같은 리소스들을 공유할 수 있다.
일 예시적인 구현예에서, UEFI-기반 펌웨어(102)에서 이용가능한 고급 구성 및 전력 인터페이스(Advanced Configuration and Power Interface)(ACPI) 하드웨어 열거가 사용되어, 장비(104A...n)가 OS(106A...n)에 할당되는 방식이 제어될 수 있는 하드웨어 격리를 구현할 수 있다. 이는 ACPI가 소프트웨어-발견가능하지 않은 시스템 토폴로지의 요소들을 선언하기 때문이다. 이 기능성은 UEFI GetMemoryMap 동작과 함께, 디바이스들이 각각의 OS(106A...n)에 선택적으로 할당되고 통신되는 것을 허용할 수 있다. 일 실시예에서, OS(106A...n)가 PCI 슬롯들에 플러그인 된 장비의 자동 구성을 수행하는 것을 허용하는 PCI(peripheral component interconnect) 구성 공간이 디스에이블되어야 하고, 따라서 장비(104A...n)의 부분들로의 장비(104)의 분리가 무효화될 수 없다.
보고되는 선택적 장비를 통한 장비 격리의 예가 도 4의 400에 개시된다. 장비(104')는 디바이스(100)에 대한 예시적인 하드웨어 구성을 개시한다. 예를 들어, 처리 모듈(202')은 복수의 프로세서들(CPU1, CPU2, CPU3, CPU4 및 CPU5)(집합적으로 "CPU 1...5")을 포함할 수 있다. 메모리 모듈(204')은 10 GB 섹션으로 분할될 수 있는 30 GB의 물리적 RAM 메모리를 포함할 수 있다. 통신 모듈(212')은 인터페이스 1, 인터페이스 2, 및 인터페이스 3(집합적으로 "인터페이스 1...5")을 포함하는 복수의 유선 또는 무선 인터페이스들을 포함할 수 있다. 장비(104')가, 예컨대, 각각의 CPU 1...5가 복수의 분할가능한 처리 코어들을 포함하는 것과 같이, 다른 분할가능한 하드웨어를 포함할 수 있다는 것에 주목하는 것이 중요하다. 장비(104')의 구성은 단지 본원에서의 설명을 위해 제시된다.
장비(104A' 및 104B')는 장비(104')가 파티셔닝되어 단일 물리적 디바이스(100) 내의 복수의 논리 디바이스를 형성할 수 있는 방법을 나타낸다. 예를 들어, 장비(104A')는 OS(106A)에 보고될 수 있고, CPU1 및 CPU4, 처음 10 GB의 RAM 메모리 및 통신 인터페이스 1만을 포함할 수 있다. 따라서, OS(106A)는 장비(104A') 내에서 식별되는 리소스들에 의해 정의되는 논리 디바이스들의 경계들 내에서 디바이스(100) 상에서 동작할 수 있다. 유사하게, 장비(104B')는 OS(106B)에 보고될 수 있다. 그 결과, OS(106B)는 CPU3 및 CPU5, 두번째 10GB의 RAM 메모리 및 통신 인터페이스 3을 포함하는 논리 디바이스의 경계들 내에서 동작할 수 있다. 장비(104A...n)의 부분은 모든 후속하는 OS(106A...n)에 대해 마찬가지로 정의될 수 있다. 이러한 방식으로, 어떠한 OS(106A...n)도 장비(104) 내의 동일한 하드웨어를 사용하지 않기 때문에(예를 들어, 각각의 OS(106A...n)는 상이한 장비(104A...n)를 사용함), 하나 초과의 OS(106A...n)는 간섭 없이 디바이스(100) 상에서 동시에 동작할 수 있다. 이러한 방식으로 동작하는 것은, 특히, 단일 OS(106A...n)가 대형 디바이스들(100)(예를 들어 클라우드 서버들) 내의 모든 장비(104)에 액세스하는 능력을 가지지 않는 경우, 모든 장비(104)가 액세스되는 것을 허용한다.
도 5는 본 개시내용의 적어도 하나의 실시예에 따른 선택적 장비 보고를 통해 장비 격리를 위한 예시적인 동작들을 예시한다. 도 5에 개시되는 예는 도 4에 제시되는 예에 따라 발생할 수 있는 동작들의 본원의 더욱 특정한 예들에 의해 도 3에 제시되는 동작들을 추가로 수정한다. 동작(300')에서, 검출될 수 있는 이벤트는 디바이스(100)의 초기화(또는 재-초기화)이다(동작(500)). 동작(302')에서 장비(103)를 결정하는 것은, 예를 들어, 디바이스(100)에서 리소스 파티셔닝에 대한 셋업 옵션들을 판독하는 것을 포함할 수 있다(동작(502)). 셋업 옵션들은 디바이스(100)에 대한 일반적인 장비 구성 기준을 특정할 수 있는데, 이는 동작(504)에서, 고정된 ACPI 디스크립션 표(fixed ACPI description table)(FADT)에서 CPU 리소스들(예를 들어, 프로세서들 및/또는 코어들)을 파티셔닝하기 위해 사용될 수 있다. 예를 들어, FADT에서의 각각의 엔트리는 고유한 고급 프로그래밍가능 인터럽트 제어기 ID(advanced programmable interrupt controller identification)(APIC ID)을 사용하여 논리 CPU 리소스를 정의할 수 있다. 동작(506)에서, 장비(104) 내의 메모리 리소스들은 메모리 맵에서 파티셔닝될 수 있다. 예로서 UEFI를 사용하여, EFI_MEMORY_MAP이 메모리 구성 정보를 OS(106A...n)로 전달하기 위해 사용될 수 있다. 메모리 파티셔닝에 후속하여, 동작(508)에서 EFI 디바이스 열거, 및 I/O 및 메모리-매핑된 I/O(MMIO)를 적어도 하나의 PCI 베이스 어드레스 레지스터(base address register)(BAR)로 할당하는 것이 이어질 수 있다.
동작(302')에서 장비(104)의 결정에 후속하여, 장비(104) 대 OS(106A...n)의 관계는 동작(304')에서 결정될 수 있다. 예를 들어, 동작(510)에서, PCI 디바이스들은 차별화된 시스템 디스크립션 표(differentiated system description table)(DSDT)에서 ACPI 디바이스들로서 할당될 수 있다. 예를 들어, 처리 및 메모리 리소스들의 보고에 더하여, 장비(104)는 또한 ACPI 디바이스로서 OS(106A...n)에 DSDT 명칭 공간(예를 들어, ACPI 타이머, ACPI 파워 버튼 등)을 사용하여 보고될 수 있다. 본 개시내용에 부합하여, DSDT 리소스 보고 메커니즘이 또한 (예를 들어, PCI 디바이스들이 OS(106A...n)에 의해 자동으로 구성되는 것을 방지하기 위해) ACPI 디바이스들로서 PCI 디바이스들을 보고하기 위해 사용될 수 있고, IO/MMIO BAR 리소스들을 보고하기 위해 _CRS 방법(예를 들어, 접속 리소스들을 이들의 리소스 방법들에 더하기 위한 ACPI 매크로)을 사용할 수 있다. ACPI 표 내에 PCI 디바이스를 열거하기 위한 예시적인 코드는 다음을 포함할 수 있다:
Figure 112016078945543-pct00001
동작(510)에서 PCI 디바이스들이 ACPI 디바이스들로서 보고되는 것에 후속하여, PCI 구성 공간이 동작(512)에서 디스에이블되어 OS(106A...n)가 장비(104) 내의 PCI 디바이스들을 자동으로 발견하는 것을 방지할 수 있다. 장비(104)는 이후 동작(306')에서 장비(104A...n)의 부분들로 격리될 수 있으며, 여기서, 예를 들어, 동작(514)에서, 커스텀 ACPI 표들이 각각의 OS(106A...n)에 대해 발생될 수 있다. 각각의 ACPI 표에서 식별되는 리소스들은, 예를 들어, 시스템 운영자에 의한(예를 들어, 펌웨어(102)에서 또는 OS(106A...n)에서 사용자 인터페이스를 통한) 수동 구성, AIM(108) 또는 디바이스(100) 내의 다른 시스템에 의해 자동으로, 디바이스(100) 밖에 존재하는 제어 시스템에 의해 펌웨어(102)에서 자동으로 등을 포함하는 다양한 방식들로 결정될 수 있다. 동작(516)에서 OS(106A...n)는 이후 부팅되도록 허용될 수 있다. 각각의 OS(106A...n)는 동작(514)에서 발생된 대응하는 커스텀 ACPI 표를 사용할 수 있고, 커스텀 ACPI 표는 동작 동안 각각의 OS(106A...n)가 액세스하도록 허용되는 장비(104A...n)의 부분을 기술한다. 이러한 방식으로, 각각의 OS(106A...n)에 의해 액세스될 수 있는 장비(104A...n)의 부분들이 격리될 수 있기 때문에(예를 들어, 오버랩하지 않을 수 있기 때문에) 하나 초과의 OS(106A...n)는 서로 간섭하지 않고 디바이스(100)에서 동시에 동작할 수 있다.
일 실시예에서, 인터럽트 전달은 ACPI 표들에 의해 정의되는 복수의 논리 디바이스들에서 복수의 OS(106A...n)의 동시 동작을 수용하도록 수정될 수 있다. 기존 시스템들에서의 인터럽트 전달을 위해, 다수의 인터럽트 소스들 및 인터럽트 제어기들이 존재할 수 있다. 본 개시내용에 부합하여, 인터럽트 제어기가 장비(104A...n)의 상이한 부분들에 할당되어, 각각의 논리 디바이스가 인터럽트 메커니즘을 적절하게 사용함을 보장할 수 있다. 각각의 CPU가 로컬 APCI 타이머를 포함할 수 있기 때문에, 각각의 논리 디바이스가 OS 작업 스케줄링에 대한 타이머 인터럽트를 가짐을 보장하는 것이 가능할 수 있다. 일 예시적인 구현예에서, 하나의 논리 디바이스는 사용자 인터페이스 모듈(208)(예를 들어, 디스플레이, 사용자 입력들 등)에 액세스할 수 있는 반면, 다른 논리 디바이스들은 헤드리스(headless)일 수 있다(예를 들어, 디바이스(100) 상에 사용자 인터페이스 능력을 가지지 않음). 그러나, 장비(104)가 2개의 그래픽 제어기들을 포함하는 경우, 하나 초과의 논리 디바이스 사용자 인터페이스 능력들을 제공하는 것이 가능할 수 있으며, 이는 사용자 경험을 개선시켜야 한다.
도 6은 본 개시내용의 적어도 하나의 실시예에 따른 메모리 로크아웃을 통한 장비 격리의 예를 예시한다. 도 5의 예가 디바이스(100) 상의 OS(106A...n) 의 동시 동작을 개시하지만, 도 6 및 도 8에 개시되는 실시예들은 디바이스(100) 내의 상이한 OS(106A...n) 사이의 트랜지션을 다룬다. 예를 들어, 디바이스(100)는 포어그라운드 OS(예를 들어, OS(106A)) 및 백그라운드 OS(예를 들어, OS(106B))를 적어도 포함할 수 있다. 기존의 멀티-OS 솔루션들은 서로의 내에서 OS(106A...n)의 이중-부팅 또는 실행 인스턴스들을 위한 펌웨어(102)의 구성을 사용한다. 이러한 옵션들 모두 문제가 있다. 이중-부팅은 OS(106A)와 OS(106B) 사이에서 트랜지션하기 위해 디바이스(100)를 재시작할 것을 요구한다. 재부팅의 필요성은 시간 소모적이며, 사용자 경험에 부정적으로 영향을 준다. 서로의 내에서 OS(106A...n)의 실행 인스턴스들은 보다 응답적인 솔루션이지만, 전체 시스템 성능을 늦출 수 있는 많은 메모리 및 처리 오버헤드를 생성한다. 본 개시내용에 부합하여, 디바이스(100)의 리소스들에 대해 상당한 부담을 주지 않고 OS(106A...n) 간의 신속한 스위칭을 용이하게 할 수 있는 실시예들이 도 6 내지 도 8에 제시된다.
ACPI 표준은 4개의 전역적(Gx) 상태들 및 6개의 슬립(Sx) 상태들을 정의한다. 슬립 상태들(S0 내지 S5)은 디바이스(100) 내의 상이한 액티비티 레벨들을 정의한다. 예를 들어, S0 상태는 디바이스(100)가 완전히 활성일 때를 기술할 수 있는 반면, S5 상태는, 디바이스(100)가, 여전히 공급되는 전력에 대한 것을 제외하고는 디바이스(100)가 완전히 비활성인 "소프트 오프(soft off)" 상태에 있을 때이다. 모든 이러한 다양한 슬립 상태들 중에서, RAM 메모리가 보존되는 동안 디바이스(100)내의 액티비티가 중지될 수 있는 S3 또는 "대기(standby)" 상태가 관심 대상이다. S4 또는 "하이버네이션(hibernation)" 상태로 진입 시에, RAM의 현재 상태가 디스크에 저장된다. RAM 상태가 포어그라운드 OS(106A) 및 백그라운드 OS(106B) 모두에 대해 보존되어, 디스크로부터 RAM 상태를 로딩해야 할 필요 없이 하나로부터 다른 것으로의 신속한 트랜지션들을 허용한다는 점에서(예를 들어, S4 하이버네이션 상태에서 발생함에 따라), 하나의 OS로부터 다른 것으로 스위칭 할 때 디바이스(100)를 S3 상태로 두는 것이 유리할 수 있다. 이러한 기능성은 UEFI 기반 펌웨어(102)에 추가되어, 디바이스(100)가, 트리거링 이벤트의 발생 시에, 디바이스가 S3 슬립 상태로 진입하게 하고, S3 슬립 상태로부터 재개할 시에, 포어그라운드 OS(106A)로부터 백그라운드 OS(106B)로 트랜지션하게 하도록 허용할 수 있다. 사용자에 대해, 트랜지션은 거의 즉시 발생하는 것으로 보일 수 있어서, 사용자 만족도를 크게 향상시킨다.
그러나, 이러한 방식의 OS(106A...n) 사이의 트랜지션의 이점은 또한 부담(liability)일 수 있다. 포어그라운드 OS(106A) 및 백그라운드 OS(106B) 모두가 RAM 메모리에 보유될 수 있기 때문에 S3 슬립 상태에서의 트랜지션들이 신속히 발생할 수 있다. 그러나, 이는 또한, 포어그라운드 OS(106A)로부터 메모리에 저장된 정보가 백그라운드 OS(106B)에 의해 액세스되는 것에 취약하며, 그 역도 성립함을 의미한다. 예를 들어, 포어그라운드 OS(106A) 내의 멀웨어가 백그라운드 OS(106B)의 동작, 컨피덴셜 정보 관련 디바이스(100), 디바이스(100)의 관련 사용자(들) 등에 대해 중요한 데이터에 액세스할 수 있다. 이러한 취약성을 해결하기 위해, 예를 들어, OS 스위치 메모리 맵 레지스터들로서 일부 마이크로프로세서 아키텍처들(예를 들어, Intel Xeon 마이크로프로세서들)에서 이용가능한 소스 어드레스 디코더(SAD) 및 타겟 어드레스 디코드(TAD) 메커니즘과 같은, 메모리 구성(예를 들어, 어드레스 매핑) 메커니즘을 조정하는 것이 가능할 수 있다. 예를 들어, SAD 및 TAD 레지스터들은 메모리 내의 어드레스 범위들의 시작과 종료를 제어할 수 있다. 예를 들어, 종료 어드레스가 시작 어드레스보다 더 작은 상황은 무효한 엔트리를 표시할 수 있다. 구체적으로 OS 전환 동안 메모리 액세스가능성을 제어하기 위한 커스텀 레지스터들(예를 들어, 커스텀 OS 스위치 메모리 맵 레지스터들)을 생성하는 것이 또한 가능할 수 있다. 이러한 메모리 구성 특징들은 포어그라운드 OS(106A) 또는 백그라운드 OS(106B)가 활성인지의 여부에 기초하여 메모리 액세스를 맞춤화하도록 시스템 메모리 어드레싱가능 공간을 수정하기 위해 사용될 수 있다. 그 결과, 포어그라운드 OS(106A)는 백그라운드 OS(106B)에 대응하는 정보를 포함하는 메모리의 영역들에 액세스할 수 없으며, 그 역도 성립한다.
메모리 로크아웃을 통한 장비 격리의 예가 도 6 내의 600에 예시된다. 예시적인 전역적 시스템 어드레스 맵(602)은 디바이스(100)가 이용가능한 메모리의 5GB를 포함하며, 0 내지 3GB가 낮은 시스템 메모리이고, 3 내지 4GB가 낮은 MIMO 메모리이고, 4 내지 5GB가 높은 시스템 메모리임을 개시한다. 예들(602A)은 이용가능한 메모리가 포어그라운드 OS(106A)에 나타날 수 있는 방법을 보여주는 반면, 예(602B)는 활성일 때 백그라운드 OS(106B)에 대해 이용가능할 수 있는 메모리를 보여준다. 예(602A)에서, 시스템 어드레싱가능 메모리 공간은, 1GB까지의 그리고 2GB 이후의 메모리가 액세스가능함을 나타내도록 수정될 수 있다. 1GB와 2GB 사이의 메모리 공간은, 예를 들어, 백그라운드 OS(106B)를 위해 예약될 수 있다. 반면, 예(602)는, 백그라운드 OS(106B)가 1 내지 2GB의 메모리뿐만 아니라 3 내지 4GB의 메모리에만 액세스할 수 있음을 개시한다. 일 실시예에서, 3 내지 4GB 어드레스 범위 내의 메모리는 디바이스(100) 내의 장비(102)(예를 들어, 하드웨어 디바이스들)에 매핑할 수 있다. 따라서, 3 내지 4GB 어드레스 범위 내의 메모리는 장비(102)를 제어하기 위해 포어그라운드 OS(106A)와 백그라운드 OS(106B) 모두에 의해 사용될 수 있다.
예(602A)에 도시된 바와 같이, 1 내지 2GB의 메모리의 영역은 포어그라운드 OS(106A)에 대해 가시적이지 않으며, 따라서, 포어그라운드 OS(106A)에서 실행하는 프로그램들이 메모리 내의 이 영역에 액세스하도록 시도할 이유가 존재하지 않는다. 그러나, 보호 방식의 관점에서, 메모리가 여전히 디바이스(100)에 존재할 수 있다고 가정하는 것에 기초하여, 포어그라운드 OS(106A)에서 동작하는 멀웨어가 메모리의 블랙 아웃 영역에 액세스하려고 여전히 시도하는 것이 가능할 수 있다. 일 실시예에서, 블랙 아웃 메모리 영역들에 액세스하려는 임의의 시도는 적어도 액세스를 중지함으로써 악성 액터들을 트랩핑할 수 있다. 더욱이, 시도된 액세스를 시스템에 통지하는 에러가 발생될 수 있고 그리고/또는 OS(106A)에서의 일부 또는 모든 액티비티가 중단되어 추가적인 액세스 시도들을 방지할 수 있다.
도 7은 본 개시내용의 적어도 하나의 실시예에 따른 메모리 로크아웃을 통한 장비 격리를 위한 예시적인 동작들을 예시한다. 동작(300")에서 펌웨어 개입을 요구하는 이벤트를 검출하는 것은 OS 스위치 트리거를 검출하는 것을 포함할 수 있다(동작(700)). 예시적인 OS 스위치 트리거는 수동-개시형 이벤트(예를 들어, 사용자 인터페이스 상호작용) 또는 자동화된 이벤트(예를 들어, 현재 활성인 OS(106A...n)에서 실행하는 애플리케이션, S3 슬립 상태로 진입하는 디바이스(100) 등으로부터)를 포함할 수 있다. 사용자 인터페이스 상호작용은, 예를 들어, 하드웨어-기반 제어(예를 들어, 하드웨어 버튼) 또는 소프트웨어-기반 제어(예를 들어, 그래픽 인터페이스에서 디스플레이되는 버튼)를 포함할 수 있다. OS 스위치 트리거와는 무관하게, 디바이스(100)는 S3 슬립 상태로 진입할 수 있고, 재개 시에, 장비의 결정(302")에 관여할 수 있다. 예를 들어, 동작(702)에서, 하드웨어(예를 들어, 장비(104))가 초기화될 수 있다. 하드웨어 초기화에 후속하여, 동작(704)에서의 메모리 트레이닝이 이어질 수 있다. 메모리 트레이닝은, 예를 들어, 디바이스 초기화 동안 디바이스(100)에 대한 전체 메모리 어드레스 매핑(예를 들어, SAD/TAD 레지스터 설정들 및 다른 관련 레지스터들을 포함함)을 결정하는 펌웨어(102)(예를 들어, AIM(108))를 포함할 수 있다. AIM(108)은 이후 메모리 매핑이 NV 메모리에 (예를 들어, UEFI 변수로서) 저장되도록 할 수 있고, 0~1GB, 2~3GB 및 4~5GB를 사용하는 포어그라운드 OS(106A), 및 1~2GB 메모리만을 사용하는 백그라운드 OS(106B)와 같은, 메모리 파티션 구성을 또한 레코딩할 수 있다. NV 메모리에 저장되는 메모리 맵 정보는 이후, 예를 들어, 포어그라운드 OS(106A)로부터 백그라운드 OS(106B)로 트랜지션할 때 기준용으로 사용될 수 있다.
동작(304")에서 장비 대 OS 관계를 결정하는 것은, 예를 들어, 동작(706)에서 포어그라운드로 이동하는 OS(106A...n)(예를 들어, 백그라운드 OS(106B)를 결정하고, 이후, 동작(708)에서 메모리 맵을 계산하는 것을 포함할 수 있다. 동작(706)에서 포어그라운드로 이동하는 OS(106A...n)를 결정하는 것은, 예를 들어, 디바이스(100)가 둘 초과의 운영 체제들을 포함할 수 있는 시나리오에 대해 중요할 수 있다. 메모리 맵을 계산하는 것은, 예를 들어, 백그라운드로 트랜지션하는 포어그라운드 OS(106A) 및 포어그라운드로 트랜지션하는 백그라운드 OS(106B)에 기초하여 적어도 레지스터 설정들을 결정하는 것을 포함할 수 있다. 따라서, 새로운 메모리 맵은 OS(106B)에 대응하는 메모리 내의 영역들을 액세스가능하게 하는 동시에 OS(106A)에 대응하는 메모리 내의 영역들을 액세스불가능하게 할 수 있다. 동작(306")에서 OS 트랜지션에 기초하여 장비를 격리시키는 것은 이후 동작(708)에서 계산되는 메모리 맵에 기초하여 메모리 구성을 변경하는 것을 포함할 수 있다. 예를 들어, 동작(710)에서, 새로운 포어그라운드 OS(예를 들어, OS(106B))에 대응하는 메모리 영역들에 대한 액세스가 개방될 수 있는 반면, 동작(712)에서 백그라운드로 트랜지션할 OS(106A)에 대응하는 메모리 영역들에 대한 액세스가 차단될 수 있다. 디바이스(100)에서 S3 슬립 상태로부터의 동작들의 재개는 이후 동작(714)에서 완료될 수 있으며, 여기서 OS(106B)는 새로운 포어그라운드 OS가 된다.
도 8은 본 개시내용의 적어도 하나의 실시예에 따른 메모리 암호화를 통한 장비 격리의 예를 예시한다. 도 6 및 도 7에 개시되는 실시예와 유사하게, 도 8 및 도 9는 또한 OS(106A...n)와 연관된 메모리의 구역들이 다른 OS(106A...n)에 의해 액세스되는 것으로부터 보호하는 것에 관한 것이다. 그러나, 이 실시예는 예를 들어, 하드웨어 메모리 디코딩 메커니즘을 제어하는 하드웨어-기반 로크아웃 솔루션에 반해, 소프트웨어-기반 암호화 솔루션을 제시한다. 솔루션들 모두가 동일한 타입의 기능성을 제공하는 반면, 하드웨어-기반 로크아웃 솔루션은 서버 클래스 마이크로프로세서들에서만 현재 이용가능한 특정 하드웨어 구성 특징들을 사용할 수 있다. 예를 들어, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 모바일 통신 디바이스 등에서 사용되는 마이크로프로세서들은 이러한 구성 특징들을 아직 포함하지 않을 수 있고, 따라서, 도 8 및 도 9는 더 광범위한 디바이스들(100)에 적용가능할 수 있는 암호화 솔루션을 제시한다.
메모리 암호화를 통한 장비 격리의 예가 800에 제시된다. 기본 메모리 구성이 802에 도시되며, 예를 들어, OS(106A)에 의해 사용되는 메모리의 영역, OS(106B)에 의해 사용되는 메모리의 영역, 및 시스템 관리 RAM(SMRAM)(804)을 포함할 수 있다. SMRAM(804)은, 예를 들어, 펌웨어(102)에만 액세스가능한 보안 메모리(예를 들어, AIM(108))를 포함할 수 있다. 포어그라운드 OS(106A)로부터 백그라운드 OS(106B)로의 트랜지션의 예가 804에 도시된다. 포어그라운드 OS(106A)에 의해 사용되는 메모리의 영역의 초기 상태는 (예를 들어, 평문에서) 판독가능할 수 있는 반면, 백그라운드 OS(106B)에 의해 사용되는 메모리의 영역은 암호화될 수 있다. SMRAM(804)은 (예를 들어, 그것이 오직 AIM(108)에 의해 액세스될 수 있기 때문에) 숨겨질 수 있다. 트랜지션에서의 초기 동작들이 806에 도시되며, 여기서, AIM(108)은, 디바이스가 S3 슬립 상태로부터 재개한 이후, 포어그라운드 OS(106A)에 의해 사용되는 메모리의 영역이 암호화되도록 할 수 있다. 예를 들어, 고급 암호화 표준(Advanced Encryption Standard)(AES) 암호화 알고리즘이 갈루아 카운터 모드(Galois Counter Mode)(GCM) 암호와 함께 사용되어, OS(106A) 및 OS(106B)에 의해 사용되는 메모리의 영역들을 암호화하고 인증할 수 있다. AES-CGM의 성능은, AES-GCM 알고리즘의 전체 성능을 부스팅할 수 있는, 캐리-리스 곱셈 명령어(carry-less multiplication instruction)(PCLMULQDQ)와 함께, AES 신규 명령어 세트(AES New Instruction set)(AES-NI) 세트를 포함하는 특정 마이크로프로세서들(예를 들어, Intel Corporation에 의해 제공되는 적어도 일부 마이크로프로세서들)에 의해 부스팅될 수 있다.
포어그라운드 OS(106A)에 의해 사용되는 메모리의 영역의 암호화에 후속하여, 암호화를 수행하기 위해 사용되는 키는 (예를 들어, SMRAM(804)가 AIM(108)에만 액세스가능하기 때문에) 안전보관을 위해 SMRAM(804)에 저장될 수 있다. 도 8 내의 808에 도시된 동작들은, 포어그라운드로 이동하는 OS(예를 들어, OS(106B))에 의해 사용되는 메모리의 영역을 복호화하기 위해 806에서 발생하는 동작들에 후속할 수 있다. 예를 들어, AIM(108)은 백그라운드 OS(106B)에 의해 사용되는 메모리의 영역을 암호화하기 위해 이전에 사용되었던 키를 검색할 수 있고, 이후, OS(106B)가 포어그라운드로 트랜지션함에 따라 이러한 메모리의 영역을 복호화할 수 있다. 복호화는 OS(106B)에 의해 사용되는 메모리의 영역이 손상되지 않았음을 보장하기 위한 인증 동작을 포함할 수 있다. 예를 들어, 포어그라운드 OS(106A) 내의 프로그램(예를 들어, 멀웨어)이 백그라운드 OS(106B)에 의해 사용되는 메모리의 영역에 여전히 기록할 수 있고, 이러한 기록 액티비티는 데이터를 암호화된 메모리 영역에 삽입하여 동작을 손상시킬 수 있다. 인증은 복호화된 메모리 영역이 원래 암호화되었던 것과 매치함을 보장하도록 보조한다. 인증이 실패하는 경우, 트랜지션이 중단될 수 있고, 포어그라운드 OS(106B)가 포어그라운드에서 재개할 수 있다. 인증이 성공적인 경우, 메모리는 이제, 새로운 포어그라운드 OS인 OS(106B)가 그것의 파일들을 포함하는 영역에 자유롭게 액세스 할 수 있는 동시에 이제 백그라운드에 있는 OS(106A)에 대한 데이터를 포함하는 영역이 암호화되는 상태에 있을 수 있다. 암호화가 OS(106A)에 대응하는 메모리 내의 영역들이 액세스되는 것을 방지하지는 않지만, 판독 액세스 시도로부터 돌아오는 어떠한 데이터라도 불가해할 것이다.
도 9는 본 개시내용의 적어도 하나의 실시예에 따라 메모리 암호화를 통한 장비 격리를 위한 예시적인 동작들을 예시한다. 동작(300"')에서 펌웨어 개입을 요구하는 이벤트를 검출하는 것은, 예를 들어, 동작(900)에서 OS 스위치 트리거를 검출하는 것을 포함할 수 있다. 도 7에서 동작(700)에 관련하여 논의되는 스위치 트리거들의 예들이 또한 여기서 적용가능하다. 동작(302"')에서 장비를 결정하는 것은, 예를 들어, 동작(902)에서 S3 슬립 상태로부터 재개한 이후 하드웨어(예를 들어, 장비(104))를 초기화하는 것, 및 그 다음에 동작(904)에서 현재 메모리 매핑을 결정하기 위한 메모리 트레이닝을 포함할 수 있다. 동작들(903 및 904)의 예들은 각자 동작들(702 및 704)에 관해 도 7에서 이전에 논의되었다. 유사하게, 동작(304"')에서 장비 대 OS 동작 관계를 결정하는 것은, 예를 들어, 적어도 동작(906)에서 포어그라운드로 이동하는 OS를 결정하는 것, 및 동작(908)에서 메모리 맵을 계산하는 것을 포함할 수 있고, 그 예들은 각자 동작들(706 및 708)에 관해 도 7에서 이전에 논의되었다.
동작(304"')은 펌웨어(102)(예를 들어, AIM(108))가 포어그라운드 OS(106A)에 의해 사용되는 메모리의 영역을 암호화하기 위한 새로운 키를 발생시킬 수 있는 동작(910)을 더 포함할 수 있다. 동작(306"')에서 포어그라운드로 트랜지션하는 OS에 기초하여 장비를 격리시키는 것은, 이후, 예를 들어, 동작(910)에서 발생되는 키를 사용하여 동작(912)에서 포어그라운드 OS(106A)에 의해 사용되는 메모리 영역을 암호화하는 것, 및 이후 키를 보안 스토리지에(예를 들어, SMRAM(804)에) 저장하는 것을 포함할 수 있다. 동작(914)에서, 백그라운드 OS(106B)에 의해 사용되는 메모리 영역을 암호화하기 위해 이전에 사용되었던 키가 보안 스토리지로부터 검색될 수 있고, 동작(916)에서 백그라운드 OS(106B)에 의해 사용되는 메모리 영역을 복호화하기 위해 사용될 수 있다. 일 실시예에서, 동작(916)은 백그라운드 OS(106B)에 의해 사용되는 메모리 영역을 인증하여 그것이 손상되지 않았음을 보장하는 것을 포함할 수 있다. 동작(916)에서, 백그라운드 OS(106B)에 의해 사용되는 메모리 영역의 콘텐츠들이 인증될 수 없는 경우, 트랜지션이 실패할 수 있고, OS(106A)가 포어그라운드에 유지될 수 있다. 인증이 성공적인 경우, 동작(918)에서, 백그라운드 OS(106B)은 포어그라운드로 트랜지션할 수 있고, 포어그라운드 OS(106A)는 백그라운드로 이동할 수 있다.
도 3, 도 5, 도 7 및 도 9가 상이한 실시예들에 따른 동작들을 예시하지만, 도 3, 도 5, 도 7 및 도 9에 도시되는 동작들 모두가 다른 실시예들에 대해 필요하지는 않다는 것이 이해되어야 한다. 실제로, 본 개시내용의 다른 실시예들에서, 도 3, 도 5, 도 7 및 도 9에 도시된 동작들, 및/또는 본원에 기술되는 다른 동작들이, 도면들 중 임의의 것에 구체적으로 도시된 것이 아니라, 본 개시내용과 여전히 완전히 부합하는 방식으로 조합될 수 있다는 것이 본원에서 완전히 참작된다. 따라서, 하나의 도면에 정확하게 도시되지 않은 특징들 및/또는 동작들에 관한 청구항들이 본 개시내용의 사상 및 콘텐츠 내에 있는 것으로 간주된다.
이 출원에서 그리고 청구항들에서 사용되는 바와 같이, 용어 "및/또는"에 의해 결합되는 항목들의 리스트는 열거된 항목들의 임의의 조합을 의미할 수 있다. 예를 들어, 구문 "A, B 및/또는 C"는 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다. 이 출원에서 그리고 청구항들에서 사용되는 바와 같이, 용어 "~ 중 적어도 하나"에 의해 결합되는 항목들의 리스트는 열거된 항목들의 임의의 조합을 의미할 수 있다. 예를 들어, 구문 "A, B 또는 C 중 적어도 하나"는 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다.
본원의 임의의 실시예에서 사용되는 바와 같이, 용어 "모듈"은 전술된 동작들 중 임의의 동작을 수행하도록 구성되는 소프트웨어, 펌웨어 및/또는 회로를 지칭할 수 있다. 소프트웨어는 비일시적인 컴퓨터 판독가능 저장 매체들에 레코딩되는 소프트웨어 패키지, 코드, 명령어들, 명령어 세트들 및/또는 데이터로서 구현될 수 있다. 펌웨어는 메모리 디바이스들에서 하드-코딩되는(예를 들어, 비휘발성인) 코드, 명령어들 또는 명령어 세트들 및/또는 데이터로서 구현될 수 있다. "회로"는, 본원의 임의의 실시예에서 사용되는 바와 같이, 예를 들어, 단독으로 또는 임의의 조합으로, 하드배선된 회로, 하나 이상의 개별 명령어 처리 코어들을 포함하는 컴퓨터 프로세서들과 같은 프로그래밍가능 회로, 상태 머신 회로, 및/또는 프로그래밍가능 회로에 의해 실행되는 명령어들을 저장하는 펌웨어를 포함할 수 있다. 모듈들은, 집합적으로 또는 개별적으로, 더 큰 시스템, 예를 들어, 집적 회로(IC), 시스템 온 칩(SoC), 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버, 스마트폰 등의 부분을 형성하는 회로로서 구현될 수 있다.
본원에 기술되는 동작들 중 임의의 것은, 개별적으로 또는 조합으로, 하나 이상의 프로세서들에 의해 실행될 때 방법들을 수행하는 명령어들을 저장하는 하나 이상의 저장 매체들(예를 들어, 비일시적인 저장 매체들)을 포함하는 시스템에서 구현될 수 있다. 여기서, 프로세서는, 예를 들어, 서버 CPU, 모바일 디바이스 CPU, 및/또는 다른 프로그래밍가능 회로를 포함할 수 있다. 또한, 본원에 기술되는 동작들이, 하나 초과의 상이한 물리적 위치에서의 처리 구조체들과 같이, 복수의 물리적 디바이스들에 걸쳐 분산될 수 있다는 것이 의도된다. 저장 매체는 임의의 타입의 유형 매체, 예를 들어, 하드 디스크, 플로피 디스크, 광학 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 재기록가능 컴팩트 디스크(CD-RW) 및 자기-광학 디스크와 같은 임의의 타입의 디스크, 판독 전용 메모리(ROM), 동적 및 정적 RAM과 같은 랜덤 액세스 메모리(RAM), 소거 및 프로그래밍가능 판독 전용 메모리(EPROM), 전기적 소거 및 프로그래밍가능 판독 전용 메모리(EEPROM), 플래시 메모리, 고체 상태 디스크(SSD), 임베디드 멀티미디어 카드(eMMC), 보안 디지털 입력/출력(SDIO) 카드, 자기 또는 광학 카드와 같은 반도체 디바이스들, 또는 전자 명령어들을 저장하기에 적합한 임의의 타입의 매체를 포함할 수 있다. 다른 실시예들은 프로그래밍가능 제어 디바이스에 의해 실행되는 소프트웨어 모듈들로서 구현될 수 있다.
따라서, 본 출원은 멀티-운영 체제 디바이스들에 대한 액세스 격리에 관한 것이다. 일반적으로, 디바이스는 펌웨어를 사용하여, 디바이스 상에서 동시에 동작하는 하나 초과의 운영 체제(OS)를 수용하거나 하나의 OS로부터 다른 것으로 트랜지션하도록 구성될 수 있다. 펌웨어 내의 액세스 격리 모듈(AIM)은 디바이스 장비 구성을 결정할 수 있고, 다수의 운영 체제들에 의한 사용을 위해 장비를 파티셔닝할 수 있다. AIM은 OS-기반 장비 감지를 디스에이블할 수 있고, 맞춤화된 표들을 사용하여 장비의 적어도 부분을 각각의 OS에 할당할 수 있다. 운영 체제들 사이에서 트랜지션할 때, AIM은 하나의 OS로부터의 정보가 다른 것들에 대해 액세스가능하지 않음을 보장하도록 보조할 수 있다. 예를 들어, AIM은 언제 포어그라운드 OS가 백그라운드 OS에 의해 대체되어야 하는지를 검출할 수 있고, 백그라운드 OS가 활성으로 되기 이전에 포어그라운드 OS의 파일들을 보호(예를 들어, 로크아웃 또는 암호화)할 수 있다.
후속하는 예들은 추가적인 실시예들에 관한 것이다. 하기에 제공되는 바와 같이, 본 개시내용의 후속하는 예들은, 디바이스, 방법, 실행될 때 머신이 방법에 기초하여 동작들을 수행하도록 하는 명령어들을 저장하기 위한 적어도 하나의 머신-판독가능 매체, 멀티-운영 체제 디바이스들에 대한 액세스 격리를 위한 방법 및/또는 시스템에 기초하여 동작들을 수행하기 위한 수단과 같은 주제 자료를 포함할 수 있다.
예 1에 따르면, 멀티-운영 체제 디바이스가 제공된다. 디바이스는 디바이스에서의 동작들을 지원하는 장비, 장비의 적어도 부분과 상호작용하는 적어도 2개의 운영 체제들, 및 적어도 2개의 운영 체제들 각각에 액세스가능한 디바이스 내의 장비의 부분을 결정하는 액세스 격리 모듈을 적어도 포함하는 펌웨어를 포함할 수 있다.
예 2는 예 1의 요소들을 포함할 수 있고, 장비의 부분을 결정하는 액세스 격리 모듈은, 디바이스의 활성화에 후속하여, 장비를 적어도 2개의 운영 체제들에 의해 액세스가능한 부분으로 파티셔닝하는 액세스 격리 모듈을 포함한다.
예 3은 예 2의 요소들을 포함할 수 있고, 여기서, 장비의 부분을 결정하는 액세스 격리 모듈은 적어도 2개의 운영 체제들이 장비를 발견하는 것을 허용하는 펌웨어에서의 기능성을 비활성화시키는 액세스 격리 모듈을 포함한다.
예 4는 예 3의 요소들을 포함할 수 있고, 장비의 부분을 결정하는 액세스 격리 모듈은 적어도 2개의 운영 체제들 각각에 대응하는 표들을 발생시키고, 표들은 디바이스의 활성화에 후속하여 적어도 2개의 운영 체제들 각각에 액세스가능한 장비의 부분의 ID를 적어도 포함한다.
예 5는 예 3의 요소들을 포함할 수 있고, 여기서 적어도 2개의 운영 체제들이 디바이스 내로 로딩하고, 표들에 의해 식별되는 장비의 부분들을 사용하여 동시에 동작한다.
예 6은 예 1 내지 5 중 임의의 것의 요소들을 포함할 수 있고, 여기서 장비는 적어도 2개의 운영 체제들에 대응하는 데이터가 저장되는 메모리를 포함하는 메모리 모듈을 적어도 포함한다.
예 7은 예 6의 요소들을 포함할 수 있고, 여기서 적어도 2개의 운영 체제들은 포어그라운드 운영 체제 및 백그라운드 운영 체제를 포함하고, 액세스 격리 모듈은 포어그라운드 운영 체제로부터 백그라운드 운영 체제로 트랜지션하기 위한 트리거를 추가로 검출한다.
예 8은 예 7의 요소들을 포함할 수 있고, 여기서, 액세스 격리 모듈은 추가로, 트리거의 검출 시에, 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 결정하고, 포어그라운드 운영 체제에 의해 사용되는 것으로 결정되는 메모리의 부분을 백그라운드 운영 체제에 대해 액세스불가능하게 한다.
예 9는 예 8의 요소들을 포함할 수 있고, 여기서, 포어그라운드 운영 체제에 의해 사용되는 것으로 결정되는 메모리의 부분을 백그라운드 운영 체제에 대해 액세스불가능하게 하는 액세스 격리 모듈은 메모리의 부분에 대한 액세스를 방지하기 위해 메모리 제어기 레지스터 설정들을 조정하거나 로크다운하는 것 중 적어도 하나를 수행하는 액세스 격리 모듈을 포함한다.
예 10은 예 8의 요소들을 포함할 수 있고, 여기서, 포어그라운드 운영 체제에 의해 사용되는 것으로 결정되는 메모리의 부분을 백그라운드 운영 체제에 의해 액세스불가능하게 하는 액세스 격리 모듈은 암호화 키를 발생시키고, 키를 사용하여 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 암호화하고, 장비 내의 보안 메모리에 키를 저장하는 액세스 격리 모듈을 포함한다.
예 11은 예 10의 요소들을 포함할 수 있고, 여기서 액세스 격리 모듈은 추가로 보안 메모리로부터 제2 암호화 키를 획득하고, 제2 키를 사용하여 백그라운드 운영 체제에 의해 사용되는 메모리의 부분을 복호화하고, 포어그라운드 운영 체제가 백그라운드 운영 체제에 의해 대체되도록 한다.
예 12는 예 1 내지 5 중 임의의 것의 요소들을 포함할 수 있고, 여기서, 장비의 부분을 결정하는 액세스 격리 모듈은, 디바이스의 활성화에 후속하여, 장비를 적어도 2개의 운영 체제들에 의해 액세스가능한 부분들로 파티셔닝하고, 적어도 2개의 운영 체제들이 장비를 발견하는 것을 허용하는 펌웨어에서의 기능성을 비활성화시키고, 적어도 2개의 운영 체제들 각각에 대응하는 표들을 발생시키는 액세스 격리 모듈을 포함하고, 표들은 디바이스의 활성화에 후속하여 적어도 2개의 운영 체제들 각각에 대해 액세스가능한 장비의 부분의 ID를 적어도 포함한다.
예 13은 예 12의 요소들을 포함할 수 있고, 여기서, 적어도 2개의 운영 체제들은 디바이스 내로 로딩하고, 표들에 의해 식별되는 장비의 부분들을 사용하여 동시에 동작한다.
예 14는 예 1의 요소들을 포함할 수 있고, 여기서, 장비는 적어도 2개의 운영 체제들에 대응하는 데이터가 저장되는 메모리를 포함하는 메모리 모듈을 적어도 포함한다.
예 15는 예 14의 요소들을 포함할 수 있고, 여기서, 적어도 2개의 운영 체제들은 포어그라운드 운영 체제 및 백그라운드 운영 체제를 포함하고, 액세스 격리 모듈은 포어그라운드 운영 체제로부터 백그라운드 운영 체제로 트랜지션하기 위한 트리거를 추가로 검출한다.
예 16은 예 15의 요소들을 포함할 수 있고, 여기서, 액세스 격리 모듈은 추가로, 트리거의 검출 시에, 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 결정하고, 메모리의 부분에 대한 액세스를 방지하도록 메모리 제어기 레지스터 설정을 조정하거나 로크다운하는 것 중 적어도 하나, 또는 암호화 키를 발생시키고, 키를 사용하여 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 암호화하고 장비의 보안 메모리에 키를 저장하는 것 중 적어도 하나에 의해, 포어그라운드 운영 체제에 의해 사용되는 것으로 결정되는 메모리의 부분이 백그라운드 운영 체제에 대해 액세스불가능하게 한다.
예 17에 따르면, 디바이스 상에서 다수의 운영 체제들을 수용하기 위한 방법이 제공된다. 방법은 디바이스에서 펌웨어 개입을 요구하는 이벤트를 검출하는 것, 디바이스 내에 존재하는 장비를 결정하는 것, 디바이스 내에 존재하는 적어도 2개의 운영 체제와 장비 사이의 관계를 결정하는 것, 및 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것을 포함할 수 있다.
예 18은 예 17의 요소들을 포함할 수 있고, 여기서, 이벤트를 검출하는 것은 디바이스의 활성화의 검출 또는 디바이스에서 포어그라운드 운영 체제로부터 백그라운드 운영 체제로 트랜지션하기 위한 트리거를 검출하는 것 중 적어도 하나를 포함한다.
예 19는 예 18의 요소들을 포함할 수 있고, 여기서, 디바이스 내의 장비를 결정하는 것은 장비를 적어도 2개의 운영 체제들에 의해 액세스가능한 부분들로 파티셔닝하는 것을 포함한다.
예 20은 예 19의 요소들을 포함할 수 있고, 여기서, 장비와 적어도 2개의 운영 체제들 사이의 관계를 결정하는 것은 적어도 2개의 운영 체제들이 장비를 발견하는 것을 허용하는 펌웨어에서의 기능성을 비활성화시키는 것, 및 적어도 2개의 운영 체제들 각각에 대응하는 표들을 발생시키는 것을 포함하고, 표들은 디바이스의 활성화에 후속하여 적어도 2개의 운영 체제들 각각에 의해 액세스가능한 장비의 부분의 ID를 적어도 포함한다.
예 21은 예 20의 요소들을 포함할 수 있고, 여기서, 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것은 적어도 2개의 운영 체제들이 디바이스 내로 로딩하고, 표들에 의해 식별되는 장비의 부분들을 사용하여 동시에 동작하는 것을 허용하는 것을 포함한다.
예 22는 예 18 내지 21 중 임의의 것의 요소들을 포함할 수 있고, 여기서, 장비와 적어도 2개의 운영 체제들 사이의 관계를 결정하는 것은 적어도 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 결정하는 것을 포함한다.
예 23은 예 22의 요소들을 포함할 수 있고, 여기서, 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것은, 트랜지션 이전에, 메모리 제어기 레지스터 설정들을 조정하거나 로크다운하는 것 중 적어도 하나에 의해, 또는 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 암호화함으로써, 적어도 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분이 백그라운드 운영 체제에 대해 액세스불가능하게 하는 것을 포함한다.
예 24에 따르면, 위의 예 17 내지 23 중 임의의 것의 방법을 수행하도록 배열되는 칩셋이 제공된다.
예 25에 따르면, 디바이스를 적어도 포함하는 시스템이 제공되고, 시스템은 위의 예 17 내지 23 중 임의의 것의 방법을 수행하도록 배열된다.
예 26에 따르면, 멀티-운영 체제 디바이스들에 대한 액세스 격리를 위해 구성되는 디바이스가 제공되며, 디바이스는 위의 예 17 내지 23 중 임의의 것의 방법을 수행하도록 배열된다.
예 27에 따르면, 하나 이상의 프로세서들에 의해 실행될 때, 디바이스에서 펌웨어 개입을 요구하는 이벤트를 검출하는 것, 디바이스 내에 존재하는 장비를 결정하는 것, 디바이스 내에 존재하는 적어도 2개의 운영 체제들과 장비 사이의 관계를 결정하는 것, 및 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것을 포함하는, 디바이스 상에서 다수의 운영 체제들을 수용하기 위한 후속 동작들을 초래하는 명령어들을, 개별적으로 또는 조합하여, 저장하는 적어도 하나의 머신-판독가능 저장 매체가 제공된다.
예 28은 예 27의 요소들을 포함할 수 있고, 여기서, 이벤트를 검출하는 것은 디바이스의 활성화를 검출하는 것 또는 디바이스에서 포어그라운드 운영 체제로부터 백그라운드 운영 체제로 트랜지션하기 위한 트리거를 검출하는 것 중 적어도 하나를 포함한다.
예 29는 예 28의 요소들을 포함할 수 있고, 여기서, 디바이스 내의 장비를 결정하는 것은 장비를 적어도 2개의 운영 체제들에 의해 액세스가능한 부분들로 파티셔닝하는 것을 포함한다.
예 30은 예 29의 요소들을 포함할 수 있고, 여기서, 장비와 적어도 2개의 운영 체제들 사이의 관계를 결정하는 것은 적어도 2개의 운영 체제들이 장비를 발견하는 것을 허용하는 펌웨어에서의 기능성을 비활성화시키는 것, 및 적어도 2개의 운영 체제들 각각에 대응하는 표들을 발생시키는 것을 포함하고, 표들은 디바이스의 활성화에 후속하여 적어도 2개의 운영 체제들 각각에 의해 액세스가능한 장비의 부분의 ID를 적어도 포함한다.
예 31은 예 30의 요소들을 포함할 수 있고, 여기서, 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것은 적어도 2개의 운영 체제들이 디바이스 내로 로딩하고, 표들에 의해 식별되는 장비의 부분들을 사용하여 동시에 동작하는 것을 허용하는 것을 포함한다.
예 32는 예 28 내지 31 중 임의의 것의 요소들을 포함할 수 있고, 여기서, 장비와 적어도 2개의 운영 체제들 사이의 관계를 결정하는 것은 적어도 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 결정하는 것을 포함한다.
예 33은 예 32의 요소들을 포함할 수 있고, 여기서, 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키는 것은, 트랜지션 이전에, 메모리 제어기 레지스터 설정들을 조정하거나 로크다운하는 것 중 적어도 하나에 의해, 또는 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 암호화함으로써, 적어도 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분이 백그라운드 운영 체제에 대해 액세스불가능하게 하는 것을 포함한다.
예 34에 따르면, 디바이스에서 펌웨어 개입을 요구하는 이벤트를 검출하기 위한 수단, 디바이스 내에 존재하는 장비를 결정하기 위한 수단, 디바이스 내에 존재하는 적어도 2개의 운영 체제들과 장비 사이의 관계를 결정하기 위한 수단, 및 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키기 위한 수단을 포함하는, 디바이스 상에서 다수의 운영 체제들을 수용하기 위한 시스템이 제공된다.
예 35는 예 34의 요소들을 포함할 수 있고, 여기서 이벤트를 검출하기 위한 수단은 디바이스의 활성화를 검출하는 것 또는 디바이스에서 포어그라운드 운영 체제로부터 백그라운드 운영 체제로 트랜지션하기 위한 트리거를 검출하는 것 중 적어도 하나를 위한 수단을 포함한다.
예 36은 예 35의 요소들을 포함할 수 있고, 여기서, 디바이스 내의 장비를 결정하기 위한 수단은 장비를 적어도 2개의 운영 체제들에 의해 액세스가능한 부분들로 파티셔닝하기 위한 수단을 포함한다.
예 37은 예 36의 요소들을 포함할 수 있고, 여기서, 장비와 적어도 2개의 운영 체제들 사이의 관계를 결정하기 위한 수단은 적어도 2개의 운영 체제들이 장비를 발견하는 것을 허용하는 펌웨어에서의 기능성을 비활성화시키기 위한 수단, 및 적어도 2개의 운영 체제들 각각에 대응하는 표들을 발생시키기 위한 수단을 포함하고, 표들은 디바이스의 활성화에 후속하여 적어도 2개의 운영 체제들 각각에 의해 액세스가능한 장비의 부분의 ID를 적어도 포함한다.
예 38은 예 37의 요소들을 포함할 수 있고, 여기서, 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키기 위한 수단은 적어도 2개의 운영 체제들이 디바이스 내로 로딩하고 표들에 의해 식별되는 장비의 부분들을 사용하여 동시에 동작하는 것을 허용하기 위한 수단을 포함한다.
예 39는 예 35 내지 38 중 임의의 것의 요소들을 포함할 수 있고, 여기서, 장비와 적어도 2개의 운영 체제들 사이의 관계를 결정하기 위한 수단은 적어도 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 결정하기 위한 수단을 포함한다.
예 40은 예 39의 요소들을 포함할 수 있고, 여기서, 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 장비의 적어도 부분을 격리시키기 위한 수단은, 트랜지션 이전에, 메모리 제어기 레지스터 설정들을 조정하거나 로크다운하는 것 중 적어도 하나에 의해, 또는 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 암호화함으로써, 적어도 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분이 백그라운드 운영 체제에 대해 액세스불가능하게 하기 위한 수단을 포함한다.
본원에서 사용되는 용어들 및 표현들은 제한이 아닌 설명의 용어들로서 사용되며, 이러한 용어들 및 표현들의 사용에 있어, 도시되고 기술되는 특징들(또는 그것의 부분들)의 임의의 등가물들을 제외하려는 의도가 존재하지 않으며, 다양한 수정들이 청구항들의 범위 내에서 가능하다는 것이 인지된다. 따라서, 청구항들은 모든 이러한 등가물들을 커버하도록 의도된다.

Claims (25)

  1. 멀티-운영 체제 디바이스로서,
    상기 디바이스에서의 동작들을 지원하는 장비;
    상기 장비의 적어도 부분과 상호작용하는 적어도 2개의 운영 체제들; 및
    펌웨어
    를 포함하고, 상기 펌웨어는:
    상기 디바이스에서 리소스 파티션(resources partition)에 대한 셋업 옵션들을 판독하는 것;
    고정된 ACPI 디스크립션 표(fixed Advanced Configuration and Power Interface description table)(FADT)에서 CPU 리소스들을 파티셔닝하는 것;
    메모리 맵에서 메모리 리소스들을 파티셔닝하는 것; 및
    PCI(peripheral component interconnect) 디바이스들을 열거하고 I/O 및 메모리-매핑된 I/O(MMIO)를 적어도 하나의 PCI 베이스 어드레스 레지스터(base address register)(BAR)에 할당하는 것
    을 포함하여 상기 장비를 발견하고;
    상기 장비와 상기 적어도 2개의 운영 체제들과의 전망(prospective) 연관 또는 반사(reflective) 연관을 기반으로 상기 적어도 2개의 운영 체제들과 상기 장비 사이에 관계가 존재하는지 결정하고;
    상기 적어도 2개의 운영 체제들 각각과 관계가 있는 것으로 결정된 임의의 장비를 소프트웨어-발견가능하지 않은 것으로 선언하고 - 상기 선언하는 것은:
    PCI 디바이스들을 차별화된 시스템 디스크립션 표(differentiated system description table)(DSDT)에서 ACPI 디바이스들로서 할당하는 것; 및
    상기 적어도 2개의 운영 체제들이 상기 장비에서 PCI 디바이스들을 자동으로 발견할 수 있게 하는 것을 방지하도록 PCI 구성 공간을 디스에이블하는 것을 포함함 -;
    상기 적어도 2개의 운영 체제들 각각에 대한 커스텀 ACPI 표들을 생성하는 것을 포함하는 상기 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 상기 장비의 적어도 부분을 격리하고;
    각각의 운영 체제와 관련된 상기 커스텀 ACPI 표를 이용하여 상기 적어도 2개의 운영 체제들을 부팅하는, 멀티-운영 체제 디바이스.
  2. 제1항에 있어서,
    상기 펌웨어는, 상기 디바이스의 활성화에 후속하여, 상기 장비를 상기 적어도 2개의 운영 체제들에 의해 액세스가능한 부분들로 파티셔닝하는, 멀티-운영 체제 디바이스.
  3. 제2항에 있어서,
    상기 펌웨어는, 상기 적어도 2개의 운영 체제들이 상기 장비를 발견하는 것을 허용하는 상기 펌웨어에서의 기능성을 비활성화시키는, 멀티-운영 체제 디바이스.
  4. 삭제
  5. 제3항에 있어서,
    상기 적어도 2개의 운영 체제들은 상기 디바이스 내로 로딩되며, 상기 커스텀 ACPI 표들에 의해 식별되는 상기 장비의 부분들을 사용하여 동시에 동작하는, 멀티-운영 체제 디바이스.
  6. 제1항에 있어서,
    상기 장비는, 상기 적어도 2개의 운영 체제들에 대응하는 데이터가 저장되는 메모리를 포함하는 메모리 회로를 적어도 포함하는, 멀티-운영 체제 디바이스.
  7. 제6항에 있어서,
    상기 적어도 2개의 운영 체제들은 포어그라운드 운영 체제 및 백그라운드 운영 체제를 포함하고, 상기 펌웨어는 상기 포어그라운드 운영 체제로부터 상기 백그라운드 운영 체제로 트랜지션(transition)하기 위한 트리거를 또한 검출하는, 멀티-운영 체제 디바이스.
  8. 제7항에 있어서,
    상기 펌웨어는 또한, 상기 트리거의 검출 시에, 상기 포어그라운드 운영 체제에 의해 사용되는 상기 메모리의 부분을 결정하고, 상기 포어그라운드 운영 체제에 의해 사용되는 것으로 결정되는 상기 메모리의 부분을 상기 백그라운드 운영 체제에 대해 액세스불가능하게 하는, 멀티-운영 체제 디바이스.
  9. 제8항에 있어서,
    상기 펌웨어는, 상기 메모리의 부분에 대한 액세스를 방지하기 위해 메모리 제어기 레지스터 설정들을 로크다운(lock down)하는 것 또는 조정하는 것 중 적어도 하나를 수행하는, 멀티-운영 체제 디바이스.
  10. 제8항에 있어서,
    상기 펌웨어는, 암호화 키를 발생시키고, 상기 키를 사용하여 상기 포어그라운드 운영 체제에 의해 사용되는 상기 메모리의 부분을 암호화하고, 상기 장비에서의 보안 메모리에 상기 키를 저장하는, 멀티-운영 체제 디바이스.
  11. 제10항에 있어서,
    상기 펌웨어는 또한, 상기 보안 메모리로부터 제2 암호화 키를 획득하고, 상기 제2 암호화 키를 사용하여 상기 백그라운드 운영 체제에 의해 사용되는 메모리의 부분을 복호화하고, 상기 포어그라운드 운영 체제가 상기 백그라운드 운영 체제에 의해 대체되도록 하는, 멀티-운영 체제 디바이스.
  12. 디바이스 상에 다수의 운영 체제들을 수용(accommodating)하기 위한 방법으로서,
    상기 디바이스에서 펌웨어 개입(firmware intervention)을 요구하는 이벤트를 검출하는 단계;
    상기 디바이스에 존재하는 장비를 결정하는 단계 - 상기 결정하는 단계는:
    상기 디바이스에서 리소스 파티션(resources partition)에 대한 셋업 옵션들을 판독하는 것;
    고정된 ACPI 디스크립션 표(FADT)에서 CPU 리소스들을 파티셔닝하는 것;
    메모리 맵에서 메모리 리소스들을 파티셔닝하는 것; 및
    PCI 디바이스들을 열거하고 I/O 및 메모리-매핑된 I/O(MMIO)를 적어도 하나의 PCI 베이스 어드레스 레지스터(BAR)에 할당하는 것을 포함함 -;
    상기 장비와 적어도 2개의 운영 체제들과의 전망(prospective) 연관 또는 반사(reflective) 연관을 기반으로 상기 디바이스에 존재하는 상기 적어도 2개의 운영 체제들과 상기 장비 사이의 관계를 결정하는 단계;
    상기 적어도 2개의 운영 체제들 각각과 관계가 있는 것으로 결정된 임의의 장비를 소프트웨어-발견가능하지 않은 것으로 선언하는 단계 - 상기 선언하는 단계는:
    PCI 디바이스들을 차별화된 시스템 디스크립션 표(DSDT)에서 ACPI 디바이스들로서 할당하는 것; 및
    상기 적어도 2개의 운영 체제들이 상기 장비에서 PCI 디바이스들을 자동으로 발견할 수 있게 하는 것을 방지하도록 PCI 구성 공간을 디스에이블하는 것을 포함함 -;
    상기 적어도 2개의 운영 체제들 각각에 대한 커스텀 ACPI 표들을 생성하는 것을 포함하는 상기 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 상기 장비의 적어도 부분을 격리하는 단계; 및
    각각의 운영 체제와 관련된 상기 커스텀 ACPI 표를 이용하여 상기 적어도 2개의 운영 체제들을 부팅하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    상기 이벤트를 검출하는 단계는, 상기 디바이스의 활성화를 검출하는 단계, 또는 상기 디바이스에서 포어그라운드 운영 체제로부터 백그라운드 운영 체제로 트랜지션하기 위한 트리거를 검출하는 단계 중 적어도 하나를 포함하는, 방법.
  14. 제13항에 있어서,
    상기 디바이스에서 장비를 결정하는 단계는, 상기 장비를 상기 적어도 2개의 운영 체제들에 의해 액세스가능한 부분들로 파티셔닝하는 단계를 포함하는, 방법.
  15. 삭제
  16. 제14항에 있어서,
    상기 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 상기 장비의 적어도 부분을 격리시키는 단계는, 상기 적어도 2개의 운영 체제들이 상기 디바이스 내로 로딩되며, 상기 커스텀 ACPI 표에 의해 식별되는 상기 장비의 부분들을 사용하여 동시에 동작하는 것을 허용하는 단계를 포함하는, 방법.
  17. 제13항에 있어서,
    상기 적어도 2개의 운영 체제들과 상기 장비 사이의 관계를 결정하는 단계는, 적어도 상기 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 결정하는 단계를 포함하는, 방법.
  18. 제17항에 있어서,
    상기 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 상기 장비의 적어도 부분을 격리시키는 단계는, 상기 트랜지션 이전에, 메모리 제어기 레지스터 설정들을 조정하는 것 또는 로크다운하는 것 중 적어도 하나에 의해, 또는 상기 포어그라운드 운영 체제에 의해 사용되는 상기 메모리의 부분을 암호화하는 것에 의해, 적어도 상기 포어그라운드 운영 체제에 의해 사용되는 상기 메모리의 부분을 상기 백그라운드 운영 체제에 대해 액세스불가능하게 하는 단계를 포함하는, 방법.
  19. 개별적으로 또는 조합하여, 명령어들이 저장된 적어도 하나의 비-일시적 머신 판독가능 저장 매체로서,
    상기 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 디바이스 상에 다수의 운영 체제들을 수용하기 위하여:
    상기 디바이스에서 펌웨어 개입을 요구하는 이벤트를 검출하는 동작;
    상기 디바이스에 존재하는 장비를 결정하는 동작 - 상기 결정하는 동작은:
    상기 디바이스에서 리소스 파티션에 대한 셋업 옵션들을 판독하는 것;
    고정된 ACPI 디스크립션 표(FADT)에서 CPU 리소스들을 파티셔닝하는 것;
    메모리 맵에서 메모리 리소스들을 파티셔닝하는 것; 및
    PCI 디바이스들을 열거하고 I/O 및 메모리-매핑된 I/O(MMIO)를 적어도 하나의 PCI 베이스 어드레스 레지스터(BAR)에 할당하는 것을 포함함 -;
    상기 장비와 적어도 2개의 운영 체제들과의 전망(prospective) 연관 또는 반사(reflective) 연관을 기반으로 상기 디바이스에 존재하는 상기 적어도 2개의 운영 체제들과 상기 장비 사이의 관계를 결정하는 동작;
    상기 적어도 2개의 운영 체제들 각각과 관계가 있는 것으로 결정된 임의의 장비를 소프트웨어-발견가능하지 않은 것으로 선언하는 동작 - 상기 선언하는 동작은:
    PCI 디바이스들을 차별화된 시스템 디스크립션 표(DSDT)에서 ACPI 디바이스들로서 할당하는 것; 및
    상기 적어도 2개의 운영 체제들이 상기 장비에서 PCI 디바이스들을 자동으로 발견할 수 있게 하는 것을 방지하도록 PCI 구성 공간을 디스에이블하는 것을 포함함 -;
    상기 적어도 2개의 운영 체제들 각각에 대한 커스텀 ACPI 표들을 생성하는 것을 포함하는 상기 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 상기 장비의 적어도 부분을 격리하는 동작; 및
    각각의 운영 체제와 관련된 상기 커스텀 ACPI 표를 이용하여 상기 적어도 2개의 운영 체제들을 부팅하는 동작
    을 포함하는 동작들을 야기하는, 적어도 하나의 비-일시적 머신 판독가능 저장 매체.
  20. 제19항에 있어서,
    상기 이벤트를 검출하는 동작은, 상기 디바이스의 활성화를 검출하는 동작, 또는 상기 디바이스에서 포어그라운드 운영 체제로부터 백그라운드 운영 체제로 트랜지션하기 위한 트리거를 검출하는 동작 중 적어도 하나를 포함하는, 적어도 하나의 비-일시적 머신 판독가능 저장 매체.
  21. 제20항에 있어서,
    상기 디바이스에서 장비를 결정하는 동작은, 상기 장비를 상기 적어도 2개의 운영 체제들에 의해 액세스가능한 부분들로 파티셔닝하는 동작을 포함하는, 적어도 하나의 비-일시적 머신 판독가능 저장 매체.
  22. 삭제
  23. 제19항에 있어서,
    상기 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 상기 장비의 적어도 부분을 격리시키는 동작은, 상기 적어도 2개의 운영 체제들이 상기 디바이스 내로 로딩되며, 상기 커스텀 ACPI 표에 의해 식별되는 상기 장비의 부분들을 사용하여 동시에 동작하는 것을 허용하는 동작을 포함하는, 적어도 하나의 비-일시적 머신 판독가능 저장 매체.
  24. 제20항에 있어서,
    상기 적어도 2개의 운영 체제들과 상기 장비 사이의 관계를 결정하는 동작은, 적어도 상기 포어그라운드 운영 체제에 의해 사용되는 메모리의 부분을 결정하는 동작을 포함하는, 적어도 하나의 비-일시적 머신 판독가능 저장 매체.
  25. 제24항에 있어서,
    상기 적어도 2개의 운영 체제들 각각에 의한 사용을 위해 상기 장비의 적어도 부분을 격리시키는 동작은, 상기 트랜지션 이전에, 메모리 제어기 레지스터 설정들을 조정하는 것 또는 로크다운하는 것 중 적어도 하나에 의해, 또는 상기 포어그라운드 운영 체제에 의해 사용되는 상기 메모리의 부분을 암호화하는 것에 의해, 적어도 상기 포어그라운드 운영 체제에 의해 사용되는 상기 메모리의 부분을 상기 백그라운드 운영 체제에 대해 액세스불가능하게 하는 동작을 포함하는, 적어도 하나의 비-일시적 머신 판독가능 저장 매체.
KR1020167022261A 2014-03-19 2014-03-19 멀티-운영 체제 디바이스들에 대한 액세스 격리 KR101920980B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/073691 WO2015139228A1 (en) 2014-03-19 2014-03-19 Access isolation for multi-operating system devices

Publications (2)

Publication Number Publication Date
KR20160108517A KR20160108517A (ko) 2016-09-19
KR101920980B1 true KR101920980B1 (ko) 2018-11-21

Family

ID=54143655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167022261A KR101920980B1 (ko) 2014-03-19 2014-03-19 멀티-운영 체제 디바이스들에 대한 액세스 격리

Country Status (6)

Country Link
US (2) US10289425B2 (ko)
EP (1) EP3120238B1 (ko)
JP (1) JP6466476B2 (ko)
KR (1) KR101920980B1 (ko)
CN (1) CN106255955B (ko)
WO (1) WO2015139228A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2517493A (en) * 2013-08-23 2015-02-25 Advanced Risc Mach Ltd Handling access attributes for data accesses
WO2015139228A1 (en) * 2014-03-19 2015-09-24 Intel Patent Group Access isolation for multi-operating system devices
EP3062225B1 (en) * 2015-02-24 2019-07-03 Huawei Technologies Co., Ltd. Multi-operating system device, notification device and methods thereof
CN105721942A (zh) * 2016-01-26 2016-06-29 青岛海信移动通信技术股份有限公司 一种智能电视的启动方法和智能电视
WO2017201692A1 (zh) * 2016-05-25 2017-11-30 北京小米移动软件有限公司 应用加密方法及装置
KR102494241B1 (ko) * 2016-08-18 2023-02-03 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
CN107911816B (zh) * 2017-11-27 2020-03-27 泰凌微电子(上海)有限公司 用于多模IoT设备的启动方法、多模IoT设备及存储介质
US11194588B2 (en) * 2018-07-09 2021-12-07 Dell Products L.P. Information handling systems and method to provide secure shared memory access at OS runtime
US11068295B2 (en) * 2019-04-12 2021-07-20 Ghost Locomotion Inc. Device operation across multiple operating system modalities
EP3835951A1 (en) * 2019-12-13 2021-06-16 Virtual Open Systems System platform initializer for mixed-critical systems
US11640312B2 (en) * 2020-02-27 2023-05-02 Hewlett Packard Enterprise Development Lp System reset using a controller
CN113127120B (zh) * 2021-04-08 2023-01-06 广东便捷神科技股份有限公司 一种基于移动app的界面动态化方法
US20230052789A1 (en) * 2021-08-12 2023-02-16 Microsoft Technology Licensing, Llc Isolating operating system environments in embedded devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205203A1 (en) 2003-03-24 2004-10-14 Marcus Peinado Enforcing isolation among plural operating systems
JP2008046887A (ja) * 2006-08-17 2008-02-28 Ntt Docomo Inc Os切替装置及びos切替方法
US20120297177A1 (en) * 2010-11-15 2012-11-22 Ghosh Anup K Hardware Assisted Operating System Switch

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115443A1 (en) * 2001-12-18 2003-06-19 Cepulis Darren J. Multi-O/S system and pre-O/S boot technique for partitioning resources and loading multiple operating systems thereon
US7017034B2 (en) * 2002-08-07 2006-03-21 Hewlett-Packard Development Company, L.P. System and method for using a firmware interface table to dynamically load multiple ACPI SSDT tables
CN100428671C (zh) * 2004-03-26 2008-10-22 联想(北京)有限公司 网络隔离装置及方法
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
CN100413359C (zh) * 2005-01-28 2008-08-20 北京握奇数据系统有限公司 移动终端
US7437546B2 (en) * 2005-08-03 2008-10-14 Intel Corporation Multiple, cooperating operating systems (OS) platform system and method
US7428609B2 (en) * 2005-12-29 2008-09-23 Intel Corporation Method and system to partition hardware resources between operating systems
US20070239965A1 (en) * 2006-03-31 2007-10-11 Saul Lewites Inter-partition communication
US8056084B2 (en) * 2007-01-25 2011-11-08 Hewlett-Packard Development Company, L.P. Method and system for dynamically reallocating a resource among operating systems without rebooting of the computer system
CN101241445B (zh) * 2007-02-08 2011-07-27 联想(北京)有限公司 虚拟机系统及其访问显卡的方法
US7962665B2 (en) * 2008-09-26 2011-06-14 International Business Machines Corporation Managing condition indicators that use the same physical indicator device in a logically partitioned computer system
US8239667B2 (en) * 2008-11-13 2012-08-07 Intel Corporation Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory
US9069591B1 (en) * 2009-09-10 2015-06-30 Parallels IP Holding GmbH Patching host OS structures for hardware isolation of virtual machines
US8959253B2 (en) * 2009-12-23 2015-02-17 Intel Corporation Virtualizing a powered down input/output device
US8719561B2 (en) * 2010-11-29 2014-05-06 International Business Machines Corporation Automatic configuration sampling for managing configuration parameters of a computer system
EP2562675A1 (fr) * 2011-08-19 2013-02-27 Gemalto SA Procédé de cloisonnement matériel des ressources d'un système informatique sécurisé
WO2015139228A1 (en) * 2014-03-19 2015-09-24 Intel Patent Group Access isolation for multi-operating system devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205203A1 (en) 2003-03-24 2004-10-14 Marcus Peinado Enforcing isolation among plural operating systems
JP2008046887A (ja) * 2006-08-17 2008-02-28 Ntt Docomo Inc Os切替装置及びos切替方法
US20120297177A1 (en) * 2010-11-15 2012-11-22 Ghosh Anup K Hardware Assisted Operating System Switch

Also Published As

Publication number Publication date
EP3120238B1 (en) 2020-10-28
EP3120238A1 (en) 2017-01-25
US20190278611A1 (en) 2019-09-12
US20160124751A1 (en) 2016-05-05
WO2015139228A1 (en) 2015-09-24
EP3120238A4 (en) 2017-11-15
JP6466476B2 (ja) 2019-02-06
US10684865B2 (en) 2020-06-16
CN106255955A (zh) 2016-12-21
CN106255955B (zh) 2021-07-27
US10289425B2 (en) 2019-05-14
JP2017511554A (ja) 2017-04-20
KR20160108517A (ko) 2016-09-19

Similar Documents

Publication Publication Date Title
KR101920980B1 (ko) 멀티-운영 체제 디바이스들에 대한 액세스 격리
Lentz et al. Secloak: Arm trustzone-based mobile peripheral control
EP3706361B1 (en) Loading and virtualizing cryptographic keys
US10445154B2 (en) Firmware-related event notification
KR101019937B1 (ko) 보안 운영 시스템 스위칭
US10146940B2 (en) Multiple hardware-separated computer operating systems within a single processor computer system to prevent cross-contamination between systems
JP6627180B2 (ja) 改善されたハイブリッドスリープ電力管理のための技術
TWI616818B (zh) 用於系統管理請求之虛擬高特權模式
US20140229942A1 (en) Isolated guest creation in a virtualized computing system
CN105940375B (zh) 针对多操作系统设备的动态再分配
US9600314B2 (en) Scheduler limited virtual device polling
US20170337073A1 (en) System and method for configuring a virtual device
US10121001B1 (en) System and method for monolithic scheduling in a portable computing device using a hypervisor

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant