KR20230065526A - 메모리 관리 시스템 및 메모리 관리 방법 - Google Patents

메모리 관리 시스템 및 메모리 관리 방법 Download PDF

Info

Publication number
KR20230065526A
KR20230065526A KR1020210151190A KR20210151190A KR20230065526A KR 20230065526 A KR20230065526 A KR 20230065526A KR 1020210151190 A KR1020210151190 A KR 1020210151190A KR 20210151190 A KR20210151190 A KR 20210151190A KR 20230065526 A KR20230065526 A KR 20230065526A
Authority
KR
South Korea
Prior art keywords
virtual machine
area
imdi
task
memory
Prior art date
Application number
KR1020210151190A
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 삼성전자주식회사
Priority to KR1020210151190A priority Critical patent/KR20230065526A/ko
Priority to EP22184402.0A priority patent/EP4177761A1/en
Priority to US17/864,088 priority patent/US20230141225A1/en
Priority to CN202211357857.XA priority patent/CN116088999A/zh
Publication of KR20230065526A publication Critical patent/KR20230065526A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/45575Starting, stopping, suspending or resuming 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/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/45583Memory management, e.g. access or allocation
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • 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

Abstract

메모리 관리 시스템 및 메모리 관리 방법이 제공된다. 메모리 관리 시스템은, 제1 가상 머신, 제2 가상 머신, 및 메모리에 제1 가상 머신과 제2 가상 머신이 액세스 하는 영역을 관리하는 하이퍼바이저를 포함하되, 하이퍼바이저는, 제1 가상 머신이 메모리에 제1 영역과 공유 영역을 액세스하고, 제2 영역을 액세스하지 못하도록 제어하고, 제2 가상 머신이 메모리에 제2 영역과 공유 영역을 액세스하고, 제1 영역을 액세스하지 못하도록 제어하고, 제1 가상 머신의 요청에 응답하여, 제1 가상 머신의 태스크가 액세스하고, 제2 가상 머신의 태스크가 액세스하지 못하는 IMDI(In Memory Data Isolation) 영역을 지시하는 IMDI 테이블을 메모리에 저장한다.

Description

