KR20120062854A - 계산기 장치 - Google Patents

계산기 장치 Download PDF

Info

Publication number
KR20120062854A
KR20120062854A KR1020127008286A KR20127008286A KR20120062854A KR 20120062854 A KR20120062854 A KR 20120062854A KR 1020127008286 A KR1020127008286 A KR 1020127008286A KR 20127008286 A KR20127008286 A KR 20127008286A KR 20120062854 A KR20120062854 A KR 20120062854A
Authority
KR
South Korea
Prior art keywords
privileged
request
processing unit
management right
priority
Prior art date
Application number
KR1020127008286A
Other languages
English (en)
Inventor
아키오 이데하라
히토시 야마모토
Original Assignee
미쓰비시덴키 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 미쓰비시덴키 가부시키가이샤 filed Critical 미쓰비시덴키 가부시키가이샤
Publication of KR20120062854A publication Critical patent/KR20120062854A/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/46Multiprogramming arrangements
    • 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/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

공유 디바이스(601)의 관리권을 가지지 않는 비특권 OS(200)에 특정의 공유 디바이스를 지정 디바이스로서 대응지어 두고, 비특권 OS(200)의 기동까지는 특권 OS(100)에 지정 디바이스의 관리권을 부여하고, 비특권 OS(200)의 기동시에, 지정 디바이스의 관리권을 특권 OS(100)로부터 비특권 OS(200)로 이양하고, 비특권 OS(200)가 지정 디바이스를 사용하는 경우에, 비특권 OS(200)는 직접 지정 디바이스에 대해 사용 요구를 할 수 있어, VM(300) 및 특권 OS(100)의 처리를 기다릴 필요가 없어, 비특권 OS(200)에 필요한 실시간 응답성을 확보할 수 있다.

Description

