KR20140124787A - 계산기, 액세스 관리 방법 및 컴퓨터 판독 가능한 기억 매체 - Google Patents

계산기, 액세스 관리 방법 및 컴퓨터 판독 가능한 기억 매체 Download PDF

Info

Publication number
KR20140124787A
KR20140124787A KR1020147023181A KR20147023181A KR20140124787A KR 20140124787 A KR20140124787 A KR 20140124787A KR 1020147023181 A KR1020147023181 A KR 1020147023181A KR 20147023181 A KR20147023181 A KR 20147023181A KR 20140124787 A KR20140124787 A KR 20140124787A
Authority
KR
South Korea
Prior art keywords
access
allocation table
allocated
pci
unit
Prior art date
Application number
KR1020147023181A
Other languages
English (en)
Other versions
KR101571992B1 (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 KR20140124787A publication Critical patent/KR20140124787A/ko
Application granted granted Critical
Publication of KR101571992B1 publication Critical patent/KR101571992B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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

Abstract

OS(231a)로부터 I/O 디바이스(110a)로의 액세스가 발생한 경우, I/O 할당부(223)는 I/O 할당 테이블(229)을 참조해서, I/O 디바이스(110a)가 다른 OS(231b)에 할당되어 있는지 여부를 판정한다. I/O 디바이스(110a)가 다른 OS(231b)에 할당되어 있는 경우에는, 제어부(228)는 OS(231a)에 에러를 통지한다. I/O 디바이스(110a)가 어느 OS(231a·b)에도 할당되어 있지 않은 경우에는, I/O 할당부(223)는 I/O 디바이스(110a)를 OS(231a)에 할당하기 위해서 I/O 할당 테이블(229)을 갱신하고, I/O 에뮬레이션부(222)는 I/O 디바이스(110a)로의 액세스를 에뮬레이션한다.

Description

계산기, 액세스 관리 방법 및 액세스 관리 프로그램{COMPUTING DEVICE, ACCESS MANAGEMENT METHOD, AND ACCESS MANAGEMENT PROGRAM}
본 발명은 예컨대, 복수의 OS(Operating System)로부터 디바이스로의 액세스를 관리하는 계산기, 액세스 관리 방법 및 액세스 관리 프로그램에 관한 것이다.
가상 계산기 시스템은 복수의 OS를 동작시키는 시스템이다. 예컨대, Xen(등록 상표)이나 KVM(Kernel-based Virtual Machine)(등록 상표) 등의 가상 계산기 시스템이 존재한다.
종래의 가상 계산기 시스템은 복수의 OS 각각에 대해 점유시킬 I/O 디바이스를 사전에 설정하고 나서 복수의 OS를 기동한다. 그리고, 가상 계산기 모니터(VMM:Virtual Machine Monitor)는 각 OS로부터 해당 OS가 점유하는 I/O 디바이스의 메모리나 레지스터로의 액세스를 허가하고, 각 OS로부터 다른 OS가 점유하는 I/O 디바이스의 메모리나 레지스터로의 액세스를 거부한다. I/O 디바이스가 PCI 디바이스(PCI Express 디바이스를 포함함. 이하 마찬가지)인 경우에는, 가상 계산기 모니터는 PCI 컨피규레이션 레지스터로의 액세스를 허가 또는 거부한다. 이렇게 해서, 각 OS에 대한 I/O 디바이스의 배타적인 할당이 행해지고 있었다.
예컨대, Xen에서는 OS에 점유시킬 I/O 디바이스를 설정 파일로 지정한다. 또한, KVM에서는 OS의 기동 옵션으로 점유시킬 I/O 디바이스를 지정한다.
Xen이나 KVM 등의 종래의 가상 계산기 시스템은 OS 마다 점유시킬 I/O 디바이스의 사전 설정이 필요하다. 이 때문에, 다수의 OS가 동작하여 각 OS가 다수의 I/O 디바이스를 점유하는 경우에는, 사전 설정이 번잡하게 되어 버린다.
특허문헌 1은 아래와 같이 해서, I/O 디바이스를 점유하는 OS를 실행중에 변경하는 가상 계산기 시스템을 개시하고 있다.
특허문헌 1의 가상 계산기 시스템에 있어서, VMM은 OS에 의한 I/O 디바이스점유 요구나 VMM에 의한 이벤트 검지를 요인으로서 OS에 I/O 디바이스의 점유 허가를 낸다. 그리고, OS는 I/O 디바이스의 점유 허가가 나간 경우에만 I/O 디바이스에 대한 입출력을 행한다. 이 때문에, I/O 디바이스를 어느 OS에 점유시키기 위한 사전 설정이 불필요하다.
그러나, I/O 디바이스의 메모리나 레지스터의 보호는 행해지지 않기 때문에, I/O 디바이스를 점유하고 있지 않은 OS로부터 해당 I/O 디바이스의 메모리나 레지스터에 액세스하는 것이 가능하다. 이 때문에, 어느 OS가 점유중인 I/O 디바이스의 메모리나 레지스터의 내용을 다른 OS가 파괴해 버릴 가능성이 있다.
일본 특허 공개 제 2007-220086호 공보
본 발명은 예컨대, 복수의 OS로부터 디바이스로의 액세스를 정확하게 관리할 수 있게 하는 것을 목적으로 한다.
본 발명의 계산기는 디바이스에 액세스하는 복수의 OS(Operating System)가 동작한다.
상기 계산기는,
디바이스와, 디바이스가 할당된 OS를 대응시키기 위한 디바이스 할당 테이블을 기억하는 디바이스 할당 기억부와,
상기 디바이스로의 액세스가 발생한 경우, 상기 디바이스가 할당되어 있는 OS를 상기 디바이스 할당 테이블에 기초해서 판정하여, 상기 디바이스가 어느 OS에도 할당되어 있지 않은 경우에는, 상기 디바이스와 액세스원(accessing party)의 OS를 대응시키기 위해서 상기 디바이스 할당 테이블을 갱신하여 상기 디바이스로의 액세스를 허가하고, 상기 디바이스가 상기 액세스원의 OS 이외의 OS에 할당되어 있는 경우에는, 상기 디바이스로의 액세스를 거부하는 액세스 관리부를 구비한다.
본 발명에 의하면, 예컨대 복수의 OS로부터 디바이스로의 액세스를 정확하게 관리할 수 있다.
도 1은 실시예 1에 있어서의 가상 계산기 시스템(100)의 구성도,
도 2는 실시예 1에 있어서의 가상 계산기 시스템(100)의 동작을 나타내는 흐름도,
도 3은 실시예 1에 있어서의 가상 계산기 시스템(100)의 메모리 맵을 나타내는 도면,
도 4는 실시예 1에 있어서의 I/O 할당 테이블(229)의 초기 상태를 나타내는 도면,
도 5는 실시예 1에 있어서의 I/O 할당 테이블(229)의 초기화 처리를 나타내는 흐름도,
도 6은 실시예 1에 있어서의 초기화 처리후의 I/O 할당 테이블(229)을 나타내는 도면,
도 7은 실시예 1에 있어서의 I/O 디바이스(110)의 할당 처리를 나타내는 흐름도,
도 8은 실시예 1에 있어서의 I/O 디바이스(110a·b)를 할당한 후의 I/O 할당 테이블(229)을 나타내는 도면,
도 9는 실시예 1에 있어서의 I/O 디바이스(110a·b)를 할당한 후의 가상 메모리 맵(320a·b)을 나타내는 도면,
도 10은 실시예 1에 있어서의 PCI 컨피규레이션 레지스터로의 액세스 처리를 나타내는 흐름도,
도 11은 실시예 1에 있어서의 BAR 변경 판정 처리(S500)를 나타내는 흐름도,
도 12는 실시예 2에 있어서의 I/O 할당 테이블(229)을 나타내는 도면,
도 13은 실시예 2에 있어서의 가상 계산기 시스템(100)의 메모리 맵을 나타내는 도면,
도 14는 실시예 2에 있어서의 I/O 할당 테이블(229)의 초기화 처리를 나타내는 흐름도,
도 15는 실시예 2에 있어서의 I/O 디바이스(110)의 할당 처리를 나타내는 흐름도,
도 16은 실시예 2에 있어서의 PCI 컨피규레이션 레지스터로의 액세스 처리를 나타내는 흐름도,
도 17은 실시예 3에 있어서의 가상 계산기 시스템(100)의 구성도,
도 18은 실시예 3에 있어서의 I/O 할당 테이블(229)의 초기화 처리를 나타내는 흐름도이다.
(실시예 1)
가상 계산기의 OS(Operating System)에 디바이스를 할당하고 가상 계산기의 OS에 디바이스를 점유시키는 가상 계산기 시스템에 대해서 설명한다. 가상 계산기 시스템은 복수의 OS가 동작하는 시스템의 일례이다.
도 1은 실시예 1에 있어서의 가상 계산기 시스템(100)의 구성도이다.
실시예 1에 있어서의 가상 계산기 시스템(100)의 하드웨어 구성 및 기능 구성에 대해서, 도 1에 기초해서 설명한다.
가상 계산기 시스템(100)은 물리 계산기(200)와, 물리 계산기(200)에 접속하는 복수의 I/O 디바이스(110a~c)(Input/Output 디바이스)를 구비한다. I/O 디바이스(110)의 수는 2개 또는 4개 이상이어도 상관없다.
실시예에 있어서, I/O 디바이스(110a~c)가 PCI(Peripheral Components Interconnect bus)를 인터페이스로서 이용하는 PCI 디바이스인 것으로 해서 설명한다. 단, 물리 계산기(200)에 접속하는 I/O 디바이스는 PCI 디바이스 이외의 디바이스이어도 상관없다.
PCI 디바이스는 BAR(베이스 어드레스 레지스터)를 포함한 PCI 컨피규레이션 레지스터를 기억한다. PCI 컨피규레이션 레지스터의 BAR는 PCI 디바이스에 할당된 메모리 공간 또는 레지스터 공간(이들 모두 기억 영역)의 베이스 어드레스(선두 어드레스)와 사이즈를 나타낸다.
디스플레이 장치, 키보드, 마우스, 프린터, 통신 보드, 외부 기억 장치 등은 I/O 디바이스(110)의 일례이다.
물리 계산기(200)(계산기, 컴퓨터의 일례)는 프로세서(211a·b), 메인 메모리(212), 보조 기억 장치(213) 및 인터럽트 컨트롤러(214) 등의 하드웨어(210)를 구비한 컴퓨터이다.
프로세서(211a·b)는 물리 계산기(200)를 제어하는 처리 장치이고, CPU(Central Processing Unit)는 프로세서(211a·b)의 일례이다. 프로세서(211)의 수는 하나 또는 3개 이상이어도 상관없다.
메인 메모리(212)는 일차 기억 장치라고도 불리는 기억 장치이고, RAM(Random Access Memory)이나 ROM(Read Only Memory)은 메인 메모리(212)의 일례이다.
보조 기억 장치(213)는 2차 기억 장치라고도 불리는 기억 장치이며, 자기 디스크 장치나 플래시 메모리는 보조 기억 장치(213)의 일례이다.
인터럽트 컨트롤러(214)는 I/O 디바이스(110a~c)로부터의 인터럽트를 제어하는 장치이다. 예컨대, 인터럽트 컨트롤러(214)는 I/O 디바이스(110a~c)로부터의 인터럽트를 프로세서(211a·b)에 통지한다.
물리 계산기(200)는 또한, 하드웨어(210)를 이용해서 동작하는 VMM부(220) 및 복수의 VM부(230a·b)를 구비한다. VM부(230)의 수는 3개 이상이어도 상관없다.
VM부(230a)는 OS(231a), 디바이스 드라이버(232a) 및 PCI 드라이버(233a)를 실행하여, 가상 계산기(VM)로서 동작한다. 마찬가지로, VM부(230b)는 OS(231b), 디바이스 드라이버(232b) 및 PCI 드라이버(233b)를 실행하여, 가상 계산기로서 동작한다. 가상 계산기는 후술하는 가상 계산기 모니터(VMM)에 의해서 가상적으로 구축되는 계산기이다. VM부(230a)는 프로세서(211a)를 이용해서 동작하고, VM부(230b)는 프로세서(211b)를 이용해서 동작하는 것으로 한다.
OS(231a·b)는 가상 계산기의 OS(또는 가상 계산기의 OS를 실행하는 실행부)이다. OS(231a·b)는 가상 어드레스 공간을 서포트하지 않는다. 또한, OS(231a·b)는 싱글 프로세서 또는 멀티 프로세서로 동작한다. 실시예에서는 싱글 프로세서로 동작하는 OS(231a·b)를 예로 해서 설명한다. 단, OS(231a·b)는 멀티 프로세서로 동작하는 OS이어도 상관없다. 또한, OS(231a·b)는 메모리 관리부(224)에 의해서 구축되는 가상 어드레스 공간을 물리 어드레스 공간으로서 인식해서 동작한다.
디바이스 드라이버(232a·b)는 I/O 디바이스(110a~c)의 메모리나 레지스터에 액세스해서 I/O 디바이스(110a~c)를 개별로 제어하기 위한 소프트웨어(또는 소프트웨어를 실행하는 실행부)이다. 액세스란, 주로 데이터의 판독 또는 데이터의 기입을 의미한다(이하 마찬가지).
PCI 드라이버(233a·b)는 I/O 디바이스(110a~c)의 PCI 컨피규레이션 레지스터에 액세스하기 위한 소프트웨어(또는 소프트웨어를 실행하는 실행부)이다.
VMM부(220)(디바이스 할당 기억부, 액세스 관리부의 일례)는 가상 계산기 모니터(VMM)를 실행해서 복수의 가상 계산기(VM부(230a·b))를 제어한다. 가상 계산기 모니터는 하드웨어 자원(예컨대, 프로세서(211), 메인 메모리(212)의 기억 영역)을 각 가상 계산기에 할당하여 복수의 가상 계산기를 구축하기 위한 소프트웨어이다.
VMM부(220)는 PCI 에뮬레이션부(221)와, I/O 에뮬레이션부(222)와, I/O 할당부(223)와, 메모리 관리부(224)와, 제어부(228)를 구비한다.
PCI 에뮬레이션부(221)는 PCI 드라이버(233a·b)로부터 PCI 컨피규레이션 레지스터로의 액세스를 에뮬레이션한다. 즉, PCI 에뮬레이션부(221)는 PCI 컨피규레이션 레지스터로의 액세스를 인터셉트해서, PCI 드라이버(233a·b) 대신에 PCI 컨피규레이션 레지스터에 액세스한다.
I/O 에뮬레이션부(222)는 디바이스 드라이버(232a·b)로부터 I/O 디바이스의 메모리나 레지스터로의 액세스를 에뮬레이션한다. 즉, I/O 에뮬레이션부(222)는 I/O 디바이스의 메모리나 레지스터로의 액세스를 인터셉트해서, 디바이스 드라이버(232a·b) 대신에 I/O 디바이스의 메모리나 레지스터에 액세스한다.
I/O 할당부(223)는 후술하는 I/O 할당 테이블(229)을 참조해서, 액세스가 발생한 I/O 디바이스(110)에 할당되어 있는 OS(231)를 판정하여, I/O 할당 테이블(229)을 갱신한다.
메모리 관리부(224)는 VM부(230a·b)(OS(231a·b))용의 가상 어드레스 공간을 정의한다. 예컨대, 메모리 관리부(224)는 가상 어드레스 공간 내의 기억 영역을 나타내는 가상 어드레스와 물리 어드레스 공간 내의 기억 영역을 나타내는 물리 어드레스를 대응시키는 매핑 테이블을 생성한다. 즉, 메모리 관리부(224)는 가상 어드레스 공간과 물리 어드레스 공간을 매핑 테이블을 이용해서 매핑한다. 매핑이란, 주로 가상 어드레스 공간의 가상 어드레스와 물리 어드레스 공간의 물리 어드레스를 대응시키는 것을 의미한다(이하 마찬가지).
제어부(228)는 VM부(230a·b)의 제어나, 후술하는 I/O 할당 테이블(229)의 초기화를 행한다.
도 2는 실시예 1에 있어서의 가상 계산기 시스템(100)의 동작을 나타내는 흐름도이다.
실시예 1에 있어서의 가상 계산기 시스템(100)의 동작에 대해서, 도 2에 기초해서 설명한다.
S110에서 물리 계산기(200)가 기동한다. 물리 계산기(200)가 기동하는 경우, 물리 계산기(200)의 기동 처리부(도시 생략)는 BIOS(Basic Input/Output System)나 부트 로더 등의 소정의 소프트웨어를 실행한다(물리 계산기(200)의 기동 처리).
예컨대, 물리 계산기(200)의 기동 처리에 있어서, 물리 어드레스 공간의 초기 설정이나 PCI 컨피규레이션 레지스터의 초기 설정이 행해진다.
도 3은 실시예 1에 있어서의 가상 계산기 시스템(100)의 메모리 맵을 나타내는 도면이다.
실시예 1에 있어서의 가상 계산기 시스템(100)의 메모리 맵에 대해서, 도 3에 기초해서 설명한다.
물리 메모리 맵(310)의 데이터는 프로세서(211)나 메인 메모리(212)에 의해서 기억 관리된다.
물리 어드레스 공간에는 VM용 메모리 공간(311), I/O용 메모리 공간(312), I/O용 레지스터 공간(313) 등이 확보된다. VM용 메모리 공간(311)은 VMM이나 OS(231)용으로 할당하는 기억 영역이다. I/O용 메모리 공간(312)은 I/O 디바이스(110a~c)의 메모리용으로 할당하는 기억 영역이다. I/O용 레지스터 공간(313)은 I/O 디바이스(110a~c)의 레지스터용으로 할당하는 기억 영역이다.
물리 계산기(200)의 기동 처리(도 2의 S110)에 있어서, 이하와 같은 물리 어드레스 공간의 초기 설정이 행해진다.
물리 어드레스 공간에 VM용 메모리 공간(311), I/O용 메모리 공간(312), I/O용 레지스터 공간(313) 등이 확보된다.
VM용 메모리 공간(311)에 VMM부(220)용의 기억 영역이 확보되고, VMM부(220)용의 기억 영역에 VMM의 프로그램이나 데이터가 보조 기억 장치(213)로부터 로드(판독)된다. 후술하는 I/O 할당 테이블(229)은 VMM부(220)용의 기억 영역에 로드되는 데이터의 일례이다.
I/O용 메모리 공간(312)에 I/O 디바이스(110a~c) 각각의 메모리 공간이 확보된다. I/O 디바이스(110a~c)의 메모리 공간에 액세스함으로써 I/O 디바이스(110a~c)의 메모리에 액세스할 수 있다.
I/O용 레지스터 공간(313)에 I/O 디바이스(110a~c) 각각의 레지스터 공간이 확보된다(도 3에서는 I/O 디바이스(110b)의 레지스터 공간만을 나타낸다). I/O 디바이스(110a~c)의 레지스터 공간에 액세스함으로써 I/O 디바이스(110a~c)의 레지스터에 액세스할 수 있다.
가상 메모리 맵(320a)은 OS(231a)용의 가상 어드레스 공간의 용도를 나타내는 도면 또는 데이터이고, 가상 메모리 맵(320b)은 OS(231b)용의 가상 어드레스 공간의 용도를 나타내는 도면 또는 데이터이다. 가상 메모리 맵(320a·b)의 데이터는 VMM부(220)의 메모리 관리부(224)에 의해서 기억 관리된다. OS(231a·b)용의 가상 어드레스 공간에 관해서는 후술한다.
도 4는 실시예 1에 있어서의 I/O 할당 테이블(229)의 초기 상태를 나타내는 도면이다.
실시예 1에 있어서의 I/O 할당 테이블(229)에 대해서, 도 4에 기초해서 설명한다.
I/O 할당 테이블(229)(디바이스 할당 테이블의 일례)은 I/O 디바이스(110)(의 메모리나 레지스터)와 I/O 디바이스(110)가 할당된 OS(231)를 대응시키기 위한 데이터이다.
I/O 할당 테이블(229)은 '디바이스 식별자'와, '할당 대상'과, '영역(0부터 5)'을 포함한다. '영역 n(n은 0부터 5)'가 나타내는 기억 영역은 PCI 컨피규레이션 레지스터의 BARn이 나타내는 기억 영역에 대응하고 있다. 하나의 '영역 n'을 이용해서 32비트의 기억 영역을 나타내는 대신, PCI 컨피규레이션 레지스터의 BAR와 같이 2개의 '영역 n'을 이용해서 64비트의 기억 영역을 나타내도 상관없다.
'영역(0부터 5)'는 '베이스 어드레스', '사이즈', '속성'을 포함한다. 초기 상태에서는 어느 항목도 설정되어 있지 않다. 또한, '영역(0부터 5)'에 그 외의 정보(예컨대, 프리패치 가능 여부 플래그)를 포함해도 된다.
이후에 설정되는 각 항목은 아래와 같이 기능한다.
'디바이스 식별자'는 I/O 디바이스(110)의 식별자를 나타낸다. 예컨대, PCI 디바이스의 경우, 도메인 번호, 버스 번호, 디바이스 번호, 펑션 번호의 그룹을 디바이스 식별자로서 사용한다.
'할당 대상'은 I/O 디바이스(110)가 할당된 OS(231)의 식별자를 나타낸다. '할당 대상'에 설정되는 'NULL'은 I/O 디바이스(110)가 어느 OS(231)에도 할당되어 있지 않다는 것을 의미한다.
'베이스 어드레스'는 I/O 디바이스(110)용으로 할당된 기억 영역의 선두의 물리 어드레스를 나타낸다. '영역 n(n은 0부터 5)'의 '베이스 어드레스'에는 PCI 컨피규레이션 레지스터의 BARn이 나타내는 베이스 어드레스가 설정된다.
'사이즈'는 할당된 기억 영역의 크기를 나타낸다. '영역 n'의 '사이즈'에는 PCI 컨피규레이션 레지스터의 BARn이 나타내는 사이즈가 설정된다.
'속성'은 할당된 기억 영역의 용도를 나타낸다. '속성'에 설정되는 '메모리'는 할당된 기억 영역이 메모리 공간인 것을 의미하고, '속성'에 설정되는 '레지스터'는 할당된 기억 영역이 레지스터 공간인 것을 의미한다.
도 2로 돌아가서, 가상 계산기 시스템(100)의 동작에 대해서 설명을 계속한다.
S120에서, VMM부(220)가 기동한다. VMM부(220)가 기동한 경우, VMM부(220)의 제어부(228)는 I/O 할당 테이블(229)(도 4 참조)의 초기화 처리를 실행한다. I/O 할당 테이블(229)의 초기화 처리에 대해서는 후술한다.
또한, VMM부(220)의 제어부(228)는 VM용 메모리 공간(311)(도 3 참조)에 OS(231a·b)용의 기억 영역을 확보하고, OS(231a·b)용의 기억 영역에 VM의 프로그램이나 데이터를 보조 기억 장치(213)로부터 로드(판독)한다. OS(231a·b), 디바이스 드라이버(232a·b) 및 PCI 드라이버(233a·b)는 OS(231a·b)용의 기억 영역에 로드되는 프로그램의 일례이다. OS(231a·b)용의 기억 영역의 확보 및 VM의 프로그램이나 데이터의 로드는 물리 계산기(200)의 기동 처리(S110)에서 실행해도 된다.
또한, VMM부(220)의 메모리 관리부(224)는 OS(231a·b)용의 가상 어드레스 공간을 정의하고, 가상 어드레스 공간에 OS(231a·b)용의 기억 영역을 매핑한다(도 3의 가상 메모리 맵(320a·b) 참조). 이 때, 메모리 관리부(224)는 물리 어드레스 공간의 물리 어드레스와 가상 어드레스 공간의 가상 어드레스를 대응시키는 매핑 테이블을 생성한다.
그리고, VMM부(220)의 제어부(228)는 VM부(230a·b)를 기동한다.
S130에서, VM부(230a·b)가 동작을 개시한다. VM부(230a·b)가 동작을 개시한 경우, I/O 디바이스(110a~c)의 메모리나 레지스터로의 액세스 및 PCI 컨피규레이션 레지스터로의 액세스가 발생한다. 액세스가 발생한 경우의 처리에 대해서는 후술한다.
도 2의 흐름도에 나타낸 바와 같은 가상 계산기 시스템(100)의 동작에 의해서, 물리 계산기(200)로 VM부(230a·b)가 가동한다.
도 5는 실시예 1에 있어서의 I/O 할당 테이블(229)의 초기화 처리를 나타내는 흐름도이다.
실시예 1에 있어서의 I/O 할당 테이블(229)의 초기화 처리에 대해서, 도 5에 기초해서 설명한다.
VMM부(220)의 제어부(228)는 물리 계산기(200)에서 사용되는 I/O 디바이스(110)별로 S210부터 S230의 처리를 실행한다. 즉, 제어부(228)는 I/O 디바이스(110a~c) 각각에 대해서 S210부터 S230의 처리를 실행한다.
S210에서, 제어부(228)는 I/O 디바이스(110)의 메모리 공간 및 레지스터 공간이 페이지 경계에 정렬되어 있는지 여부를 판정한다. 이 때, 제어부(228)는 I/O 디바이스(110)의 PCI 컨피규레이션 레지스터 내의 각 BAR를 참조한다. 각 BAR에는 I/O 디바이스(110)의 메모리 공간 또는 레지스터 공간의 베이스 어드레스 및 사이즈가 설정되어 있다. 제어부(228)는 각 BAR에 설정되어 있는 베이스 어드레스가 페이지 경계의 어드레스(페이지 사이즈(예컨대, 4K 바이트) 단위의 어드레스)인지 여부를 판정한다. 각 BAR에 설정되어 있는 베이스 어드레스가 페이지 경계의 어드레스인 경우에는, I/O 디바이스(110)의 메모리 공간 및 레지스터 공간은 페이지 경계에 정렬되어 있다.
I/O 디바이스(110)의 메모리 공간 및 레지스터 공간이 페이지 경계에 정렬되어 있는 경우(예), 처리는 S230으로 진행한다.
I/O 디바이스(110)의 메모리 공간 및 레지스터 공간이 페이지 경계에 정렬되어 있지 않은 경우(아니오), 처리는 S220로 진행한다.
S220에서, 제어부(228)는 페이지 경계의 어드레스가 아닌 베이스 어드레스가 설정되어 있는 BAR에 해당 베이스 어드레스의 전후의 어느 페이지 경계의 어드레스를 설정한다.
이로써, I/O 디바이스(110)의 메모리 공간 및 레지스터 공간을 페이지 경계에 정렬시킬 수 있다.
S220 이후에, 처리는 S230로 진행한다.
S230에서, 제어부(228)는 I/O 디바이스(110)의 PCI 컨피규레이션 레지스터의 설정값을 이용해서 I/O 할당 테이블(229)에 I/O 디바이스(110)의 '디바이스 식별자', '베이스 어드레스', '사이즈', '속성'을 설정한다. 또한, 제어부(228)는 I/O 할당 테이블(229)의 '할당 대상'에는 'NULL(할당되어 있는 OS(231)가 없다)'을 설정한다.
도 6은 실시예 1에 있어서의 초기화 처리 이후의 I/O 할당 테이블(229)을 나타내는 도면이다. 초기화 처리 이후의 I/O 할당 테이블(229)의 일례를 도 6에 나타낸다.
도 7은 실시예 1에 있어서의 I/O 디바이스(110)의 할당 처리를 나타내는 흐름도이다.
실시예 1에 있어서의 I/O 디바이스(110)의 할당 처리에 대해서, 도 7에 기초해서 설명한다.
어느 OS(231a·b)에도 할당되어 있지 않은 I/O 디바이스(110)의 메모리 공간 또는 레지스터 공간에 액세스가 발생한 경우, 아래와 같이 I/O 디바이스(110)의 할당 처리가 실행된다.
이하, OS(231a)로부터 I/O 디바이스(110a)의 메모리 공간에 액세스가 발생한 경우에 대해서 설명한다. 단, OS(231a)로부터 I/O 디바이스(110a)의 레지스터 공간에 액세스가 발생한 경우, 및 OS(231a)로부터 I/O 디바이스(110b 또는 c)의 메모리 공간 또는 레지스터 공간에 액세스가 발생한 경우에도, 처리 내용은 이하와 마찬가지이다. 또한, OS(231b)로부터 I/O 디바이스(110a~c) 중 어느 한 메모리 공간 또는 레지스터 공간에 액세스가 발생한 경우에도 처리 내용은 이하와 마찬가지이다.
S310에서, OS(231a)의 디바이스 드라이버(232a)는 I/O 디바이스(110a)의 메모리 공간에 액세스한다. 예컨대, 디바이스 드라이버(232a)는 I/O 디바이스(110a)의 메모리 공간의 물리 어드레스를 지정하여 액세스 명령을 프로세서(211a)에 출력한다.
S310 이후에, 처리는 S320으로 진행한다.
S320에서, 프로세서(211a)는 VMM부(220)의 기동시에 메모리 관리부(224)에 의해서 생성된 매핑 테이블을 참조한다. 이 때, I/O 디바이스(110a)의 메모리 공간의 물리 어드레스에 대한 가상 어드레스는 매핑 테이블에 설정(매핑)되어 있지 않다. 이 때문에, 프로세서(211a)는 페이지 폴트(fault) 예외(또는 TLB 미스 예외. 이하 마찬가지)를 발생시켜서 VMM부(220)를 호출한다. 페이지 폴트 예외의 정보(데이터)에는 액세스 대상의 물리 어드레스가 포함된다.
예컨대, 페이지 폴트 예외의 발생시의 VMM부(220)의 호출을 OS(231a·b)의 예외 핸들러에 설정해 두어도 된다. 또는 물리 계산기(200)의 가상화 지원 기능의 일부인 예외 인터셉트 기능을 이용해서 VMM부(220)를 호출해도 된다. 또는 OS(231a·b)를 비특권 모드로 동작시켜서, 페이지 폴트 예외(특권 위반의 일례)의 발생시의 VMM부(220)의 호출을 OS(231a·b)의 예외 벡터에 설정해 두어도 된다.
S320 이후에, 처리는 S330으로 진행한다.
S330에서, VMM부(220)의 I/O 할당부(223)는 I/O 할당 테이블(229)을 참조하며, 페이지 폴트 예외의 원인이 I/O 디바이스(110a)의 메모리 공간 또는 레지스터 공간으로의 액세스인지 여부를 판정한다.
이 때, I/O 할당부(223)는 I/O 할당 테이블(229)에 등록된 각 I/O 디바이스의 각 '영역(0부터 5)'에 액세스 대상의 물리 어드레스가 포함되는지 여부를 판정한다. 액세스 대상의 물리 어드레스가 어느 한 I/O 디바이스의 '영역(0부터 5)'에 포함되는 경우, 페이지 폴트 예외의 원인은 상기 I/O 디바이스(110)의 메모리 공간 또는 레지스터 공간으로의 액세스이다.
페이지 폴트 예외의 원인이 I/O 디바이스(110a)의 메모리 공간 또는 레지스터 공간으로의 액세스인 경우(예), 처리는 S331로 진행한다.
페이지 폴트 예외의 원인이 I/O 디바이스(110a)의 메모리 공간 또는 레지스터 공간으로의 액세스가 아닌 경우(아니오), 처리는 S350로 진행한다.
S331에서, VMM부(220)의 I/O 할당부(223)는 I/O 할당 테이블(229)을 참조해서, 액세스 대상의 I/O 디바이스(110a)가 다른 OS(231b)에 점유되어 있는지 여부를 판정한다.
이 때, I/O 할당부(223)는 I/O 할당 테이블(229)에 액세스 대상(I/O 디바이스(110a))의 '디바이스 식별자'에 대응지어진 '할당 대상'에 다른 OS(231b)의 식별자가 설정되어 있는지 여부를 판정한다. '할당 대상'에 다른 OS(231b)의 식별자가 설정되어 있는 경우, 액세스 대상의 I/O 디바이스(110a)는 다른 OS(231b)에 점유되어 있다.
액세스 대상의 I/O 디바이스(110a)가 다른 OS(231b)에 점유되어 있는 경우(예), 처리는 S350로 진행한다.
액세스 대상의 I/O 디바이스(110a)가 다른 OS(231b)에 점유되어 있지 않은 경우(아니오), 처리는 S340로 진행한다.
S340에서, VMM부(220)의 I/O 할당부(223)는 I/O 할당 테이블(229)의 설정을 행한다. 이 때, I/O 할당부(223)는 액세스 대상(I/O 디바이스(110a))의 '디바이스 식별자'에 대응지어진 '할당 대상'에 액세스원(OS(231a))의 식별자를 설정한다.
S340 이후에, 처리는 S341로 진행한다.
S341에서, VMM부(220)의 메모리 관리부(224)는 I/O 할당 테이블(229)을 참조해서, 액세스 대상(I/O 디바이스(110a))의 '디바이스 식별자'에 대응지어진 '영역(0부터 5)'이 나타내는 모든 메모리 공간 및 레지스터 공간을 액세스원의 OS(231a)의 가상 어드레스 공간에 매핑한다. 즉, 메모리 관리부(224)는 해당 '영역(0부터 5)'의 물리 어드레스와 OS(231a)의 가상 어드레스 공간의 가상 어드레스를 대응시켜서 매핑 테이블에 설정한다.
S341 이후에, 처리는 S342로 진행한다.
S342에서, VMM부(220)의 I/O 에뮬레이션부(222)는 I/O 디바이스(110a)의 메모리 공간으로의 액세스를 에뮬레이션한다. 즉, I/O 에뮬레이션부(222)는 OS(231a)의 디바이스 드라이버(232a) 대신에 I/O 디바이스(110a)의 메모리 공간에 액세스한다. 예컨대, I/O 에뮬레이션부(222)가 액세스 명령을 프로세서(211a)에 출력해서, 프로세서(211a)가 I/O 디바이스(110a)의 메모리 공간에 액세스한다.
S342 이후에, 처리는 S360로 진행한다.
S350에서, VMM부(220)의 제어부(228)는 페이지 폴트 예외용의 소정의 이상 처리를 실행한다. 예컨대, 제어부(228)는 OS(231a)에 에러 통지를 행하거나, 또는 페이지 폴트 예외를 에뮬레이션해서 실행한다.
S350 이후에, 처리는 S360로 진행한다.
S360에서, VMM부(220)의 제어부(228)는 OS(231a)로 제어를 리턴한다.
S360에 의해, I/O 디바이스(110)의 할당 처리는 종료한다.
OS(231a)에 I/O 디바이스(110a)가 할당되고, I/O 디바이스(110a)의 메모리 공간과 OS(231a)의 가상 어드레스 공간이 매핑된 경우, 프로세서(211a)는 OS(231a)로부터 I/O 디바이스(110a)의 메모리 공간에 액세스가 발생해도 페이지 폴트 예외를 발생시키지 않고, 액세스 명령에 따라서 I/O 디바이스(110a)의 메모리 공간에 액세스한다. 이 경우, VMM부(220)는 I/O 디바이스(110a)의 메모리 공간으로의 액세스를 에뮬레이션하지 않는다.
도 8은 실시예 1에 있어서의 I/O 디바이스(110a·b)를 할당한 후의 I/O 할당 테이블(229)을 나타내는 도면이다.
I/O 디바이스(110a)의 메모리에 액세스한 OS(231a)에 I/O 디바이스(110a)를 할당하고, I/O 디바이스(110b)의 메모리 또는 레지스터에 액세스한 OS(231b)에 I/O 디바이스(110b)를 할당한 경우의 I/O 할당 테이블(229)을 도 8에 나타낸다.
도 9는 실시예 1에 있어서의 I/O 디바이스(110a·b)를 할당한 후의 가상 메모리 맵(320a·b)을 나타내는 도면이다.
I/O 디바이스(110a)의 메모리 공간을 OS(231a)의 가상 어드레스 공간에 매핑한 경우의 가상 메모리 맵(320a)와, I/O 디바이스(110b)의 메모리 공간과 레지스터 공간을 OS(231b)의 가상 어드레스 공간에 매핑한 경우의 가상 메모리 맵(320b)을 도 9에 나타낸다.
도 10은 실시예 1에 있어서의 PCI 컨피규레이션 레지스터로의 액세스 처리를 나타내는 흐름도이다.
OS(231a)의 PCI 드라이버(233a)가 I/O 디바이스(110a)의 PCI 컨피규레이션 레지스터에 액세스한 경우의 처리에 대해서, 도 10에 기초해서 설명한다. 단, OS(231a)의 PCI 드라이버(233a)가 I/O 디바이스(110b·c)의 PCI 컨피규레이션 레지스터에 액세스한 경우에도 처리 내용은 이하와 마찬가지이다. 또한, OS(231b)의 PCI 드라이버(233b)가 I/O 디바이스(110a~c)의 PCI 컨피규레이션 레지스터에 액세스한 경우에도 처리 내용은 이하와 마찬가지이다.
S410에서, OS(231a)의 PCI 드라이버(233a)가 I/O 디바이스(110a)의 PCI 컨피규레이션 레지스터에 액세스한다. 예컨대, PCI 드라이버(233a)는 I/O 디바이스(110a)의 PCI 컨피규레이션 레지스터 내의 어드레스나 레지스터 번호를 지정해서 액세스 명령을 프로세서(211a)에 출력한다.
S410 이후에, 처리는 S420으로 진행한다.
S420에서, VMM부(220)는 I/O 디바이스(110a)의 PCI 컨피규레이션 레지스터로의 액세스를 인터셉트한다.
예컨대, PCI 컨피규레이션 공간으로의 액세스용의 레지스터(CONFIG_ADDR 레지스터 및 CONFIG_DATA 레지스터)가 배치되어 있는 페이지를 OS(231a·b)로부터 액세스할 수 없는 페이지로서 프로세서(211a·b)에 설정해 둔다. 그리고, OS(231a·b)로부터 해당 페이지로의 액세스(PCI 컨피규레이션 레지스터로의 액세스)가 발생한 경우, 프로세서(211a·b)는 페이지 폴트 예외(또는 TLB 미스 예외. 이하 마찬가지)를 발생해서 VMM부(220)를 호출한다. 또한, OS(231a·b)가, PCI 컨피규레이션 공간으로의 액세스용의 레지스터에 액세스하기 위해서, VMM부(220)를 호출해도 된다. 또한, PCI 컨피규레이션 공간으로의 액세스용의 레지스터가 메모리 공간이 아니라 I/O 어드레스 공간에 매핑되는 경우, I/O 어드레스 공간의 보호 기능에 의해서 VMM부(220)를 호출하도록 해도 된다.
S420 이후에, 처리는 S430로 진행한다.
S430에서, VMM부(220)의 PCI 에뮬레이션부(221)는 I/O 할당 테이블(229)을 참조해서, 액세스 대상의 I/O 디바이스(110a)(PCI 디바이스)가 액세스원의 OS(231a)에 할당되어 있는지 여부를 판정한다. 액세스 대상(I/O 디바이스(110a))의 '디바이스 식별자'에 대응지어진 '할당 대상'에 액세스원(OS(231a))의 식별자가 설정되어 있는 경우, 액세스 대상의 I/O 디바이스(110a)는 액세스원의 OS(231a)에 할당되어 있다.
액세스 대상의 I/O 디바이스(110a)가 액세스원의 OS(231a)에 할당되어 있는 경우(예), 처리는 S440로 진행한다.
액세스 대상의 I/O 디바이스(110a)가 액세스원의 OS(231a)에 할당되어 있지 않은 경우(아니오), 처리는 S450로 진행한다.
S440에서, VMM부(220)의 PCI 에뮬레이션부(221)는 액세스 내용이 PCI 컨피규레이션 레지스터의 BAR의 변경을 포함하는지 여부를 판정한다.
액세스 내용이 PCI 컨피규레이션 레지스터의 BAR의 변경을 포함하는 경우(예), 처리는 BAR 변경 판정 처리(S500)로 진행하여, 그 후 S441로 진행한다. BAR 변경 판정 처리(S500)에 대해서는 별도로 설명한다.
액세스 내용이 PCI 컨피규레이션 레지스터의 BAR의 변경을 포함하지 않는 경우(아니오), 처리는 S442로 진행한다.
S441에서, BAR 변경 판정 처리(S500)의 처리 결과가 'OK'인 경우에는, 처리는 S442로 진행한다. 또한, BAR 변경 판정 처리(S500)의 처리 결과가 'NG'인 경우에는, 처리는 S450로 진행한다.
S442에서, VMM부(220)의 PCI 에뮬레이션부(221)는 PCI 컨피규레이션 레지스터로의 액세스를 에뮬레이션한다. 이 때, PCI 에뮬레이션부(221)는 PCI 드라이버(233a) 대신에 PCI 컨피규레이션 레지스터에 액세스한다. 예컨대, PCI 에뮬레이션부(221)가 액세스 명령을 프로세서(211a)에 출력하고, 프로세서(211a)가 PCI 컨피규레이션 레지스터에 액세스한다.
S442 이후에, 처리는 S460으로 진행한다.
S450에서, VMM부(220)의 PCI 에뮬레이션부(221)는 PCI 컨피규레이션 레지스터로의 액세스시의 소정의 이상 처리를 실행한다. 예컨대, PCI 에뮬레이션부(221)는 OS(231a)에 에러 통지를 행한다.
S450 이후에, 처리는 S460으로 진행한다.
S460에서, VMM부(220)의 PCI 에뮬레이션부(221)는 OS(231a)에 제어를 리턴한다.
S460에 의해, PCI 컨피규레이션 레지스터로의 액세스 처리는 종료한다.
도 11은 실시예 1에 있어서의 BAR 변경 판정 처리(S500)를 나타내는 흐름도이다.
PCI 컨피규레이션 레지스터로의 액세스 처리(도 10 참조)에 포함되는 BAR 변경 판정 처리(S500)에 대해서, 도 11에 기초해서 설명한다.
S510에서, VMM부(220)의 PCI 에뮬레이션부(221)는 변경 후의 BAR가 나타내는 기억 영역이 정확한 기억 영역인지 여부를 판정한다. 예컨대, PCI 에뮬레이션부(221)는 변경후의 BAR의 베이스 어드레스가 페이지 경계의 어드레스와 일치하는 경우에 변경후의 BAR가 나타내는 기억 영역이 정확한 기억 영역이라고 판정한다. 또한, PCI 에뮬레이션부(221)는 변경후의 BAR가 나타내는 기억 영역이 I/O용 메모리 공간(312)이나 I/O용 레지스터 공간(313)에 들어가는지를 판정한다.
변경후의 BAR가 나타내는 기억 영역이 정확한 기억 영역인 경우(예), 처리는 S511로 진행한다.
변경후의 BAR가 나타내는 기억 영역이 정확한 기억 영역이 아닌 경우(아니오), BAR 변경 판정 처리(S500)의 처리 결과는 'NG'이다(S530).
S511에서, VMM부(220)의 PCI 에뮬레이션부(221)는 I/O 할당 테이블(229)을 참조해서, 변경후의 BAR가 나타내는 기억 영역이 다른 OS(231b)에 점유되어 있는지 여부를 판정한다. 이 때, PCI 에뮬레이션부(221)는 액세스원 이외의 OS(231b)의 식별자가 설정되어 있는 '할당 대상'에 대응지어진 '영역(0부터 5)'에 변경후의 BAR가 나타내는 기억 영역의 일부 또는 전부가 포함되어 있는지 여부를 판정한다.
변경후의 BAR가 나타내는 기억 영역이 다른 OS(231b)에 점유되어 있는 경우(예), BAR 변경 판정 처리(S500)의 처리 결과는 'NG'이다(S530).
변경후의 BAR가 나타내는 기억 영역이 다른 OS(231b)에 점유되어 있지 않은 경우(아니오), 처리는 S520으로 진행한다.
S520에서, VMM부(220)의 PCI 에뮬레이션부(221)는 I/O 할당 테이블(229)의 액세스 대상(I/O 디바이스(110a))의 '디바이스 식별자'에 대응지어진 '영역(0부터 5)' 중에서, 변경한 BAR에 대응하는 '영역(0부터 5의 어느것인가)'의 '베이스 어드레스' 및 '사이즈'를 변경한다.
S520 이후에, 처리는 S521로 진행한다.
S521에 있어서, VMM부(220)의 메모리 관리부(224)는 BAR의 변경에 따라서 I/O 디바이스(110a)의 매핑 테이블을 변경한다. 즉, 메모리 관리부(224)는 변경전의 BAR가 나타내는 기억 영역을 I/O 디바이스(110a)의 가상 어드레스 공간으로부터 언매핑하고, 변경후의 BAR가 나타내는 기억 영역을 I/O 디바이스(110a)의 가상 어드레스 공간에 매핑한다.
BAR 변경 판정 처리(S500)의 처리 결과는 'OK'이다(S522).
여기서, 실시예에 있어서의 가상 계산기 시스템(100)의 하드웨어에 대해서 보충 설명한다.
프로세서(211a·b)는 버스(도시 생략)를 통해서 메인 메모리(212), 보조 기억 장치(213), 인터럽트 컨트롤러(214), I/O 디바이스(110a~c) 및 그 밖의 하드웨어와 접속되어, 이들 하드웨어를 제어한다.
메인 메모리(212) 또는 보조 기억 장치(213)에는 프로그램군이나 파일군이 기억되어 있다(도시 생략).
프로그램군에는 실시예에 있어서 '~부'로서 설명한 기능을 실행하는 프로그램이 포함된다. 프로그램(예컨대, 액세스 제어 프로그램, 가상 계산기 프로그램)은 프로세서(211)에 의해 판독되어 실행된다. 즉, 프로그램은 '~부'로서 컴퓨터를 기능시키는 것이고, 또한 '~부'의 순서나 방법을 컴퓨터에 실행시키는 것이다.
파일군에는 실시예에서 설명하는 '~부'에서 사용되는 각종 데이터(입력, 출력, 판정 결과, 계산 결과, 처리 결과 등)이 포함된다.
실시예에서 구성도 및 흐름도에 포함되어 있는 화살표는 주로 데이터나 신호의 입출력을 나타낸다.
흐름도 등에 기초해서 설명하는 처리는 하드웨어(210)(예컨대, 프로세서(211))를 이용해서 실행된다.
실시예에서 '~부'로서 설명하는 것은 '~회로', '~장치', '~기기'이어도 되고, 또한 '~단계', '~순서', '~처리'이어도 된다. 즉, '~부'로서 설명하는 것은 펌웨어, 소프트웨어, 하드웨어 또는 이들의 조합 중 어느 것으로 실장되어도 상관없다.
실시예 1에 있어서의 가상 계산기의 OS(231a·b)는 물리 계산기(200)에서 동작하는 복수의 OS의 일례이다. 물리 계산기(200)에 멀티 오퍼레이팅 시스템을 실장하고, 가상 계산기의 OS 이외의 복수의 OS를 물리 계산기(200)가 동작시켜도 상관없다.
실시예 1에 있어서, 물리 계산기(200)는 PCI 디바이스의 레지스터 공간이 메모리 공간에 매핑되어 있다. 단, 물리 계산기(200)는 PC/AT 호환기와 같이, PCI 디바이스의 레지스터 공간이 I/O 어드레스 공간에 매핑되어도 상관없다(PC/AT는 등록 상표). 예컨대, Intel x86 CPU의 경우, I/O 어드레스 공간에 매핑된 PCI 디바이스의 레지스터 공간의 보호는 I/O 특권 레벨이나 I/O 허가 비트맵, 또는 하드웨어의 가상화 지원 기능의 I/O 액세스 인터셉트 기능을 이용함으로써 실현 가능하다(Intel은 등록 상표).
실시예 1에 있어서, 물리 계산기(200)는 OS(231a·b)에 대한 I/O 디바이스(110a~c)의 사전 할당을 행하지 않는다. 그 대신에, 물리 계산기(200)는 OS(231a)에 의한 I/O 디바이스(110a)의 메모리 공간이나 레지스터 공간으로의 액세스가 발생했을 때, 선착순으로, 상기 OS(231a)에 상기 I/O 디바이스(110a)를 할당한다. 이로써, 물리 계산기(200)는 상기 I/O 디바이스(110a)의 메모리 공간과 레지스터 공간과 PCI 컨피규레이션 레지스터를 상기 OS(231a) 이외의 OS(231b)로부터 보호한다. 즉, 물리 계산기(200)는 상기 I/O 디바이스(110a)를 할당한 OS(231a) 이외의 OS(231b)로부터 상기 I/O 디바이스(110a)에 액세스할 수 없게 한다.
실시예 1에 의해, I/O 디바이스(110a~c)의 할당의 사전 설정이 불필요하게 되고, 또한 OS(231a)에 할당된 I/O 디바이스(110a)의 메모리 공간과 레지스터 공간과 PCI 컨피규레이션 레지스터를 다른 OS(231b)로부터 보호하는 것이 가능해진다.
실시예 1에 있어서, 예컨대, 이하와 같은 계산기(물리 계산기(200))에 대해서 설명했다.
계산기는 디바이스(I/O 디바이스(110a~c))에 액세스하는 복수의 OS(OS(231a·b))를 동작시킨다.
계산기는 디바이스 할당 기억부와 액세스 관리부(VMM부(220))를 구비한다.
디바이스 할당 기억부는 상기 디바이스와 상기 디바이스가 할당된 OS를 대응시키기 위한 디바이스 할당 테이블(I/O 할당 테이블(229))를 기억한다.
액세스 관리부는 상기 디바이스로의 액세스가 발생한 경우에는, 상기 디바이스가 할당되어 있는 OS를 상기 디바이스 할당 테이블에 기초해서 판정한다. 액세스 관리부는 상기 디바이스가 어느 OS에도 할당되어 있지 않은 경우에는, 상기 디바이스와 액세스원의 OS를 대응시키기 위해서 상기 디바이스 할당 테이블을 갱신하여 상기 디바이스로의 액세스를 허가한다. 액세스 관리부는 상기 디바이스가 상기 액세스원의 OS 이외의 OS에 할당되어 있는 경우에는, 상기 디바이스로의 액세스를 거부한다.
상기 디바이스 할당 테이블은 상기 디바이스의 물리 어드레스 공간과 상기 디바이스가 할당된 OS를 대응시켜서 나타내는 데이터이다.
상기 액세스 관리부는 상기 디바이스가 어느 OS에도 할당되어 있지 않은 경우, 또한 상기 디바이스 할당 테이블이 나타내는 상기 디바이스의 물리 어드레스 공간을 상기 액세스원의 OS의 가상 어드레스 공간에 매핑한다.
상기 액세스 관리부는 상기 디바이스의 PCI 컨피규레이션 레지스터로의 액세스가 발생한 경우에는, 상기 디바이스가 할당되어 있는 OS를 상기 디바이스 할당 테이블에 기초해서 판정한다. 상기 액세스 관리부는 상기 디바이스가 액세스원의 OS에 할당되어 있는 경우에는, 상기 PCI 컨피규레이션 레지스터로의 액세스를 허가한다. 상기 액세스 관리부는 상기 디바이스가 상기 액세스원의 OS에 할당되어 있지 않은 경우, 상기 PCI 컨피규레이션 레지스터로의 액세스를 거부한다.
상기 액세스 관리부는 상기 PCI 컨피규레이션 레지스터로의 액세스가 베이스 어드레스의 변경이고, 상기 디바이스가 상기 액세스원의 OS에 할당되어 있는 경우, 아래와 같이 동작한다. 상기 액세스 관리부는 변경후의 베이스 어드레스에 기초해서 상기 디바이스 할당 테이블 내의 상기 디바이스의 물리 어드레스 공간의 정보를 갱신한다. 상기 액세스 관리부는 갱신 후의 상기 정보가 나타내는 상기 디바이스의 물리 어드레스 공간을 상기 액세스원의 OS의 가상 어드레스 공간에 매핑한다.
(실시예 2)
액세스하는 디바이스의 종류에 따라서 디바이스의 메모리나 레지스터로부터의 데이터의 판독을 복수의 OS(또는 모든 OS)에 허가하는 형태에 대해서 설명한다.
이하, 실시예 1과 다른 사항에 대해서 주로 설명한다. 설명을 생략하는 사항에 대해서는 실시예 1과 마찬가지이다.
가상 계산기 시스템(100)의 구성은 실시예 1과 마찬가지이다(도 1 참조).
단, I/O 할당 테이블(229)의 구성이 일부 다르다.
도 12는 실시예 2에서의 I/O 할당 테이블(229)을 나타내는 도면이다.
실시예 2에 있어서의 I/O 할당 테이블(229)에 대해서, 도 12에 기초해서 설명한다.
I/O 할당 테이블(229)은 실시예 1에서 설명한 항목(도 4, 6, 8 참조)에 더해서, '디바이스 종별'을 갖는다.
'디바이스 종별'은 I/O 디바이스(110)의 디바이스 종별(예컨대, 브리지)를 나타낸다.
도 12의 I/O 할당 테이블(229)은 I/O 디바이스(110c)가 '브리지'인 것을 나타내고 있다. I/O 디바이스(110c)(브리지)는 어느 OS(231a·b)에도 할당되어 있지 않다.
PCI Express 스위치나 PCI 브리지(모두 브리지의 일례)의 PCI 컨피규레이션 레지스터는 트리 구조에 의해서, 다른 PCI 디바이스와 관련지어져 있기 때문에, 복수의 OS(231a·b)로부터 참조되는 경우가 있다.
그래서, 실시예 2에서는 할당 종별이 '브리지'인 I/O 디바이스(110c)를 어느 OS(231a·b)에도 할당하지 않고, 각 OS(231a·b)로부터 PCI 컨피규레이션 레지스터로의 액세스를 리드 온리(판독 전용)로서 허가한다. 또한, I/O 디바이스(110c)의 PCI 컨피규레이션 레지스터로의 기입은 제 3 VM부의 OS(도시 생략)나 물리 계산기(200)의 OS(도시 생략) 등의 특정한 관리 OS에만 허가한다. 단, 브리지 이외의 I/O 디바이스(110a·b)의 메모리, 레지스터 또는 PCI 컨피규레이션 레지스터를 OS(231a·b)에 대해 리드 온리로 해도 된다.
도 13은 실시예 2에 있어서의 가상 계산기 시스템(100)의 메모리 맵을 나타내는 도면이다.
도 13에 나타낸 바와 같이, I/O 디바이스(110c)의 메모리 공간은 OS(231a)와 OS(231b) 양쪽의 가상 메모리 맵(320)(가상 어드레스 공간)에 매핑한다. 이 때, 메모리 관리부(224)는 I/O 디바이스(110c)의 메모리 공간이 리드 온리인 것을 나타내는 액세스 속성을 매핑 테이블에 설정한다. 또한, 메모리 관리부(224)는 필요에 따라 관리 OS의 가상 어드레스 공간에 I/O 디바이스(110c)의 메모리 공간을 매핑하고, I/O 디바이스(110c)의 메모리 공간이 기입 가능하다는 것을 나타내는 액세스 속성을 매핑 테이블에 설정한다.
도 14는 실시예 2에 있어서의 I/O 할당 테이블(229)의 초기화 처리를 나타내는 흐름도이다.
실시예 2에 있어서의 I/O 할당 테이블(229)의 초기화 처리에 대해서, 도 14에 기초해서 설명한다.
I/O 할당 테이블(229)의 초기화 처리는 실시예 1에서 설명한 처리(도 5 참조)에 더해서, S240와 S241를 포함한다. 이하, S240와 S241에 대해서 설명한다.
S240에서, VMM부(220)의 제어부(228)는 I/O 디바이스(110)의 PCI 컨피규레이션 레지스터(디바이스 종별의 정보를 포함함)를 참조하여, I/O 디바이스(110)가 PCI Express 스위치 또는 PCI 브리지인지 판정한다.
I/O 디바이스(110)가 PCI Express 스위치 또는 PCI 브리지인 경우(예), 처리는 S241로 진행한다.
I/O 디바이스(110)가 PCI Express 스위치와 PCI 브리지의 어느 것도 아닌 경우(아니오), 해당 I/O 디바이스(110)에 관한 처리는 종료된다.
S241에서, VMM부(220)의 제어부(228)는 I/O 할당 테이블(229)에 대해, I/O 디바이스(110)의 '디바이스 식별자'에 대응지어진 '디바이스 종별'에 '브리지'를 설정한다.
S241에 의해, 해당 I/O 디바이스(110)에 대한 처리는 종료한다.
도 15는 실시예 2에 있어서의 I/O 디바이스(110)의 할당 처리를 나타내는 흐름도이다.
실시예 2에 있어서의 I/O 디바이스(110)의 할당 처리에 대해서, 도 15에 기초해서 설명한다.
I/O 디바이스(110)의 할당 처리는 실시예 1에서 설명한 처리(도 7 참조)에 더해서, S332 및 S333를 포함한다. 이하, S332에 대해서 설명한다.
S332에서, VMM부(220)의 I/O 할당부(223)는 OS(231a·b)로부터의 액세스가 브리지(I/O 디바이스(110c))의 메모리 공간 또는 레지스터 공간에의 기입 또는 판독인지 여부를 판정한다.
이 때, I/O 할당부(223)는 액세스 명령의 내용이 '기입' 또는 '판독'인지 여부를 판정한다. 또한, I/O 할당부(223)는 I/O 할당 테이블(229)을 참조해서, 액세스 대상의 I/O 디바이스(110)의 '디바이스 식별자'에 대응지어진 '디바이스 종별'이 '브리지'인지 여부를 판정한다. 액세스 명령의 내용이 '기입' 또는 '판독'이고 '디바이스 종별'이 '브리지'인 경우, OS(231a·b)로부터의 액세스는 브리지(I/O 디바이스(110c))의 메모리 공간 또는 레지스터 공간에의 기입 또는 판독이다.
OS(231a·b)로부터의 액세스가 브리지(I/O 디바이스(110c))의 메모리 공간 또는 레지스터 공간에의 기입인 경우(예[기입])에는, 처리는 S350으로 진행한다.
OS(231a·b)로부터의 액세스가 브리지(I/O 디바이스(110c))의 메모리 공간 또는 레지스터 공간에의 판독인 경우(예[판독])에는, 처리는 S333으로 진행한다.
OS(231a·b)로부터의 액세스가 브리지(I/O 디바이스(110c))의 메모리 공간 또는 레지스터 공간에의 기입 및 판독이 아닌 경우(아니오)에는, 처리는 S331로 진행한다.
S333에서, I/O 할당부(223)는 I/O 할당 테이블(229)에의 등록은 행하지 않고, 가상 어드레스 공간에 상기 I/O 디바이스(110c)의 메모리 공간 및 레지스터 공간을 리드 온리로 매핑한다.
S333 이후에, 처리는 S342로 진행한다.
도 16은 실시예 2에 있어서의 PCI 컨피규레이션 레지스터로의 액세스 처리를 나타내는 흐름도이다.
실시예 2에 있어서의 PCI 컨피규레이션 레지스터로의 액세스 처리에 대해, 도 16에 기초해서 설명한다.
PCI 컨피규레이션 레지스터로의 액세스 처리는 실시예 1에서 설명한 처리(도 10 참조)에 더해서, S421를 포함한다. 이하, S421에 대해서 설명한다.
S421에서, VMM부(220)의 PCI 에뮬레이션부(221)는 OS(231a·b)로부터의 액세스가 브리지(I/O 디바이스(110c))의 PCI 컨피규레이션 레지스터에의 기입 또는 판독인지 여부를 판정한다.
OS(231a·b)로부터의 액세스가 브리지(I/O 디바이스(110c))의 PCI 컨피규레이션 레지스터에의 기입인 경우(예[기입]), 처리는 S450으로 진행한다.
OS(231a·b)로부터의 액세스가 브리지(I/O 디바이스(110c))의 PCI 컨피규레이션 레지스터에의 판독인 경우(예[판독]), 디바이스가 자신의 OS에 할당되어 있는 지 여부에 대한 검사를 생략하고, S442로 진행한다.
OS(231a·b)로부터의 액세스가 브리지(I/O 디바이스(110c))의 PCI 컨피규레이션 레지스터에의 기입 및 판독이 아닌 경우(아니오), 처리는 S430으로 진행한다.
S421에서, PCI 에뮬레이션부(221)는 브리지(I/O 디바이스(110c))의 PCI 컨피규레이션 레지스터에의 기입의 액세스가 소정의 관리 OS로부터의 액세스인지 여부를 판정해도 된다. 브리지(I/O 디바이스(110c))의 PCI 컨피규레이션 레지스터에의 기입의 액세스가 소정의 관리 OS로부터의 액세스인 경우, S450이 아니라 S430으로 진행한다. 즉, PCI 에뮬레이션부(221)는 PCI 컨피규레이션 레지스터에의 기입을 허가한다.
실시예 2에 의해, 어떤 OS(231a)가 허가없이 PCI 브리지(소정의 종류의 디바이스의 일례)를 점유하거나, 허가없이 PCI 브리지의 PCI 컨피규레이션 레지스터를 변경해 버리는 것에 의한 불량을 방지할 수 있다. 예컨대, 다른 OS(231b)가 상기 PCI 브리지에 액세스하는 것이 불가능하게 되어, 상기 PCI 브리지 이하의 PCI의 트리 구조를 따라갈 수 없게 되는 불량을 방지할 수 있다.
실시예 2에 있어서, 예컨대, 이하와 같은 계산기(물리 계산기(200))에 대해서 설명했다.
액세스 관리부(VMM부(220))는 소정의 종류의 디바이스(예컨대, 브리지)의 PCI 컨피규레이션 레지스터로의 기입 액세스가 발생한 경우, 상기 기입 액세스를 거부한다. 액세스 관리부는 상기 소정의 종류의 디바이스의 PCI 컨피규레이션 레지스터로의 판독 액세스가 발생한 경우, 상기 판독 액세스를 허가한다.
액세스 관리부는 상기 소정의 종류의 디바이스의 PCI 컨피규레이션 레지스터로의 기입 액세스가 소정의 관리 OS로부터 발생한 경우, 상기 기입의 액세스를 허가한다.
(실시예 3)
전회의 I/O 디바이스(110a~c)의 할당 결과를 다음번의 가상 계산기 시스템(100)에서 사용하는 형태에 대해서 설명한다.
이하, 실시예 1, 2와 다른 사항에 대해서 주로 설명한다. 설명을 생략하는 사항에 대해서는 실시예 1, 2와 마찬가지이다.
도 17은 실시예 3에 있어서의 가상 계산기 시스템(100)의 구성도이다.
실시예 3에 있어서의 가상 계산기 시스템(100)의 구성에 대해서, 도 17에 기초해서 설명한다.
물리 계산기(200)의 VMM부(220)는 실시예 1에서 설명한 구성(도 1 참조)에 더해서, 테이블 보존부(225)를 구비한다.
테이블 보존부(225)는 VMM부(220)의 실행 종료시(또는 VM부(230a·b)의 실행 종료시)에 I/O 할당 테이블(229)(도 12 참조)를 보조 기억 장치(213)에 보존한다. 보존된 I/O 할당 테이블(229)은 물리 계산기(200)의 다음번 이후의 기동시의 I/O 할당 테이블(229)의 초기화 처리에 사용된다.
도 18은 실시예 3에 있어서의 I/O 할당 테이블(229)의 초기화 처리를 나타내는 흐름도이다.
실시예 3에 있어서의 I/O 할당 테이블(229)의 초기화 처리에 대해서, 도 18에 기초해서 설명한다.
I/O 할당 테이블(229)의 초기화 처리는 실시예 2에서 설명한 처리(도 14 참조)에 더해서, S250으로부터 S253을 포함한다. 이하, S250으로부터 S253에 대해서 설명한다.
S240에서 I/O 디바이스(110)가 PCI Express 스위치와 PCI 브리지의 어느 것도 아닌 경우(아니오), 처리는 S250으로 진행한다.
또한, 실시예 1의 I/O 할당 테이블(229)의 초기화 처리(도 5 참조)에 실시예 3을 적용하는 경우에는, S230 이후에 S250으로 진행한다.
S250에서, VMM부(220)의 제어부(228)는 테이블 보존부(225)에 의해서 보존된 전회(또는 과거)의 I/O 할당 테이블(229)을 이용하는 모드(이하, '인계(take over) 모드'라고 함)에서 VMM부(220)가 기동했는지 여부를 판정한다. 예컨대, 유저가 인계 모드인지 여부를 나타내는 모드 종별을 기동 옵션으로서 지정해서 VMM부(220)를 기동하고, 제어부(228)는 기동 옵션의 모드 종별에 의해서 판정한다. 또한, 유저가 물리 계산기(200)의 DIP 스위치에 의해서 모드를 전환해도 된다. 이하, 전회(또는 과거)의 I/O 할당 테이블(229)을 '보존 할당 테이블'이라고 한다.
VMM부(220)가 인계 모드로 기동한 경우(예), 처리는 S251로 진행한다.
VMM부(220)가 인계 모드로 기동하지 않은 경우(아니오), 해당 I/O 디바이스(110)에 대한 처리는 종료한다.
S251에서, 제어부(228)는 보조 기억 장치(213)의 보존 할당 테이블을 참조해서, 해당 I/O 디바이스(110)가 어느 OS(231a·b)에 할당되어 있었는지 여부를 판정한다. 즉, 제어부(228)는 보존 할당 테이블을 참조해서, 해당 I/O 디바이스(110)의 '디바이스 식별자'에 대응지어진 '할당 대상'에 어느 한 OS(231a·b)가 설정되어 있는지 여부를 판정한다.
해당 I/O 디바이스(110)가 어느 한 OS(231a·b)에 할당되어 있던 경우(예), 처리는 S252로 진행한다.
해당 I/O 디바이스(110)가 어느 OS(231a·b)에도 할당되어 있지 않은 경우(아니오), 해당 I/O 디바이스(110)에 대한 처리는 종료한다.
S252에서, 제어부(228)는 해당 I/O 디바이스(110)가 할당되어 있던 OS(231)(a 또는 b)에 해당 I/O 디바이스(110)를 할당한다. 즉, 제어부(228)는 I/O 할당 테이블(229)에 대해서, I/O 디바이스(110)의 '디바이스 식별자'에 대응지어진 '할당 대상'에 해당 I/O 디바이스(110)가 할당되어 있었던 OS(231)의 식별자를 설정한다.
S252 이후에, 처리는 S253으로 진행한다.
S253에서, 제어부(228)(또는 메모리 관리부(224))는 I/O 할당 테이블(229)을 참조해서, 해당 I/O 디바이스(110)가 할당되어 있었던 OS(231)의 가상 어드레스 공간에 해당 I/O 디바이스(110)의 메모리 공간 및 레지스터 공간(물리 어드레스 공간)을 매핑한다.
S253에 의해, 해당 I/O 디바이스(110)에 관한 처리는 종료한다.
실시예 3에 의해, 보조 기억 장치(213)에 보존된 I/O 할당 테이블(229)을 이용해서, 각 OS(231a·b)에 대한 I/O 디바이스(110a~c)의 할당 및 매핑에 필요한 오버로드를 삭감할 수 있다.
실시예 3에서, 예컨대 이하와 같은 계산기(물리 계산기(200))에 대해서 설명했다.
액세스 관리부(VMM부(220))는 동작이 종료하는 경우에 디바이스 할당 테이블(I/O 할당 테이블(229))을 보존 할당 테이블로서 보존하고, 동작이 개시된 경우에 상기 보존 할당 테이블을 이용해서 새로운 디바이스 할당 테이블을 생성한다.
100 : 가상 계산기 시스템 110 : I/O 디바이스
200 : 물리 계산기 210 : 하드웨어
211 : 프로세서 212 : 메인 메모리
213 : 보조 기억 장치 214 : 인터럽트 컨트롤러
220 : VMM부 221 : PCI 에뮬레이션부
222 : I/O 에뮬레이션부 223 : I/O 할당부
224 : 메모리 관리부 225 : 테이블 보존부
228 : 제어부 229 : I/O 할당 테이블
230 : VM부 231 : OS
232 : 디바이스 드라이버 233 : PCI 드라이버
310 : 물리 메모리 맵 311 : VM용 메모리 공간
312 : I/O용 메모리 공간 313 : I/O용 레지스터 공간
320 : 가상 메모리 맵

Claims (9)

  1. 디바이스에 액세스하는 복수의 OS(Operating System)가 동작하는 계산기로서,
    디바이스와, 디바이스가 할당된 OS를 대응시키기 위한 디바이스 할당 테이블을 기억하는 디바이스 할당 기억부와,
    상기 디바이스로의 액세스가 발생한 경우에는, 상기 디바이스가 할당되어 있는 OS를 상기 디바이스 할당 테이블에 기초해서 판정하여, 상기 디바이스가 어느 OS에도 할당되어 있지 않은 경우에는, 상기 디바이스와 액세스원(accessing party)의 OS를 대응시키기 위해서 상기 디바이스 할당 테이블을 갱신하여 상기 디바이스로의 액세스를 허가하고, 상기 디바이스가 상기 액세스원의 OS 이외의 OS에 할당되어 있는 경우, 상기 디바이스로의 액세스를 거부하는 액세스 관리부
    를 구비하는 것을 특징으로 하는 계산기.
  2. 제 1 항에 있어서,
    상기 디바이스 할당 테이블은 상기 디바이스의 물리 어드레스 공간과 상기 디바이스가 할당된 OS를 대응시켜서 나타내는 데이터이고,
    상기 액세스 관리부는, 상기 디바이스가 어느 OS에도 할당되어 있지 않은 경우, 상기 디바이스 할당 테이블이 나타내는 상기 디바이스의 물리 어드레스 공간을 상기 액세스원의 OS의 가상 어드레스 공간에 매핑하는
    것을 특징으로 하는 계산기.
  3. 제 2 항에 있어서,
    상기 액세스 관리부는, 상기 디바이스의 PCI(Peripheral Components Interconnect bus) 컨피규레이션 레지스터로의 액세스가 발생한 경우, 상기 디바이스가 할당되어 있는 OS를 상기 디바이스 할당 테이블에 기초해서 판정하여, 상기 디바이스가 액세스원의 OS에 할당되어 있는 경우에는, 상기 액세스를 허가하고, 상기 디바이스가 상기 액세스원의 OS에 할당되어 있지 않은 경우에는, 상기 액세스를 거부하는 것을 특징으로 하는 계산기.
  4. 제 3 항에 있어서,
    상기 액세스 관리부는, 상기 PCI 컨피규레이션 레지스터로의 액세스가 베이스 어드레스의 변경이고, 상기 디바이스가 상기 액세스원의 OS에 할당되어 있는 경우, 변경후의 베이스 어드레스에 기초해서 상기 디바이스 할당 테이블 내의 상기 디바이스의 물리 어드레스 공간의 정보를 갱신하고, 갱신후의 상기 정보가 나타내는 상기 디바이스의 물리 어드레스 공간을 상기 액세스원의 OS의 가상 어드레스 공간에 매핑하는 것을 특징으로 하는 계산기.
  5. 제 4 항에 있어서,
    상기 액세스 관리부는, 소정의 종류의 디바이스의 PCI 컨피규레이션 레지스터로의 기입 액세스가 발생한 경우에는, 상기 기입 액세스를 거부하고, 상기 소정의 종류의 디바이스의 PCI 컨피규레이션 레지스터로의 판독 액세스가 발생한 경우에는, 상기 판독 액세스를 허가하는 것을 특징으로 하는 계산기.
  6. 제 5 항에 있어서,
    상기 액세스 관리부는, 상기 소정의 종류의 디바이스의 PCI 컨피규레이션 레지스터로의 기입 액세스가, 상기 복수의 OS 이외의 소정의 관리 OS로부터 발생한 경우, 상기 기입의 액세스를 허가하는 것을 특징으로 하는 계산기.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 액세스 관리부는, 동작이 종료하는 경우에 상기 디바이스 할당 테이블을 보존 할당 테이블로서 보존하고, 동작이 개시되는 경우에 상기 보존 할당 테이블을 이용해서 새로운 디바이스 할당 테이블을 생성하는 것을 특징으로 하는 계산기.
  8. 디바이스에 액세스하는 복수의 OS(Operating System)가 동작하는 계산기에 의해서 실행하는 액세스 관리 방법으로서,
    상기 계산기는, 디바이스와, 디바이스가 할당된 OS를 대응시키기 위한 디바이스 할당 테이블을 기억하는 디바이스 할당 기억부와, 액세스 관리부를 구비하고,
    상기 액세스 관리부는, 상기 디바이스로의 액세스가 발생한 경우, 상기 디바이스가 할당되어 있는 OS를 상기 디바이스 할당 테이블에 기초해서 판정하여, 상기 디바이스가 어느 OS에도 할당되어 있지 않은 경우에는, 상기 디바이스와 액세스원의 OS를 대응시키기 위해서 상기 디바이스 할당 테이블을 갱신하여 상기 디바이스로의 액세스를 허가하고, 상기 디바이스가 상기 액세스원의 OS 이외의 OS에 할당되어 있는 경우에는, 상기 디바이스로의 액세스를 거부하는
    것을 특징으로 하는 액세스 관리 방법.
  9. 청구항 8에 기재된 액세스 관리 방법을 컴퓨터에 실행시키기 위한 액세스 관리 프로그램.
KR1020147023181A 2012-02-23 2012-02-23 계산기, 액세스 관리 방법 및 컴퓨터 판독 가능한 기억 매체 KR101571992B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/054427 WO2013125012A1 (ja) 2012-02-23 2012-02-23 計算機、アクセス管理方法およびアクセス管理プログラム

Publications (2)

Publication Number Publication Date
KR20140124787A true KR20140124787A (ko) 2014-10-27
KR101571992B1 KR101571992B1 (ko) 2015-11-25

Family

ID=49005232

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147023181A KR101571992B1 (ko) 2012-02-23 2012-02-23 계산기, 액세스 관리 방법 및 컴퓨터 판독 가능한 기억 매체

Country Status (7)

Country Link
US (1) US9558364B2 (ko)
EP (1) EP2819023A4 (ko)
JP (1) JP5925288B2 (ko)
KR (1) KR101571992B1 (ko)
CN (1) CN104137088A (ko)
TW (1) TW201335851A (ko)
WO (1) WO2013125012A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325563B (zh) * 2015-06-15 2021-06-04 联想企业解决方案(新加坡)有限公司 用于标识电子设备的数据存储设备及相应的方法
CN106648877B (zh) * 2015-10-28 2020-08-25 阿里巴巴集团控股有限公司 资源申请、释放方法及装置
CN107783821A (zh) * 2017-01-25 2018-03-09 问众智能信息科技(北京)有限公司 车载一体虚拟化方法和装置
CN109981434A (zh) * 2019-03-25 2019-07-05 华勤通讯技术有限公司 一种车载智能系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6086657A (ja) 1983-10-19 1985-05-16 Hitachi Ltd 入出力装置の占有制御装置
US5414851A (en) 1992-06-15 1995-05-09 International Business Machines Corporation Method and means for sharing I/O resources by a plurality of operating systems
JP2972501B2 (ja) 1993-09-20 1999-11-08 富士通株式会社 I/oサブシステム及びi/oサブシステムにおける排他制御方法
JPH1083373A (ja) * 1996-09-06 1998-03-31 Mitsubishi Electric Corp プログラマブルコントローラ
US6453392B1 (en) * 1998-11-10 2002-09-17 International Business Machines Corporation Method of and apparatus for sharing dedicated devices between virtual machine guests
US6820164B2 (en) 2001-04-17 2004-11-16 International Business Machines Corporation Peripheral component interconnect bus detection in logically partitioned computer system involving authorizing guest operating system to conduct configuration input-output operation with functions of pci devices
CN1922576A (zh) * 2003-09-30 2007-02-28 扎鲁纳股份有限公司 操作系统
US7392172B2 (en) 2005-04-28 2008-06-24 Hewlett-Packard Development Company, L.P. Providing virtual device access via firmware
JP2007220086A (ja) 2006-01-17 2007-08-30 Ntt Docomo Inc 入出力制御装置、入出力制御システム及び入出力制御方法
US8099730B2 (en) * 2006-03-30 2012-01-17 Intel Corporation Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses
JP2008158710A (ja) * 2006-12-22 2008-07-10 Hitachi Ltd 計算機システム
JP2010128943A (ja) 2008-11-28 2010-06-10 Toshiba Corp 情報処理装置および情報処理装置の制御方法
JP5352848B2 (ja) 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
US8239938B2 (en) 2008-12-08 2012-08-07 Nvidia Corporation Centralized device virtualization layer for heterogeneous processing units
JP4705982B2 (ja) 2008-12-11 2011-06-22 株式会社日立製作所 情報処理システム、情報処理方法、及び管理装置
JP2010186456A (ja) * 2009-02-11 2010-08-26 Saito Seisakusho:Kk 電気自動車の運転音および警報の発生方法
JP2011145912A (ja) 2010-01-15 2011-07-28 Fujitsu Ltd 仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム
US8977724B2 (en) * 2010-03-31 2015-03-10 International Business Machines Corporation Method and system for automated operating system image loading

Also Published As

Publication number Publication date
JPWO2013125012A1 (ja) 2015-05-21
EP2819023A4 (en) 2016-06-08
US9558364B2 (en) 2017-01-31
JP5925288B2 (ja) 2016-05-25
CN104137088A (zh) 2014-11-05
EP2819023A1 (en) 2014-12-31
TW201335851A (zh) 2013-09-01
US20150302222A1 (en) 2015-10-22
WO2013125012A1 (ja) 2013-08-29
KR101571992B1 (ko) 2015-11-25

Similar Documents

Publication Publication Date Title
EP2959392B1 (en) Memory introspection engine for integrity protection of virtual machines
JP4756603B2 (ja) データプロセッサ
US20180129619A1 (en) Virtualizing interrupt prioritization and delivery
EP3161710B1 (en) Hardware configuration reporting systems
EP3070604B1 (en) Method and apparatus for accessing physical resources
US20110197190A1 (en) Virtualization method and virtual machine
US20080228971A1 (en) Device modeling in a multi-core environment
JP2007220086A (ja) 入出力制御装置、入出力制御システム及び入出力制御方法
US9952890B2 (en) Kernel state data collection in a protected kernel environment
EP3365794B1 (en) Techniques for protecting memory pages of a virtual computing instance
JP2008305106A (ja) 仮想計算機の制御プログラムおよび仮想計算機システム
US9910690B2 (en) PCI slot hot-addition deferral for multi-function devices
US10664304B2 (en) Application memory protection using an extended page table switching virtual machine function
KR101571992B1 (ko) 계산기, 액세스 관리 방법 및 컴퓨터 판독 가능한 기억 매체
US20190377612A1 (en) VCPU Thread Scheduling Method and Apparatus
US20130007379A1 (en) Secure and virtualizable performance counters
US9459907B2 (en) Guest controlled malicious payload protection
US10853284B1 (en) Supporting PCI-e message-signaled interrupts in computer system with shared peripheral interrupts
US10162663B2 (en) Computer and hypervisor-based resource scheduling method
WO2017012339A1 (zh) 资源管理方法及装置
Zabaljáuregui Hardware assisted virtualization intel virtualization technology
US20110213936A1 (en) Processor, multiprocessor system, and method of detecting illegal memory access
Yao et al. White Paper A Tour beyond BIOS Using Intel® VT-d for DMA Protection in UEFI BIOS
Uchiyama et al. Software Environments
JP2013182461A (ja) 情報処理装置および情報処理装置におけるリソースの制御方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181101

Year of fee payment: 4