메모리 관리 시스템 및 메모리 관리 방법{Memory management system and method for managing memory}
본 발명은 메모리 관리 시스템 및 메모리 관리 방법에 관한 것이다.
서로 다른 사용자 또는 서로 다른 프로세스가 메모리를 분할하여 사용하는 메모리 시스템이 사용되고 있다. 이러한 메모리 시스템의 경우, 메모리 내의 격리(isolation)가 분명하지 못한 경우, 악의적인 공격자에 의해 메모리에 저장된 데이터가 변조될 위험이 있다. 이에 따라 이를 개선하기 위한 연구가 진행되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 보안 신뢰성이 향상된 메모리 관리 시스템 및 메모리 관리 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 메모리 관리 시스템은, 제1 가상 머신, 제2 가상 머신, 및 메모리에 제1 가상 머신과 제2 가상 머신이 액세스 하는 영역을 관리하는 하이퍼바이저를 포함하되, 하이퍼바이저는, 제1 가상 머신이 메모리에 제1 영역과 공유 영역을 액세스하고, 제2 영역을 액세스하지 못하도록 제어하고, 제2 가상 머신이 메모리에 제2 영역과 공유 영역을 액세스하고, 제1 영역을 액세스하지 못하도록 제어하고, 제1 가상 머신의 요청에 응답하여, 제1 가상 머신의 태스크가 액세스하고, 제2 가상 머신의 태스크가 액세스하지 못하는 IMDI(In Memory Data Isolation) 영역을 지시하는 IMDI 테이블을 메모리에 저장한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 메모리 관리 시스템은, 커널 레벨 태스크가 수행되는 가상 머신, 및 가상 머신의 커널 레벨 태스크로부터 메모리의 IMDI 영역에 대한 액세스 요청을 수신하고, 메모리에 저장되고 IMDI 영역을 지시하는 IMDI 테이블의 가상 머신 ID와 태스크 ID를 참조하여, 가상 머신의 커널 레벨 태스크의 IMDI 영역에 대한 액세스 허용 여부를 결정하는 IMDI 회로를 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 메모리 관리 방법은, 제1 가상 머신이 액세스하고 제2 가상 머신이 액세스하지 못하는 제1 영역과, 제1 가상 머신이 액세스하지 못하고 제2 가상 머신이 액세스하는 제2 영역과, 제1 및 제2 가상 머신이 액세스하는 공유 영역을 포함하는 메모리를 제공하고, 하이퍼바이저에 의해, 제1 가상 머신으로부터의 제1 태스크의 요청에 응답하여, 제1 가상 머신의 제1 태스크가 액세스하고, 제1 가상 머신의 제2 태스크가 액세스하지 못하는 IMDI 영역을 지시하는 IMDI 테이블을 메모리에 저장하고, 하이퍼바이저에 의해, 제1 가상 머신에 IMDI 영역에 관한 정보를 전송하는 것을 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 메모리 관리 시스템의 블록도이다.
도 2는 도 1의 하이퍼바이저의 메모리 관리 동작을 설명하기 위한 도면이다.
도 3은 도 1의 하이퍼바이저가 IMDI(In-Memory Data Isolation) 테이블을 생성하는 동작을 설명하기 위한 도면이다.
도 4는 도 3의 IMDI 테이블을 도시한 도면이다.
도 5는 제1 가상 머신의 제1 태스크가 IMDI 영역에 액세스하는 동작을 설명하기 위한 도면이다.
도 6a는 제2 가상 머신의 태스크가 IMDI 영역에 액세스하는 동작을 설명하기 위한 도면이다.
도 6b는 제1 가상 머신의 제2 태스크가 IMDI 영역에 액세스하는 동작을 설명하기 위한 도면이다.
도 7은 도 1의 IMDI 회로의 동작을 설명하기 위한 도면이다.
도 8은 다른 몇몇 실시예에 따른 메모리 관리 시스템의 블록도이다.
도 9는 몇몇 실시예에 따른 메모리 관리 시스템이 탑재된 차량(vehicle)을 도시한 도면이다.
도 10은 도 9의 메모리 관리 시스템의 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 몇몇 실시예에 따른 메모리 관리 시스템의 블록도이다.
도 1을 참조하면, 메모리 관리 시스템(1)은 가상 머신들(10, 20), 하이퍼바이저(30), 프로세서(40), IMDI(In-Memory Data Isolation) 회로(50)를 포함할 수 있다. 비록 도면에서는 2개의 가상 머신(10, 20)이 있는 예를 도시하였으나, 가상 머신(10, 20)의 수는 얼마든지 변형되어 실시될 수 있다.
몇몇 실시예에서, 메모리 관리 시스템(1)은 메모리(60)를 더 포함하도록 구성될 수도 있다.
메모리 관리 시스템(1)은 메모리(60)를 관리할 수 있다. 예를 들어, 메모리 관리 시스템(1)은 메모리(60)에서 가상 머신(10)이 액세스 가능한 영역과, 가상 머신(20)이 액세스 가능한 영역을 구분하여 관리할 수 있다.
가상 머신(10)은 게스트 OS(Operating System)(12)에 의해 구동될 수 있다. 게스트 OS(12)는 가상 머신(10)을 통해 연결된 사용자 또는 사용자 프로세스가 요청하는 프로세스를 처리할 수 있다.
가상 머신(20)은 게스트 OS(22)에 의해 구동될 수 있다. 게스트 OS(22)는 가상 머신(20)을 통해 연결된 사용자 또는 사용자 프로세스가 요청하는 프로세스를 처리할 수 있다.
몇몇 실시예에서, 게스트 OS(12)와 게스트 OS(22)는 서로 다른 운영체제일 수 있다. 예를 들어, 게스트 OS(12)가 안드로이드 운영체제이고, 게스트 OS(22)가 리눅스 운영체제일 수 있다. 또한, 몇몇 실시예에서, 게스트 OS(12)와 게스트 OS(22)는 서로 동일한 운영체제일 수 있다.
하이퍼바이저(30)는 메모리(60)에서 가상 머신(10)이 액세스 가능한 영역과, 가상 머신(20)이 액세스 가능한 영역을 구분하여 관리할 수 있다.
몇몇 실시예에서, 메모리(60)는 DRAM(Dynamic Random Access Memory)을 포함할 수 있다. 몇몇 실시예에서, 메모리(60)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)을 포함할 수 있다.
또한, 몇몇 실시예에서, 메모리(60)는 NAND 플래시 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 등과 같은 비휘발성 메모리를 포함할 수도 있다.
하이퍼바이저(30)의 SLAT(Second Level Address Translation) 모듈(32)은 메모리(60)에서 가상 머신(10)이 액세스 가능한 영역과, 가상 머신(20)이 액세스 가능한 영역을 구분하여 관리하기 위한 제2 레벨 주소 변환을 수행할 수 있다. 여기서, 제1 레벨 주소 변환은 게스트 OS들(12, 22)이 수행할 수 있다. 이에 관한 보다 구체적인 설명은 후술한다.
프로세서(40)는 메모리 관리 시스템(1)에서 필요한 처리를 수행할 수 있다. 프로세서(40)는 복수의 MMU(Memory Management Unit)(42, 44)를 포함할 수 있다. 실시예에 따라, MMU(42, 44)의 개수는 도시된 것과 다르게 변형되어 실시될 수도 있다.
MMU(42)는 게스트 OS들(12, 22)이 제1 레벨 주소 변환을 수행하는데 이용될 수 있다. 게스트 OS들(12, 22)은 MMU(42)를 이용하여 가상 머신들(10, 20)에 제공된 가상 주소(virtual address)를 제1 물리 주소(physical address)로 변환할 수 있다.
MMU(44)는 SLAT 모듈(32)이 제2 레벨 주소 변환을 수행하는데 이용될 수 있다. SLAT 모듈(32)은 MMU(44)를 이용하여 가상 머신들(10, 20)로부터 제공받은 제1 물리 주소를 제2 물리 주소로 변환할 수 있다.
몇몇 실시예에서, 제1 물리 주소와 제2 물리 주소는 서로 다른 물리 주소일 수 있다. 또한, 몇몇 실시예에서, 제1 물리 주소와 제2 물리 주소는 서로 동일한 물리 주소일 수 있다.
IMDI 회로(50)는 메모리(60)에 정의된 IMDI 영역에 대한 가상 머신들(10, 20)의 액세스 허용 여부를 결정할 수 있다. 예를 들어, IMDI 회로(50)는 메모리(60)에 정의된 IMDI 영역에 대한 가상 머신들(10, 20)의 각 태스크의 액세스 허용 여부를 결정할 수 있다. 이에 대한 보다 구체적인 설명도 후술한다.
비록 도면에서는 MMU(44)와 IMDI 회로(50)가 분리되어 구현된 예가 도시되어 있으나, 몇몇 실시예에서, IMDI 회로(50)는 MMU(44) 내에 포함되어 구현될 수도 있다.
몇몇 실시예에서, 가상 머신들(10, 20)과 하이퍼바이저(30)는 소프트 웨어로 구현되고, 프로세서(40)와 IMDI 회로(50)는 하드웨어로 구현될 수 있다. 하지만, 실시예들이 이에 제한되는 것은 아니며, 구현 방법은 필요에 따라 변경될 수 있다.
도 2는 도 1의 하이퍼바이저의 메모리 관리 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 메모리(60)는 가상 머신(10)만 액세스할 수 있는 제1 영역(R1)과, 가상 머신(20)만 액세스할 수 있는 제2 영역(R2)과, 가상 머신(10)과 가상 머신(20)이 모두 액세스할 수 있는 공유 영역(SR)을 포함할 수 있다. 그리고, 메모리(60)는 가상 머신(10)과 가상 머신(20)은 액세스하지 못하고, 하이퍼바이저(30)만 액세스할 수 있는 하이퍼바이저 영역(HV)에 저장된 SLAT 테이블(ST)을 포함할 수 있다.
SLAT 테이블(ST)은 SLAT 모듈(32)이 제2 레벨 주소 변환을 수행하는데 이용되는 테이블일 수 있다.
도 2를 참조하면, 가상 머신(10)이 MMU(도 1의 42)를 이용하여 가상 주소를 제1 물리 주소로 변환하여, 하이퍼바이저(30)에 제1 영역(R1)에 대한 액세스를 요청한다(S10).
이에 응답하여, 하이퍼바이저(30)의 SLAT 모듈(32)은 MMU(도 1의 44)와 SLAT 테이블(ST)을 이용하여 제1 물리 주소를 제2 물리 주소로 변환하고, 하이퍼바이저(30)는 가상 머신(10)이 제1 영역(R1)에 대한 액세스 권한이 있는지 확인한다(S11).
하이퍼바이저(30)가 액세스를 허용하면, 가상 머신(10)이 제1 영역(R1)에 액세스하여 데이터를 라이트 하거나, 저장된 데이터를 리드할 수 있다(S12).
다음, 가상 머신(10)이 MMU(도 1의 42)를 이용하여 가상 주소를 제1 물리 주소로 변환하여, 하이퍼바이저(30)에 공유 영역(R1)에 대한 액세스를 요청한다(S20).
이에 응답하여, 하이퍼바이저(30)의 SLAT 모듈(32)은 MMU(도 1의 44)와 SLAT 테이블(ST)을 이용하여 제1 물리 주소를 제2 물리 주소로 변환하고, 하이퍼바이저(30)는 가상 머신(10)이 공유 영역(SR)에 대한 액세스 권한이 있는지 확인한다(S21).
하이퍼바이저(30)가 액세스를 허용하면, 가상 머신(10)이 공유 영역(SR)에 액세스하여 데이터를 라이트 하거나, 저장된 데이터를 리드할 수 있다(S22).
다음, 가상 머신(20)이 MMU(도 1의 42)를 이용하여 가상 주소를 제1 물리 주소로 변환하여, 하이퍼바이저(30)에 제2 영역(R2)에 대한 액세스를 요청한다(S30).
이에 응답하여, 하이퍼바이저(30)의 SLAT 모듈(32)은 MMU(도 1의 44)와 SLAT 테이블(ST)을 이용하여 제1 물리 주소를 제2 물리 주소로 변환하고, 하이퍼바이저(30)는 가상 머신(20)이 제2 영역(R2)에 대한 액세스 권한이 있는지 확인한다(S31).
하이퍼바이저(30)가 액세스를 허용하면, 가상 머신(20)이 제2 영역(R2)에 액세스하여 데이터를 라이트 하거나, 저장된 데이터를 리드할 수 있다(S32).
한편, 도면에 자세하게 도시하지는 않았으나, 가상 머신(10)이 MMU(도 1의 42)를 이용하여 가상 주소를 제1 물리 주소로 변환하여, 하이퍼바이저(30)에 제2 영역(R2)에 대한 액세스를 요청하는 경우, 하이퍼바이저(30)는 MMU(도 1의 44)와 SLAT 테이블(ST)을 이용하여 가상 머신(10)이 제2 영역(R2)에 대한 액세스 권한이 없는 것을 확인한 후, 가상 머신(10)이 제2 영역(R2)에 액세스하는 것을 차단할 수 있다.
마찬가지로, 가상 머신(20)이 MMU(도 1의 42)를 이용하여 가상 주소를 제1 물리 주소로 변환하여, 하이퍼바이저(30)에 제1 영역(R1)에 대한 액세스를 요청하는 경우, 하이퍼바이저(30)는 MMU(도 1의 44)와 SLAT 테이블(ST)을 이용하여 가상 머신(20)이 제1 영역(R1)에 대한 액세스 권한이 없는 것을 확인한 후, 가상 머신(20)이 제1 영역(R1)에 액세스하는 것을 차단할 수 있다.
도 2를 참조하면, 가상 머신들(10, 20)에는 복수의 태스크들이 수행될 수 있다. 이러한 복수의 태스크는 유저 레벨 태스크들(U1~U4)과 커널 레벨 태스크들(K1~K4)을 포함할 수 있다. 유저 레벨 태스크들(U1~U4)은 가상 머신들(10, 20)의 유저 스페이스에 존재하는 태스크들이고, 커널 레벨 태스크들(K1~K4)은 가상 머신들(10, 20)의 커널 스페이스에 존재하는 태스크들이다.
유저 레벨 태스크들(U1~U4)은 게스트 OS들에 의해 제어되어 가상 머신들(10, 20)이 갖는 권한 보다 작은 권한을 갖는다. 즉, 가상 머신(10)은 메모리(60)의 제1 영역(R1)과 공유 영역(SR)에 대한 액세스 권한을 갖고 있으나, 유저 레벨 태스크들(U1, U3)은 게스트 OS에 의해 제어되어 가상 머신(10)의 액세스 권한과 동일한 권한을 갖지 못한다. 또한, 가상 머신(20)은 메모리(60)의 제2 영역(R2)과 공유 영역(SR)에 대한 액세스 권한을 갖고 있으나, 유저 레벨 태스크들(U2, U4)은 게스트 OS에 의해 제어되어 가상 머신(20)의 액세스 권한과 동일한 권한을 갖지 못한다.
한편, 커널 레벨 태스크들(K1~K4)은 앞서 설명한 가상 머신들(10, 20)의 액세스 권한과 동일한 액세스 권한을 갖는다. 즉, 가상 머신(10)이 메모리(60)의 제1 영역(R1)과 공유 영역(SR)에 대한 액세스 권한을 가질 경우, 커널 레벨 태스크들(K1, K3)도 가상 머신(10)의 액세스 권한과 동일한 권한을 갖고, 가상 머신(20)이 메모리(60)의 제2 영역(R2)과 공유 영역(SR)에 대한 액세스 권한을 가질 경우, 커널 레벨 태스크들(K2, K4)도 가상 머신(20)의 액세스 권한과 동일한 권한을 가질 수 있다.
가상 머신(10)의 커널 레벨 태스크(K1)와 가상 머신(20)의 커널 레벨 태스크(K2)가 메모리(60)의 공유 영역(SR)에서 공유 작업을 수행하는 상황에서, 가상 머신(10)의 커널 레벨 태스크(K3)가 악의적으로 장악되었을 경우, 악의적인 공격자가 커널 레벨 태스크(K3)를 이용하여 메모리(60)의 공유 영역(SR)에 저장된 데이터를 마음대로 변형시킬 수도 있다.
이에 따라, 이를 방지하기 위한 구성이 필요할 수 있으며, 본 실시예의 하이퍼바이저(30)와 IMDI 회로(도 1의 50)를 이용하여 이러한 공격을 방어할 수 있다. 이하, 이에 대해 보다 구체적으로 설명한다.
도 3은 도 1의 하이퍼바이저가 IMDI(In-Memory Data Isolation) 테이블을 생성하는 동작을 설명하기 위한 도면이다. 도 4는 도 3의 IMDI 테이블을 도시한 도면이다.
도 3을 참조하면, 가상 머신(10)의 커널 레벨 태스크(K1)가 하이퍼바이저(30)에 커널 레벨 태스크(K1)가 액세스 가능한 IMDI 영역(IR)을 지정해줄 것을 요청한다(S100).
몇몇 실시예에서, 이러한 요청은 하이퍼바이저(30)가 제공하는 하이퍼바이저 콜(hypervisor call)을 이용하여 수행될 수 있다. 즉, 본 실시예에 따른 하이퍼바이저(30)는 반가상화(para-virtualized) 하이퍼바이저일 수 있다.
다음, 하이퍼바이저(30)는 요청에 응답하여, 메모리(60)의 하이퍼바이저 영역(HV)에 IMDI 영역(IR)을 지시하는 IMDI 테이블(IT)을 저장할 수 있다(S110).
도 3 및 도 4를 참조하면, 이러한 IMDI 테이블(IT)은 가상 머신 ID(VMID)와, 태스크 ID(TUID)와, IMDI 영역(IT)의 시작 주소와 IMDI 영역(IT)의 크기를 포함할 수 있다.
도 4에는, 가상 머신(10)의 커널 레벨 태스크(K1)이 액세스 권한을 갖고, 시작 주소 a부터 크기 b인 IMDI 영역(IR)을 지시하는 IMDI 테이블(IT)의 예가 도시되어 있다. 이러한 IMDI 테이블(IT)의 저장 내용에 따라, 메모리(60)에 대응되는 IMDI 영역(IR)이 정의될 수 있다.
이러한 IMDI 영역(IR)은 하이퍼바이저 영역(HV)에 정의될 수 있다. 즉, 본 실시예에서, 메모리(60)의 하이퍼바이저 영역(HV)에는 SLAT 테이블(ST)과 IMDI 테이블(IT)이 저장되고, IMDI 영역(IR)은 하이퍼바이저 영역(HV) 내에 정의될 수 있다.
다음, 하이퍼바이저(30)는 메모리(60)에 IMDI 테이블(IT)을 저장한 후, 가상 머신(10)에 생성된 IMDI 영역(IR)에 대한 정보를 전송할 수 있다(S120).
도 5는 제1 가상 머신의 제1 태스크가 IMDI 영역에 액세스하는 동작을 설명하기 위한 도면이다.
도 5를 참조하면, 가상 머신(10)의 커널 레벨 태스크(K1)가 하이퍼바이저(30)의 SLAT 모듈(32)에 IMDI 영역(IR)에 대한 액세스를 요청한다(S200).
이에 응답하여 SLAT 모듈(32)은 메모리(60)의 SLAT 테이블(ST)을 참조한다(S210).
SLAT 테이블(ST)의 저장 내용을 기초로 판단할 때, 가상 머신(10)의 커널 레벨 태스크(K1)가 액세스를 요청한 영역은 가상 머신(10)에 대해 액세스가 허용된 제1 영역(도 2의 R1) 또는 공유 영역(도 2의 SR)이 아니므로, SLAT 모듈(32)은 가상 머신(10)의 커널 레벨 태스크(K1)에 대한 IMDI 영역(IR)의 액세스가 불가능하다고 판단할 것이다.
그러나, SLAT 모듈(32)은 이에 대해 바로 가상 머신(10)에 액세스 불가를 응답하지 않고, IMDI 회로(50)에 가상 머신(10)의 커널 레벨 태스크(K1)가 IMDI 영역(IR)을 액세스할 수 있는지 여부를 확인한다(S220).
이에 응답하여 IMDI 회로(50)는 IMDI 테이블(IT)을 확인한다(S230).
그리고, 가상 머신(10)의 커널 레벨 태스크(K1)가 액세스를 요청하는 영역이 도 4에 도시된 영역 내라고 판단되면, IMDI 회로(50)는 액세스를 허용한다. 만약, 가상 머신(10)의 커널 레벨 태스크(K1)가 액세스를 요청하는 영역이 도 4에 도시된 영역 밖이라고 판단되면, IMDI 회로(50)는 액세스를 거부할 수도 있다.
IMDI 회로(50)가 액세스를 허용하면, 가상 머신(10)의 커널 레벨 태스크(K1)는 IMDI 영역(IR)에 액세스하여 데이터를 라이트 하거나, 저장된 데이터를 리드할 수 있다(S240).
도 6a는 제2 가상 머신의 태스크가 IMDI 영역에 액세스하는 동작을 설명하기 위한 도면이다.
도 6a를 참조하면, 가상 머신(20)의 커널 레벨 태스크(K2)가 하이퍼바이저(30)의 SLAT 모듈(32)에 IMDI 영역(IR)에 대한 액세스를 요청한다(S300).
이에 응답하여 SLAT 모듈(32)은 메모리(60)의 SLAT 테이블(ST)을 참조한다(S310).
SLAT 테이블(ST)의 저장 내용을 기초로 판단할 때, 가상 머신(20)의 커널 레벨 태스크(K2)가 액세스를 요청한 영역은 가상 머신(20)에 대해 액세스가 허용된 제2 영역(도 2의 R2) 또는 공유 영역(도 2의 SR)이 아니므로, SLAT 모듈(32)은 가상 머신(20)의 커널 레벨 태스크(K2)에 대한 IMDI 영역(IR)의 액세스가 불가능하다고 판단할 것이다.
그러나, SLAT 모듈(32)은 이에 대해 바로 가상 머신(20)에 액세스 불가를 응답하지 않고, IMDI 회로(50)에 가상 머신(20)의 커널 레벨 태스크(K2)가 IMDI 영역(IR)을 액세스할 수 있는지 여부를 확인한다(S320).
이에 응답하여 IMDI 회로(50)는 IMDI 테이블(IT)을 확인한다(S330).
도 4에 도시된 IMDI 테이블(IT)에서, 가상 머신(20)의 커널 레벨 태스크(K2)에 허용된 IMDI 영역(IR)은 존재하지 않으므로, IMDI 회로(50)는 액세스를 허용하지 않는다. 이에 따라, 가상 머신(20)의 커널 레벨 태스크(K2)는 IMDI 영역(IR)에 액세스할 수 없다(S340).
도 6b는 제1 가상 머신의 제2 태스크가 IMDI 영역에 액세스하는 동작을 설명하기 위한 도면이다.
도 6b를 참조하면, 가상 머신(10)의 커널 레벨 태스크(K1)가 하이퍼바이저(30)의 SLAT 모듈(32)에 IMDI 영역(IR)에 대한 액세스를 요청한다(S400).
이에 응답하여 SLAT 모듈(32)은 메모리(60)의 SLAT 테이블(ST)을 참조한다(S410).
SLAT 테이블(ST)의 저장 내용을 기초로 판단할 때, 가상 머신(10)의 커널 레벨 태스크(K3)가 액세스를 요청한 영역은 가상 머신(10)에 대해 액세스가 허용된 제1 영역(도 2의 R1) 또는 공유 영역(도 2의 SR)이 아니므로, SLAT 모듈(32)은 가상 머신(10)의 커널 레벨 태스크(K3)에 대한 IMDI 영역(IR)의 액세스가 불가능하다고 판단할 것이다.
그러나, SLAT 모듈(32)은 이에 대해 바로 가상 머신(10)에 액세스 불가를 응답하지 않고, IMDI 회로(50)에 가상 머신(10)의 커널 레벨 태스크(K3)가 IMDI 영역(IR)을 액세스할 수 있는지 여부를 확인한다(S420).
이에 응답하여 IMDI 회로(50)는 IMDI 테이블(IT)을 확인한다(S430).
도 4에 도시된 IMDI 테이블(IT)에서, 가상 머신(10)의 커널 레벨 태스크(K1)에 대해서는 IMDI 영역(IR)에 대한 액세스가 허용되나, 가상 머신(10)의 커널 레벨 태스크(K3)에 대해서는 IMDI 영역(IR)에 대한 액세스가 허용되지 않는다. 이에 따라, IMDI 회로(50)는 액세스를 허용하지 않는다. 이에 따라, 가상 머신(10)의 커널 레벨 태스크(K3)는 IMDI 영역(IR)에 액세스할 수 없다(S440).
도 7은 도 1의 IMDI 회로의 동작을 설명하기 위한 도면이다.
도 7을 참조하면, 가상 머신의 태스크로부터 액세스 대상 영역의 어드레스 정보(GPA), 액세스 대상 영역의 크기(SIZE), 가상 머신의 ID(VMID), 태스크 ID(ID)를 포함하는 액세스 요청을 제공받고, IMDI 회로(50)는 제2 레벨 주소 변환(SLAT)을 통해 가상 머신의 태스크가 액세스를 요청하는 메모리 영역에 대한 액세스 허용 여부를 확인한다(S500).
몇몇 실시예에서, 액세스 대상 영역의 어드레스 정보(GPA)는 예를 들어, 앞서 설명한 제1 물리 주소일 수 있으나, 실시예가 이에 제한되는 것은 아니다.
그리고, IMDI 회로(50)는 제2 레벨 주소 변환을 통해 가상 머신의 태스크가 액세스를 요청하는 메모리 영역에 대한 액세스가 가능한 것인지 판단한다(S510).
만약, 제2 레벨 주소 변환을 통해 가상 머신의 태스크가 액세스를 요청하는 메모리 영역에 대한 액세스가 가능한 것으로 판단되면(S510-Y), 해당 영역에 대한 액세스를 허용한다.
만약, 제2 레벨 주소 변환을 통해 가상 머신의 태스크가 액세스를 요청하는 메모리 영역에 대한 액세스가 불가능한 것으로 판단되면(S510-N), 가상 머신의 태스크가 액세스를 요청하는 메모리 영역이 IMDI 테이블을 통해 설정된 IMDI 영역에 해당하는지 판단한다(S520).
만약, 가상 머신의 태스크가 액세스를 요청하는 메모리 영역이 IMDI 테이블을 통해 설정된 IMDI 영역에 해당하지 않으면(S520-N), 가상 머신의 태스크에 액세스가 불가능함을 통보한다.
만약, 가상 머신의 태스크가 액세스를 요청하는 메모리 영역이 IMDI 테이블을 통해 설정된 IMDI 영역에 해당하면(S520-Y), 요청한 가상 머신의 가상 머신 ID가 IMDI 테이블의 IMDI 영역에 등록된 가상 머신 ID인지 판단한다(S530).
만약, 요청한 가상 머신의 가상 머신 ID가 IMDI 테이블의 IMDI 영역에 등록된 가상 머신 ID가 아니라면(S530-N), 가상 머신의 태스크에 액세스가 불가능함을 통보한다.
만약, 요청한 가상 머신의 가상 머신 ID가 IMDI 테이블의 IMDI 영역에 등록된 가상 머신 ID라면(S530-Y), 요청한 가상 머신의 태스크 ID가 IMDI 테이블의 IMDI 영역에 등록된 태스크 ID인지 판단한다(S540).
만약, 요청한 가상 머신의 태스크 ID가 IMDI 테이블의 IMDI 영역에 등록된 태스크 ID가 아니라면(S540-N), 가상 머신의 태스크에 액세스가 불가능함을 통보한다.
만약, 요청한 가상 머신의 태스크 ID가 IMDI 테이블의 IMDI 영역에 등록된 태스크 ID라면(S540-Y), 해당 영역에 대한 액세스를 허용한다.
본 실시예에서는 이와 같이 메모리에 가상 머신의 각 태스크 별로 액세스 권한을 부여하는 IMDI 영역을 정의하고, IMDI 테이블을 이용하여 이를 관리함으로써, 메모리 관리 시스템의 보안 신뢰성이 향상될 수 있다.
도 8은 다른 몇몇 실시예에 따른 메모리 관리 시스템의 블록도이다. 이하에서는 앞서 설명한 실시예와 차이점을 위주로 설명한다.
도 8을 참조하면, 메모리 관리 시스템(2)은 가상 머신들(110, 120), 하이퍼바이저(130)를 포함할 수 있다. 비록 상세히 도시하지는 않았지만, 메모리 관리 시스템(2)은 앞서 도 1에 도시된 프로세서(40), IMDI 회로(50)를 포함할 수 있다.
메모리 관리 시스템(2)은 예를 들어, 멀티 테넌트(multi tenant) 시스템을 지원하는 메모리 관리 시스템일 수 있다. 가상 머신(110)은 제1 유저(US1)에 연결되어 제1 유저(US1)의 요청을 수행하고, 가상 머신(120)은 제2 유저(US2)에 연결되어 제2 유저(US2)의 요청을 수행할 수 있다.
몇몇 실시예에서, 제1 유저(US1)와 제2 유저(US2)는 각각 서로 다른 사용자일 수 있다. 또한, 몇몇 실시예에서, 제1 유저(US1)와 제2 유저(US2)는 하나의 사용자의 서로 다른 유저 프로세스일 수 있다. 또한, 다른 몇몇 실시예에서, 제1 유저(US1)와 제2 유저(US2)는 서로 다른 사용자의 서로 다른 유저 프로세스일 수 있다.
도 9는 몇몇 실시예에 따른 메모리 시스템이 탑재된 차량(vehicle)을 도시한 도면이다. 도 10은 도 9의 메모리 관리 시스템의 블록도이다.
차량(200)은 복수 개의 전자 제어 장치(ECU: Electronic Control Unit, 210), 메모리 관리 시스템(270) 및 메모리(220)를 포함할 수 있다.
복수 개의 전자 제어 장치(210)의 각 전자 제어 장치는 차량(200)에 마련된 복수 개의 장치 중 적어도 하나의 장치에 전기적, 기계적, 통신적으로 연결되고, 어느 하나의 기능 수행 명령에 기초하여 적어도 하나의 장치의 동작을 제어할 수 있다.
여기서, 복수 개의 장치는 적어도 하나의 기능 수행을 위해 요구되는 정보를 획득하는 획득 장치(230)와, 적어도 하나의 기능을 수행하는 드라이빙 유닛(240)을 포함할 수 있다.
예를 들어, 획득 장치(230)는 각종 검출부 및 영상 획득부를 포함할 수 있고, 드라이빙 유닛(240)은 공조 장치의 팬 및 압축기, 통풍장치의 팬, 동력 장치의 엔진 및 모터, 조향 장치의 모터, 제동 장치의 모터 및 밸브, 도어나 테일 게이트의 개폐 장치 등을 포함할 수 있다.
복수 개의 전자 제어 장치(210)는, 예를 들어, 이더넷, 저전압 차동 신호(LVDS) 통신, LIN(Local Interconnect Network) 통신 중 적어도 하나를 이용하여 획득 장치(230) 및 드라이빙 유닛(240)과 통신을 수행할 수 있다.
복수 개의 전자 제어 장치(210)는, 획득 장치(230)를 통해 획득된 정보에 기초하여 기능 수행의 필요 여부를 판단하고 기능 수행이 필요하다고 판단되면 해당 기능을 수행하는 드라이빙 유닛(240)의 동작을 제어하되, 획득된 정보에 기초하여 그 동작 량을 제어할 수 있다. 이 때, 복수 개의 전자 제어 장치(210)는, 획득된 정보를 메모리(220)에 저장하거나 메모리(220)에 저장된 정보를 리드하여 사용할 수 있다. 메모리 관리 시스템(270)은 복수 개의 전자 제어 장치(210)의 요청을 받고 메모리(220)에 정보를 저장하거나, 메모리(220)에 저장된 정보를 복수 개의 전자 제어 장치(210)에 제공할 수 있다.
도 9 및 도 10을 참조하면, 메모리 관리 시스템(270)은 가상 머신들(271, 272), 하이퍼바이저(273)를 포함할 수 있다. 비록 상세히 도시하지는 않았지만, 메모리 관리 시스템(270)은 앞서 도 1에 도시된 프로세서(40), IMDI 회로(50)를 포함할 수 있다.
가상 머신(271)은 제1 전자 제어 장치(210a)에 연결되어 제1 전자 제어 장치(210a)의 요청을 수행하고, 가상 머신(272)은 제2 전자 제어 장치(210b)에 연결되어 제2 전자 제어 장치(210b)의 요청을 수행할 수 있다.
몇몇 실시예에서, 제1 전자 제어 장치(210a)는 획득 장치(230)로부터 정보를 수집하여 처리하는 장치이고, 제2 전자 제어 장치(210b)는 드라이빙 유닛(240)의 동작을 제어하는 장치일 수 있다. 몇몇 실시예에서, 제1 전자 제어 장치(210a)는 인포테인먼트(infortainment)를 처리하는 장치이고, 제2 전자 제어 장치(210b)는 차량의 운행 정보를 처리하는 장치일 수 있다. 하지만, 실시예들이 이에 제한되는 것은 아니다.
도 9를 참조하면, 복수 개의 전자 제어 장치(210)는, 입력부(250)를 통해 입력된 기능 수행 명령에 기초하여 해당 기능을 수행하는 드라이빙 유닛(240)의 동작을 제어하는 것도 가능하고, 입력부(250)를 통해 입력된 정보에 대응하는 설정량을 확인하고 확인된 설정량에 기초하여 해당 기능을 수행하는 드라이빙 유닛(240)의 동작을 제어하는 것도 가능하다.
각 전자 제어 장치(210)는, 독립적으로 어느 하나의 기능을 제어하거나, 또는 다른 전자 제어 장치와 서로 연계하여 어느 하나의 기능을 제어할 수 있다.
예를 들어, 충돌 방지 장치의 전자 제어 장치는 거리 검출부를 통해 검출된 장애물과의 거리가 기준 거리 이내이면 스피커를 통해 장애물과의 충돌에 대한 경고음을 출력하도록 할 수 있다.
자율 주행 제어 장치의 전자 제어 장치는 차량용 단말기의 전자 제어 장치, 영상 획득부의 전자 제어 장치 및 충돌 방지 장치의 전자 제어 장치와 연계하여, 내비게이션 정보, 도로 영상 정보 및 장애물과의 거리 정보를 수신하고 수신된 정보들을 이용하여 동력 장치, 제동 장치 및 조향 장치를 제어함으로써 자율 주행을 수행할 수 있다.
연결 제어 장치(CCU: Connectivity Control Unit, 260)는 복수 개의 전자 제어 장치들(210)과 각각 전기적, 기계적, 통신적으로 연결되고, 복수 개의 전자 제어 장치들(210)과 각각 통신을 수행한다.
즉, 연결 제어 장치(260)는 차량 내부에 마련된 복수 개의 전자 제어 장치들(210)과 직접 통신을 수행하는 것도 가능하고, 외부의 서버와 통신을 수행하는 것도 가능하며, 인터페이스를 통해 외부 단말기와 통신을 수행하는 것도 가능하다.
여기서 연결 제어 장치(260)는 복수 개의 전자 제어 장치(210)들과 통신을 수행할 수 있고, 안테나(미도시)와 RF 통신을 이용하여 서버(310)와 통신을 수행할 수 있다.
또한, 연결 제어 장치(260)는 무선 통신으로 서버(310)와 통신을 수행할 수 있다. 이 때, 연결 제어 장치(260)와 서버(310) 간의 무선 통신은 와이파이(Wifi) 모듈, 와이브로(Wireless broadband) 모듈 외에도, GSM(global System for Mobile Communication), CDMA(Code Division Multiple Access), WCDMA(Wideband Code Division Multiple Access), UMTS(universal mobile telecommunications system), TDMA(Time Division Multiple Access), LTE(Long Term Evolution) 등 다양한 무선 통신 방식을 통해서 가능하다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10, 20: 가상 머신
30: 하이퍼바이저
60: 메모리