계산기 장치{COMPUTER DEVICE}
본 발명은 복수의 OS(Operating System)를 탑재하는 계산기 장치에 관한 것이다.
최근, 팩토리 오토메이션 기기(factory automation apparatus)나 차량 탑재 기기(vehicle-mounted apparatus) 등의 내장 기기(embedded apparatus)를 비롯한 계산기 장치에서는, 종래 기종에 대한 부가 기능의 추가나, 시스템의 고기능화를 위해서, 처리 능력의 향상에 대한 요구가 있다.
이러한 요구에 대해, CPU(Central Processing Unit)의 연산 처리부(코어)를 복수로 함으로써, 소비 전력을 억제하면서, 처리 능력의 향상을 도모하는 멀티코어가 도입되고 있다.
멀티 코어를 탑재한 계산기를 효율적으로 이용하기 위해서는, 처리의 병렬도를 향상시켜, 각 코어에 처리를 분산시킬 필요가 있다.
이 실현 방법으로서 실시간 응답성이 높은 실시간 오퍼레이팅 시스템(Real-Time Operating System)(이하 RTOS)과 풍부한 애플리케이션을 탑재한 범용 OS라고 하는 복수의 OS에 의해 구성하는 방법을 생각할 수 있다.
종래, 이러한 복수의 OS를 탑재하는 내장 기기에서는, 각 OS가 네트워크용 디바이스나 시리얼 통신용 디바이스 등의 입출력 디바이스를 점유하여 사용하고 있어, 이러한 디바이스를 공유할 수 없었다.
그래서, 내장 기기용에도, 메인 프레임 및 PC 서버에서 개발된 VM(Virtual Machine)에 의한 가상화를 행하는 것에 의해, RTOS와 범용 OS간에 디바이스의 공유를 행하는 대처가 이루어지고 있다.
도 13은 종래의 VM을 탑재한 계산기 장치(1000)의 구성을 나타내는 것이다. 계산기 장치(1000)는, 예컨대 내장 기기이다.
또, 특권 OS(Privileged OS)란, 기기 상의 모든 디바이스의 관리권을 보유하는 OS를 나타낸다.
반대로, 비특권 OS란, 기기 상의 모든 디바이스의 이용에 대해, 제한이 마련되어 있는 OS를 나타낸다.
즉, 도 13에 있어서, 특권 OS(1100)는 계산기 장치(1000)에서 사용하는 모든 디바이스의 관리권을 보유하는 OS이다.
또한, 비특권 OS(1200) 및 비특권 OS(1250)는 계산기 장치(1000)에서 사용되는 디바이스로의 액세스가 제한되어 있는 OS이다.
이하, 특권 OS(1100), 비특권 OS(1200), 비특권 OS(1250)의 각각의 상세를 설명한다.
특권 OS(1100)는 특권 OS 공유 디바이스 처리부(1101)을 보유한다.
특권 OS(1100)는 시스템 상에 존재하는 모든 실제 디바이스를 이용하기 위한 특권이 부여된 OS이다.
여기서는, 특권 OS(1100)로서 실제 디바이스에 대한 풍부한 디바이스 처리 기능을 갖는 Linux(등록 상표) 등의 범용 OS를 상정하고 있다.
특권 OS 공유 디바이스 처리부(1101)는, 자신의 OS로부터의 IO 요구 및, VM(1300) 상의 OS간 통신 처리부(1301)로부터의 IO 요구를 수취하여, 공유 디바이스(1601)에 IO 요구를 송신하는 기능을 구비한다.
또, IO 요구란, 공유 디바이스(1601)의 사용 요구이다.
비특권 OS(1200)는 비특권 OS 가상 디바이스 처리부(1201)을 보유한다.
비특권 OS(1200)는 실제 디바이스로의 액세스가 제한된 OS이다.
여기서는, 비특권 OS(1200)로서 실시간 OS를 상정하고 있다.
비특권 OS 가상 디바이스 처리부(1201)는 VM(1300) 상의 가상 디바이스(1350)에 대해 IO 요구를 송신하는 기능을 구비한다.
비특권 OS(1250)는 비특권 OS 가상 디바이스 처리부(1251)을 보유한다.
비특권 OS(1250)는 실제 디바이스로의 액세스가 제한된 OS이다.
여기서는, 비특권 OS(1250)로서 범용 OS를 상정하고 있다.
비특권 OS 가상 디바이스 처리부(1251)는 VM(1300) 상의 가상 디바이스(1350)에 대해 IO 요구를 송신하는 기능을 구비한다.
하드웨어(1400)는 계산기 장치(1)에서 사용되는 디바이스 그룹이다.
하드웨어(1400)는 2차 기억 장치(1500)와 공유 디바이스(1601)와 주메모리(1701)를 보유한다.
주메모리(1701)는 OS 기동시에 2차 기억 장치 상에 보관 유지된 OS 이미지가 로드되는 영역이다.
2차 기억 장치(1500)은 비특권 OS를 기동하기 위한 파일인, 비특권 OS 이미지 파일(1501) 및 비특권 OS 기동 정보 파일(1502)을 보유한다.
비특권 OS 이미지 파일(1501)은 비특권 OS를 기동할 때에 사용하는 바이너리 파일(binary file)이다.
비특권 OS 기동 정보 파일(1502)은 비특권 OS의 기동에 필요한 정보가 기재되어 있다.
비특권 OS 기동 정보 파일(1502)에는, 필요한 메모리 사이즈, 페이지 사이즈, CPU 수, 타이머 수, OS명, 엔트리 어드레스(entry address) 등이 포함된다.
공유 디바이스(1601)는 예컨대, 네트워크 디바이스, 그래픽 디바이스, 키보드, 시리얼 인터페이스, 마우스, 적외선 인터페이스, USB(Universal Serial Bus) 포트 등, RTOS와 범용 OS로 공유될 가능성이 있는 디바이스이다.
비특권 OS 이미지 파일(1501), 비특권 OS 기동 정보 파일(1502)은 비특권 OS마다 준비되어 있다.
도 13의 예에서는, 비특권 OS(1200)의 비특권 OS 이미지 파일(1501), 비특권 OS 기동 정보 파일(1502)이 있고, 또한, 비특권 OS(1250)의 비특권 OS 이미지 파일(1501), 비특권 OS 기동 정보 파일(1502)이 있다.
VM(1300)은 OS간의 통신 기능 및 가상 디바이스를 보유하는 VM이다.
VM(1300)은 OS간 통신 처리부(1301)와 OS 기동 처리부(1302)와 디바이스 요구 변환 처리부(1303)와 가상 디바이스(1350)를 보유한다.
OS간 통신 처리부(1301)는 비특권 OS(1200) 또는 비특권 OS(1250)로부터의 IO 요구를 특권 OS(1100)에 송신하는 기능을 구비한다.
OS 기동 처리부(1302)는 특권 OS(1100)의 지시에 의해, 비특권 OS(1200) 및 비특권 OS(1250)를 기동하는 기능을 구비한다.
디바이스 요구 변환 처리부(1303)는, 비특권 OS(1200) 또는 비특권 OS(1250)로부터 가상 디바이스(1350)로의 IO 요구를, 공유 디바이스(1601)에 대한 IO 요구로 변환하는 기능을 구비한다.
가상 디바이스(1350)는 비특권 OS(1200) 및 비특권 OS(1250)에 대해 공유 디바이스(1601)를 에뮬레이팅(emulate)한다.
즉, 가상 디바이스(1350)는, 비특권 OS(1200) 또는 비특권 OS(1250)로부터 IO 요구를 수취하고, 디바이스 요구 변환 처리부(1303)를 사용하여 공유 디바이스(1601)에 대한 IO 요구로 변환하고, OS간 통신 처리부(1301)를 거쳐서, 변환 후의 IO 요구를 특권 OS(1100)에 송신하는 기능을 구비한다.
다음으로, 종래 기술에 있어서의, 특권 OS(1100) 상의 응용 프로그램(이하, 간단히 애플리케이션이라고 함)이 비특권 OS(1200)를 기동하는 순서를 도 14를 이용하여 설명한다.
우선, 스텝 S601에 있어서, 특권 OS(1100) 상의 애플리케이션은 VM(300) 상의 OS 기동 처리부(1302)에 비특권 OS(1200)의 기동을 의뢰한다.
그 때, 특권 OS(1100) 상의 애플리케이션은 2차 기억 장치(1500) 상에 존재하는 비특권 OS(1200)의 비특권 OS 이미지 파일(1501) 및 비특권 OS 기동 정보 파일(1502)을 지정한다.
다음으로, 스텝 S602에 있어서, VM(300) 상의 OS 기동 처리부(1302)는 비특권 OS 기동 정보 파일(1502)로부터, OS의 기동에 필요한 메모리 사이즈, 페이지 사이즈, CPU 수, 타이머 수, OS명, 엔트리 어드레스를 취득한다.
다음으로, 스텝 S603에 있어서, VM(1300) 상의 OS 기동 처리부(1302)는, OS의 기동에 필요한 디바이스의 정보를 취득한 후, 비특권 OS(1200)에 대해 디바이스를 할당한다.
할당하는 디바이스는 메모리, CPU, 타이머이다.
다음으로, 스텝 S604에 있어서, VM(1300) 상의 OS 기동 처리부(1302)는 비특권 OS 이미지 파일(1501)을 주메모리(1701)에 로드한다.
다음으로, 스텝 S605에 있어서, VM(1300) 상의 OS 기동 처리부(1302)는 비특권 OS(1200)의 CPU에 대해 기동 처리를 행한다.
이것은 예컨대, 비특권 OS(1200)에 할당한 CPU의 리셋 벡터에 대해, S602에서 취득한 엔트리 어드레스를 지정하고, CPU에 하드웨어 리셋을 송신하는 것에 상당한다.
이상에 의해, 특권 OS(1100) 상의 애플리케이션에 의한 비특권 OS(1200)의 기동이 완료된다.
다음으로, 종래 기술에 있어서의, VM(1300)에 의한 디바이스 공유의 순서를 도 15를 이용하여 설명한다.
우선, 스텝 S701에 있어서, 비특권 OS(1250) 상의 애플리케이션은 비특권 OS 가상 디바이스 처리부(1251)에 IO 요구를 행한다.
다음으로, 스텝 S702에 있어서, 비특권 OS(1250) 상의 비특권 OS 가상 디바이스 처리부(1251)는, VM(1300) 상의 OS간 통신 처리부(1301)를 거쳐서, VM(1300) 상의 가상 디바이스(1350)에 IO 요구를 행한다.
다음으로, 스텝 S703에 있어서, VM(1300)은, 가상 디바이스(1350)로의 IO 요구에 대해, 디바이스 요구 변환 처리부(1303)를 호출하고, 가상 디바이스(1350)로의 IO 요구로부터 공유 디바이스(1601)로의 IO 요구로 변환한다.
다음으로, 스텝 S704에 있어서, VM(1300)은, OS간 통신 처리부(1301)를 거쳐서, 특권 OS(1100) 상의 특권 OS 공유 디바이스 처리부(1101)에 실제 IO 요구를 행한다.
다음으로, 스텝 S705에 있어서, 특권 OS(1100) 상의 특권 OS 공유 디바이스 처리부(1101)는 공유 디바이스(1601)에 실제 IO 요구를 행한다.
이상의 처리에 의해, 디바이스의 공유를 행한다.
다음으로, 종래 기술에 있어서의, 비특권 OS(1250)로부터의 IO 요구와, 비특권 OS(1200)로부터의 IO 요구가 경합한 경우의 VM(1300)에 의한 처리를 도 16을 이용하여 설명한다.
우선, 스텝 S1601에 있어서, 비특권 OS(1250) 상의 애플리케이션은 비특권 OS 가상 디바이스 처리부(1251)에 IO 요구를 행한다.
다음으로, 스텝 S1602에 있어서, 비특권 OS(1250) 상의 비특권 OS 가상 디바이스 처리부(1251)는 VM(1300) 상의 OS간 통신 처리부(1301)를 거쳐서, VM(1300) 상의 가상 디바이스(1350)에 IO 요구를 행한다.
다음으로, 스텝 S1603에 있어서, VM(1300)은, 가상 디바이스(1350)로의 IO 요구에 대해, 디바이스 요구 변환 처리부(1303)를 호출하여, 가상 디바이스(1350)로의 IO 요구로부터 공유 디바이스(1601)로의 IO 요구로 변환한다.
다음으로, 스텝 S1604에 있어서, VM(1300)은, OS간 통신 처리부(1301)를 거쳐서, 특권 OS(1100) 상의 특권 OS 공유 디바이스 처리부(1101)에 실제 IO 요구를 행한다.
여기서, 스텝 S1605에 있어서, 비특권 OS(1200) 상의 애플리케이션이 비특권 OS 가상 디바이스 처리부(1201)에 IO 요구를 행한다.
이것을 받아, 스텝 S1606에 있어서, 비특권 OS(1200) 상의 비특권 OS 가상 디바이스 처리부(1201)는, VM(1300) 상의 OS간 통신 처리부(1301)를 거쳐서, VM(1300) 상의 가상 디바이스(1350)에 IO 요구를 행한다.
다음으로, 스텝 S1607에 있어서, VM(1300)은, 가상 디바이스(1350)로의 IO 요구에 대해, 디바이스 요구 변환 처리부(1303)를 호출하고, 가상 디바이스(1350)로의 IO 요구로부터 공유 디바이스(1601)로의 IO 요구로 변환한다.
다음으로, 스텝 S1608에 있어서, VM(1300)은, OS간 통신 처리부(1301)를 거쳐서, 특권 OS(1100) 상의 특권 OS 공유 디바이스 처리부(1101)에 실제 IO 요구를 행한다.
이것을 받아, 스텝 S1609에 있어서, 특권 OS(1100) 상의 특권 OS 공유 디바이스 처리부(1101)는 IO 요구의 도착순으로 처리를 실시한다.
도 16의 경우는 비특권 OS(1250)로부터의 IO 요구를 먼저 처리한다.
마지막으로, 스텝 S1610에 있어서, 특권 OS(1100) 상의 특권 OS 공유 디바이스 처리부(1101)는 비특권 OS(1200)의 IO 요구를 처리한다.
이상과 같이, IO 요구가 경합한 경우, IO 요구의 도착순으로 실시된다.
특허문헌 1: 일본 특허 공개 소화62-78631호 공보
도 13에 나타내는 구성에서는, 비특권 OS(1200)로부터의 IO 요구는, 모두 VM(1300) 상의 가상 디바이스(1350)를 거쳐서, 특권 OS(1100) 상의 특권 OS 공유 디바이스 처리부(101)에서 처리된다.
특권 OS(1100)에 대해서는, 디바이스 드라이버가 풍부한 Linux(등록 상표) 등의 범용 OS를 이용하는 것이 일반적이다.
도 13의 구성에 있어서, 비특권 OS(1200)가 RTOS인 경우, 비특권 OS(1200)로부터의 IO 요구가, 범용 OS인 특권 OS(1100) 상의 특권 OS 공유 디바이스 처리부(1101)에서 실시된다. 이 때문에, 비특권 OS(1200)가 요구하는 실시간 응답성을 유지할 수 없다고 하는 과제가 있다.
즉, 비특권 OS(1200)는 직접 공유 디바이스(1601)에 IO 요구를 행할 수 없어, 비특권 OS(1200)로부터의 IO 요구는 VM(1300) 및 RTOS가 아닌 특권 OS(1100)의 처리를 경유하여 공유 디바이스(1601)에 전달되기 때문에, 실시간 응답성을 확보할 수 없다.
이 과제에 대한 첫번째 해결 방법으로서 특권 OS(1100)로서 RTOS를 이용하는 것을 생각할 수 있다.
그러나, 일반적으로, RTOS의 디바이스 대응은 빈약하고, 특권 OS(1100)로서 RTOS를 이용하는 경우에는, RTOS 상에 계산기 장치(1000)에서 공유되는 모든 디바이스에 대한 디바이스 처리용의 모듈을 추가할 필요가 있다고 하는 과제가 있다.
두번째 해결 방법으로서 특권 OS(1100) 상의 특권 OS 공유 디바이스 처리부(1101)만을 실시간화하는 방식도 생각할 수 있다.
그러나, 일반적으로, 범용 OS 상에서 동작하는 특정의 디바이스 처리부만을 실시간화할 수 없어, 범용 OS의 내부 구조를 수정하여, OS 전체를 실시간화할 필요가 있다.
도 13의 예에서는, 특권 OS(1100) 전체의 실시간화가 필요하게 된다.
즉, 공유 디바이스의 실시간 응답성 확보를 위해서, 범용 OS 전체를 실시간화해야 한다고 하는 과제가 있다.
본 발명은, 이러한 과제를 해결하는 것을 주된 목적의 하나로 하고 있는 것으로, 비특권 OS가 요구하는 실시간 응답성을 만족하면서, 복수의 OS간에 효율적으로 디바이스를 공유하는 것을 주된 목적으로 한다.
본 발명에 따른 계산기 장치는, 1개 이상의 디바이스가 접속되어 있는 계산기 장치에 있어서, 각 디바이스의 관리권이 부여되어 있는 특권 OS(Operating System)와, 어느 디바이스의 관리권도 부여되어 있지 않은 1개 이상의 비특권 OS와, 비특권 OS와, 상기 비특권 OS에 대해 지정되어 있는 지정 디바이스를 나타내는 지정 디바이스 정보를 기억하는 정보 기억부와, 상기 특권 OS가 기동한 후, 어느 하나의 비특권 OS가 기동할 때에, 상기 지정 디바이스 정보를 참조하여, 기동하는 비특권 OS에 지정 디바이스가 있는 경우에, 기동하는 비특권 OS의 지정 디바이스의 관리권을 상기 특권 OS로부터 기동하는 비특권 OS로 이양하는 관리권 제어부를 갖는 것을 특징으로 한다.
본 발명에 의하면, 비특권 OS에 특정의 디바이스를 지정 디바이스로서 대응지어 두고, 당해 비특권 OS의 기동시에 지정 디바이스의 관리권을 특권 OS로부터 비특권 OS로 이양하므로, 당해 비특권 OS는, 직접 지정 디바이스에 대해 사용 요구를 할 수 있으므로, 특권 OS의 처리를 기다릴 필요가 없어, 당해 비특권 OS에 필요한 실시간 응답성을 확보할 수 있다.
도 1은 실시 형태 1에 따른 계산기 장치의 구성예를 나타내는 도면.
도 2는 실시 형태 1에 따른 디바이스 관리권 테이블의 예를 나타내는 도면.
도 3은 실시 형태 1에 따른 디바이스 관리권 테이블의 예를 나타내는 도면.
도 4는 실시 형태 1에 따른 비특권 OS 기동 정보 파일의 예를 나타내는 도면.
도 5는 실시 형태 1에 따른 비특권 OS 디바이스 기동 정보 파일의 예를 나타내는 도면.
도 6은 실시 형태 1에 따른 계산기 장치의 구성예를 나타내는 도면.
도 7은 실시 형태 1에 따른 비특권 OS의 기동 순서의 예를 나타내는 흐름도.
도 8은 실시 형태 1에 따른 IO 요구의 출력 순서, IO 요구의 접수 순서의 예를 나타내는 흐름도.
도 9는 실시 형태 1에 따른 IO 요구의 출력 순서, IO 요구의 접수 순서의 예를 나타내는 흐름도.
도 10은 실시 형태 1에 따른 IO 요구의 출력 순서, IO 요구의 접수 순서의 예를 나타내는 흐름도.
도 11은 실시 형태 2에 따른 IO 요구의 출력 순서, IO 요구의 접수 순서의 예를 나타내는 흐름도.
도 12는 실시 형태 1~3에 따른 계산기 장치의 하드웨어 구성예를 나타내는 도면.
도 13은 종래의 계산기 장치의 구성예를 나타내는 도면.
도 14는 종래의 비특권 OS의 기동 순서의 예를 나타내는 흐름도.
도 15는 종래의 IO 요구의 출력 순서, IO 요구의 접수 순서의 예를 나타내는 흐름도.
도 16은 종래의 IO 요구의 출력 순서, IO 요구의 접수 순서의 예를 나타내는 흐름도.
(실시 형태 1)
본 실시 형태에서는, 비특권 OS에 디바이스 공유를 위한 기능만을 추가함으로써, 비특권 OS가 요구하는 실시간 응답성을 만족하면서, 디바이스의 공유를 도모하는 방식을 설명한다.
보다 구체적으로는, 본 실시 형태에서는, 공유 디바이스의 관리권을 갖지 않는 비특권 OS에 특정의 공유 디바이스를 지정 디바이스로서 대응짓고, 당해 비특권 OS의 기동까지는 특권 OS에 지정 디바이스의 관리권을 부여하고, 당해 비특권 OS의 기동시에, 지정 디바이스의 관리권을 특권 OS로부터 비특권 OS로 이양한다.
지정 디바이스는, 예컨대 당해 비특권 OS에서의 사용 빈도가 높은 공유 디바이스이다.
이 관리권의 이동에 의해, 당해 비특권 OS는, 직접 지정 디바이스에 대해 IO 요구를 할 수 있어, 가상 머신 및 특권 OS의 처리를 기다릴 필요가 없으므로, 당해 비특권 OS에 필요한 실시간 응답성을 확보할 수 있다.
또, 비특권 OS에 관리권이 이동된 후의 지정 디바이스를 관리 디바이스라고도 한다.
또한, IO 요구란, 공유 디바이스의 사용 요구이다.
도 1은 본 실시 형태에 따른 계산기 장치(1)의 구성예를 나타낸다.
계산기 장치(1)는, 예컨대 내장 기기이다.
하드웨어(400)는 계산기 장치(1)에서 사용되는 디바이스 그룹이다.
VM(300)은 OS간의 통신 기능 및 가상 디바이스를 보유하는 VM이다.
특권 OS(100)는 계산기 장치(1)에서 사용하는 모든 디바이스의 관리권을 보유하는 OS이다.
비특권 OS(200) 및 비특권 OS(250)는 디바이스로의 액세스가 제한된 OS이다.
우선, 하드웨어(400)에 대해 설명한다.
하드웨어(400)는 2차 기억 장치(500)와 공유 디바이스(601)와 주메모리(701)를 보유한다.
주메모리(701)는 OS 기동시에 2차 기억 장치(500) 상에 유지된 OS 이미지가 로드되는 영역이다.
공유 디바이스(601)는, 예컨대, 네트워크 디바이스, 그래픽 디바이스, 키보드, 시리얼 인터페이스, 마우스, 적외선 인터페이스, USB(Universal Serial Bus) 포트 등, RTOS와 범용 OS에서 공유될 가능성이 있는 디바이스이다.
공유 디바이스(601)는 복수 존재하더라도 좋다.
또한, 공유 디바이스(601)로의 IO 요구란, 공유 디바이스(1601)의 사용 요구이다.
2차 기억 장치(500)는 비특권 OS(200) 및 비특권 OS(250)를 기동하기 위해서 사용되는 비특권 OS 이미지 파일(501) 및 비특권 OS 기동 정보 파일(502)를 보유한다. 2차 기억 장치(500)는 정보 기억부의 예이다.
비특권 OS 이미지 파일(501)은 OS를 기동할 때에 사용하는 바이너리 파일이다.
비특권 OS 기동 정보 파일(502)은 OS의 기동에 필요한 정보가 기재되어 있다. 정보의 내용으로서는, 필요한 메모리 사이즈, 페이지 사이즈, CPU 수, 타이머 수, OS명, 엔트리 어드레스이다. 비OS 기동 정보 파일(502)의 예를 도 4에 나타낸다.
비특권 OS 이미지 파일(501), 비특권 OS 기동 정보 파일(502)은 비특권 OS마다 준비되어 있다.
도 1의 예에서는, 비특권 OS(200)의 비특권 OS 이미지 파일(501), 비특권 OS 기동 정보 파일(502)이 있고, 또한, 비특권 OS(250)의 비특권 OS 이미지 파일(501), 비특권 OS 기동 정보 파일(502)이 있다.
또한, 2차 기억 장치(500)는 비특권 OS 디바이스 기동 정보 파일(503)을 더 보유하고 있다.
비특권 OS 디바이스 기동 정보 파일(503)에는, 비특권 OS와, 비특권 OS에 대해 지정되어 있는 디바이스(지정 디바이스) 및 우선도가 기재되어 있다.
비특권 OS 디바이스 기동 정보 파일(503)은 지정 디바이스 정보의 예이고, 2차 기억 장치(500)는 정보 기억부의 예이다.
비특권 OS 디바이스 기동 정보 파일(503)은, 예컨대 도 5에 나타내는 정보이다.
비특권 OS 디바이스 기동 정보 파일(503)은 비특권 OS마다 준비되어 있는 것이 아니며, 1개의 비특권 OS에만 비특권 OS 디바이스 기동 정보 파일(503)이 준비되어 있는 경우도 있다.
다음으로, VM(300)(가상 머신)에 대해 설명한다.
VM(300)은, OS간 통신 처리부(301)와 OS 기동 처리부(302)와 디바이스 요구 변환 처리부(303)와 가상 디바이스(350)에 부가하여, 디바이스 할당 처리부(304), 디바이스 요구 전송 처리부(305)를 보유한다.
OS간 통신 처리부(301)는 비특권 OS(200)로부터의 IO 요구를 특권 OS(100)에 송신하는 기능을 구비한다.
OS 기동 처리부(302)는, 특권 OS(100)의 지시에 의해, 비특권 OS(200) 및 비특권 OS(250)를 기동하는 기능을 구비한다.
디바이스 요구 변환 처리부(303)는, 비특권 OS로부터 가상 디바이스(350)로의 IO 요구를, 공유 디바이스(601)에 대한 IO 요구로 변환하는 기능을 구비한다.
가상 디바이스(350)는 비특권 OS(200) 및 비특권 OS(250)에 대해 공유 디바이스(601)를 에뮬레이팅한다.
가상 디바이스(350)는 공유 디바이스(601)의 수와 동일한 수만큼 존재한다.
즉, 가상 디바이스(350)는 비특권 OS(200) 및 비특권 OS(250)로부터 IO 요구를 수취하여, 디바이스 요구 변환 처리부(303)를 사용해서 공유 디바이스(601)에 대한 IO 요구로 변환하고, 디바이스 요구 전송 처리부(305)에 IO 요구의 처리를 의뢰한다.
디바이스 할당 처리부(304)는, VM(300) 상의 OS 기동 처리부(302)로부터, 비특권 OS로의 디바이스 할당 의뢰를 수취하여, 비특권 OS에 공유 디바이스를 할당한다.
예컨대, VM(300) 상의 OS 기동 처리부(302)로부터, 비특권 OS(200)로의 디바이스 할당 의뢰를 수취하고, 2차 기억 장치(500) 상의 비특권 OS(200)의 비특권 OS 디바이스 기동 정보 파일(503)을 판독하여, 비특권 OS(200)에 공유 디바이스(601)를 할당한다.
디바이스 요구 전송 처리부(305)는, 디바이스 관리권 테이블(360)로부터 공유 디바이스(601)의 관리권을 갖는 OS를 특정하고, 해당하는 OS에 IO 요구를 전송한다.
VM(300)은 디바이스 관리권 테이블(360)을 관리한다.
디바이스 관리권 테이블(360)은 현재 어느 OS가 어떤 공유 디바이스의 관리권을 갖는지를 나타내는 테이블이다. 디바이스 관리권 테이블(360)은 디바이스 관리권 정보의 예이다.
즉, 디바이스 관리권 테이블(360)은 공유 디바이스(601)마다 어느 OS가 관리권을 갖고 있는지를 나타내는 테이블이다.
디바이스 관리권 테이블(360)은 디바이스 관리권 정보의 예이다.
디바이스 관리권 테이블(360)은, 예컨대 도 2에 나타내는 정보이다.
또한, VM(300)에 있어서, 디바이스 할당 처리부(304)는, 특권 OS(100)가 기동한 후, 어느 하나의 비특권 OS가 기동할 때에, 비특권 OS 디바이스 기동 정보 파일(503)을 참조하여, 기동하는 비특권 OS에 지정 디바이스가 있는 경우에, 기동하는 비특권 OS의 지정 디바이스의 관리권을 특권 OS(100)로부터 기동하는 비특권 OS로 이양한다.
또한, OS간 통신 처리부(301), 디바이스 요구 전송 처리부(305) 및 가상 디바이스(350)는, 협동에 의해, 어떤 OS로부터 출력된 어느 공유 디바이스(601)에 대한 IO 요구(사용 요구)를 입력하고, 디바이스 관리권 테이블(360)을 참조하여, 입력한 IO 요구가 대상으로 하는 공유 디바이스(601)의 관리권을 갖고 있는 OS를 판별하고, 판별한 OS에 IO 요구를 출력한다.
OS간 통신 처리부(301), 디바이스 요구 전송 처리부(305) 및 가상 디바이스(350)는 OS 판별부의 기능을 실현한다.
다음으로, 특권 OS(100)에 대해 설명한다.
특권 OS(100)는, 특권 OS 공유 디바이스 처리부(101)에 부가하여, 특권 OS 공유 디바이스 삭제 처리부(102)와 특권 OS 가상 디바이스 처리부(103)와 특권 OS 가상 디바이스 추가 처리부(104)를 보유한다.
특권 OS(100)는 시스템 상에 존재하는 모든 실제 디바이스를 이용하기 위한 특권이 부여된 OS이다.
즉, 특권 OS(100)는, 초기 상태에 있어서, 모든 공유 디바이스(601)의 관리권이 부여되어 있다.
특권 OS(100)는, 실제 디바이스에 대한 풍부한 디바이스 처리용 모듈을 갖는 Linux(등록 상표) 등의 범용 OS를 상정하고 있다.
특권 OS 공유 디바이스 처리부(101)는, 자신의 OS로부터의 IO 요구 및, VM(300) 상의 OS간 통신 처리부(301)로부터의 IO 요구를 수취하고, 공유 디바이스(601)에 IO 요구를 송신하는 기능을 구비한다.
특권 OS 공유 디바이스 삭제 처리부(102)는, VM(300)으로부터의 지시에 의해, 특권 OS(100)에 관리권이 할당되어 있는 공유 디바이스(601)를 특권 OS(100)로부터 분리하는 처리를 행한다.
특권 OS 가상 디바이스 처리부(103)는, VM(300) 상의 가상 디바이스(350)에 대해 IO 요구를 행한다.
특권 OS 가상 디바이스 추가 처리부(104)는, VM(300)으로부터의 지시에 의해, 특권 OS(100)에 대해, VM(300) 상의 가상 디바이스(350)를 할당하는 처리를 행한다.
다음으로, 비특권 OS(200)에 대해 설명한다.
비특권 OS(200)는 비특권 OS 공유 디바이스 처리부(202)를 보유한다.
비특권 OS(200)는 실시간 OS를 상정하고 있다.
또, 본 실시 형태에서는, 비특권 OS(200)에는 지정 디바이스가 있고, 비특권 OS(250)에는 지정 디바이스가 없는 예를 설명한다.
즉, 비특권 OS(200)는, 비특권 OS 디바이스 기동 정보 파일(503)에 자신의 OS가 나타내어지고, 또한, 지정 디바이스가 지정되어 있고, 지정 디바이스에 대한 관리권이 부여된다.
한편, 비특권 OS(250)는 비특권 OS 디바이스 기동 정보 파일(503)에 자신의 OS가 나타내어져 있지 않고, 또, 지정 디바이스가 지정되어 있지 않다.
또, 이하에서는, 비특권 OS(200)의 지정 디바이스를 공유 디바이스 A(601a)로서 설명한다.
비특권 OS 공유 디바이스 처리부(202)는, IO 요구 유지 큐(370)을 관리하고, IO 요구가 경합한 경우는, IO 요구의 송신원 OS의 우선도에 따라, 하드웨어(400) 상의 공유 디바이스(601)에 대해 IO 요구를 송신하는 기능을 구비한다.
비특권 OS 공유 디바이스 처리부(202)는 실시 형태 2에 있어서 실행 제어부로서 동작한다.
IO 요구 유지 큐(370)는 VM(300) 상의 디바이스 요구 전송 처리부(305) 및 자신의 OS인 비특권 OS(200)로부터의 IO 요구를 일시적으로 보유하는 기능을 가진다.
비특권 OS 공유 디바이스 처리부(202)는 IO 요구의 송신원 OS의 우선도에 따라, 큐의 순서를 변경한다.
IO 요구의 송신원 OS의 우선도는 비특권 OS 디바이스 기동 정보 파일(503)의 공유 디바이스(601)에 대한 우선도를 사용한다.
또, 비특권 OS 디바이스 기동 정보 파일(503)이 존재하지 않는 경우는 최저 우선도로 한다.
다음으로, 비특권 OS(250)에 대해 설명한다.
비특권 OS(250)는 실제 디바이스로의 액세스가 제한된 OS이다.
비특권 OS(250)는 범용 OS를 상정하고 있다.
비특권 OS(250)는 비특권 OS 가상 디바이스 처리부(251)를 보유한다.
비특권 OS 가상 디바이스 처리부(251)는 VM(300) 상의 가상 디바이스(350)에 대해, IO 요구를 송신하는 기능을 구비한다.
전술한 바와 같이, 본 실시 형태에서는, 비특권 OS(200)에는 지정 디바이스가 있고, 비특권 OS(250)에는 지정 디바이스가 없기 때문에, 비특권 OS(200)에는 비특권 OS 공유 디바이스 처리부(202)가 존재하지만, 비특권 OS(250)에는 비특권 OS 공유 디바이스 처리부(202)에 상당하는 요소가 없다.
대신에, 비특권 OS(250)에는, 공유 디바이스(601)에 대한 IO 요구를 가상 디바이스(350)에 송신하기 위한 비특권 OS 가상 디바이스 처리부(251)가 마련하고 있다.
도 2는 VM(300)가 구비하는 디바이스 관리권 테이블(360)의 내용의 예를 나타내고 있다.
디바이스 관리권 테이블(360)은, 공유 디바이스마다, 관리권을 갖는 OS를 나타낸다.
디바이스 관리권 테이블(360)의 테이블의 항목으로서는, 공유 디바이스명, 관리권을 갖는 OS명, 관리권을 갖는 OS의 우선도, 현재의 관리 상황을 나타내는 관리권 플래그이다.
도 2의 예에서는, 공유 디바이스 A(601a)에 대해, 특권 OS(100)가 관리 중이며, 특권 OS(100)의 우선도가 0인 것을 나타내고 있다.
도 5는 비특권 OS 디바이스 기동 정보 파일(503)의 예를 나타낸다.
비특권 OS 디바이스 기동 정보 파일(503)의 테이블의 항목으로서는, OS명, 공유 디바이스명, 우선도가 있다.
도 5의 예에서는, 비특권 OS(200)에 공유 디바이스 A(601a)에 대한 우선도(100)가 설정되어 있는 것이 나타내어져 있다.
또, 본 실시 형태에서는, 우선도는 값이 클수록 우선도가 높은 것으로 한다.
다음으로, 본 실시 형태에 있어서의, 특권 OS(100) 상의 애플리케이션이 비특권 OS(200)를 기동하는 순서를 도 7을 이용하여 설명한다.
우선, 스텝 S801에 있어서, 특권 OS(100)는 VM(300) 상의 OS 기동 처리부(302)에 비특권 OS(200)의 기동을 의뢰한다.
그 때, 특권 OS(100)는 2차 기억 장치(500) 상에 존재하는 비특권 OS(200)의 비특권 OS 이미지 파일(501), 비특권 OS 기동 정보 파일(502) 및 비특권 OS 디바이스 기동 정보 파일(503)을 지정한다.
다음으로, 스텝 S802에 있어서, VM(300) 상의 OS 기동 처리부(302)는 비특권 OS 기동 정보 파일(502)(도 4)로부터, 비특권 OS(200)의 기동에 필요한 메모리 사이즈, 페이지 사이즈, CPU 수, 타이머 수, OS명, 엔트리 어드레스를 취득한다.
다음으로, 스텝 S803에 있어서, VM(300) 상의 OS 기동 처리부(302)는 비특권 OS(200)의 기동에 필요한 디바이스의 정보를 취득한 후, 비특권 OS(200)에 대해 디바이스를 할당한다.
할당하는 디바이스는 메모리, CPU, 타이머이다.
다음으로, 스텝 S804에 있어서, VM(300) 상의 OS 기동 처리부(302)는, 비특권 OS 이미지 파일(501)을 주메모리(701)에 로드하고, 비특권 OS(200)에 할당한 CPU의 프로그램 카운터에 엔트리 어드레스를 지정한다.
다음으로, 스텝 S805에 있어서, VM(300) 상의 디바이스 할당 처리부(304)는 비특권 OS 디바이스 기동 정보 파일(503)(도 5)로부터, 비특권 OS(200)의 지정 디바이스 및 비특권 OS(200)의 우선도를 취득한다.
도 5의 경우는, 비특권 OS(200)의 지정 디바이스는 공유 디바이스 A(601a)이고, 비특권 OS(200)에 공유 디바이스 A(601a)에 대한 우선도(100)가 설정되어 있다.
다음으로, 스텝 S806에 있어서, VM(300) 상의 디바이스 할당 처리부(304)는, 스텝 S805에서 취득한 기동 중의 비특권 OS(200)의 지정 디바이스(공유 디바이스 A(601a))를 키로 하여, 디바이스 관리권 테이블(360)(도 2)로부터, 당해 디바이스의 관리권을 갖는 OS 및 디바이스의 관리권의 변경이 필요한지를 판단한다.
도 2의 예에서는, 공유 디바이스 A(601a)의 관리권을 현재 가지고 있는 OS는 특권 OS(100)이며, 특권 OS(100)의 우선도는 0이다.
한편, 도 5에 나타내는 바와 같이, 현재 기동 중의 비특권 OS(200)의 공유 디바이스 A(601a)에 대한 우선도는 100이며, 특권 OS(100)의 우선도보다 높다.
이 때문에, 디바이스 할당 처리부(304)는, 비특권 OS(200)에 공유 디바이스 A(601a)의 관리권을 할당할 것을 결정하고, 관리권의 변경이 필요하다고 판단한다.
관리권의 변경이 필요한 경우는 스텝 S807로 처리가 이행되고, 관리권의 변경이 필요하지 않는 경우는 스텝 S812로 처리가 이행된다.
스텝 S807에서는, VM(300) 상의 디바이스 할당 처리부(304)가 특권 OS(100) 상의 특권 OS 공유 디바이스 삭제 처리부(102)를 호출한다.
다음으로, 스텝 S808에 있어서, 특권 OS(100) 상의 특권 OS 공유 디바이스 삭제 처리부(102)는, 특권 OS(100)의 동작을 계속한 채, 특권 OS(100)로부터 공유 디바이스 A(601a)를 분리하고, VM(300) 상의 디바이스 할당 처리부(304)에 통지한다.
다음으로, 스텝 S809에 있어서, VM(300) 상의 디바이스 할당 처리부(304)는 특권 OS(100) 상의 특권 OS 가상 디바이스 추가 처리부(104)를 호출한다.
다음으로, 스텝 S810에 있어서, 특권 OS 가상 디바이스 추가 처리부(104)는, 특권 OS(100)의 동작을 계속한 채, 특권 OS(100)와 공유 디바이스 A(601a)에 대응하는 가상 디바이스(350)를 대응짓고, VM(300) 상의 디바이스 할당 처리부(304)에 통지한다.
다음으로, 스텝 S811에 있어서, VM(300) 상의 디바이스 할당 처리부(304)는 디바이스 관리권 테이블(360)을 갱신한다.
본 예에서는, 공유 디바이스 A(601a)의 관리권이 특권 OS(100)로부터 비특권 OS(200)로 이동했기 때문에, 디바이스 관리권 테이블(360)은 도 2로부터 도 3으로 변경하게 된다.
마지막으로, 스텝 S812에 있어서, VM(300) 상의 OS 기동 처리부(302)는 비특권 OS(200)의 CPU에 대해 기동 명령을 행한다.
이상에 의해 비특권 OS(200)의 기동이 완료된다.
또, 이상에서는, 특권 OS(100)로부터 비특권 OS(200)로 공유 디바이스 A(601a)의 관리권이 이동되는 경우를 설명했지만, 비특권 OS로부터 다른 비특권 OS로 공유 디바이스의 관리권이 이동되는 것도 가능하다.
예컨대, 이상의 순서에 의해 공유 디바이스 A(601a)의 관리권이 비특권 OS(200)로 이동한 후에, 비특권 OS(250)가 기동되고, 비특권 OS(250)의 공유 디바이스 A(601)에 대한 우선도가 200인 경우는, 비특권 OS(250)의 우선도가 높기 때문에, 공유 디바이스 A(601a)의 관리권이 비특권 OS(250)로 이동한다.
다음에 본 실시 형태에 있어서의, 디바이스를 공유하는 방법을 도 8을 이용하여 설명한다.
여기서는, 비특권 OS(250)가 공유 디바이스 A(601a)를 사용하는 경우에 대해 설명한다.
우선, 스텝 S901에 있어서, 비특권 OS(250) 상의 애플리케이션은 비특권 OS 가상 디바이스 처리부(251)에 대해, 공유 디바이스 A(601a)의 IO 요구를 행한다.
다음으로, 스텝 S902에 있어서, 비특권 OS(250) 상의 비특권 OS 가상 디바이스 처리부(251)는 VM(300) 상의 OS간 통신 처리부(301)를 거쳐서, VM(300) 상의 공유 디바이스 A(601a)에 대응하는 가상 디바이스(350)에 IO 요구를 행한다.
다음으로, 스텝 S903에 있어서, VM(300) 상의 가상 디바이스(350)는, 자신으로의 IO 요구에 대해, 디바이스 요구 변환 처리부(303)를 호출하고, 디바이스 요구 변환 처리부(303)가, 가상 디바이스(350)로의 IO 요구로부터 공유 디바이스 A(601a)로의 IO 요구로 변환하고, 다음에 가상 디바이스(350)가 VM(300) 상의 디바이스 요구 전송 처리부(305)를 호출한다.
다음으로, 스텝 S904에 있어서, VM(300) 상의 디바이스 요구 전송 처리부(305)는, 디바이스 관리권 테이블(360)을 참조하여, 공유 디바이스 A(601a)가 어느 OS에 할당되어 있는지 조사해서, 가상 디바이스(350)에 통지한다.
디바이스 관리권 테이블(360)이 도 3 상태라고 하면, 디바이스 요구 전송 처리부(305)는, 공유 디바이스 A(601a)의 관리권은 비특권 OS(200)에 할당되어 있는 것을 통지한다.
다음으로, 스텝 S905에 있어서, VM(300)의 가상 디바이스(350)는, OS간 통신 처리부(301)를 거쳐서, 공유 디바이스 A(601a)의 관리권을 가지는 OS, 즉 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)에 실제 IO 요구를 행한다.
비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)에서는, 가상 디바이스(350)로부터의 실제 IO 요구(비특권 OS(250)의 IO 요구) 및 비특권 OS(250)의 우선도를 IO 요구 유지 큐(370)에 저장하고, 다른 OS(특권 OS(100), 비특권 OS(200))로부터의 실제 IO 요구의 출력 유무를 조사한다.
그리고, 다른 OS로부터의 실제 IO 요구가 없는 것을 확인한 후에, 스텝 S906에 있어서, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는 관리 디바이스인 공유 디바이스 A(601a)에 실제 IO 요구를 행한다. 이 후, 비특권 OS(250) 상의 애플리케이션은 공유 디바이스 A(601a)를 사용할 수 있다.
또, 다른 OS로부터 실제 IO 요구가 출력되고 있는 경우의 처리는 도 10을 참조하여 후술한다.
이상의 처리에 의해, 디바이스의 공유가 행해진다.
또, 특권 OS(100) 상의 애플리케이션이 공유 디바이스 A601의 IO 요구를 출력하는 경우도, 상기의 비특권 OS(250)의 경우와 동일한 처리 순서로 된다.
다음으로, 비특권 OS(200)가 공유 디바이스 A(601a)를 사용할 때의 처리 순서를 도 9를 이용하여 설명한다.
우선, 스텝 S1001에 있어서, 비특권 OS(200) 상의 애플리케이션은 비특권 OS 공유 디바이스 처리부(202)에 공유 디바이스 A(601a)의 IO 요구를 행한다. 또, 비특권 OS(200)에서는, 공유 디바이스 A(601a)의 관리권이 비특권 OS(200)에 있는 것을 인식하고 있다.
다음으로, 스텝 S1002에 있어서, 비특권 OS 공유 디바이스 처리부(202)는, 비특권 OS(200) 상의 애플리케이션으로부터의 IO 요구와 비특권 OS(200)의 우선도를 IO 요구 유지 큐(370)에 저장하고, 다른 OS(특권 OS(100), 비특권 OS(250))로부터의 실제 IO 요구의 출력 유무를 조사한다.
그리고, 다른 OS로부터의 실제 IO 요구가 없는 것을 확인한 후에, 스텝 S1003에 있어서, 비특권 OS 공유 디바이스 처리부(202)는 공유 디바이스 A(601a)에 실제 IO 요구를 행한다. 이 후, 비특권 OS(200) 상의 애플리케이션은 공유 디바이스 A(601a)를 사용할 수 있다.
또, 다른 OS로부터 실제 IO 요구가 출력되고 있는 경우의 처리는 도 10을 참조해 후술한다.
이상의 처리에 의해, 디바이스의 공유를 행한다.
다음으로, 본 실시 형태에 있어서의, 비특권 OS(200)와 비특권 OS(250)의 IO 요구가 경합한 경우의 처리를 도 10을 이용하여 설명한다.
우선, 스텝 S1101에 있어서, 비특권 OS(250) 상의 애플리케이션은 비특권 OS 가상 디바이스 처리부(251)에 공유 디바이스 A(601a)의 IO 요구를 행한다.
다음으로, 스텝 S1102에 있어서, 비특권 OS(250) 상의 비특권 OS 가상 디바이스 처리부(251)는 VM(300) 상의 OS간 통신 처리부(301)를 거쳐서, VM(300) 상의 공유 디바이스 A(601a)에 대응하는 가상 디바이스(350)에 IO 요구를 행한다.
다음으로, 스텝 S1103에 있어서, VM(300) 상의 가상 디바이스(350)는, 자신으로의 IO 요구에 대해, 디바이스 요구 변환 처리부(303)를 호출하고, 디바이스 요구 변환 처리부(303)가 가상 디바이스(350)로의 IO 요구로부터 공유 디바이스 A(601a)로의 IO 요구로 변환하고, 다음으로 가상 디바이스(350)가 VM(300) 상의 디바이스 요구 전송 처리부(305)를 호출한다.
다음으로, 스텝 S1104에 있어서, VM(300) 상의 디바이스 요구 전송 처리부(305)는 디바이스 관리권 테이블(360)을 참조하여, 공유 디바이스 A(601a)가 어느 OS에 할당되어 있는지 조사하고, 가상 디바이스(350)에 통지한다.
디바이스 관리권 테이블(360)이 도 3의 상태라고 하면, 디바이스 요구 전송 처리부(305)는, 공유 디바이스 A(601a)의 관리권은 비특권 OS(200)에 할당되어 있는 것을 통지한다.
다음으로, 스텝 S1105에 있어서, VM(300) 상의 가상 디바이스(350)는, OS간 통신 처리부(301)를 거쳐서, 공유 디바이스 A(601a)의 관리권을 갖는 OS, 즉 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)에 실제 IO 요구를 행한다.
다음으로, 스텝 S1106에 있어서, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는, 가상 디바이스(350)로부터의 실제 IO 요구(비특권 OS(250)의 IO 요구) 및 비특권 OS(250)의 우선도를 IO 요구 유지 큐(370)에 저장하고, 다른 OS(특권 OS(100), 비특권 OS(200))로부터의 실제 IO 요구의 출력 유무를 조사한다.
여기서는, IO 요구 유지 큐(370)에는 다른 OS로부터의 IO 요구는 존재하고 있지 않기 때문에, 스텝 S1106의 IO 요구가 선두에 저장된다.
IO 요구 유지 큐(370)에 저장하는 OS 우선도는 비특권 OS 디바이스 기동 정보 파일(503)의 공유 디바이스(601)에 대한 우선도를 사용한다. 또, 비특권 OS 디바이스 기동 정보 파일(503)이 존재하지 않는 경우는 최저 우선도로 한다.
본 예의 경우, 비특권 OS(250)용의 비특권 OS 디바이스 기동 정보 파일(503)은 존재하고 있지 않았기 때문에, 최저 우선도(0)로 한다. 또한, 특권 OS(100)의 경우는, 모든 공유 디바이스(601)에서 최저 우선도(0)로 한다.
여기서, 스텝 S1107에 있어서, 비특권 OS(200) 상의 애플리케이션이, 비특권 OS 공유 디바이스 처리부(202)에 공유 디바이스 A(601a)의 IO 요구를 행했다고 한다. 또, 비특권 OS(200)에서는, 공유 디바이스 A(601a)의 관리권이 비특권 OS(200)에 있는 것을 인식하고 있다.
비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는 비특권 OS(200) 상의 애플리케이션으로부터의 IO 요구와 비특권 OS(200)의 우선도를 IO 요구 유지 큐(370)에 저장하고, 다른 OS(특권 OS(100), 비특권 OS(250))로부터의 실제 IO 요구의 출력 유무를 조사한다.
도 10의 예에서는, 비특권 OS(250)로부터의 IO 요구가 IO 요구 유지 큐(370)에 먼저 저장되어 있다.
이 때문에, 비특권 OS 공유 디바이스 처리부(202)는, OS 우선도에 근거하여 IO 요구 유지 큐(370) 내의 IO 요구의 순서를 바꿔넣는다.
보다 구체적으로는, 공유 디바이스 A(601a)에 대한 비특권 OS(250)의 우선도는 최저이고, 비특권 OS(200)의 우선도는 100이기 때문에, 선행하는 비특권 OS(250)의 우선도보다 비특권 OS(200)의 우선도가 높다.
그 때문에, 스텝 S1108에 있어서, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는 IO 요구의 송신원의 OS 우선도에 따라 IO 요구 유지 큐(370)에의 IO 요구의 저장 순서를 변경한다.
즉, 비특권 OS 공유 디바이스 처리부(202)는 비특권 OS(200)로부터의 IO 요구를 IO 요구 유지 큐(370)의 선두에 저장한다.
마지막으로, 스텝 S1109에 있어서, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는 IO 요구 유지 큐(370)의 선두에 저장되어 있는 IO 요구로부터 차례로 관리 디바이스인 공유 디바이스 A(601a)에 처리를 의뢰한다.
도 10의 예의 경우, 우선, 비특권 OS(200)로부터의 IO 요구로부터 공유 디바이스 A(601a)로 의뢰받고, 다음으로, 비특권 OS(250)로부터의 IO 요구가 공유 디바이스 A(601a)로 의뢰받는다.
또, 특권 OS(100)가 관리권을 가지는 공유 디바이스에 비특권 OS(200) 및 비특권 OS(250)가 IO 요구를 행하는 경우의 처리 순서는 도 15 및 도 16에 나타낸 것과 동일하고, 설명을 생략한다.
또, 이상에서는, 비특권 OS(200)에 지정 디바이스로서 공유 디바이스 A(601a)가 설정되고, 비특권 OS(200)에 비특권 OS 공유 디바이스 처리부(202)가 마련되고, 비특권 OS(250)에 비특권 OS 가상 디바이스 처리부(251)가 마련되어 있는 구성(도 1)을 설명하였다.
한편, 비특권 OS(200)에 지정 디바이스로서 공유 디바이스 A(601a)가 설정되고, 비특권 OS(250)에 지정 디바이스로서 공유 디바이스 B(601b)가 설정되도록 하더라도 좋다.
이 경우는, 도 6에 나타내는 바와 같이, 비특권 OS(200)에 비특권 OS 가상 디바이스 처리부(201)와 비특권 OS 공유 디바이스 처리부(202)가 마련되고, 비특권 OS(250)에 비특권 OS 가상 디바이스 처리부(251)와 비특권 OS 공유 디바이스 처리부(252)가 마련되게 된다.
도 6의 구성에서는, 비특권 OS(200) 상의 애플리케이션이 공유 디바이스 B(601b)를 사용하는 경우는 IO 요구를 비특권 OS 가상 디바이스 처리부(201)에 출력한다. 그리고, 비특권 OS 가상 디바이스 처리부(201)가 공유 디바이스 B(601b)의 IO 요구를 VM(300) 상의 가상 디바이스(350)에 출력한다.
VM(300) 상에서의 처리는 전술한 바와 같으며, 가상 디바이스(350)로부터 비특권 OS(250) 상의 비특권 OS 공유 디바이스 처리부(252)로 공유 디바이스 B(601b)의 IO 요구가 출력된다.
비특권 OS 공유 디바이스 처리부(252)의 처리 자체는 비특권 OS 공유 디바이스 처리부(202)와 동일하기 때문에, 설명을 생략한다.
이와 같이, 본 실시 형태의 디바이스 공유 방식에서는, 비특권 OS에 특정의 공유 디바이스를 지정 디바이스로서 대응지어 두고, 당해 비특권 OS의 기동시에 지정 디바이스의 관리권을 특권 OS로부터 비특권 OS로 이양하므로, 당해 비특권 OS는 직접 지정 디바이스에 대해 사용 요구를 할 수 있어, VM 및 특권 OS의 처리를 기다릴 필요가 없으므로, 당해 비특권 OS에 필요한 실시간 응답성을 확보할 수 있다.
또한, 본 실시 형태의 디바이스 공유 방식에서는, 비특권 OS가 사용하는 하드웨어 정보를 보유하는 영역과, IO 요구의 송신 대상 OS를 관리하는 영역과, IO 요구 및 요구원 OS 우선도를 보유하는 영역을 구비하며, 비특권 OS 기동시에 비특권 OS에 대해 디바이스를 할당하고, 또, 다른 OS로부터의 IO 요구를 디바이스 관리권을 가지는 비특권 OS로 송신하고, IO 요구가 경합한 경우에는, IO 요구 송신원의 OS 우선도에 따라 IO 요구를 행한다.
이 때문에, 공유 디바이스에의 IO 요구가 경합한 경우에도, 공유 디바이스의 관리권을 가지는 OS로의 실시간 응답성을 확보할 수 있다.
본 실시 형태에서는,
(1) 복수개의 디바이스의 공유가 가능한 가상 머신(VM),
(2) 시스템 상의 모든 디바이스를 조작 가능한 하나의 OS(특권 OS),
(3) 시스템 상의 임의의 디바이스를 조작 가능한 복수개의 OS(비특권 OS),
(4) 각종 데이터를 보유하는 2차 기억 장치,
(5) 하드웨어 자원인 CPU, 메모리,
(6) 공유 디바이스에 대한 VM 상의 가상 디바이스,
를 구비한 구성에 있어서, 이하의 구성요소를 구비한 계산기 장치를 설명하였다.
(A) 각 공유 디바이스에 대한 OS의 우선도 및 디바이스의 관리 상태가 나타내어진 디바이스 관리권 테이블,
(B) 비특권 OS의 사용하는 공유 디바이스 및 우선도가 기술된 비특권 OS 디바이스 기동 정보 파일,
(C) 비특권 OS가 기동할 때에, 피기동 OS가 사용하는 디바이스를 할당하는 디바이스 할당 처리부,
(D) 공유 디바이스가 어느 OS에 할당되어 있는지를 판단하고, 해당하는 OS로 IO 요구를 전송하는 디바이스 요구 전송 처리부,
(E) IO 요구의 송신원 OS의 우선도와 IO 요구가 저장되어 있는 IO 요구 보관 유지 큐,
(F) IO 요구의 송신원 OS의 우선도에 근거하여 공유 디바이스에 IO 요구의 처리를 의뢰하는 공유 디바이스 처리부.
또한, 본 실시 형태에서는,
디바이스 할당 처리부는, 비특권 OS 기동 시에, 비특권 OS 디바이스 기동 정보 파일로부터 비특권 OS가 사용하는 디바이스 및 그 디바이스에 대한 우선도를 취득하고, 디바이스 관리권 테이블로부터 현재의 디바이스의 관리권을 가지는 OS와 그 OS의 우선도를 특정하고, 우선도에 따라 현재 사용 중인 OS로부터 디바이스를 삭제하고, 기동 중인 비특권 OS에 디바이스를 할당하고, 비특권 OS에 대해, 디바이스의 관리권을 이양하고, 디바이스 관리권 테이블에 관리권의 이동을 포함한 갱신을 행하는 계산기 장치를 설명하였다.
또한, 본 실시 형태에서는, VM 상의 디바이스 요구 전송 처리부는, 디바이스 관리권 테이블을 이용하여, 공유 디바이스가 어느 OS에 할당되어 있는지를 체크하고, VM 상의 OS간 통신 처리부를 거쳐서, 비특권 OS 상의 비특권 OS 공유 디바이스 처리부에 실제 IO 요구를 행함으로써, OS간에 디바이스의 공유가 가능해지는 계산기 장치를 설명하였다.
또한, 본 실시 형태에서는, 공유 디바이스 처리부는, IO 요구의 송신원 OS의 우선도에 따라, IO 요구를 우선도순으로 IO 요구 보관 유지 큐에 저장하고, 복수 OS로부터의 IO 요구가 경합한 경우에, IO 요구 보관 유지 큐의 선두로부터 IO 요구를 처리함으로써, 공유 디바이스에 대한 IO 요구가 경합한 경우에도, 디바이스 관리권을 소지하는 비특권 OS의 IO 요구를 우선적으로 실시하는 계산기 장치를 설명하였다.
(실시 형태 2)
다음으로, 실시 형태 2에 따른 계산기 장치를 설명한다.
본 실시 형태에 따른 계산기 장치의 구성은 도 1 또는 도 6과 동일하다.
본 실시 형태에서는, 비특권 OS 공유 디바이스 처리부(202)의 동작 및 공유 디바이스(601)의 동작 이외는 실시 형태 1과 동일하다.
또, 본 실시 형태에서는, 비특권 OS 공유 디바이스 처리부(202)는 실행 제어부의 예로서 동작한다.
또한, 도 6에 나타내는 구성에서는, 비특권 OS 공유 디바이스 처리부(252)도 실행 제어부의 예로서 동작한다.
이하에서는, 도 1의 구성에 따라 설명을 진행시킨다.
본 실시 형태에서는, 공유 디바이스(601)는 비특권 OS 공유 디바이스 처리부(202)로부터 지시에 의해, 실행 중인 IO 요구의 실행을 캔슬한다.
본 실시 형태에서는, 비특권 OS 공유 디바이스 처리부(202)는 어느 OS로부터 발행된 IO 요구가 공유 디바이스 A(601a)에서 실행되고 있을 때에 다른 OS로부터 공유 디바이스 A(601a)에 대한 IO 요구가 발행된 경우에, 새롭게 발행된 IO 요구의 발행원의 OS의 공유 디바이스 A(601a)에 대한 우선도와, 실행 중인 IO 요구의 발행원의 OS의 공유 디바이스 A(601a)에 대한 우선도를 비교한다.
그리고, 비특권 OS 공유 디바이스 처리부(202)는, 새롭게 발행된 IO 요구의 발행원의 OS의 우선도가 높은 경우에, 실행 중인 IO 요구의 실행을 정지시키고, 새롭게 발행된 IO 요구의 실행을 개시시킨다.
보다 구체적으로는, 본 실시 형태에 있어서의 비특권 OS 공유 디바이스 처리부(202)는, VM(300) 및 자신의 OS(200)로부터의 IO 요구를 수취하면, 우선 IO 요구 유지 큐(370)에 IO 요구와 IO 요구의 송신원 OS의 OS 우선도를 저장한다.
그 후, 비특권 OS 공유 디바이스 처리부(202)는, 이전의 다른 OS로부터의 IO 요구를 공유 디바이스 A(601a)가 처리 중인지 체크하고, 처리하고 있지 않는 경우는 공유 디바이스 A(601a)에 대해 IO 요구의 실행을 의뢰한다.
이미 공유 디바이스 A(601a)가 다른 OS로부터의 IO 요구를 실행 중인 경우에는, 비특권 OS 공유 디바이스 처리부(202)는, 공유 디바이스 A(601a)가 실행하고 있는 IO 요구의 요구원 OS의 우선도와, 새롭게 받아들인 IO 요구의 요구원 OS의 우선도를 비교한다.
새롭게 받은 IO 요구의 요구원 OS의 우선도가 높은 경우에는, 비특권 OS 공유 디바이스 처리부(202)는 현재 실행 중인 IO 요구의 캔슬을 공유 디바이스 A(601a)에 지시하고, 우선도가 높은 IO 요구의 실시를 공유 디바이스 A(601a)에 지시한다.
또한, 비특권 OS 공유 디바이스 처리부(202)는, 캔슬의 대상으로 된 IO 요구를 IO 요구 유지 큐(370)로부터 삭제하고, 소정의 세이브 영역(save region)에 캔슬의 대상으로 된 IO 요구를 세이브시킨다.
다음으로, 우선도가 높은 IO 요구의 실행이 종료한 후, 비특권 OS 공유 디바이스 처리부(202)는 세이브 영역에 있는 IO 요구를 재차 IO 요구 유지 큐(370)에 저장하고, 캔슬된 IO 요구의 실행을 공유 디바이스 A(601a)에 지시한다.
본 실시 형태에 있어서의 특권 OS(100) 상의 애플리케이션이 비특권 OS(200)를 기동하는 순서는 도 7과 동일하며, 설명을 할애한다.
또한, 본 실시 형태에 있어서의 디바이스를 공유하는 방법은 도 8 및 도 9와 동일하며, 설명을 할애한다.
다음으로, 본 실시 형태에 있어서의, 비특권 OS(200)와 비특권 OS(250)의 IO 요구가 경합한 경우의 처리에 대해 도 11을 이용하여 나타낸다.
또, 스텝 S1201~S1206은 도 10의 스텝 S1101~S1106과 동일하다.
또한, 스텝 S1208은 도 10의 스텝 S1107과 동일하다.
도 10과의 중복 부분을 포함하여, 이하에서, 스텝 S1201~S1213을 설명한다.
우선, 스텝 S1201에 있어서, 비특권 OS(250) 상의 애플리케이션은 비특권 OS 가상 디바이스 처리부(251)에 공유 디바이스 A(601a)의 IO 요구를 행한다.
다음으로, 스텝 S1202에 있어서, 비특권 OS(250) 상의 비특권 OS 가상 디바이스 처리부(251)는, VM(300) 상의 OS간 통신 처리부(301)를 거쳐서, VM(300) 상의 공유 디바이스 A(601a)에 대응하는 가상 디바이스(350)에 IO 요구를 행한다.
다음으로, 스텝 S1203에 있어서, VM(300) 상의 가상 디바이스(350)는, 자신으로의 IO 요구에 대해, 디바이스 요구 변환 처리부(303)를 호출하고, 디바이스 요구 변환 처리부(303)가 가상 디바이스(350)로의 IO 요구로부터 공유 디바이스 A(601a)로의 IO 요구로 변환하고, 다음에 가상 디바이스(350)가 VM(300) 상의 디바이스 요구 전송 처리부(305)를 호출한다.
다음으로, 스텝 S1204에 있어서, VM(300) 상의 디바이스 요구 전송 처리부(305)는, 디바이스 관리권 테이블(360)을 참조하여, 공유 디바이스 A(601a)가 어느 OS에 할당되어 있는지 조사하고, 가상 디바이스(350)에 통지한다.
디바이스 관리권 테이블(360)이 도 3의 상태라고 하면, 디바이스 요구 전송 처리부(305)는, 공유 디바이스 A(601a)의 관리권은 비특권 OS(200)에 할당되어 있는 것을 통지한다.
다음으로, 스텝 S1205에 있어서, VM(300) 상의 가상 디바이스(350)는, OS간 통신 처리부(301)를 거쳐서, 공유 디바이스 A(601a)의 관리권을 가지는 OS, 즉 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)에 실제 IO 요구를 행한다.
다음으로, 스텝 S1206에 있어서, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는, 가상 디바이스(350)로부터의 실제 IO 요구(비특권 OS(250)의 IO 요구) 및 비특권 OS(250)의 우선도를 IO 요구 유지 큐(370)에 저장하고, 다른 OS(특권 OS(100), 비특권 OS(200))로부터의 실제 IO 요구의 출력 유무를 조사한다.
IO 요구 유지 큐(370)에 저장하는 OS 우선도는 비특권 OS 디바이스 기동 정보 파일(503)의 공유 디바이스(601)에 대한 우선도를 사용한다. 또, 비특권 OS 디바이스 기동 정보 파일(503)이 존재하지 않는 경우는 최저 우선도로 한다.
본 예의 경우, 비특권 OS(250)용의 비특권 OS 디바이스 기동 정보 파일(503)은 존재하고 있지 않기 때문에, 최저 우선도(0)로 한다. 또한, 특권 OS(100)의 경우는 모든 공유 디바이스(601)에 대해 최저 우선도(0)로 한다.
그 후, 스텝 S1207에 있어서, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는 공유 디바이스 A(601a)가 이미 다른 IO 요구를 실시 중인지 여부를 판단한다.
여기서는, 공유 디바이스 A(601a)는 다른 IO 요구를 실시하고 있지 않는 것으로 한다.
그 때문에, 비특권 OS 공유 디바이스 처리부(202)는 비특권 OS(250)로부터의 IO 요구를 공유 디바이스 A(601a)에 의뢰한다.
여기서, 스텝 S1208에 있어서, 비특권 OS(200) 상의 애플리케이션이, 비특권 OS 공유 디바이스 처리부(202)에 공유 디바이스 A(601a)의 IO 요구를 행했다고 한다.
또, 비특권 OS(200)에서는, 공유 디바이스 A(601a)의 관리권이 비특권 OS(200)에 있는 것을 인식하고 있다.
다음으로, 스텝 S1209에 있어서, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는, IO 요구를 받으면, IO 요구 유지 큐(370)에 IO 요구 및 IO 요구의 송신원의 OS 우선도를 저장한다.
IO 요구의 송신원의 OS 우선도는 비특권 OS 디바이스 기동 정보 파일(503)의 공유 디바이스 A(601a)에 대한 우선도를 사용한다. 이 경우, 도 5의 비특권 OS 디바이스 기동 정보 파일(503)을 체크하고, OS 우선도(100)을 설정한다.
다음으로, 스텝 S1210에 있어서, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는 공유 디바이스 A(601a)가 이미 다른 IO 요구를 실시 중인지 여부를 판단한다.
여기서는, 공유 디바이스 A(601a)는 이미 비특권 OS(250)로부터의 IO 요구를 실시 중이므로, 비특권 OS 공유 디바이스 처리부(202)는 공유 디바이스 A(601a)에 대해 비특권 OS(250)로부터의 IO 요구의 캔슬을 의뢰한다.
이 때, 비특권 OS 공유 디바이스 처리부(202)는, 캔슬의 대상으로 된 IO 요구를 IO 요구 유지 큐(370)로부터 삭제하고, 소정의 세이브 영역에 캔슬의 대상으로 된 IO 요구를 세이브시킨다.
스텝 S1211에 있어서, 공유 디바이스 A(601a)는, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)로부터의 IO 요구의 캔슬 의뢰에 따라, 지금까지 실시하고 있던 IO 요구의 실시를 정지하고, 비특권 OS 공유 디바이스 처리부(202)에 대해 캔슬 완료를 통지한다.
다음으로, 스텝 S1212에 있어서, 비특권 OS(200) 상의 비특권 OS 공유 디바이스 처리부(202)는 공유 디바이스 A(601a)에 자신의 OS인 비특권 OS(200)로부터의 IO 요구를 의뢰한다.
마지막으로, 비특권 OS(200)로부터의 IO 요구의 실행이 종료한 후, 스텝 S1213에 있어서, 비특권 OS 공유 디바이스 처리부(202)는 세이브 영역에 있는 IO 요구를 재차 IO 요구 유지 큐(370)에 저장하고, 캔슬된 IO 요구의 실행을 공유 디바이스 A(601a)에 지시한다.
이와 같이, 본 실시 형태의 디바이스 공유 방식에서는, 비특권 OS가 사용하는 하드웨어 정보를 보유하는 영역과, IO 요구의 송신지 OS를 관리하는 영역과, IO 요구 및 요구원 OS 우선도를 보유하는 영역을 구비하고, 비특권 OS 기동시에 비특권 OS에 대해 디바이스를 할당하고, 또, 다른 OS로부터의 IO 요구를 디바이스 관리권을 가지는 비특권 OS에 송신한다.
그리고, IO 요구가 경합한 경우에는, IO 요구 송신원의 OS 우선도를 체크하고, 우선도가 낮은 IO 요구를 캔슬하고, 우선도의 높은 OS로부터의 IO 요구를 우선적으로 실시하도록 했기 때문에, 공유 디바이스로의 IO 요구가 경합한 경우에도, 공유 디바이스 관리권을 가지는 OS로의 실시간 응답성을 확보할 수 있다.
이상, 본 실시 형태에서는, 이하의 기능을 구비하는 계산기를 설명하였다.
(1) 공유 디바이스는 공유 디바이스 처리부로부터의 요구에 의해, 지금까지 실시하고 있던 IO 요구를 캔슬하는 기능을 가진다.
(2) 공유 디바이스 처리부는, IO 요구의 송신원 OS의 우선도와, 공유 디바이스 상에서 실시되고 있는 IO 요구의 송신원 OS의 OS 우선도를 비교하고, 공유 디바이스 상에서 실시되고 있는 IO 요구의 송신원 OS의 OS 우선도가 낮은 경우에는, 공유 디바이스에 대해, 그것까지 실시하고 있던 처리의 캔슬을 의뢰하고, 보다 우선도가 높은 OS로부터의 IO 요구를 우선적으로 처리시킴으로써, 공유 디바이스에 대한 IO 요구가 경합한 경우에도, OS로의 실시간 응답성을 확보할 수 있다.
(실시 형태 3)
실시 형태 1 및 실시 형태 2에서는, 비특권 OS(200)는 자신의 OS가 공유 디바이스 A(601a)의 관리권을 가지고 있는 것을 인식하고 있지만, 본 실시 형태에서는, 비특권 OS(200)가 공유 디바이스 A(601a)의 관리권을 가지고 있는 OS를 인식하고 있지 않는 예를 설명한다.
본 실시 형태에 따른 계산기 장치(1)의 구성예는 도 6에 나타낸 것과 동일하다.
즉, 비특권 OS(200)에는, 비특권 OS 가상 디바이스 처리부(201), 비특권 OS 공유 디바이스 처리부(202)의 양자가 포함되어 있다.
다음으로, 본 실시 형태에 따른 동작예를 설명한다.
비특권 OS(200) 상의 애플리케이션은, 어느 OS가 공유 디바이스 A(601a)의 관리권을 취득하고 있는지를 모르기 때문에, 비특권 OS 가상 디바이스 처리부(201)에 공유 디바이스 A(601a)의 IO 요구를 행한다.
비특권 OS 가상 디바이스 처리부(201)는, 디바이스 관리권 테이블(360)의 정보를 판독하고, 어느 OS가 공유 디바이스 A(601a)의 관리권을 가지는지를 판단한다.
비특권 OS 가상 디바이스 처리부(201)는, 디바이스 관리권 테이블(360)의 참조의 결과, 자신의 OS(비특권 OS(200))가 공유 디바이스 A(601a)의 관리권을 가지는 것을 검지하고, 비특권 OS 공유 디바이스 처리부(202)에 대해, 공유 디바이스 A(601a)의 실제 I/O 요구를 행한다.
또한, 비특권 OS(200) 상의 애플리케이션이 공유 디바이스 B(601b)의 IO 요구를 행하는 경우는, 비특권 OS 가상 디바이스 처리부(201)가 디바이스 관리권 테이블(360)의 참조의 결과, 다른쪽의 비특권 OS(250)가 공유 디바이스 B(601b)의 관리권을 가지는 것을 검지하고, 비특권 OS 가상 디바이스 처리부(201)는 다른쪽의 비특권 OS(250)의 비특권 OS 공유 디바이스 처리부(252)에 대해, 공유 디바이스 B(601b)의 실제 I/O 요구를 행한다.
또한, 비특권 OS(250)에 있어서도 동일하며, 비특권 OS(250) 상의 애플리케이션이 공유 디바이스 B(601b)의 IO 요구를 행하는 경우는, 비특권 OS 가상 디바이스 처리부(251)가 디바이스 관리권 테이블(360)의 참조의 결과, 자신의 OS(비특권 OS(250))가 공유 디바이스 B(601b)의 관리권을 가지는 것을 검지하고, 비특권 OS 공유 디바이스 처리부(252)에 대해, 공유 디바이스 B(601b)의 실제 I/O 요구를 행한다.
또한, 비특권 OS(250) 상의 애플리케이션이 공유 디바이스 A(601a)의 IO 요구를 행하는 경우는, 비특권 OS 가상 디바이스 처리부(251)가 디바이스 관리권 테이블(360)의 참조의 결과, 다른쪽의 비특권 OS(200)가 공유 디바이스 A(601a)의 관리권을 가지는 것을 검지하고, 비특권 OS 가상 디바이스 처리부(251)는 다른쪽의 비특권 OS(200)의 비특권 OS 공유 디바이스 처리부(202)에 대해, 공유 디바이스 A(601a)의 실제 I/O 요구를 행한다.
이와 같이, 비특권 OS에 있어서, 공유 디바이스의 관리권을 가지는 OS를 파악하고 있지 않더라도, 디바이스 관리권 테이블을 참조함으로써, 공유 디바이스의 관리권을 가지는 OS를 알 수 있어, 적절한 OS에 IO 요구를 행할 수 있다.
마지막으로, 실시 형태 1~3에 나타낸 계산기 장치(1)의 하드웨어 구성예에 대해 설명한다.
도 12는 실시 형태 1~3에 나타내는 계산기 장치(1)의 하드웨어 자원의 일례를 나타내는 도면이다.
또, 도 12의 구성은, 어디까지나 계산기 장치(1)의 하드웨어 구성의 일례를 나타내는 것이며, 계산기 장치(1)의 하드웨어 구성은 도 12에 도시된 구성에 한정되지 않고, 다른 구성이더라도 좋다.
도 12에 있어서, 계산기 장치(1)는, 프로그램을 실행하는 CPU(911)(Central Processing Unit, 중앙 처리 장치, 처리 장치, 연산 장치, 마이크로 프로세서, 마이크로 컴퓨터, 프로세서라고도 함)를 구비하고 있다.
CPU(911)는, 버스(912)를 거쳐서, 예컨대, ROM(Read Only Memory)(913), RAM(Random Access Memory)(914), 통신 보드(915), 표시 장치(901), 키보드(902), 마우스(903), 자기 디스크 장치(920)와 접속되고, 이들 하드웨어 디바이스를 제어한다.
또, CPU(911)는 FDD(904)(Flexible Disk Drive), 콤팩트 디스크 장치(905)(CDD), 프린터 장치(906), 스캐너 장치(907)와 접속하고 있더라도 좋다. 또한, 자기 디스크 장치(920) 대신에, 광디스크 장치, 메모리 카드(등록 상표) 판독/기록 장치 등의 기억 장치이더라도 좋다.
RAM(914)은 휘발성 메모리의 일례이다. ROM(913), FDD(904), CDD(905), 자기 디스크 장치(920)의 기억 매체는 비휘발성 메모리의 일례이다. 이들은 기억 장치의 일례이다.
실시 형태 1~3에서 설명한 「주메모리(701)」는, 예컨대, RAM(914)에 의해 실현되고, 「2차 기억 장치(500)」는 자기 디스크 장치(920)에 의해 실현된다.
통신 보드(915), 키보드(902), 마우스(903), 스캐너 장치(907), FDD(904) 등은 입력부, 입력 장치의 일례이다.
또한, 통신 보드(915), 표시 장치(901), 프린터 장치(906) 등은 출력 장치의 일례이다.
통신 보드(915)는 네트워크에 접속되어 있다. 예컨대, 통신 보드(915)는 LAN(Local Area Network), 인터넷, WAN(Wide Area Network), SAN(Storage Area Network) 등에 접속되어 있더라도 상관없다.
또한, RAM(914)에는, CPU(911)에 실행시키는 프로그램의 적어도 일부가 일시적으로 저장된다.
또한, RAM(914)에는, CPU(911)에 의한 처리에 필요한 각종 데이터가 저장된다.
또한, ROM(913)에는, BIOS(Basic Input Output System) 프로그램이 저장되고, 자기 디스크 장치(920)에는 부트 프로그램이 저장되어 있다.
계산기 장치(1)의 기동시에는, ROM(913)의 BIOS 프로그램 및 자기 디스크 장치(920)의 부트 프로그램이 실행되고, BIOS 프로그램 및 부트 프로그램에 의해 가상 머신(921)(VM)이 기동된다.
자기 디스크 장치(920)에는, 가상 머신(921)(VM), 특권 OS(922), 프로그램 그룹(923), 파일 그룹(924)이 기억되어 있다.
프로그램 그룹(923)의 프로그램은 CPU(911)가 가상 머신(921), 특권 OS(922)를 이용하면서 실행된다.
가상 머신(921)(VM)에는, 도 1이나 도 6의 VM(300)에 포함되는 요소인, OS간 통신 처리부(301), OS 기동 처리부(302), 디바이스 요구 변환 처리부(303), 디바이스 할당 처리부(304), 가상 디바이스 요구 전송 처리부(305), 가상 디바이스(350)를 실현하는 프로그램이 기억되어 있다.
또한, 특권 OS(922)에는, 도 1이나 도 6의 특권 OS(100)에 포함되는 요소인, 특권 OS 공유 디바이스 처리부(101), 특권 OS 공유 디바이스 삭제 처리부(102), 특권 OS 가상 디바이스 처리부(103), 특권 OS 가상 디바이스 추가 처리부(104)를 실현하는 프로그램이 기억되어 있다.
또한, 프로그램 그룹(923)에는, 도 1이나 도 6의 비특권 OS(200) 및 비특권 OS(250)에 포함되는 요소인, 비특권 OS 가상 디바이스 처리부(201), 비특권 OS 공유 디바이스 처리부(202), 비특권 OS 가상 디바이스 처리부(251), 비특권 OS 공유 디바이스 처리부(252)를 실현하는 프로그램이 기억되어 있다.
또한, 프로그램 그룹(923)에는, 특권 OS 및 비특권 OS에서 실시되는 응용 프로그램도 기억되어 있다.
가상 머신(921)(VM)의 프로그램, 특권 OS(922)의 프로그램, 프로그램 그룹(923)의 프로그램은 CPU(911)에 의해 판독되어 실행된다.
파일 그룹(924)에는, 도 1이나 도 6에서 나타낸 비특권 OS 이미지 파일(501), 비특권 OS 기동 정보 파일(502), 비특권 OS 디바이스 기동 정보 파일(503), 디바이스 관리권 테이블(360), IO 요구 유지 큐(370)가 포함된다.
또한, 파일 그룹(924)에는, 실시 형태 1~3의 설명에 있어서, 「~의 판단」, 「~의 판정」, 「~의 계산」, 「~의 비교」, 「~의 갱신」, 「~의 설정」, 「~의 등록」, 「~의 선택」, 「~의 변경」 등으로서 설명하고 있는 처리의 결과를 나타내는 정보, 데이터, 신호값, 변수값, 또는 파라미터가 「~파일」이나 「~데이터베이스」의 각 항목으로서 기억되어 있다.
「~파일」이나 「~데이터베이스」는 디스크나 메모리 등의 기록 매체에 기억된다. 디스크나 메모리 등의 기억 매체에 기억된 정보, 데이터, 신호값, 변수값 또는 파라미터는 판독/기록 회로를 거쳐서 CPU(911)에 의해 메인 메모리나 캐시 메모리에 판독되고, 추출?검색?참조?비교?연산?계산?처리?편집?출력?인쇄?표시 등의 CPU의 동작에 이용된다.
추출?검색?참조?비교?연산?계산?처리?편집?출력?인쇄?표시의 CPU의 동작 동안, 정보, 데이터, 신호값, 변수값, 또는 파라미터는 메인 메모리, 레지스터, 캐시 메모리, 버퍼 메모리 등에 일시적으로 기억된다.
또한, 실시 형태 1~3에서 설명하고 있는 흐름도의 화살표 부분은 주로 데이터나 신호의 입출력을 나타내고, 데이터나 신호값은, RAM(914)의 메모리, FDD(904)의 가요성 디스크(flexible disk), CDD(905)의 콤팩트 디스크, 자기 디스크 장치(920)의 자기 디스크, 기타 광디스크, 미니 디스크, DVD 등의 기록 매체에 기록된다. 또한, 데이터나 신호는 버스(912), 신호선, 또는 케이블 외의 전송 매체에 의해 온라인 전송된다.
이와 같이, 실시 형태 1~3에 나타내는 계산기 장치(1)는, 처리 장치인 CPU, 기억 장치인 메모리, 자기 디스크 등, 입력 장치인 키보드, 마우스, 통신 보드 등, 출력 장치인 표시 장치, 통신 보드 등을 구비하는 컴퓨터이며, 상기한 바와 같이 「~부」로서 나타내어진 기능을 이들 처리 장치, 기억 장치, 입력 장치, 출력 장치를 이용하여 실현하는 것이다.
1: 계산기 장치
100: 특권 OS
101: 특권 OS 공유 디바이스 처리부
102: 특권 OS 공유 디바이스 삭제 처리부
103: 특권 OS 가상 디바이스 처리부
104: 특권 OS 가상 디바이스 추가 처리부
200: 비특권 OS
201: 비특권 OS 가상 디바이스 처리부
202: 비특권 OS 공유 디바이스 처리부
251: 비특권 OS 가상 디바이스 처리부
252: 비특권 OS 공유 디바이스 처리부
300: VM
301: OS간 통신 처리부
302: OS 기동 처리부
303: 디바이스 요구 변환 처리부
304: 디바이스 할당 처리부
305: 디바이스 요구 전송 처리부
350: 가상 디바이스
360: 디바이스 관리권 테이블
370: IO 요구 유지 큐
400: 하드웨어
500: 2차 기억 장치
501: 비특권 OS 이미지 파일
502: 비특권 OS 기동 정보 파일
503: 비특권 OS 디바이스 기동 정보 파일
601: 공유 디바이스
701: 주메모리

Claims (10)

  1. 하나 이상의 디바이스가 접속되어 있는 계산기 장치에 있어서,
    각 디바이스의 관리권이 부여되어 있는 특권 OS(Operating System)와,
    어떤 디바이스의 관리권도 부여되어 있지 않은 하나 이상의 비특권 OS와,
    비특권 OS와, 상기 비특권 OS에 대해 지정되어 있는 지정 디바이스를 나타내는 지정 디바이스 정보를 기억하는 정보 기억부와,
    상기 특권 OS가 기동한 후, 어느 하나의 비특권 OS가 기동할 때에, 상기 지정 디바이스 정보를 참조하여, 기동하는 비특권 OS에 지정 디바이스가 존재하는 경우에, 기동하는 비특권 OS의 지정 디바이스의 관리권을 상기 특권 OS로부터 기동하는 비특권 OS로 이양하는 관리권 제어부
    를 갖는 것을 특징으로 하는 계산기 장치.
  2. 제 1 항에 있어서,
    상기 특권 OS는 디바이스마다 우선도가 설정되어 있고,
    상기 정보 기억부는, 비특권 OS와, 지정 디바이스와, 상기 지정 디바이스에 대한 상기 비특권 OS의 우선도를 나타내는 지정 디바이스 정보를 기억하고,
    상기 관리권 제어부는, 상기 특권 OS가 기동한 후, 어느 하나의 비특권 OS가 기동할 때에, 상기 지정 디바이스 정보를 참조하여, 기동하는 비특권 OS에 지정 디바이스가 존재하는 경우에, 기동하는 비특권 OS의 지정 디바이스에 대한 우선도와 상기 특권 OS의 상기 지정 디바이스에 대한 우선도를 비교해서, 기동하는 비특권 OS의 우선도가 높은 경우에, 기동하는 비특권 OS로 상기 지정 디바이스의 관리권을 이양하는 것
    을 특징으로 계산기 장치.
  3. 제 2 항에 있어서,
    상기 관리권 제어부는,
    어느 하나의 디바이스의 관리권을 어느 하나의 비특권 OS로 이양한 후에, 지정 디바이스 정보에 상기 디바이스가 지정 디바이스로서 나타내어져 있는 비특권 OS가 기동할 때에, 기동하는 비특권 OS의 상기 디바이스에 대한 우선도와 관리권을 가지고 있는 비특권 OS의 상기 디바이스에 대한 우선도를 비교하여, 기동하는 비특권 OS의 우선도가 높은 경우에, 기동하는 비특권 OS로 상기 디바이스의 관리권을 이양하는 것
    을 특징으로 하는 계산기 장치.
  4. 제 1 항에 있어서,
    각 비특권 OS는, 상기 특권 OS가 관리권을 갖고 있는 디바이스를 사용하는 경우는, 사용 대상 디바이스에 대한 사용 요구를 상기 특권 OS를 거쳐서 상기 사용 대상 디바이스에 출력한 후에 상기 사용 대상 디바이스를 사용하고, 상기 관리권 제어부에 의해 관리권이 자신의 OS로 이양되어 자신의 OS가 관리권을 갖고 있는 디바이스를 사용하는 경우는, 사용 대상 디바이스에 대한 사용 요구를 상기 특권 OS 및 다른 어떤 비특권 OS도 거치지 않고 상기 사용 대상 디바이스에 출력한 후에 상기 사용 대상 디바이스를 사용하는 것
    을 특징으로 하는 계산기 장치.
  5. 제 4 항에 있어서,
    각 비특권 OS는, 다른 비특권 OS가 관리권을 갖고 있는 디바이스를 사용하는 경우는, 사용 대상 디바이스에 대한 사용 요구를 상기 다른 비특권 OS를 거쳐서 상기 사용 대상 디바이스에 출력한 후에 상기 사용 대상 디바이스를 사용하는 것
    을 특징으로 하는 계산기 장치.
  6. 제 5 항에 있어서,
    각 비특권 OS는, 자신의 OS가 관리권을 갖는 관리 디바이스에 대한 다른 OS로부터의 사용 요구를 입력받은 때에, 입력받은 사용 요구를 상기 관리 디바이스에 출력하는 것
    을 특징으로 하는 계산기 장치.
  7. 제 5 항에 있어서,
    상기 계산기 장치는,
    어느 하나의 OS로부터 출력된 어느 하나의 디바이스에 대한 사용 요구를 입력받고, 디바이스마다 어느 OS가 관리권을 갖고 있는지를 나타내는 디바이스 관리권 정보를 참조하여, 입력받은 상기 사용 요구가 대상으로 하는 디바이스의 관리권을 갖고 있는 OS를 판별하고, 판별한 OS에 상기 사용 요구를 출력하는 OS 판별부를 더 갖는 것
    을 특징으로 하는 계산기 장치.
  8. 제 7 항에 있어서,
    상기 관리권 제어부는, 디바이스의 관리권을 이양할 때마다, 상기 디바이스 관리권 정보를 갱신하는 것
    을 특징으로 하는 계산기 장치.
  9. 제 1 항에 있어서,
    상기 특권 OS 및 각 비특권 OS에는, 디바이스마다 우선도가 설정되어 있고,
    상기 계산기 장치는, 어느 하나의 OS로부터 발행된 어느 하나의 디바이스에 대한 사용 요구가 실행되어 있을 때에 다른 OS로부터 상기 디바이스에 대한 사용 요구가 발행된 경우에, 새롭게 발행된 사용 요구의 발행원의 OS의 상기 디바이스에 대한 우선도와, 실행 중인 사용 요구의 발행원의 OS의 상기 디바이스에 대한 우선도를 비교하여, 새롭게 발행된 사용 요구의 발행원의 OS의 우선도가 높은 경우에, 실행 중인 사용 요구의 실행을 정지시키고, 새롭게 발행된 사용 요구의 실행을 개시시키는 실행 제어부를 더 갖는 것
    을 특징으로 하는 계산기 장치.
  10. 제 1 항에 있어서,
    상기 계산기 장치는 상기 특권 OS 및 각 비특권 OS가 동작시키는 가상 머신을 가지며,
    상기 관리권 제어부는 상기 가상 머신에 포함되어 있는 것
    을 특징으로 하는 계산기 장치.