Claims (20)

  1. 제1 가상 머신;
    제2 가상 머신; 및
    메모리에 상기 제1 가상 머신과 상기 제2 가상 머신이 액세스 하는 영역을 관리하는 하이퍼바이저를 포함하되,
    상기 하이퍼바이저는,
    상기 제1 가상 머신이 상기 메모리에 제1 영역과 공유 영역을 액세스하고, 제2 영역을 액세스하지 못하도록 제어하고,
    상기 제2 가상 머신이 상기 메모리에 상기 제2 영역과 상기 공유 영역을 액세스하고, 상기 제1 영역을 액세스하지 못하도록 제어하고,
    상기 제1 가상 머신의 요청에 응답하여, 상기 제1 가상 머신의 태스크가 액세스하고, 상기 제2 가상 머신의 태스크가 액세스하지 못하는 IMDI(In Memory Data Isolation) 영역을 지시하는 IMDI 테이블을 상기 메모리에 저장하는 메모리 관리 시스템.
  2. 제1항에 있어서,
    상기 제1 가상 머신의 태스크는 제1 태크스와 제2 태스크를 포함하고,
    상기 IMDI 영역은 상기 제1 태스크가 액세스하고 상기 제2 태스크가 액세스하지 못하는 메모리 관리 시스템.
  3. 제2항에 있어서,
    상기 제1 태스크와 상기 제2 태스크는, 상기 제1 가상 머신의 커널 레벨(kernel level) 태스크인 메모리 관리 시스템.
  4. 제1항에 있어서,
    상기 제1 가상 머신은 하이퍼바이저 콜(hypervisor call)을 이용하여 상기 IMDI 영역 지정을 상기 하이퍼바이저에게 요청하는 메모리 관리 시스템.
  5. 제1항에 있어서,
    상기 IMDI 테이블은 상기 메모리의 상기 하이퍼바이저가 액세스하고 상기 제1 및 제2 가상 머신이 액세스하지 못하는 영역에 저장되는 메모리 관리 시스템.
  6. 제5항에 있어서,
    상기 IMDI 테이블은 상기 제1 가상 머신과 관련된 가상 머신 ID와, 상기 제1 가상 머신의 태스크와 관련된 태스크 ID를 포함하는 메모리 관리 시스템.
  7. 제6항에 있어서,
    상기 IMDI 테이블은 상기 IMDI 영역의 시작 주소와 상기 IMDI 영역의 크기를 포함하는 메모리 관리 시스템.
  8. 제1항에 있어서,
    상기 IMDI 테이블을 참조하여 상기 IMDI 영역의 접근의 허용 여부를 결정하는 IMDI 회로를 더 포함하는 메모리 관리 시스템.
  9. 제8항에 있어서,
    상기 IMDI 회로는 상기 하이퍼바이저와 다른 메모리 관리 시스템.
  10. 커널 레벨 태스크가 수행되는 가상 머신; 및
    상기 가상 머신의 상기 커널 레벨 태스크로부터 메모리의 IMDI 영역에 대한 액세스 요청을 수신하고, 상기 메모리에 저장되고 상기 IMDI 영역을 지시하는 IMDI 테이블의 가상 머신 ID와 태스크 ID를 참조하여, 상기 가상 머신의 커널 레벨 태스크의 상기 IMDI 영역에 대한 액세스 허용 여부를 결정하는 IMDI 회로를 포함하는 메모리 관리 시스템.
  11. 제10항에 있어서,
    상기 가상 머신은 제1 가상 머신과 제2 가상 머신을 포함하고,
    상기 메모리는 상기 제1 가상 머신이 액세스하고 상기 제2 가상 머신이 액세스하지 못하는 제1 영역과, 상기 제1 가상 머신이 액세스하지 못하고 상기 제2 가상 머신이 액세스하는 제2 영역과, 상기 제1 및 제2 가상 머신이 액세스하는 공유 영역과, 상기 제1 및 제2 영역과 상기 공유 영역을 지시하는 SLAT(Second Level Address Translation) 테이블을 포함하고,
    상기 IMDI 테이블은 상기 SLAT 테이블과 다른 메모리 관리 시스템.
  12. 제11항에 있어서,
    상기 SLAT 테이블을 참조하여, 상기 메모리에서 상기 제1 가상 머신과 상기 제2 가상 머신이 액세스하는 영역을 관리하는 하이퍼바이저를 더 포함하는 메모리 관리 시스템.
  13. 제12항에 있어서,
    상기 IMDI 테이블은 상기 메모리의 상기 하이퍼바이저가 액세스하고 상기 가상 머신이 액세스하지 못하는 영역에 저장되는 메모리 관리 시스템.
  14. 제12항에 있어서,
    상기 가상 머신의 커널 레벨 태스크는 하이퍼바이저 콜을 이용하여 상기 IMDI 영역 지정을 상기 하이퍼바이저에게 요청하는 메모리 관리 시스템.
  15. 제14항에 있어서,
    상기 하이퍼바이저는, 상기 가상 머신의 커널 레벨 태스크의 요청에 응답하여, 상기 IMDI 영역을 지시하는 상기 IMDI 테이블을 상기 메모리에 저장하는 메모리 관리 시스템.
  16. 제10항에 있어서,
    상기 메모리에서 가상 머신이 액세스하는 영역을 관리하는 하이퍼바이저를 더 포함하고,
    상기 IMDI 회로는 상기 하이퍼바이저와 다른 메모리 관리 시스템.
  17. 제1 가상 머신이 액세스하고 제2 가상 머신이 액세스하지 못하는 제1 영역과, 상기 제1 가상 머신이 액세스하지 못하고 상기 제2 가상 머신이 액세스하는 제2 영역과, 상기 제1 및 제2 가상 머신이 액세스하는 공유 영역을 포함하는 메모리를 제공하고,
    하이퍼바이저에 의해, 상기 제1 가상 머신으로부터의 제1 태스크의 요청에 응답하여, 상기 제1 가상 머신의 상기 제1 태스크가 액세스하고, 상기 제1 가상 머신의 제2 태스크가 액세스하지 못하는 IMDI 영역을 지시하는 IMDI 테이블을 상기 메모리에 저장하고,
    상기 하이퍼바이저에 의해, 상기 제1 가상 머신에 상기 IMDI 영역에 관한 정보를 전송하는 것을 포함하는 메모리 관리 방법.
  18. 제17항에 있어서,
    상기 제1 태스크와 상기 제2 태스크는 상기 제1 가상 머신의 커널 레벨 태스크인 메모리 관리 방법.
  19. 제17항에 있어서,
    IMDI 회로에 의해, 상기 제1 가상 머신의 상기 제1 태스크와 상기 제2 태스크 중 어느 하나로부터의 상기 IMDI 영역 접근 요청에 응답하여, 상기 IMDI 테이블을 참조하여 상기 제1 가상 머신의 상기 제1 태스크와 상기 제2 태스크 중 어느 하나의 상기 IMDI 영역의 접근 여부를 결정하는 것을 더 포함하는 메모리 관리 방법.
  20. 제17항에 있어서,
    상기 제1 가상 머신의 상기 제1 태스크는 하이퍼바이저 콜을 이용하여 상기 IMDI 영역 지정을 상기 하이퍼바이저에게 요청하는 메모리 관리 방법.