KR1020127008286A 2009-10-01 2009-10-01 계산기 장치 KR20120062854A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/067182 WO2011039887A1 (ja) 2009-10-01 2009-10-01 計算機装置

Publications (1)

Publication Number Publication Date
KR20120062854A true KR20120062854A (ko) 2012-06-14

Family

ID=43825741

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127008286A KR20120062854A (ko) 2009-10-01 2009-10-01 계산기 장치

Country Status (6)

Country Link
US (1) US20120179901A1 (ko)
EP (1) EP2472396A1 (ko)
JP (1) JPWO2011039887A1 (ko)
KR (1) KR20120062854A (ko)
CN (1) CN102576312A (ko)
WO (1) WO2011039887A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6089349B2 (ja) * 2013-05-28 2017-03-08 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム
JP6241178B2 (ja) * 2013-09-27 2017-12-06 富士通株式会社 ストレージ制御装置,ストレージ制御方法及びストレージ制御プログラム
CN104298546A (zh) * 2014-08-25 2015-01-21 宇龙计算机通信科技(深圳)有限公司 一种硬件通信装置的共享方法及终端
US9904580B2 (en) 2015-05-29 2018-02-27 International Business Machines Corporation Efficient critical thread scheduling for non-privileged thread requests
JP6645212B2 (ja) * 2016-01-27 2020-02-14 株式会社リコー 情報処理方法、および、情報処理装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0792761B2 (ja) * 1985-07-31 1995-10-09 株式会社日立製作所 仮想計算機システムの入出力制御方法
JPS6278631A (ja) 1985-10-02 1987-04-10 Hitachi Ltd 複数オペレ−テイングシステムにおける入出力制御方式
US8549513B2 (en) * 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US8112527B2 (en) * 2006-05-24 2012-02-07 Nec Corporation Virtual machine management apparatus, and virtual machine management method and program
JP2008033877A (ja) * 2006-06-29 2008-02-14 Mitsubishi Electric Corp 情報処理装置及びos起動方法及びプログラム
JP4233585B2 (ja) * 2006-07-25 2009-03-04 株式会社エヌ・ティ・ティ・ドコモ ペリフェラル切替装置及びペリフェラル切替制御装置
JP4295783B2 (ja) * 2006-12-13 2009-07-15 株式会社日立製作所 計算機、仮想デバイスの制御方法

Also Published As

Publication number Publication date
WO2011039887A1 (ja) 2011-04-07
EP2472396A1 (en) 2012-07-04
US20120179901A1 (en) 2012-07-12
CN102576312A (zh) 2012-07-11
JPWO2011039887A1 (ja) 2013-02-21

Similar Documents

Publication Publication Date Title
JP6355114B2 (ja) リソース処理方法、オペレーティング・システム、およびデバイス
JP5015665B2 (ja) カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム
CN106371894B (zh) 一种配置方法、装置和数据处理服务器
US10455003B2 (en) Method, server, and system for sharing resource data
US8458718B2 (en) Statically partitioning into fixed and independent systems with fixed processing core
KR100622189B1 (ko) 병렬 처리 시스템
Docan et al. Enabling high‐speed asynchronous data extraction and transfer using DART
JP2016541072A5 (ko)
WO2015114745A1 (ja) 計算機及び計算機のi/o制御方法
JP2004326753A (ja) 仮想計算機環境におけるロックの管理
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
CN103019802A (zh) 一种虚拟机管理方法及平台
US10728169B1 (en) Instance upgrade migration
JP2010165022A (ja) プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体
KR20120062854A (ko) 계산기 장치
US10579419B2 (en) Data analysis in storage system
JP2010134710A (ja) 仮想マシンの移行方法、サーバ、及び、プログラム
US10691478B2 (en) Migrating virtual machine across datacenters by transferring data chunks and metadata
KR101535792B1 (ko) 운영체제 구성 장치 및 방법
KR101271211B1 (ko) 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법
US10909044B2 (en) Access control device, access control method, and recording medium containing access control program
JP2011221634A (ja) 計算機システム、論理区画管理方法及び論理分割処理プログラム
KR100978083B1 (ko) 공유 메모리형 멀티 프로세서에 있어서의 절차 호출 방법 및 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체
US20090019259A1 (en) Multiprocessing method and multiprocessor system
JP6151946B2 (ja) 情報処理システム、情報処理装置およびそれらの制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application