KR1020210151190A 2021-11-05 2021-11-05 메모리 관리 시스템 및 메모리 관리 방법 KR20230065526A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210151190A KR20230065526A (ko) 2021-11-05 2021-11-05 메모리 관리 시스템 및 메모리 관리 방법
EP22184402.0A EP4177761A1 (en) 2021-11-05 2022-07-12 Memory management system and method for managing memory
US17/864,088 US20230141225A1 (en) 2021-11-05 2022-07-13 Memory management system and method for managing memory
CN202211357857.XA CN116088999A (zh) 2021-11-05 2022-11-01 存储器管理系统和用于管理存储器的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210151190A KR20230065526A (ko) 2021-11-05 2021-11-05 메모리 관리 시스템 및 메모리 관리 방법

Publications (1)

Publication Number Publication Date
KR20230065526A true KR20230065526A (ko) 2023-05-12

Family

ID=82458608

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210151190A KR20230065526A (ko) 2021-11-05 2021-11-05 메모리 관리 시스템 및 메모리 관리 방법

Country Status (4)

Country Link
US (1) US20230141225A1 (ko)
EP (1) EP4177761A1 (ko)
KR (1) KR20230065526A (ko)
CN (1) CN116088999A (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9117081B2 (en) * 2013-12-20 2015-08-25 Bitdefender IPR Management Ltd. Strongly isolated malware scanning using secure virtual containers
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US20180341529A1 (en) * 2017-05-26 2018-11-29 Microsoft Technology Licensing, Llc Hypervisor-based secure container
US20200409740A1 (en) * 2019-06-27 2020-12-31 Shih-Wei Li Systems, methods, and media for trusted hypervisors

Also Published As

Publication number Publication date
EP4177761A1 (en) 2023-05-10
CN116088999A (zh) 2023-05-09
US20230141225A1 (en) 2023-05-11

Similar Documents

Publication Publication Date Title
CN108809775B (zh) 对智能设备进行控制的方法及设备
CN107562515B (zh) 一种在虚拟化技术中管理内存的方法
US11726675B2 (en) Memory protective apparatus for indirect access memory controller
US11941259B2 (en) Communication method, apparatus, computer-readable storage medium, and chip
US20140068133A1 (en) Virtualized local storage
US20130067470A1 (en) Virtual Machine Monitoring Method, System and Computer Readable Storage Medium
US20180046399A1 (en) Storage Partitioning Method and Terminal
US11256830B2 (en) Apparatus for adding protection function for indirect access memory controller
US10031863B2 (en) Access controlled memory region
CN111971661B (zh) 安全接口禁用
CN107547258B (zh) 一种网络策略的实现方法和装置
US20170139844A1 (en) Asymmetric memory
US11144634B2 (en) Access control for integrated circuit devices
US10936506B2 (en) Method for tagging control information associated with a physical address, processing system and device
US20150169604A1 (en) Vehicle data control system and method
US10277713B2 (en) Role-based access to shared resources
KR20230065526A (ko) 메모리 관리 시스템 및 메모리 관리 방법
US10324722B2 (en) Global capabilities transferrable across node boundaries
US9727756B2 (en) Access and protection of I2C interfaces
US10958472B2 (en) Direct access to bus signals in a motor vehicle
CN111666579B (zh) 计算机设备及其访问控制方法和计算机可读介质
WO2016068902A1 (en) Including node and process identifiers in a transaction
US20160170899A1 (en) Embedded device and memory management method thereof
CN114911607A (zh) 计算单元及用于验证其消息的方法、计算机程序和车辆
CN112738219B (zh) 程序运行方法、装置、车辆及存储介质