KR100733852B1 - 계산기 시스템 - Google Patents

계산기 시스템 Download PDF

Info

Publication number
KR100733852B1
KR100733852B1 KR1020000026970A KR20000026970A KR100733852B1 KR 100733852 B1 KR100733852 B1 KR 100733852B1 KR 1020000026970 A KR1020000026970 A KR 1020000026970A KR 20000026970 A KR20000026970 A KR 20000026970A KR 100733852 B1 KR100733852 B1 KR 100733852B1
Authority
KR
South Korea
Prior art keywords
interrupt
operating system
processing
input
shared
Prior art date
Application number
KR1020000026970A
Other languages
English (en)
Other versions
KR20010014944A (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 KR20010014944A publication Critical patent/KR20010014944A/ko
Application granted granted Critical
Publication of KR100733852B1 publication Critical patent/KR100733852B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)

Abstract

복수개의 상이한 오퍼레이팅 시스템을 단일의 프로세서로 동작시키는 계산기 시스템에 있어서, 계산기에 접속된 주변 디바이스를 복수개의 오퍼레이팅 시스템에서 공유하고, 각 오퍼레이팅 시스템의 우수한 특유의 장점을 인출하고, 또한 시스템 비용을 감소하는 것을 목적으로 한다. 이를 위해, 계산기 시스템에, 복수개의 오퍼레이팅 시스템과, 실행 환경을 전환하는 OS 콘택스트 전환과, 발생된 인터럽트를 각 오퍼레이팅 시스템에 분배하는 공통 인터럽트 핸들러를 구비하고, 공통 인터럽트 핸들러는 인터럽트 요인마다에 기동하는 오퍼레이팅 시스템을 기억하는 우선 인터럽트 테이블을 참조하고, 인터럽트 요인에 대응한 오퍼레이팅 시스템으로 전환하도록 OS 콘택스트(context) 전환으로 의뢰함과 아울러, 인터럽트 핸들러를 기동하는 수단을 갖는다.
계산기 시스템, 오퍼레이팅 시스템, 전환 수단, 인터럽트 처리수단, 우선 인터럽트 테이블

Description

계산기 시스템{COMPUTER SYSTEM}
도 1은 본 발명의 제 1 실시예에 따른 시스템 구성을 도시한 도면,
도 2는 계산기 시스템의 하드웨어 구성을 도시한 도면,
도 3은 인터럽트 레벨 마스크 기능을 갖는 경우의 상태를 도시한 도면,
도 4는 개별 인터럽트 마스크 기능을 갖는 경우의 상태를 도시한 도면,
도 5는 인터럽트 처리 프로그램을 상세하게 나타낸 제 1의 도면,
도 6은 인터럽트 어드레스 테이블의 구성을 도시한 도면,
도 7은 우선 인터럽트 테이블의 구성을 도시한 도면,
도 8은 OS 콘택스트 전환 모듈의 처리 플로우를 도시한 도면,
도 9는 공통 인터럽트 핸들러의 처리 플로우를 나타내는 제 1의 도면,
도 10은 인터럽트 핸들러의 처리 플로우를 나타내는 제 1의 도면,
도 11은 차재 네비게이션(navigation) 장치의 입출력 패널의 구성을 도시한 도면,
도 12는 스위치 테이블의 구성을 도시한 도면,
도 13은 공통 인터럽트 핸들러의 처리 플로우를 나타내는 제 2의 도면,
도 14는 본 발명의 제 2 실시예에 따른 시스템 구성을 도시한 도면,
도 15는 공통 인터럽트 핸들러의 처리 플로우를 나타내는 제 3의 도면,
도 16은 인터럽트 핸들러의 처리 플로우를 나타내는 제 2의 도면,
도 17은 인터럽트 핸들러의 처리 플로우를 나타내는 제 3의 도면,
도 18은 입출력 처리 프로그램을 상세하게 나타낸 제 1의 도면,
도 19는 입출력 처리 프로그램을 상세하게 나타낸 제 2의 도면,
도 20은 우선 인터럽트 테이블 재 기록 플로우를 도시한 도면,
도 21은 본 발명을 그래픽스 표시장치에 적용한 시스템의 구성을 도시한 도면,
*도면의 주요 부분에 대한 부호의 설명*
100 : 프로세서 1O1 : 메모리
102 : 입출력제어장치 1O3 : 프로세서 버스
1O4 : 디스플레이 105 : 스위치
106 : 센서 1O7 : 타이머 장치
108 : 인터럽트 신호선 109 : 네트워크
110 : 태스크 A 111 : 태스크 B
112, 113 : 서버 태스크 114 : 태스크 C
115 : 관리 태스크 116 : 사무처리 OS
117 : 실시간 OS 118,119 :리스케쥴러(rescheduler)
120, 121 : 입출력 드라이버 122, 123 : 인터럽트 핸들러
124 : OS간 제어기능 125 : 공유 메모리
126 : OS간 통신기능 127 : OS 콘택스트 전환
128 : 공통 인터럽트 핸들러 129 : 인터럽트 관리 테이블
130 : 캐쉬 메모리 131 : CPU
132 : 범용 레지스터 133 : PC
134 : SR 135 : 데이터 버스
136 : 어드레스 버스 137 : 인터럽트 콘트롤러
14O : 인터럽트 블록 비트 141 : 인터럽트 마스크 레벨
142 : 실행 상태 레지스터 143 : 인터럽트 마스크 레지스터
144∼147 : 인터럽트 마스크 비트 150, 152 : 인터럽트 스택 포인터
151, 153 : 인터럽트 스택 154 : 실행 OS 기억
155 : 인터럽트 어드레스 테이블 156 : 우선 인터럽트 테이블
157 : 사무처리 OS용 보존 콘택스트 158 : 실시간 OS용 보존 콘택스트
190 : 실시간 OS전용 스위치 191 : 사무처리 OS전용 스위치
192 : 공용 스위치 200 : 스위치 테이블
221 : 클라이언트측 입출력처리 222 : 서버측 입출력처리
226 : 입출력장치 290 : 가상 입출력 드라이버
291 : 가상 인터럽트 핸들러 310, 312 : 그래픽스 드라이버
311, 313 : 그래픽스 인터럽트 핸들러 314 : 그래픽스 하드웨어
315 : 표시제어 316 : 프레임 메모리
317 : 사무처리 OS용 묘화 영역 318 : 실시간 OS용 묘화 영역
본 발명은 복수개의 오퍼레이팅 시스템을 단일의 프로세서로 동작시키는 계산기 시스템에서의 주변 디바이스와의 데이터 입출력 방법을 대상으로 하고, 복수개의 오퍼레이팅 시스템이 동일한 주변 디바이스를 공유해서 사용하기 위한 계산기 시스템에 관한 것이다.
통상의 계산기에서는, 하나의 오퍼레이팅 시스템이 동작하고, 그것이 계산기의 프로세서, 메모리 및 2차 기억장치라고 한 계산기 자원을 관리하고, 계산기가 효율 좋게 동작할 수 있도록 자원 스케줄을 실시하고 있다. 오퍼레이팅 시스템에는 여러 가지 종류가 있다. 배치(batch)처리에 뛰어난 것이나, 사무처리라고 한 GUI에 뛰어난 것, 실시간 처리에 우수한 것 등 여러 가지이다. 이들 복수의 특징을 인출하기 위해서, 복수인 오퍼레이팅 시스템을 1대의 계산기로 동시에 실행하고 싶다고 하는 요구가 있다. 예를 들면, 대형 계산기에 있어서는, 실제 업무에 따르는 온라인 처리를 실행하는 오퍼레이팅 시스템과, 개발용 오퍼레이팅 시스템을 1대의 계산기로 동작시키고 싶다고 하는 요구가 있다. 또는 GUI가 정돈되어 있는 오퍼레이팅 시스템과 실시간성에 우수한 오퍼레이팅 시스템을 동시에 가동시키고 싶다고 하는 요구도 있다.
1대의 계산기상에서 복수의 오퍼레이팅 시스템을 동작시키는 기구로서는, 대형 계산기로 실현되어 있는 가상 계산기 방식(OS 시리즈 제 11 권, 「VM」, 岡崎世雄 著, 공립 출판 주식회사 발행)이 있다. 가상 계산기 방식에서는, 가상 계산기 제어 프로그램이 전체 하드웨어를 점유하여서 관리하고, 점유한 하드웨어를 가상화함으로써 가상 계산기를 구성한다. 가상 계산기(virtural machine)를 구성하는 가상 계산기 제어 프로그램의 제어부는, 물리 메모리, 입출력 기기장치, 외부 인터럽트 등을 가상화한다. 예를 들면, 각 가상 계산기 마다 분할된 물리 메모리는, 각각의 가상 계산기에 대하여는 마치 0번지에서 시작되는 물리 메모리와 같이 행동, 입출력 장치를 식별하는 장치 번호도 마찬가지로 가상화되어 있다. 또, 자기 디스크의 기억 영역도 분할하여 자기 디스크 장치의 가상화를 실현하고 있다.
한편, 1대의 계산기로 복수의 오퍼레이팅 시스템의 인터페이스를 제공하는 기술로서 마이크로 커널이 있다. 마이크로 커널로서는, 마이크로 커널의 위에 유저(user)에게 제공하는 오퍼레이팅 시스템 기능을 실현하는 오퍼레이팅 시스템 서버를 구축하여, 유저는 그 서버를 경유하여 계산기 자원을 이용한다. 오퍼레이팅 시스템마다의 서버를 준비하는 것에 의해서, 유저에 대해 여러 가지의 오퍼레이팅 시스템 환경을 제공할 수 있다.
예를 들면, 차재 네비게이션 시스템에서는, 외부 환경 변화에 대하여 바로 응답한다고 하는 실시간성과, 어떠한 경우라도 시스템이 정지하지 않는다고 하는 신뢰성이 중요시 된다. 이 때문에, 인터럽트 응답성이 높고, 또한, 조밀하고 모듈 구성을 가지는 실시간용 오퍼레이팅 시스템(실시간 OS)이 사용되는 일이 많다. 그렇지만, 실시간 OS는, 실시간성·신뢰성을 중요시하는 반면, 인간과의 인터페이스 에 우수하다고는 말하기 어렵다. 한편, 일반의 퍼스널 컴퓨터(PC)에 사용하고 있는 사무처리용 오퍼레이팅 시스템(사무처리 OS)은, GUI라고 한 직접 화면을 조작하는 환경이 준비되고, 대인간 인터페이스에서 우수하다. 이 때문에, 실시간 OS를 사용하고 있는 분야에도 사무처리 OS의 사용자 인터페이스를 사용하고 싶다고 말하는 요구가 높아지고 있다. 그러나, 사무처리 OS는 인간과의 대화를 주된 처리라고 하고 있기 때문에, 인터럽트 응답성보다도 대화 처리의 처리율을 중요시하고, 비교적 장시간 인터럽트 금지 상태대로 처리를 실행한 적도 있다. 또한, 조밀한 구성을 가진 실시간 OS에 대하여, 신뢰성에 있어서 필적한다고는 말하기 어렵다.
그러나, 대형 계산기에서 실행되는 복수의 가상 계산기상에서 오퍼레이팅 시스템을 병행하여 동작시키는 방식과 마찬가지로, 내장 시스템에 있어서 동일 계산기 시스템 상에서 사무처리 OS와 실시간 OS를 동작시켜, 필요에 따라서 이들의 오퍼레이팅 시스템을 전환할 수 있으면, 뛰어난 유저 인터페이스와 실시간성·신뢰성을 양립시킬 수 있다. 마이크로프로세서의 성능 향상을 고려하면, 복수의 오퍼레이팅 시스템을 하나의 계산기 시스템 상에서 동작시키는 것은, 대형 계산만에 제한되는 기술은 아니다.
대형 계산기의 시스템은 멀티 유저에 대응할 필요가 있지만, 내장 기기의 시스템은 최저한 단일 유저에 대응할 수 있으면 좋다. 그래서, 실시간 OS와 사무처리 OS를 하나의 계산기 시스템으로 동작시킬 때, 각각의 오퍼레이팅 시스템의 중요성을 고려하고, 실시간 OS가 실행해야 할 처리가 있는 경우는 실시간 OS를 우선적으로 동작시켜, 실시간 OS상에서 실행하는 태스크가 없어졌을 때 사무처리 OS를 실행한다고 하는 가장 단순한 오퍼레이팅 시스템 전환 방식이 적용 가능하다. 이러한 오퍼레이팅 시스템의 전환 방법에서는, 주변 디바이스와의 입출력에 있어서, 입출력장치로부터의 인터럽트 요구를 받는 오퍼레이팅 시스템을 각 입출력장치마다 정적으로 결정해두고, 발생한 인터럽트 번호를 판정함으로써 오퍼레이팅 시스템을 전환하는 방법이 사용된다. 예를 들면, 상기 수법을 차재 네비게이션 시스템에 적용하였을 때, 차량 위치 결정에 이용하는 센서로부터의 인터럽트는 실시간 OS의 인터럽트 핸들러를 기동하고, 조작자와의 인터페이스에 사용하는 스위치나 디스플레이 콘트롤러로부터의 인터럽트는 사무처리 OS의 인터럽트 핸들러를 기동하도록 각 오퍼레이팅 시스템을 바꾼다. 그러나 사무처리 OS의 신뢰성은 반드시 높지 않기 때문에, 본 예로는 사무처리 OS의 처리가 정지함과 동시에 유저 인터페이스도 사용 불가능해져 버리고, 차재 네비게이션 시스템 전체의 신뢰성을 저하시킨다. 이 과제를 해결하기 위해서는, 절대로 정지시키고 싶지 않은 처리는 실시간 OS측으로, 정지를 허용하는 처리는 사무처리 OS로 각각 분리하고, 유저 인터페이스의 인터럽트는 실시간 OS측으로 처리하면 좋다. 그러나 유저 인터페이스를 위한 입출력처리를 실시간 OS측에서 처리하여 버리면, 유저 인터페이스에 뛰어난 사무처리 OS를 도입한 의미가 없어져 버린다. 따라서, 입출력 디바이스를 복수의 오퍼레이팅 시스템, 즉 사무처리 OS와 실시간 OS의 양쪽에서 사용할 수 있는 것이 필수가 되고, 상기 설명한 인터럽트 번호로부터 입출력처리를 실행하는 오퍼레이팅 시스템을 정적으로 결정하는 방법으로는 불충분하다는 과제를 가진다.
본 발명의 목적은, 복수의 상이한 오퍼레이팅 시스템을 하나의 계산기 시스템 상에서 동작시키는 멀티 오퍼레이팅 시스템에 있어서, 계산기 시스템에 구비된 입출력 디바이스를 복수의 오퍼레이팅 시스템에서 공유하는데 있다.
본 발명은, 인터럽트 요인마다 기동하는 오퍼레이팅 시스템을 기억하는 우선 인터럽트 테이블과, 우선 인터럽트 테이블을 재 기록하는 우선 인터럽트 테이블 재 기록 수단을 구비하고, OS 전환수단은 인터럽트 요인에 근거한 우선 인터럽트 테이블을 참조하여 대응하는 오퍼레이팅 시스템에 바꿈과 아울러, 이 오퍼레이팅 시스템이 구비하는 인터럽트 처리수단을 호출하는 것으로, 계산기에 구비된 입출력 디바이스를 복수의 오퍼레이팅 시스템에서 공유한다.
또한 본 발명은, 복수의 오퍼레이팅 시스템에서 공유하는 주변 디바이스와 데이터의 입출력을 행하는 데이터 입출력 서버를 하나의 오퍼레이팅 시스템에 구비된 상기 공유하는 주변 디바이스와 데이터의 입출력을 행하는 데이터 입출력 클라이언트를 이 하나의 오퍼레이팅 시스템이외의 오퍼레이팅 시스템에 구비하고, 각 데이터 클라이언트는, 상기 데이터 입출력 서버에 데이터 입출력을 의뢰하고, 의뢰를 받은 데이터 입출력 서버가 주변 디바이스와 데이터의 입출력을 행한 결과를 수신하여서 데이터 입출력을 처리함으로써 계산기에 구비된 입출력 디바이스를 복수의 오퍼레이팅 시스템에서 공유한다.
본 발명의 실시예를 도면을 이용하여 설명한다.
도 1에 본 발명의 제 1 실시예에 따른 전체 구성을 나타낸다. 본 예의 계산기 시스템은, 프로세서(1OO), 메모리(101), 입출력 제어장치(1O2), 디스플레이(104), 스위치(1O5), 센서(106) 등으로 구성된다. 프로세서(1O0), 메모리(101), 입출력 제어장치(102)는 프로세서 버스(103)에 의해서 상호 접속된다. 프로세서(1O0)는 복수개의 오퍼레이팅 시스템을 동작시키기 위한 마이크로프로세서이다. 메모리(1O1)에는, 오퍼레이팅 시스템(116, 117), 각 오퍼레이팅 시스템 상에서 동작하는 태스크 프로그램(110∼1l5), 각 오퍼레이팅 시스템을 위한 입출력 드라이버 프로그램(120, 121), 인터럽트 핸들러 프로그램(122, 123), 그리고 OS간 제어기능 프로그램(124)이 격납된다. 메모리(101)에 격납된 이들의 프로그램은 프로세서(100)에 의해서 판독되고 실행된다.
입출력 제어장치(102)에는, 화면 표시용 디바이스인 디스플레이(104), 유저로부터의 지시를 받는 스위치(105), 주위 환경의 변화를 측정하는 센서(lO6) 등이 접속된다. 또한, 공장/플랜트 제어용, 혹은, 내장용 계산기 시스템을 실현하는 경우, 입출력 제어장치(102)에는 네트워크(109)가 접속되는 경우가 있다. 네트워크(109)에는, 통신 기기 등의 입출력 기기가 접속된다. 또, 입출력 제어장치(102)에 접속되는 각 종 입출력 장치(104∼106)중 어느 것 또는 모두는, 시스템 구성에 의해서 생략되는 적도 있고, 또 다양한 입출력 장치가 접속되는 적도 있다. 입출력제어장치(102)는, 인터럽트 신호선(108)에 의해서 프로세서(1O0)와 접속되고, 입출력 동작 완료 등을 프로세서(100)에 통지한다. 도 1에서는 설명을 위해 인터럽트 신호선(108)과 프로세서 버스(1O3)가 별도의 장치로 있도록 기재하고 있지만, 실제로는, 인터럽트 신호선(1O8)은 프로세서 버스(1O3)의 일부이다. 프로세서(1OO) 내부에는 타이머 장치(1O7)가 설정되어 있고, 일정 주기마다 내부 인터럽트를 발생시킨다. 타이머 장치(107)로부터의 인터럽트는, 오퍼레이팅 시스템의 시간을 재는 등에 사용된다.
이 프로세서(100)는 인터럽트 신호선(108)에 의해서 통지되는 외부 인터럽트나 타이머 장치(107)등으로부터의 내부 인터럽트를 마스크하는 기능을 구비하고 있다. 인터럽트 마스크란, 프로그램이 이 인터럽트 마스크를 해제할 때까지, 특정한 인터럽트가 들어가는 것을 지연시키는 기능이다. 일반적으로, 인터럽트 마스크 기능에는, 아래의 3종류가 존재한다.
(1) 전체 인터럽트 마스크 : 모든 인터럽트를 마스크한다.
(2) 개별 인터럽트 마스크 : 개개의 인터럽트를 각각 마스크할 수 있도록 한다.
(3) 인터럽트 레벨 마스크 : 각 인터럽트에 레벨을 설정하여, 지정 레벨 이하의 인터럽트를 마스크 한다.
프로세서(100)는 그 종류에 의해서, 상기 (1)(2)의 조합, 또는 (1)(3)의 조합중 어느 하나를 갖추는 일이 많다. 후자의 조합을 갖추는 프로세서를 채용하는 경우, 대응하는 입출력 장치의 중요성이나 최소 응답 시간에 응하여 인터럽트 레벨을 할당하게 된다. 예를 들면, 짧은 응답 시간이 요구되는 네트워크(109)로부터의 인터럽트는, 디스플레이(104), 스위치(105) 및 기억장치(106) 등으로부터의 인터럽트보다 높은 레벨로 설정된다.
본 실시예에서는, 계산기 시스템내에 두 개의 오퍼레이팅 시스템(116, 117)이 존재하는 경우를 설명한다. 오퍼레이팅 시스템(116, 117)은, 각각에 할당된 메모리 및 프로세서 자원을 사용하여, 태스크(110∼115)를 실행한다. 도 1에서는, 오퍼레이팅 시스템수가 2개, 전체 태스크수가 6개인 예를 나타내고 있지만, 이들의 수치보다도 많고, 또는, 적은 오퍼레이팅 시스템, 태스크를 실장하는 것도 가능하다. 본 실시예에서는, 오퍼레이팅 시스템수가 동적인 변경은 상정하지 않지만, 각 오퍼레이팅 시스템이 동적으로 태스크 생성·삭제를 행하는 것은 가능하다. 본 실시예에서는, 오퍼레이팅 시스템(116)이 사무처리 OS, 오퍼레이팅 시스템(117)이 실시간 OS이라고 가정한다. 본 발명에서 서술한 기술은, 각 오퍼레이팅 시스템이 임의 종류이어도, 적용 가능하다. 태스크 11O∼112는 사무처리 OS에서 실행되는 사무처리 태스크이고, 태스크 113∼115는 실시간 OS로 실행되는 실시간 태스크이다. 더욱, 실시간 OS에서의 응답시간을 보증하기 위해서, 사무처리 OS보다 실시간 OS의 인터럽트 우선 순위가 높다고 가정한다. 이 가정에서는, 실시간 OS중 어느것의 태스크가 실행 상태의 경우는 실시간 OS(116)가 프로세서 자원을 사용한다. 그리고, 모든 태스크가 휴지(idle) 상태 또는 대기(wait) 상태의 경우는 사무처리 OS로 콘택스트가 전환되고, 사무처리 OS가 프로세서 자원을 사용한다.
사무처리 OS(116) 및 실시간 OS(117)를 하나의 프로세서 상에서 제휴하면서 동작시키기 위해서, OS간 제어기능(124)을 구비한다. OS간 제어기능(124)은, 사무처리 OS와 실시간 OS 사이의 양자로부터 액세스 가능한 공유 메모리(125), 사무처리 OS와 실시간 OS 사이에서 메시지 전송을 행하는 OS간 통신기능(126), 사무처리 OS와 실시간 OS 사이에서 실행 환경을 전환하는 OS 콘택스트 전환(127), 발생한 인터럽트를 각 오퍼레이팅 시스템으로 분배하는 공통 인터럽트 핸들러(128), 인터럽트 요구에 대응하는 오퍼레이팅 시스템이나 인터럽트 개시 어드레스를 기억하는 인터럽트 관리 테이블(129)을 구비한다.
공유 메모리(125)는, 오퍼레이팅 시스템 사이에서 고속인 데이터 교환을 실현하는 것을 목적으로 하고, 사무처리 OS와 실시간 OS의 양자로부터 읽고 쓰기가 가능하다. 공유 메모리(125)에 대해서 읽고 쓰기를 행하는 경우에는, 데이터 경합을 방지하기 위해서 세마포어(semaphore)기능을 사용하여 배타적으로 공유 메모리를 액세스하는 것이 바람직하다. OS간 통신기능(126)은, 각 오퍼레이팅 시스템에 대응하는 메시지 큐를 준비하여, 각 오퍼레이팅 시스템간에 메시지를 주고 받는다. 공통 인터럽트 핸들러(128)는, 인터럽트 요구가 발생했을 때 최초로 호출되고, 인터럽트 관리 테이블(129)에 기억된 각 인터럽트 번호에 대응한 오퍼레이팅 시스템을 판정하여, 대응하는 오퍼레이팅 시스템의 인터럽트 핸들러(122, 123)를 호출한다. OS 콘택스트 전환(127)은, 인터럽트 요구나 OS간 제어기능의 호출에 의해 오퍼레이팅 시스템의 전환이 필요하다고 판단되었을 때 콘택스트를 바꾼다. 인터럽트 관리 테이블(129)에는, 호출된 인터럽트 핸들러가 소속하는 오퍼레이팅 시스템 정보나, 각 오퍼레이팅 시스템마다의 인터럽트 핸들러의 개시 어드레스 정보를 인터럽트 번호마다 유지한다. 종래의 방법에서는, 인터럽트 관리 테이블(129)을 시스템 기동시에 정적으로 결정하고 있었기 때문에, 시스템 동작중에 그 내용을 재 기록하는 것은 할 수 없었다. 본 시스템에서는, 시스템 동작중에서도 인터럽트 관리 테이블(129)을 재 기록하는 수단을 제공함으로써, 하나의 입출력장치를 복수의 오퍼레이팅 시스템이 공용하는 것을 가능하게 한다.
오퍼레이팅 시스템(116, 117)은, 입출력장치와의 사이에서 데이터 입출력을 처리하는 입출력 드라이버(120, 121), 입출력장치로부터의 인터럽트 요구를 받는 인터럽트 핸들러(122, l23)를 구비한다. 인터럽트 핸들러(122, 123)는, 공통 인터럽트 핸들러(128)로부터 호출되고, 유저가 정의한 인터럽트 처리 프로그램을 실행한다. 입출력 드라이버(l20, 121)는, 각 태스크로부터 입출력장치를 제어하기 위한 인터페이스를 제공하고, 입출력장치를 읽고 쓰기함으로써 데이터 입출력을 하거나, 입출력장치를 제어한다고 한 기능을 제공한다. 리스케쥴러(118, 119)는, 태스크의 생성·삭제·정지·재개나, 외부 인터럽트·내부 인터럽트에 따라 태스크 전환을 행할 때 기동된다. 리스케쥴러는 직전에 실행하고 있는 태스크의 실행 환경(프로그램 카운터, 상태 레지스터, 범용 레지스터 등)을 태스크 관리 테이블에 격납하고, 새롭게 실행해야 할 태스크를 결정하고, 태스크 관리 테이블로부터 취득한 그 태스크의 실행 환경을 각 레지스터에 설정함으로써, 선택된 태스크를 실행한다.
도 2에, 본 발명이 전제로 하는 프로세서(1O0)의 내부 구성 예를 나타낸다. 캐쉬 메모리(130)는 메모리(101)상의 데이터 또는 명령을 일시적으로 격납하는 버퍼 기억장치이다. CPU(131)는 연산회로이고, 메모리(101) 또는 캐쉬 메모리(13O) 상에 존재하는 명령을 순차 판독하여 실행한다. 명령실행에 있어서, 연산결과를 일 시적으로 유지하기 위한 범용 레지스터(132), 실행 명령 어드레스를 유지하는 프로그램 카운터(133), 실행 상태를 유지하는 상태 레지스터(134)가 사용된다. 캐쉬 메모리(130), CPU(131), 범용 레지스터(132), 프로그램 카운터(133), 상태 레지스터(134)는, 서로 데이터 전송을 행하는 데이터 버스(135), 어드레스 지정을 행하는 어드레스 버스(136)에 의해서 접속되어 있다
인터럽트 신호선(108)과 타이머 장치(1O7)는 인터럽트 콘트롤러(137)에 접속된다. 인터럽트 콘트롤러(137)는, CPU(13O)에 대하여 인터럽트 상태 신호(138)를 생성한다. 인터럽트 상태 신호(138)는, 프로세서(100)에 대하여 현재 어떠한 종류의 인터럽트가 발생하고 있는 가를 나타내는 신호선이다. 통상, 상태 레지스터(134)는 현재의 인터럽트 마스크에 관한 정보를 가지고 있고, 인터럽트 상태 신호(138)로 지정되는 인터럽트를 접수하는가 아닌가를 결정한다. 인터럽트를 접수하는 경우, 인터럽트 콘트롤러(137)는, 프로그램 카운터(133), 상태 레지스터(134) 등의 값을 재 기록하고, 대응하는 인터럽트 처리 프로그램을 실행시킨다.
상태 레지스터(134)의 구성예를 도 3에 나타낸다. 여기서는, 프로세서(10O)가 전체 인터럽트 마스크 기능과 인터럽트 레벨 마스크 기능을 구비한 경우의 예를 나타낸다. 도 3의 예에서는, 상태 레지스터(134)는, 인터럽트 블록 비트(140)와 인터럽트 마스크 레벨 필드(141)(LVL)를 가진다. 인터럽트 블록 비트(l40)가 ON 인 경우, 프로세서(100)에 대한 모든 인터럽트가 마스크된다. 인터럽트 마스크 레벨 필드(141)는 현재의 인터럽트 마스크 레벨값을 나타내고, 이것 이하의 인터럽트 레 벨은 접수되지 않는다. 도 3의 예에서는, 인터럽트 마스크 레벨 필드(141)는 4비트 길이이다. 이 때문에, 합계 16종류의 마스크 레벨을 지정 가능하다. 통상, 인터럽트 레벨 O는「인터럽트가 발생하지 않는다」는 것을 의미하고, 인터럽트 마스크 레벨을 0으로 하는 것은「인터럽트 마스크를 행하지 않는다」는 것을 의미하기 때문에, 실질적으로는 15종류가 된다. 이 인터럽트 마스크 레벨 필드(141)를 구성하는 비트 수를 변경함에 의해, 수리할 수 있는 인터럽트 레벨의 종류를 증감시킬 수 있다.
도 4는, 프로세서(100)가 전체 인터럽트 마스크 기능과 개별 인터럽트 마스크 기능을 갖추고 있는 경우의 상태 레지스터(134)이다. 이 예에서는, 상태 레지스터(134)는, 실행 상태 레지스터(142)와 인터럽트 마스크 레지스터(143)의 2개의 레지스터로 구성된다. 도 3과 마찬가지로, 실행 상태 레지스터(142)내에 인터럽트 블록 비트(140)가 설치된다. 인터럽트 마스크 레지스터(143)내의 인터럽트 마스크 비트(144∼147)는 각각 별개의 인터럽트에 대응하고 있어, 이들의 인터럽트 마스크 비트중 어느것을 'ON'으로 한 경우, 대응하는 인터럽트가 접수되지 않는다. 도 3에 나타내는 상태 레지스터의 예는, 도 4의 상태 레지스터의 특수 예이다. 예를 들면, 인터럽트 마스크 비트(144)만 ON으로 되어 있는 상태를 레벨 1로 하고, 인터럽트 마스크 비트(144, 145)의 두 개가 'ON'으로 되어 있는 상태를 레벨 2, 인터럽트 마스크 비트(144∼146)의 세 개가 'ON'으로 되어 있는 상태를 레벨 3라고 하는 것과 같이 대응시킬 수 있다. 이 후, 상태 레지스터(134)는 도 4에 나타내는 구성으로 하여서 설명한다.
일반적인 프로세서는, 인터럽트를 수리하면, 하드웨어에 의해서 자동적으로 인터럽트 블록 비트(140)가 'ON'으로 재 기록된다. 필요에 따라서, 인터럽트 처리 프로그램이 인터럽트 블록 비트(140)를 'OFF'로 재 기록하여 인터럽트 접수를 허가할 수 있다. 또한, 오퍼레이팅 시스템 및 태스크가, 일시적으로 인터럽트 블록 비트(140)나 인터럽트 마스크 레지스터(143)의 내용을 재 기록하고, 특정 인터럽트의 접수를 기다리게 하는 것도 생긴다. 인터럽트 마스크 기능은, 배타 제어의 실현이나, 인터럽트 처리 실행중에 다시 동일 인터럽트가 발생하는 것을 피하기 위해서 사용된다.
도 5에 인터럽트 핸들러(122, 123), 공통 인터럽트 핸들러(128), OS 콘택스트 전환(127), 인터럽트 관리 테이블(129)을 상세히 나타낸다.
인터럽트 핸들러(122, 123)는, 인터럽트 발생시의 레지스터 등의 저장, 일시변수를 유지하기 위한 영역으로서, 각각, 인터럽트 스택(151, 153)을 소유한다. 인터럽트 발생시에는, 인터럽트 발생 직전의 레지스터값을 저장하고, 인터럽트 처리종료후에는 이 레지스터값을 바탕으로 복귀하기 위해서, 인터럽트 스택(151, 153)을 구비한다. 사용하는 프로세서(100)의 종류에 의해서는, 인터럽트 발생시에 자동적으로 레지스터가 전환되고, 또한, 인터럽트 처리 종료 후에 전환 이전의 레지스터로 되돌리는 기능을 구비하고 있는 것도 있다. 그러나, 다중 인터럽트가 가능한 시스템의 경우에는, 인터럽트 처리 중에 보다 높은 긴급성을 갖는 인터럽트가 발생했을 경우, 새롭게 발생한 인터럽트 처리를 우선적으로 실행하고, 이어서, 원래의 인터럽트 처리로 되돌아갈 필요가 있기 때문에, 이러한 하드웨어를 사용하더라도 인터럽트가 필요해진다. 인터럽트 핸들러(122, 123)는, 인터럽트 스택(151, 153)을 어느 영역까지 사용한 가를 나타내기 위한 포인터로서, 인터럽트 스택 포인터(150, 152)를 소유한다. 인터럽트 핸들러(122, 123)는, 인터럽트 스택, 및 인터럽트 스택 포인터를 사용하여 인터럽트 발생 전의 실행 환경(레지스터 등)을 저장하여, 필요한 인터럽트 처리를 실행한다. 인터럽트 처리 종료후, 인터럽트 발생 전의 실행환경을 복귀해서 원래 동작하고 있는 프로그램의 실행을 계속하도록 동작한다.
공통 인터럽트 핸들러(128)는, 발생한 인터럽트를 상기 인터럽트 핸들러(122, 123)에 대하여 분배한다. 이 때문에, 공통 인터럽트 핸들러(128)는, 현재 실행하고 있는 오퍼레이팅 시스템이 사무처리 OS(116)인지 실시간 OS(117)인지를 기억하는 영역으로서, 실행 OS 기억 변수(154)를 소유한다. 예를 들면, 도 5에 나타낸 시점에서 사무처리 OS가 처리를 실행하고 있는 것으로 가정하면, 이 경우, 실행 OS 기억 변수(154)에는, 「사무처리 OS」가 기억되어 있다. 여기서, 실행 OS 기억변수(154)가 문자열「사무처리 OS」를 기억하는 것은 대단히 비효율적이기 때문에, 예를 들면, 사무처리 OS 이면 'O', 실시간 OS이면 '1'이라고 한 정수 형식의 코드로 기억한다.
인터럽트 관리 테이블(129)은, 발생한 인터럽트가 어느쪽의 오퍼레이팅 시스템의 인터럽트 핸들러를 기동하는 가를 나타내는 우선 인터럽트 테이블(156), 및 각 오퍼레이팅 시스템이 구비하는 인터럽트 핸들러의 개시 어드레스를 나타내는 인터럽트 어드레스 테이블(155)을 가진다. 우선 인터럽트 테이블(156)은, 예를 들면 도 7에 나타내었던 것 같은 개개의 인터럽트가 어느쪽의 오퍼레이팅 시스템에서 처 리되야 되는지를 나타내는 대응표로 구성되고, 플래그 '1'이 유지되어 있는 오퍼레이팅 시스템이 구비하는 인터럽트 핸들러에 처리를 의뢰한다. 또한, 복수의 오퍼레이팅 시스템에서 공유하는 입출력장치로부터의 인터럽트에는 플래그 '1'을, 공유하지 않은 인터럽트에는 플래그 '0'을 기억한다. 본 실시예에서는, 16종류의 인터럽트 요인이 존재한다고 가정하면, 인터럽트 대응 테이블(156)도 16개의 엔트리(IRQ# O∼IRQ#15)의 구성이 된다. 또, 본 설명에서는 우선 인터럽트 테이블(156)에 플래그를 기록하는 방법을 상정하였지만, 어떠한 식별 가능한 정보를 기록하면 테이블에 제한을 두지 않는 방법에서도 실현 가능하다. 인터럽트 어드레스 테이블(155)은, 예를 들면 도 6에 나타낸 것과 같은 각각의 오퍼레이팅 시스템이 구비하는 인터럽트 핸들러의 개시 어드레스를 유지하는 표이다.
본 발명에서는, 하나의 입출력 기기를 복수의 오퍼레이팅 시스템으로부터 공용한다고 하는 목적을 달성하기 위해서, 공통 인터럽트 핸들러(128)가 받은 인터럽트 요구로부터 기동하는 오퍼레이팅 시스템을 동적으로 변경하는 기구를 제공한다. 우선 인터럽트 테이블(156)의 내용은, 유저 오퍼레이션이나 입출력 기기의 사용상황에 의해서 갱신되고, 공통 인터럽트 핸들러(128)는 우선 인터럽트 테이블(156)의 내용에 따라서 인터럽트 핸들러를 호출하도록 동작한다. 공통 인터럽트 핸들러(128)는, 실행 OS 기억변수(154)를 참조하여, 현재 실행하고 있는 오퍼레이팅 시스템의 종류를 판정한다. 판정 결과, 오퍼레이팅 시스템의 종류가 우선 인터럽트 테이블(156)로부터 얻어진 분배 앞 오퍼레이팅 시스템에 일치하지 않으면, OS 콘택스트 전환 모듈(127)로 오퍼레이팅 시스템 전환을 의뢰한다. 다음으로, 오퍼레 이팅 시스템이 일치하여 전환이 불필요한 경우, 또는 상기한 판정에 근거하는 오퍼레이팅 시스템 전환이 종료된 후, 해당하는 오퍼레이팅 시스템의 인터럽트 핸들러에 처리를 의뢰한다. 또, 실행 OS 기억변수(154)는 OS 콘택스트 전환 모듈(127)로부터도 참조된다. 이와 같이, OS간 제어 기능 프로그램내의 각 모듈이 가지는 내부 구조는, 개개의 모듈에 의해서 점유되는 것으로는 한정하지 않고, 각 모듈이 필요에 따라서 공용이 가능하다.
OS 콘택스트 전환 모듈(127)은, OS간 제어기능의 호출이나 인터럽트 발생의 결과, 오퍼레이팅 시스템을 전환해야만 되는 경우에 기동된다. 두 개의 오퍼레이팅 시스템을 전환하기 위해서, 이들의 실행환경(즉, 레지스터값)을 보존하기 위한 영역을 소유한다. 도면내에는, 사무처리 OS의 실행환경을 저장하기 위한 영역으로서, 사무처리 OS용 보존 콘택스트(157), 실시간 OS의 실행환경을 저장하기 위한 영역으로서, 실시간 OS용 보존 콘택스트(158)를 준비한다. OS 콘택스트 전환 모듈(127)은, 콘택스트를 전환할 때에 현재 실행하고 있는 오퍼레이팅 시스템에 대응하는 보존 콘택스트에 실행환경을 저장하고, 다음에, 또 한 쪽의 보존 콘택스트로부터 실행환경을 판독하여, 그 값을 프로세서(10O)의 해당하는 레지스터에 설정한다. 이에 따라, 오퍼레이팅 시스템의 전환을 실시할 수 있다. 이후, 도 5에 나타낸 모듈중, OS 콘택스트 전환 모듈(127), 공통 인터럽트 핸들러(128), 인터럽트 핸들러(122)의 처리 플로우를 설명한다. 인터럽트 핸들러(123)에 관해서는, 인터럽트 핸들러(122)와 같은 처리 플로우가 되기 때문에, 설명을 생략한다.
도 8은, OS 콘택스트 전환 모듈(127)의 처리 플로우이다. OS 콘택스트 전환 모듈(127)은, 실행하는 오퍼레이팅 시스템을 전환하는 경우에 호출되고, 오퍼레이팅 시스템의 전환이 필요한지 아닌지의 체크는 이 모듈의 호출 전에 행해진다. 따라서, 실행 OS 기억변수(154)를 참조하여, 어느 오퍼레이팅 시스템으로 실행을 전환하지 않으면 안되는가를 체크한다(단계 160). 여기서, 사무처리 OS(116)로부터 실시간 OS(117)로의 전환을 행하는 경우, 사무처리 OS용 보존 콘택스트(157)내에 사용중 레지스터의 값을 대피한다(단계 161). 다음으로, 실시간 OS용 보존 콘택스트(158)로부터 실행환경을 복귀하여, 레지스터에 설정함에 의해(단계 162), 이전 대피된 상태로부터 실시간 OS(117)를 재실행 시킬 수 있다. 실시간 OS(117)로부터 사무처리 OS(116)로의 전환을 행하는 경우, 반대로, 실시간 OS용 보존 콘택스트(158)에 사용중 레지스터의 값을 대피한다(단계 163). 다음으로, 사무처리 OS용 보존 콘택스트(157)로부터 레지스터를 복귀한다(단계 164). 어느쪽의 경우에 있어서도, 최후로, 전환한 후의 오퍼레이팅 시스템의 종류를 실행 OS 기억변수(154)에 기록한다 (단계 165).
도 9는 공통 인터럽트 핸들러(128)의 처리 플로우를 나타낸다. 일반적으로, 단일의 오퍼레이팅 시스템에 의해서 제어되는 계산기 시스템에서는, 일단 모든 인터럽트를 인터럽트 핸들러라고 불리는 오퍼레이팅 시스템의 모듈이 처리하고, 이어서, 각 프로그램으로 분배된다. 그러나, 본 실시예서 설명하는 것 같은 복수개의 오퍼레이팅 시스템을 동작시키는 계산기 시스템에서는, 더 이전에, 공통 인터럽트 핸들러가 모든 인터럽트를 접수하여, 이것을 대응하는 오퍼레이팅 시스템의 인터럽트 핸들러로 분배한다. 각 오퍼레이팅 시스템에 인터럽트를 분배하는 경우, 인터럽트 발생시에, 인터럽트 대상과는 별도의 오퍼레이팅 시스템이 처리를 실행한 적도 있다. 이 경우, 인터럽트에 대응하는 오퍼레이팅 시스템으로 전환할 필요가 있고, 공통 인터럽트 핸들러는 이러한 역할도 가지게 된다.
공통 인터럽트 핸들러(128)는, 인터럽트 발생 후, 먼저, 실행 OS 기억변수(154)의 내용을 추출하여, 현재 실행중인 오퍼레이팅 시스템이 사무처리 OS(l16)인지 실시간 OS(117)인지를 체크한다(단계 170). 다음으로, 우선 인터럽트 테이블(156)을 참조하여, 발생한 인터럽트 요구가 어느쪽의 오퍼레이팅 시스템의 인터럽트 핸들러를 기동하여야 할지를 입수한다(단계 171). 도 7에 나타내는 우선 인터럽트 테이블(156)에 기재된 값을 사용한 경우를 상정하면, 인터럽트 IRQ# 0가 발생한 경우에는 실시간 OS(117), 인터럽트 IRQ# 1이 발생한 경우에는 사무처리 OS(116), 이하, 마찬가지로 인터럽트 IRQ# 15가 발생한 경우에는 실시간 OS(117)가 대응하는 오퍼레이팅 시스템으로서 입수할 수 있다. 다음으로, 이렇게 해서 얻어진 인터럽트 대상 오퍼레이팅 시스템이 실행중 오퍼레이팅 시스템과 같은가 아닌가를 체크한다(단계 172). 인터럽트 요구가 현재 실행중의 오퍼레이팅 시스템에 대한 것이 아니면, 일단, 오퍼레이팅 시스템의 전환을 행하지 않으면 안된다. 이 전환 처리는, OS 콘택스트 전환 모듈(127)에 의뢰함으로써 행한다(단계 173). 다음으로 인터럽트 대상 오퍼레이팅 시스템이 사무처리 OS(l16)인지 실시간 OS(117)인지를 체크하여 (단계 174), 대상이 사무처리 OS(116)이면, 인터럽트 어드레스 테이블(155)을 참조하여 사무처리 OS의 인터럽트 핸들러(122)를 기동한다(단계 175). 실시간 OS(117)로의 인터럽트가 발생하면, 마찬가지로 인터럽트 어드레스 테이블(155)을 참조하여 실시간 OS의 인터럽트 핸들러(123)를 기동하게 된다(단계 176). 일반적으로, 인터럽트 처리로 태스크 전환을 행할 때, 인터럽트 핸들러(122, 123)는, 리스케쥴러(118, 119)를 호출하고, 공통 인터럽트 핸들러(128)로 제어를 되돌리는 것은 없다. 그러나, 인터럽트 처리로 태스크 전환이 발생하지 않은 경우, 그대로 인터럽트 핸들러의 처리를 종료한다. 이때, 인터럽트 핸들러(l22) 및 인터럽트 핸들러(123)는, 처리를 종료해서 공통 인터럽트 핸들러로 제어를 되돌리고(도 10에서 후술), 공통 인터럽트 핸들러(128)는 단계 177에서 부터 동작을 재개한다. 단계 177은, 인터럽트 발생시에 오퍼레이팅 시스템을 바꾼지 어떤지를 체크하는 처리이다. 단계 173에 의해서 오퍼레이팅 시스템을 바꾼 경우에는, 여기서 다시, 실행하는 오퍼레이팅 시스템을 전환하고, 원래의 실행 환경으로 되돌릴 필요가 있다. 이 때문에, 또 한번 OS 콘택스트 전환 모듈(127)에 의뢰하여, 전환 처리를 실행시킨다(단계 178).
도 10은 공통 인터럽트 핸들러(128)로부터 호출되는 사무처리 OS의 인터럽트 핸들러(122)의 처리 플로우를 나타낸 것이다. 먼저, 사용중 레지스터를 인터럽트 스택(151)으로 대피하고(단계 180), 인터럽트 요인에 대응한 인터럽트 처리를 실행한다(단계 181). 다음으로, 오퍼레이팅 시스템이 리스케쥴링중인지 아닌지, 즉 리스케쥴러(118)의 처리를 실행중인지 아닌지를 체크한다(단계 182). 오퍼레이팅 시스템이 리스케쥴링중이라면, 오퍼레이팅 시스템은 다음으로 실행해야 할 태스크를 한창 선택하고 있을 때이고, 실제로는 태스크를 실행하지 않고 있는 것을 의미한다. 따라서, 오퍼레이팅 시스템의 처리를 단순화시키면, 이 경우, 다시 리스케쥴 링을 처음부터 다시 하면 좋아진다. 즉, 오퍼레이팅 시스템이 리스케쥴링 중이다라고 판정한 경우, 인터럽트 스택의 대피 레지스터를 파기하고(단계 187), 리스케쥴러(118)를 처음부터 기동한다(단계 188). 또, 리스케쥴링 중에 인터럽트가 발생하더라도, 실행해야 할 태스크를 새롭게 다시 선택할 필요가 없는 경우도 있다. 상술한 처리에서는, 이와 같은 상황이라도 리스케쥴링을 처음부터 행하게 되고, 효율적이 아닌 적도 있다. 이 때문에, 리스케쥴링중에 발생한, 리스케쥴러(118)의 실행에 영향을 주는 처리(예를 들면, 태스크 기동·종료 등)을 대기 행렬 등에 등록해두는 방법을 사용하는 것도 할 수 있다. 이 경우, 리스케쥴러(118)의 종료 전에 대기 행렬에 등록해 둔 처리를 모아 실행한다. 이와 같이 대기 행렬을 채용하면, 인터럽트 발생의 때마다 도중까지 실행하고 있던 리스케쥴링을 다시 할 필요가 없다. 그렇지만, 대기 행렬에 등록되어 있는 처리를 모아 실행한 후, 이것에 의해서 리스케쥴링이 다시 필요한지 아닌지를 다시 체크해야만 한다. 또, 본 실시예에서는, 단순화를 위해, 전자의 대기행렬을 이용하지 않는 방식으로 설명한다. 그러나, 후자의 대기 행렬을 이용하는 방식의 경우에는, 리스케쥴링 중인지 아닌지를 나타내는 플래그와 처리를 등록해두는 대기 행렬을 준비하면 좋다. 오퍼레이팅 시스템이 제공하는 시스템 호출 등에서는, 리스케쥴러(118)의 실행에 영향을 주는 처리를 하는 경우는, 오퍼레이팅 시스템이 리스케쥴링중에 있으면, 그 처리를 대기 행렬에 등록하도록 한다. 또한, 리스케쥴러(118)의 처리 플로우내에, 대기 행렬에 등록된 처리를 일괄하여 실행하는 모듈을 삽입한다.
인터럽트 핸들러(122)가, 오퍼레이팅 시스템이 현재 리스케쥴링중은 아니다 라고 판정한 경우, 이 오퍼레이팅 시스템은 그 시점에서 어떠한 태스크를 실행하고 있다. 이 때문에, 다음으로, 태스크 전환이 필요한지 아닌지를 판정한다(단계 183). 태스크 전환이 필요하면, 즉 현재의 실행 태스크의 우선순위가 최고 우선 순위이고, 또한, 현재의 실행 태스크가 의연 실행 가능하면, 그대로, 인터럽트 핸들러(122)의 처리를 종료한다. 이 때문에, 인터럽트 스택(151)상에 대피해 둔 레지스터값을 복귀하고(단계 184), 공통 인터럽트로 제어를 되돌린다(단계 185). 태스크 전환이 필요하다고 판정한 경우, 인터럽트 스택(151)상에 대피한 레지스터의 값을 태스크 관리 테이블에 복사하고(단계 186), 인터럽트 스택상에서 대피한 레지스터의 값을 파기한다(단계 187). 이 후, 리스케쥴러(118)를 기동한다(처리 188). 또, 프로세서(100)에, 메모리(1O1)상의 데이터를 참조함과 아울러, 인터럽트 스택 포인터(15O)의 값을 증감할 수 있는 기능이 갖춰지고 있으면, 단계 186과 단계 187을 모아 실행할 수 있다.
이상, OS간 제어기능(124)에 구비된 우선 인터럽트 테이블(156)을 참조하여, 인터럽트에 의해서 동작시키는 오퍼레이팅 시스템을 결정한 뒤, 인터럽트 핸들러를 기동함으로써, 입출력장치를 복수의 오퍼레이팅 시스템에서 공용하는 방법을 설명하였다. 이 방법에서는, 입출력장치에 의해서는 인터럽트 번호로부터 일의로 동작시키는 오퍼레이팅 시스템을 결정할 수 없는 경우도 발생한다. 예를 들면 도 11에 나타내는 차재 네비게이션 시스템의 입출력 패널에는, 유저가 지시를 입력하기 위한 스위치와, 결과를 표시하는 디스플레이(104)를 구비한다. 이 스위치는, 실시간 OS(117)가 실행하는 태크스에서 사용하는 실시간 OS전용 스위치(190), 사무처리 OS(117)가 실행하는 태스크에서 사용하는 사무처리 OS 전용 스위치(191), 양쪽의 오퍼레이팅 시스템에 구비된 태스크로부터 공용 가능한 공유 스위치(l92)를 구비한다. 이와 같이, 오퍼레이팅 시스템마다 전용 스위치를 설치함으로써, 빈번히 사용되는 기능을 고정 스위치에 할당하는 것이 가능해지고, 조작성이 향상한다고 하는 특징을 얻을 수 있다. 그 위에, 고정 스위치에 기능을 할당하는 것으로, 버튼에 기능 명칭이 표시 가능해지게 되고 식별성이 향상된다. 그러나, 이들 스위치마다 다른 인터럽트 번호를 부여하는 것은, 인터럽트 신호선 수의 제약이나 하드웨어 간략화의 관점보다 불리하다. 한편, 스위치에 동일한 인터럽트 번호를 부여하면, 스위치가 눌려졌을 때 어느쪽의 오퍼레이팅 시스템이 구비하는 인터럽트 핸들러를 기동하여야 할지 판정할 수 없다. 이 문제를 해결하기 위해서, OS간 제어기능(124)에 구비된 공유 메모리(125)에, 스위치 테이블(2O0)을 설치한다. 스위치 테이블에는, 각 스위치마다 어느쪽의 오퍼레이팅 시스템에서 사용하는 스위치인가의 정보를 기억한다. 도 12에서는, 스위치 테이블에는「실시간 OS」,「사무처리 OS」,「공용」이 기억된다. 물론, 테이블에 문자열을 기억하는 것은 대단히 비효율적이기 때문에, 예를 들면 실시간 OS이면 O, 사무처리 OS이면 1, 공용이면 2라고 한 정수형식의 코드로 정보를 기억한다.
다음으로, 상기 스위치 테이블(2OO)을 사용하여 복수의 오퍼레이팅 시스템에서 입출력장치를 공유하는 공통 인터럽트 핸들러(128)의 처리 플로우를 도 13을 사용하여 설명한다. 또, 여기서 설명하는 처리는 스위치의 종류에서 기동하는 오퍼레이팅 시스템을 판정하는 경우로 한정하지 않고, 인터럽트의 내용을 판단함으로써 기동하는 오퍼레이팅 시스템을 판정하는 것이 필요한 다른 입출력장치에 적용하는 것도 가능하다.
공통 인터럽트 핸들러(128)는, 인터럽트 발생 후, 실행 OS 기억변수(154)의 내용을 참조하여, 현재 실행중의 오퍼레이팅 시스템이 사무처리 OS(116)인지 실시간 OS(117)인지를 체크한다(단계 210). 다음으로, 우선 인터럽트 테이블(156)을 참조하여, 발생된 인터럽트에 대응하는 인터럽트 번호의 엔트리에 공유 플래그가 생겨 있지 않은 경우는, 우선 인터럽트 테이블(156)을 참조하여, 발생된 인터럽트가 어느쪽의 오퍼레이팅 시스템에 대응하고 있는 가를 입수한다(단계 212). 한편, 공유 플래그가 생겨 있는 경우는, 인터럽트를 발생시킨 입출력장치에 대해서 액세스하여 인터럽트 내용을 판정함으로써 인터럽트 대상 오퍼레이팅 시스템을 결정한다(단계 213). 여기서는, 인터럽트를 발생시킨 입출력장치가 스위치이었다고 가정하면 스위치 테이블(200)을 참조함으로써 인터럽트 내용을 판정하고, 인터럽트 내용으로서 실시간 OS 전용 스위치가 눌려졌다고 판정한 경우는 실시간 OS(117)를, 사무처리 OS 전용 스위치가 눌려졌다고 판정한 경우는 사무처리 OS(116)를 인터럽트 대상 OS로서 각각 기억한다. 또한 공용 스위치가 눌려졌다고 판정한 경우는, 우선 인터럽트 테이블(156)을 참조하여, 발생한 인터럽트가 어느쪽의 오퍼레이팅 시스템에 대응하고 있는 가를 입수한다. 예를 들면, 도 7의 우선 인터럽트 테이블(156)과, 도 12의 스위치 테이블(200)에 기억된 값을 사용하여 처리한 경우를 상정하면, 스위치 인터럽트에 IRQ# 2가 할당되어 있으면, 스위치# 0이 입력된 경우는 실시간 OS, 스위치# 2가 입력된 경우는 사무처리 OS, 스위치# 3이 입력된 경우는 공용이기 때문에 다시 우선 인터럽트 테이블(156)을 참조하여 실시간 OS라고 하는 것과 같이 대응하는 인터럽트 대상 오퍼레이팅 시스템을 입수한다.
다음으로, 인터럽트 처리의 대상이 되는 오퍼레이팅 시스템이 실행중 오퍼레이팅 시스템과 같은지 아닌가를 체크한다(단계 214). 발생한 인터럽트가 현재 실행중의 오퍼레이팅 시스템에 대하는 것이 아니면, 일단, 오퍼레이팅 시스템을 전환해야 한다. 이 전환 처리는, OS 콘택스트 전환 모듈(127)에 의뢰하는 것에 의해 행한다(단계 215). 다음으로, 인터럽트 대상 오퍼레이팅 시스템이 사무처리 OS(116)인지 실시간 OS(117)인지를 체크하여(단계 216), 대상이 사무처리 OS(116)이면, 인터럽트 어드레스 테이블(155)을 참조하여 사무처리 OS의 인터럽트 핸들러(122)를 기동한다(단계 217). 실시간 OS(117)로의 인터럽트가 발생하고 있으면, 마찬가지로 인터럽트 어드레스 테이블(155)을 참조하여 실시간 OS의 인터럽트 핸들러(123)를 기동하게 된다(단계 218). 일반적으로, 인터럽트 처리에서 태스크 전환을 행할 때, 인터럽트 핸들러(122, 123)는, 리스케쥴러(118, 119)를 호출하고, 공통 인터럽트 핸들러(128)에 제어를 되돌리지는 않는다. 그러나, 인터럽트 처리에서 태스크 전환 이 발생하지 않은 경우, 그대로 인터럽트 핸들러(122, 123)는 처리를 종료하고 공통 인터럽트 핸들러(128)로 제어를 되돌리고, 공통 인터럽트 핸들러(128)는 단계 219부터 동작을 재개한다. 단계 219는, 인터럽트 발생시에 오퍼레이팅 시스템을 바꿨는지 어떤지를 체크하는 처리이다. 단계 215에 의해서 오퍼레이팅 시스템을 바꾼 경우, 여기서 다시, 오퍼레이팅 시스템을 전환하고, 원래의 실행 환경으로 되돌릴 필요가 있다. 이 때문에, 또 한번 OS 콘택스트 전환 모듈(l27)에 의뢰하여, 전환 처리를 실행한다(단계 220).
이상, OS간 제어기능(124)에 구비된 공통 인터럽트 핸들러로부터 인터럽트 관리 테이블(129)에 기억된 우선 인터럽트 테이블(156)을 참조하여, 복수의 오퍼레이팅 시스템을 하나의 계산기로 동작시키는 시스템에 있어서 입출력장치를 공유하는 방법을 설명하였다. 상술한 방법만으로는 모든 입출력장치로부터의 인터럽트 발생 케이스에 대응할 수 없다. 예를 들면, 그래픽스 액셀레이터나 직렬 커뮤니케이션이라고 한 입출력장치에서는, 입출력 드라이버로부터 동작조건이나 각 종 동작 파라메타를 설정하고, 하드웨어 내부의 레지스터에 상기 동작 파라메타나 동작조건 등의 내부 상태를 유지한다. 이러한 입출력장치에 대하여 단순히 상술한 처리를 적용하면, 각각의 오퍼레이팅 시스템내의 입출력 드라이버 및 인터럽트 핸들러는, 오퍼레이팅 시스템이 바뀐 것을 인식할 수 없기 때문에, 직전의 오퍼레이팅 시스템의 입출력 드라이버가 설정한 상태부터 처리를 계속하고자 한다. 그러나, 입출력 장치에 설정되는 파라메타는, 자체 오퍼레이팅 시스템의 입출력 드라이버가 최후에 설정한 값인 상태에서 처리를 계속했을 때만 정상으로 동작하고, 오퍼레이팅 시스템이 전환되기 전에 어떠한 파라메타가 입출력장치에 기록되어 있으면 본래 기대된 동작은 행할 수 없다.
이 문제를 해결하기 위해서, 본 발명에서는 도 14에 나타낸 것과 같이, 각각의 오퍼레이팅 시스템에 구비된 입출력 드라이버(12O, 121), 및 인터럽트 핸들러(122, 123)에 의한 입출력 처리에 클라이언트-서버 모델을 적용한 것을 특징으로 한다. 즉, 복수의 오퍼레이팅 시스템의 입출력 처리의 하나로 서버측 입출력 처리(222)를 실행하고, 그 밖의 오퍼레이팅 시스템의 입출력 처리로 클라이언트측 입출력 처리(221)를 실행한다. 서버측 입출력 처리(222)는, 복수의 오퍼레이팅 시스템이 공유하는 입출력장치(226)를 관리하고, 입출력 드라이버(121)에서 입출력장치(226)로의 데이터 입출력(225)을 실행하거나, 입출력장치(226)로부터의 인터럽트 요구를 인터럽트 핸들러(123)에서 받는다. 또, 클라이언트측 입출력 처리(221)로부터의 입출력 처리의 의뢰 통지(223)를 받아, 그 내용을 판단하여 입출력장치(226)와의 데이터 입출력(225)을 하고, 그 결과를 결과 통지(224)로서 클라이언트측 입출력장치(221)에 회신한다. 한편, 클라이언트측 입출력 처리(221)는, 서버측 입출력장치(222)에 대해서 의뢰 통지(223)를 송신하고 입출력장치(226)에로의 데이터 입출력을 의뢰하고, 회신된 결과 통지(224)를 사용하여 입출력 처리를 실행한다. 따라서, 클라이언트측 입출력 처리(221)로부터 입출력장치(226)의 하드웨어를 직접제어하지 않고, 항상 서버측 입출력장치가 입출력장치를 관리하기 때문에, 동작상태에 모순은 생기지 않는다.
또, 서버측 입출력처리(222)는 우선 순위가 높은 오퍼레이팅 시스템에 설정하는 것이 바람직하다. 본 실시예에서는 사무처리 OS보다 실시간 OS의 우선 순위가 높다고 가정하고 있기 때문에, 서버측 입출력처리(222)를 실시간 OS에서 실행한다.우선 순위가 높은 오퍼레이팅 시스템에 서버측 입출력처리(222)를 구비하는 것으로, 인터럽트 요구라고 한 처리가 마스크되는 것을 방지할 수 있다. 따라서, 인터럽트 요구발생에서의 응답 시간이 부당하게 늦어지는 것을 막아서, 데이터의 어이없이 놓침을 없앨 수 있다고 하는 특징을 얻을 수 있다.
이후, 도 14에 나타낸 모듈중, 공통 인터럽트 핸들러(128), 인터럽트 핸들러(122, 123)의 처리 플로우를 설명한다.
도 14에 나타낸 클라이언트-서버 모델을 입출력처리에 적용한 경우에 있어서, 공통 인터럽트 핸들러(128)의 동작 플로우를 도 15를 사용하여 설명한다. 또, 기본적인 시스템 구성은 도 1 및 도 5와 마찬가지이고, 또한 우선 인터럽트 테이블(156)에서는, 복수의 오퍼레이팅 시스템에서 공유하는 입출력장치의 인터럽트 번호에는 공유 플래그 1이, 특정한 오퍼레이팅 시스템이 사용되는 입출력장치의 인터럽트 번호에는 0이 각각 기억되어 있는 것으로 한다. 더욱, 도 14에 나타낸 것과 같이, 서버측 입출력처리(222)를 실시간 OS(117)에서, 클라이언트측 입출력처리를 사무처리 OS에서 각각 실행하는 것으로 가정한다.
공통 인터럽트 핸들러(128)는, 인터럽트 발생후, 실행 OS 기억변수(154)의 내용을 추출하고, 현재 실행중인 오퍼레이팅 시스템이 사무처리 OS(116)인지 실시간 OS(117)인지를 체크한다(단계 230). 다음으로, 우선 인터럽트 테이블(156)을 참조하여(단계 231), 발생된 인터럽트에 대응하는 인터럽트 번호의 엔트리에 공유 플래그가 생기지 않은 경우는 우선 인터럽트 테이블(156)을 참조하여, 발생한 인터럽트가 어느쪽의 오퍼레이팅 시스템에 대응하고 있는 가를 입수한다(단계 232). 한편, 공유 플래그에 '1'이 생긴 경우는, 실시간 OS를 인터럽트 대상 오퍼레이팅 시스템이라고 판정한다(단계 233).
다음으로, 인터럽트 대상 오퍼레이팅 시스템이 실행중인 오퍼레이팅 시스템과 같은가 아닌가를 체크한다(단계 234). 발생한 인터럽트가 현재 실행중인 오퍼레 이팅 시스템에 대한 것이 아닌 경우에는, 일단, 오퍼레이팅 시스템의 전환을 행한다. 이 전환 처리는, OS 콘택스트 전환 모듈(127)에 의뢰함으로써 행한다(단계 235). 다음으로 인터럽트 대상 오퍼레이팅 시스템이 사무처리 OS(116)인지 실시간 OS(117)인지를 체크하고(단계 236), 인터럽트 대상 오퍼레이팅 시스템이 사무처리 OS(116)이면, 인터럽트 어드레스 테이블(155)을 참조하여 사무처리 OS의 인터럽트 핸들러(122)를 기동한다(단계 237). 한편, 실시간 OS(117)로의 인터럽트가 발생하고 있으면, 마찬가지로 인터럽트 어드레스 테이블(155)을 참조하여 실시간 OS의 인터럽트 핸들러(123)를 기동하게 된다(단계 238). 일반적으로, 인터럽트 핸들러(122, 123)는, 인터럽트 처리에 의해서 태스크 전환이 행해질 때는, 리스케쥴러(118, 119)를 호출하기 때문에, 공통 인터럽트 핸들러(128)로 제어를 되돌리지는 않는다. 그러나, 태스크 전환이 발생하지 않은 경우에는, 인터럽트 핸들러(122, 123)는, 처리를 종료하면 공통 인터럽트 핸들러(128)로 제어를 되돌리고, 공통 인터럽트 핸들러(128)는 단계 239부터 동작을 재개한다. 단계 239는, 인터럽트 발생시에 오퍼레이팅 시스템을 바꿨는지 어떤지를 체크하는 처리이다. 단계 235에서 오퍼레이팅 시스템을 바꾼 경우, 여기서 다시, 오퍼레이팅 시스템을 전환하고, 원래의 실행환경으로 되돌릴 필요가 있다. 이 때문에, 또 한번 OS 콘택스트 전환 모듈(127)에 의뢰하여, 전환 처리를 실행시킨다(단계 240).
도 16은 공통 인터럽트 핸들러(128)로부터 호출되는 서버측 입출력장치(222)의 일부인 실시간 OS의 인터럽트 핸들러(123)의 처리 플로우를 나타낸 것이다.
먼저, 사용중 레지스터를 인터럽트 스택(153)에 대피하고(단계 250), 우선 인터럽트 테이블(156)을 참조하는 것으로 인터럽트 요구를 출력한 입출력장치가 복수의 오퍼레이팅 시스템으로부터 공유되어 있는지 판정한다(단계 251). 복수의 오퍼레이팅 시스템에 의해 공유되어 있지 않은 경우는, 실시간 OS에 대한 인터럽트 요구이고, 대응하는 인터럽트 처리를 실행한다(단계 253). 입출력장치가 복수의 오퍼레이팅 시스템에서 공유되고 있는 경우는, 우선 인터럽트 테이블(156)을 참조하여, 발생한 인터럽트 요구가 어느쪽의 오퍼레이팅 시스템에 대응하고 있는 가를 판정한다(단계 252). 실시간 OS측의 플래그가 생긴 경우는, 실시간 OS에 대한 인터럽트 요구에 대응한 인터럽트 처리를 실행한다(단계 253). 사무처리 OS측의 플래그가 생긴 경우는, 사무처리 OS에 대한 인터럽트 요구에 대응한 인터럽트 처리를 실시한다(단계 254). 사무처리 OS에 대한 인터럽트 요구에 대응한 인터럽트 처리(단계 254)에서는, 인터럽트가 발생한 것을 클라이언트측의 인터럽트 핸들러(122)에 통지하기 때문에, 사무처리 OS(116)로의 소프트웨어 인터럽트를 생성한다. 또한, 필요에 따라서 소프트웨어 인터럽트 처리로 입수한 정보를, 공유 메모리(125)에 기록한다. 생성하는 이 소프트웨어 인터럽트는, 실행중의 인터럽트 처리보다 우선 순위를 낮게 해야 한다. 사무처리 OS에 대한 인터럽트 요구에 대응하는 인터럽트 처리에서는, 실시간 OS에 영향을 주지 않도록 태스크 전환 판정(255)을 필요로 하지 않고, 인터럽트 핸들러(123)의 처리를 종료한다. 그래서, 인터럽트 스택(153)상에 대피해 둔 레지스터값을 복귀하고(단계 259), 공통 인터럽트 핸들러로 제어를 되돌린다 (단계 260). 또, 단계 255를 생략하는 것은 처리 고속화를 위한 것이고, 단계 255를 실행하도록 동작해도 좋다.
한편, 실시간 OS에 대한 인터럽트 요구에 대응하는 인터럽트 처리(단계 253)의 실행 후, 태스크 전환이 필요한지 아닌지를 판정한다(단계 255). 태스크 전환이 필요하지 않으면, 인터럽트 핸들러(123)의 처리를 종료한다. 이 때문에, 인터럽트 스택(151)상에 대피해 둔 레지스터값을 복귀하고(단계 259), 공통 인터럽트 핸들러로 제어를 되돌린다(단계 260). 태스크 전환이 필요하다고 판정한 경우, 인터럽트 스택(151)상에 대피한 레지스터의 값을 태스크 관리 테이블에 복사하고(단계 256),인터럽트 스택상의 대피 레지스터를 파기한다(단계 257). 이 후, 리스케쥴러(119)를 기동한다(단계 258). 또, 프로세서(1O0)에, 메모리(101)상의 데이터 참조와 동시에 인터럽트 스택 포인터(152)의 값을 증감할 수 있는 기능이 갖춰져 있으면, 단계 256과 단계 257을 모아 실행할 수 있다.
인터럽트 핸들러(123)에서 생성한 소프트웨어 인터럽트에 의해 기동되는 사무처리 OS의 인터럽트 핸들러(122)는, 대부분의 처리가 도 10에서 설명한 동작 플로우와 동일 내용으로 된다. 또, 처리가 일부 다른 부분은, 단계 181에 나타낸 인터럽트에 대응하는 인터럽트 처리의 실행이다. 본 동작예에서는, 도 16의 단계 254에 있어서 사무처리 OS 인터럽트에 대한 인터럽트 처리를 실행하고, 여기서 입수한 정보는, 공유 메모리(125)에 기록되어 있는 것으로 한다. 따라서, 인터럽트 핸들러(122)에서의 단계 181에 상당하는 처리에서는 공유 메모리(125)에 기록된 상기 정보를 판독하고, 인터럽트에 대응하는 처리를 실행함으로써, 직접 입출력장치를 액세스하지 않고 인터럽트 처리가 실현된다.
또한, 도 14에서 설명한 것처럼 클라이언트-서버 모델을 적용하여 복수의 오 퍼레이팅 시스템에서 입출력장치를 공용하는 경우에 있어서도, 도 11∼도 13의 설명과 동일하게, 인터럽트의 내용을 진단하지 않으면 어떤 오퍼레이팅 시스템의 인터럽트 처리를 실행해야 좋은지 판단할 수 없는 경우가 발생한다. 이 경우에 대응하기 위해서 실시간 OS(117)에 구비된 인터럽트 핸들러(123)의 처리 플로우를 도 17을 사용하여 설명한다. 인터럽트 내용을 판정하기 위한 테이블은 상술한 것처럼, 스위치 테이블(200)을 상정하지만, 여기서 설명하는 처리는 스위치뿐만 아니라, 다른 입출력장치에 적용하는 것도 가능하다.
먼저, 사용중 레지스터를 인터럽트 스택(153)에 대피하고(단계 270), 우선 인터럽트 테이블(156)을 참조함으로써 인터럽트를 요구한 입출력장치가 복수의 오퍼레이팅 시스템으로부터 공유되어 있는지 판정한다(처리 271). 공유하고 있지 않은 경우는, 실시간 OS에 대한 인터럽트 요구이고, 대응하는 인터럽트 처리를 실행한다(처리 274). 공유 플래그에 '1'이 세트되어 있는 경우는, 인터럽트 내용을 판정함으로써 인터럽트 대상 오퍼레이팅 시스템을 판정한다(처리 272). 판정처리에서는 인터럽트 내용과 스위치 테이블(200)을 비교한다. 비교 결과, 실시간 OS전용 스위치가 눌려졌다고 판정한 경우는 실시간 OS(117)를, 사무처리 OS 전용 스위치가 눌려졌다고 판정한 경우는 사무처리 OS(116)를 인터럽트 대상 OS로 하여서 각각 기억한다. 또한 공용 스위치가 눌려졌다고 판정한 경우는, 우선 인터럽트 테이블(156)을 참조하고, 인터럽트 내용에 대응한 엔트리 내에 플래그가 세트되어 있는 OS를 인터럽트 대상 OS로서 기억한다. 도 7의 우선 인터럽트 테이블(156)과, 도 12의 스위치 테이블(2OO)을 사용하고, 또한 스위치 인터럽트에 IRQ# 2가 할당되 어 있는 경우를 상정하면, 스위치# O가 입력된 경우는 실시간 OS, 스위치# 2가 입력된 경우는 사무처리 OS, 스위치# 3이 입력된 경우는 공용이기 때문에 또 우선 인터럽트 테이블(156)을 참조한 후에 실시간 OS라고 하는 것과 같이 대응하는 인터럽트 처리 대상이 되는 오퍼레이팅 시스템을 입수할 수 있다.
다음으로, 인터럽트 대상 OS를 참조하고(단계 273), 실시간 OS(117)이면 실시간 OS에 대한 인터럽트 요구에 대응하는 인터럽트 처리를 실행한다(단계 274). 사무처리 OS(116)이면 사무처리 OS 인터럽트에 대한 인터럽트 요구에 대응한 인터럽트 처리(274)를 각각 실행한다(단계 275). 사무처리 OS에 대한 인터럽트 요구에 대응한 인터럽트 처리(275)에서는, 인터럽트가 발생한 것을 클라이언트측의 인터럽트 핸들러(122)에 알리기 위해서, 사무처리 OS(116)로의 소프트웨어 인터럽트를 생성한다. 더욱, 필요하면 상기 소프트웨어 인터럽트 처리에서 입수한 정보를, 공유 메모리(125)에 기록한다. 또 생성하는 소프트웨어 인터럽트는, 실행중의 인터럽트 처리보다 우선 순위를 낮게 해야 한다.
사무처리 OS에 대한 인터럽트 요구에 대응한 인터럽트 처리에서는, 실시간 OS에 영향을 주지 않기 때문에 태스크 전환 판정(276)은 필요로 하지 않기 때문에, 그래서, 인터럽트 스택(153)상에 대피해 둔 레지스터값을 복귀하고(단계 280), 공통 인터럽트 핸들러로 제어를 되돌리고(단계 281) 인터럽트 핸들러(123)의 처리가 종료된다. 또, 단계 276을 생략하는 것은 처리 고속화를 위함이고, 단계 276을 실행하도록 동작해도 좋다.
한편, 실시간 OS에 대한 인터럽트 요구에 대응한 인터럽트 처리 후, 태스크 전환이 필요한지 아닌지를 판정한다(단계 276). 태스크 전환이 필요하지 않으면, 인터럽트 스택(153)상에 대피해 둔 레지스터값을 복귀하고(단계 280), 공통 인터럽트 핸들러로 제어를 되돌리고(단계 281) 인터럽트 핸들러(123)의 처리를 종료한다. 한편, 태스크 전환이 필요하다고 판정한 경우, 인터럽트 스택(151)상에 대피한 레지스터의 값을 태스크 관리 테이블에 복사하고(단계 277), 인터럽트 스택상의 대피레지스터를 파기한다(단계 278). 이 후, 리스케쥴러(119)를 기동한다(단계 279).
이상, 복수의 오퍼레이팅 시스템으로부터 동일한 입출력장치를 공유하기 위한 방법으로서 클라이언트-서버 모델을 적용하는 방법에 관해서 설명하였다. 이 중에서 서버측의 오퍼레이팅 시스템으로부터 다른쪽의 오퍼레이팅 시스템에 대해서, 인터럽트 발생을 소프트웨어 인터럽트로 알게 하는 방법에 관하여 설명하였지만, 복수의 오퍼레이팅 시스템간에 어떤 통신수단을 구비하고 있으면 인터럽트 발생을 서버측 입출력처리(222)로부터 클라이언트측 입출력처리(221)로 통지하는 것이 가능하고, 소프트웨어 인터럽트와 전환할 수 있다. 이하의 실시예에서는, 2개의 오퍼레이팅 시스템 사이에서 통신하기 위해, 도 1에 나타낸 것처럼 OS간 통신기능(126)을 구비한다. 그래서 OS간 통신기능(126)을 사용하여, 복수의 오퍼레이팅 시스템으로부터 동일한 입출력장치를 공유하기 위한 방법을 도 18을 사용하여 설명한다.
도 18에서의 구성요소는, 그 대부분이 도 1 및 도 5에서 설명한 구성요소와 동일하지만, 사무처리 OS(116)에 구비되어 있는 입출력 드라이버(120), 인터럽트 핸들러(122) 대신에 가상 입출력 드라이버(290), 가상 인터럽트 핸들러(291)를 구비하지만 다르다. 가상 입출력 드라이버(290)는, 애플리케이션 태스크로부터 입출 력장치를 액세스하기 위한 인터페이스를 제공하지만, 입출력장치에 직접 읽고 쓰거나, 입출력장치를 직접 제어하지는 않는다. 여기서는, OS간 통신기능(126)이 제공하는 메시지 통신을 사용하여, 입출력 드라이버(121)에 입출력장치로의 읽고 쓰기나 제어를 의뢰하고, 그 결과는 메시지 통신을 사용하여 입출력 드라이버(121)로부터 받아들인다. 가상 인터럽트 핸들러(29l)는, 인터럽트 핸들러(123)로부터 보내지는 메시지로 기동되어, 인터럽트 처리를 실행한다.
양쪽의 오퍼레이팅 시스템이 공유하는 입출력장치 인터럽트 요구가 발생하였을 때의 처리의 흐름을 도 18을 사용하여 설명한다. 설명의 편의상, 여기서 취급하는 입출력장치가 생성하는 인터럽트 번호의 우선 인터럽트 테이블(156)에는, 공유 플래그 '1'이 세트되고, 또한 사무처리 OS측에 플래그가 생겨 있는 것으로 한다.
입출력장치에서 발생한 인터럽트 요구는, 일단 공통 인터럽트 핸들러(128)에서 트랩되어, 도 15의 플로우에 따라서 처리를 실행한다. 여기서는 양쪽의 오퍼레이팅 시스템이 공유하는 입출력장치로부터의 인터럽트라고 가정하고 있기 때문에, 실시간 OS에 구비된 인터럽트 핸들러(123)가 기동된다. 인터럽트 핸들러(123)는, 도 16에서 설명한 플로우에 따라서 처리를 실행한다. 여기서는, 우선 인터럽트 테이블(156)에 공유 플래그, 및 사무처리 OS에 플래그 '1'이 생겨 있다고 가정하고 있기 때문에, 사무처리 OS에 대한 인터럽트 요구에 대응한 인터럽트 처리(254)가 실행된다. 사무처리 OS에 대한 인터럽트 요구에 대응한 인터럽트 처리(254)에서는, 인터럽트가 발생한 것을 클라이언트측의 가상 인터럽트 핸들러(291)에 알리기 위해서, OS간 통신기능(126)을 사용하여 가상 인터럽트 핸들러(291)로 메시지를 보낸 다. 또, 인터럽트 처리(254)로 입수한 정보는, 메시지에 첨부해서 송신하여도 좋고, 공유 메모리(125)에 기록해두는 것에 의해 가상 인터럽트 핸들러(291)로부터 참조함으로써 정보를 전송해도 좋다. OS간 통신기능(126)으로부터의 메시지를 수신하기 위한 메시지 큐를 가상 인터럽트 핸들러(291)에 설정할 수 없을 때는, 애플리케이션 태스크로서 구비된 서버 태스크(112)에 일단 메시지를 전송하고, 이 서버 태스크(112)로부터 가상 인터럽트 핸들러(291)를 호출하는 것으로 가상 인터럽트 핸들러(291)를 기동하여도 좋다. 가상 인터럽트 핸들러(291)는, 메시지에 첨부된 또는 공유 메모리(125)에 기록된 인터럽트 처리의 처리 결과를 참조하여서 인터럽트 처리를 실행한다.
또한, 사무처리 OS상에서 실행하는 태스크(11)로부터 의뢰된 입출력처리를 실행하는 처리의 흐름을 도 19를 사용하여 설명한다. 사무처리 OS 내의 가상 입출력 드라이버(290)는, 사무처리 OS에서 입출력장치를 액세스하기 위한 유일한 인터페이스이고, 태스크에서 의뢰된 입출력처리는 OS간 통신기능(126)을 사용하여 입출력 드라이버(121)로 전송된다. 가상 입출력 드라이버(290)로 입수한 정보는, 메시지에 첨부하여 송신하여도 좋고, 공유 메모리(125)에 기록해두고, 입출력 드라이버(121)로부터 참조함으로써 정보를 전송하여도 좋다. OS간 통신기능(126)에서의 메시지를 수신하기 위한 메시지 큐를 입출력 드라이버(121)에 설정할 수 없을 때는, 애플리케이션으로서 실현되는 서버 태스크(113)에 일단 메시지를 전송하고, 서버 태스크(113)로부터 입출력 드라이버(121)를 호출하는 것으로 입출력 드라이버(121)를 기동하여도 좋다. 입출력 드라이버(121)는, 메시지에 첨부된 의뢰 내용 또는 공유 메모리(125)에 기록된 정보를 참조함으로써 입출력처리를 실행한다.
다음으로, OS간 제어기능(124)에 구비된 우선 인터럽트 테이블(156)의 재 기록 처리를 도 20의 플로우 차트를 사용하여 설명한다. 우선 인터럽트 테이블(156)은, 유저 요구를 관리하는 관리 태스크(115) 등에 의해서 재 기록한다. 그러나, 한창 우선 인터럽트 테이블(156)을 재 기록하고 있는 때에, 인터럽트 처리가 발생하고, 이 인터럽트 처리 중에 우선 인터럽트 테이블(156)을 참조하면 우선 인터럽트 테이블(156)에 부정합이 발생할 우려가 있다. 그래서 최초에 전체 인터럽트 요구를 마스크 하여, 인터럽트가 발생하지 않도록 한다(단계 301). 재 기록을 실시하는 인터럽트 번호만 인터럽트 요구를 마스크 하여도 좋다. 인터럽트 마스크의 설정 후, 우선 인터럽트 테이블(156)의 내용을 갱신하고(단계 302), 단계 201에서 설정한 인터럽트 마스크를 해제하는(단계 303) 것으로 우선 인터럽트 테이블(156)의 재 기록을 행할 수 있다.
이상, 복수의 오퍼레이팅 시스템으로부터 입출력장치를 공유하는 방법을 설명하였지만, 실제의 응용 예로서 차재 네비게이션 장치 등의 유저 인터페이스를 구비한 내장 장치의 그래픽스 표시에 본 발명을 적용한 예를 도 21을 사용하여 설명한다. 그래픽스 표시 시스템 상에서 동작하는 오퍼레이팅 시스템은, 도 1과 같이 사무처리 OS(116) 및 실시간 OS(117)에서, 실시간 OS상에서 동작하는 태스크/스레드(task/thread)는 사무처리 OS상에서 동작하는 태스크/스레드보다 우선 순위가 높은 것으로 가정한다.
그래픽스 표시장치는, 묘화나 표시라고 한 명령을 해석하여 그래픽스 하드웨어(314)를 제어하는 그래픽스 드라이버(310, 312), 그래픽스 하드웨어(314)가 생성하는 인터럽트 요구로 기동하는 그래픽스 인터럽트 핸들러(311, 313) 및 화소에 전개된 이미지 데이터를 디스플레이에 표시하는 그래픽스 하드웨어(314)로 구성된다. 그래픽스 하드웨어(314)는, 각 화소의 휘도값을 유지하는 프레임 메모리(316), 수직 동기 주파수마다 프레임 메모리(316)로부터 화소의 휘도값을 추출하고, 디스플레이(104)에 출력하는 표시제어(315)를 구비한다. 여기서, 프레임 메모리(316)에는, 사무처리 OS의 그래픽스 드라이버(310)가 작성된 이미지를 축적하는 사무처리 OS용 묘화 영역(317)과, 실시간 OS의 그래픽스 드라이버(312)가 작성된 이미지를 축적하는 실시간 OS용 묘화 영역(318)을 독립· 분리해서 설치함으로써, 자원의 충돌을 방지한다. 이에 따라, 오퍼레이팅 시스템을 전환하는 경우라도, 각각의 묘화 이미지는 유지되기 때문에, 다시 오퍼레이팅 시스템이 전환되었을 때라도, 전환 전의 상태에서 처리를 속행할 수 있다고 하는 이점을 갖는다. 또한, 실시간 OS에 구비된그래픽스 드라이버(312), 및 그래픽스 인터럽트 핸들러(313)는 서버로서 동작하고, 사무처리 OS에 구비된 그래픽스 드라이버(310), 및 그래픽스 인터럽트 핸들러(311)는 클라이언트로서 동작한다고 가정한다.
실시간 OS(117)에 내장된 애플리케이션 태스크로부터의 묘화, 표시 요구에 대한 동작을 설명한다. 애플리케이션 태스크는, 그래픽스 드라이버(312)에 대해서 묘화 명령을 설정하여, 묘화처리를 실행한다.이 묘화 명령은, 선이나 다각형으로 묘화하기 위한 명령이나, 선폭이나 전체 도포 패턴이라는 속성을 지정하는 명령으 로 구성된다. 그래픽스 드라이버(312)는 이들의 묘화 명령을 선택하여, 실시간 OS용 묘화영역(318)에 화소로서 전개한다. 그래픽스 하드웨어(314)가 묘화 명령을 화소에 전개하는 처리를 하드웨어에서 실행하는 액셀러레이션 기능을 갖고 있으면, 이 기능을 활용하여도 좋다. 묘화 명령으로부터 화소에 전개해서 화소가 완료되면, 다음으로 그래픽스 드라이버(312)에 세트된 표시 명령을 실행한다. 표시 명령은, 프레임 메모리(316)에 전개된 화소를 표시할 때의 표시 개시 어드레스나 화면 사이즈(size)를 지정하는 명령으로 구성된다. 표시 명령에 의해 표시 제어(315)내의 레지스터를 제어함으로써 지정된 화상을 표시한다. 지정된 화면의 표시가 개시되면, 표시제어(315)는 인터럽트 요구를 생성한다. 인터럽트 요구는, 일단 공통 인터럽트 핸들러(128)에서 트랩되지만, 곧 공통 디바이스로부터의 인터럽트 요구로 판정하여, 그래픽스 인터럽트 핸들러(313)를 호출한다. 이 인터럽트에 의해 그래픽스 인터럽트 핸들러(313)는, 요구된 화면이 표시된 것을 식별한다.
다음으로, 사무처리 OS(116)상에서 실행되는 애플리케이션 태스크로부터의 묘화, 표시 요구에 대한 동작을 설명한다. 애플리케이션 태스크는, 그래픽스 드라이버(310)에 묘화 명령을 설정하고, 사무처리 OS용 묘화 영역(317)에 화소로서 전개한다. 묘화가 완료되면, 다음에 그래픽스 드라이버(310)에 세트된 표시 명령을 실행한다. 표시 명령은, 프레임 메모리(316)에 전개도니 화소를 표시할 때의 표시 개시 어드레스나 화면 사이즈를 지정하는 메시지를, OS간 통신기능(126)을 이용하여 그래픽스 드라이버(312)에 전송한다. 이 OS간 통신기능(126)으로부터의 요구를 받은 그래픽스 드라이버(312)는, 표시 제어(315)내의 레지스터를 제어함으로써 지 정된 화상을 표시한다. 그래픽스 드라이버(312)는, 어느쪽의 오퍼레이팅 시스템으로부터의 표시요구가 우선되는지를 판정하여, 우선적으로 표시해야 할 프레임 메모리의 내용을 항시 표시한다. 지정된 화면의 표시가 개시되면, 표시제어(315)는 이터럽트 요구를 생성한다. 인터럽트 요구는, 일단 공통 인터럽트 핸들러(128)에서 트랩되지만, 즉시 공통 디바이스로부터의 인터럽트 요구로 판정하여, 그래픽스 인터럽트 핸들러(313)를 기동한다. 그래픽스 인터럽트 핸들럴(313)는, OS간 통신기능(126)을 이용하여, 인터럽트 요구를 받은 것을 그래픽스 인터럽트 핸들러(311)에 전한다. 이에 따라 그래픽스 인터럽트 핸들러(311)는, 요구된 화면이 표시된 것을 식별한다.
이상, 본 발명을 적용한 그래픽스 표시장치의 구체적인 실시예를 설명하였지만, 본 발명을 적용함으로써 예를 들면 직렬/네트워크 통신이나 CD-ROM/DVD-ROM 기억장치라고 한 여러 가지 주변장치를 복수의 오퍼레이팅 시스템에서 공유하는 것이 가능해진다.
본 발명에 의하면, 복수개의 오퍼레이팅 시스템을 단일의 프로세서로 동작시키는 계산기 시스템에 있어서, 각 오퍼레이팅 시스템이 실행하는 애플리케이션 태스크로부터 동일한 입출력장치를 공유하는 것이 가능해지기 때문에, 입출력장치의 총수를 감소하는 것이 가능해진다. 또한, 본 발명에 의하면, 복수개의 오퍼레이팅 시스템이 공유하는 입출력장치와 데이터를 입출력하기 위한 입출력 드라이버, 및 인터럽트 핸들러를 해당 하나의 오퍼레이팅 시스템에 실장하여, 그 이외의 오퍼레이팅 시스템으로부터 해당 입출력 드라이버 및 인터럽트 핸들러에 입출력처리를 의뢰함으로써, 입출력장치를 리세트하지 않고 입출력처리를 계속하는 것이 가능해져, 조작성이 향상된다.

Claims (7)

  1. 복수개의 오퍼레이팅 시스템과, 상기 복수개의 오퍼레이팅 시스템을 전환하는 OS 전환수단을 가지는 계산기 시스템에 있어서,
    인터럽트 요인마다 기동하는 오퍼레이팅 시스템과, 복수의 오퍼레이팅 시스템에서 공유하는 주변 디바이스로부터의 인터럽트인지 아닌지를 기억하는 우선 인터럽트 테이블과, 우선 인터럽트 테이블을 재 기록하는 우선 인터럽트 테이블 재 기록수단을 구비하고,
    상기 OS 전환수단은, 인터럽트 요인으로부터 우선 인터럽트 테이블을 참조하여, 해당 인터럽트 요구가 복수의 오퍼레이팅 시스템에서 공유하는 인터럽트인지 아닌지를 판정하고, 해당 인터럽트 요인에 대하여 상기 복수개의 오퍼레이팅 시스템 중의 하나가 대응되어 있을 경우에는, 대응하는 오퍼레이팅 시스템으로 전환함과 동시에, 해당 오퍼레이팅 시스템이 구비하는 인터럽트 처리수단을 호출하며,
    해당 인터럽트 요구가 공유하는 인터럽트인 것으로 판단하였을 때에는, 해당 인터럽트를 생성한 주변 디바이스의 인터럽트 내용을 해석함으로써, 인터럽트 대상으로 하는 오퍼레이팅 시스템을 판정하고, 오퍼레이팅 시스템을 전환함과 동시에, 해당 오퍼레이팅 시스템이 구비하는 인터럽트 처리수단을 호출하는 것을 특징으로 하는 계산기 시스템.
  2. 삭제
  3. 삭제
  4. 복수개의 오퍼레이팅 시스템과, 복수개의 오퍼레이팅 시스템을 전환하는 OS 전환수단을 가지는 계산기 시스템에 있어서,
    복수의 오퍼레이팅 시스템으로부터 공유하는 주변 디바이스와, 상기 공유하는 주변 디바이스와 데이터를 입출력하는 데이터 입출력 서버를 하나의 오퍼레이팅 시스템에 구비하고,
    인터럽트 요인마다 기동하는 오퍼레이팅 시스템과, 복수의 오퍼레이팅 시스템에서 공유하는 주변 디바이스로부터의 인터럽트인지 아닌지를 기억하는 우선 인터럽트 테이블과, 우선 인터럽트 테이블을 재 기록하는 우선 인터럽트 테이블 재 기록수단을 더 구비하며,
    상기 오퍼레이팅 시스템 이외에 구비된, 상기 공유하는 주변 디바이스와 데이터를 입출력하는 데이터 입출력 클라이언트는, 데이터 입출력 서버에 데이터 입출력을 의뢰하여, 데이터 입출력 서버에서 주변 디바이스와 데이터를 입출력한 결과를 수신함으로써 데이터 입출력을 실행하고,
    OS 전환수단은, 인터럽트 요인으로부터 우선 인터럽트 테이블을 참조하여, 해당 인터럽트 요구가 복수의 오퍼레이팅 시스템에서 공유하는 인터럽트인지를 판정하고, 공유하지 않는 인터럽트인 것으로 판정하였을 때에는, 해당 인터럽트에 대응되어 있는 오퍼레이팅 시스템의 인터럽트 처리수단을 호출하며, 공유하는 인터럽트인 것으로 판정하였을 때에는, 해당 데이터 입출력 서버가 구비하는 인터럽트 처리수단을 호출하여, 해당 인터럽트를 생성한 주변 디바이스의 인터럽트 내용을 해석함으로써 인터럽트 대상으로 하는 오퍼레이팅 시스템을 판정하고, 해당 오퍼레이팅 시스템이 구비하는 인터럽트 처리수단을 호출하는 것을 특징으로 하는 계산기 시스템.
  5. 삭제
  6. 제 4 항에 있어서,
    데이터 입출력 서버는 가장 우선 순위가 높은 오퍼레이팅 시스템이 관리하는 영역에 실장하는 것을 특징으로 하는 계산기 시스템.
  7. 제 4 항에 있어서,
    복수의 오퍼레이팅 시스템의 사이에서 서로 통신하는 OS간 통신수단을 구비하고, OS간 통신수단을 사용하여 데이터 입출력 서버와 데이터 입출력 클라이언트의 사이에서 통신하는 것을 특징으로 하는 계산기 시스템.
KR1020000026970A 1999-05-21 2000-05-19 계산기 시스템 KR100733852B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP14091499A JP3659062B2 (ja) 1999-05-21 1999-05-21 計算機システム
JP11-140914 1999-05-21

Publications (2)

Publication Number Publication Date
KR20010014944A KR20010014944A (ko) 2001-02-26
KR100733852B1 true KR100733852B1 (ko) 2007-06-29

Family

ID=15279763

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000026970A KR100733852B1 (ko) 1999-05-21 2000-05-19 계산기 시스템

Country Status (4)

Country Link
US (1) US6615303B1 (ko)
EP (1) EP1054322B1 (ko)
JP (1) JP3659062B2 (ko)
KR (1) KR100733852B1 (ko)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
JP4402797B2 (ja) * 2000-03-02 2010-01-20 株式会社日立製作所 情報処理装置
US7089562B1 (en) * 2000-05-04 2006-08-08 International Business Machines Corporation Universal driver server
US6715016B1 (en) * 2000-06-01 2004-03-30 Hitachi, Ltd. Multiple operating system control method
CN101284525A (zh) 2000-06-20 2008-10-15 株式会社日立制作所 车辆行驶控制装置
US20040226020A1 (en) * 2000-09-28 2004-11-11 Ati Technologies, Inc. Method and system for using general and appliance operating systems in a single information handling device
US6948001B1 (en) * 2000-11-02 2005-09-20 Radiant Data Corporation Modular software method for independent storage nodes
JP2002259201A (ja) * 2001-03-02 2002-09-13 Hitachi Ltd 計算機システムの起動方法
US6820254B2 (en) * 2001-03-19 2004-11-16 International Business Machines Corporation Method and system for optimizing code using an optimizing coprocessor
JP2003036174A (ja) 2001-07-25 2003-02-07 Hitachi Ltd 車載端末装置
US7251814B2 (en) 2001-08-24 2007-07-31 International Business Machines Corporation Yield on multithreaded processors
US7428485B2 (en) * 2001-08-24 2008-09-23 International Business Machines Corporation System for yielding to a processor
US7257701B2 (en) * 2001-11-21 2007-08-14 Lenovo (Singapore) Pte. Ltd. Method and system for configuring an operating system in a computer system
DE10239805A1 (de) * 2002-08-29 2004-03-18 Siemens Ag Betriebsverfahren für einen Rechner
US8682636B2 (en) * 2002-08-30 2014-03-25 Sap Ag Non-client-specific testing of applications
US7032107B2 (en) * 2002-10-30 2006-04-18 Symantec Corporation Virtual partition for recording and restoring computer data files
AU2003278342A1 (en) 2002-11-18 2004-06-15 Arm Limited Security mode switching via an exception vector
RU2005115094A (ru) 2002-11-18 2006-01-20 Арм Лимитед (Gb) Отображение адресов виртуальной памяти на физические адреса в системе с наличием защищенного домена и незащищенного домена
US7231476B2 (en) 2002-11-18 2007-06-12 Arm Limited Function control for a processor
GB0226874D0 (en) 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
US7383587B2 (en) 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
GB2410348B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Exception types within a secure processing system
US7117284B2 (en) 2002-11-18 2006-10-03 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
GB2411254B (en) 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
GB2396712B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Handling multiple interrupts in a data processing system utilising multiple operating systems
GB2395583B (en) 2002-11-18 2005-11-30 Advanced Risc Mach Ltd Diagnostic data capture control for multi-domain processors
US7000051B2 (en) * 2003-03-31 2006-02-14 International Business Machines Corporation Apparatus and method for virtualizing interrupts in a logically partitioned computer system
JP2006522971A (ja) * 2003-04-09 2006-10-05 ジャルナ エスアー オペレーティングシステム
ES2315469T3 (es) * 2003-04-09 2009-04-01 Virtuallogix Sa Sistemas operativos.
US8612992B2 (en) 2003-04-09 2013-12-17 Jaluna Sa Operating systems
US7281075B2 (en) * 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
JP3952992B2 (ja) * 2003-06-03 2007-08-01 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
EP1503286B1 (en) * 2003-07-30 2014-09-03 Jaluna SA Multiple operating system networking
KR20070005917A (ko) 2003-09-30 2007-01-10 쟈루나 에스에이 운영체제
DE10348113A1 (de) 2003-10-16 2005-05-19 Kuka Roboter Gmbh Verfahren und Einrichtung zum Betreiben eines Sekundärbetriebssystems neben einem Primärbetriebssystem
US20050228921A1 (en) * 2004-03-31 2005-10-13 Prashant Sethi Sharing of interrupts between operating entities
JP2005309553A (ja) * 2004-04-19 2005-11-04 Hitachi Ltd 計算機
KR100575156B1 (ko) * 2004-05-19 2006-04-28 삼성전자주식회사 컴퓨터 시스템 및 그 제어방법
US7827558B2 (en) * 2004-06-30 2010-11-02 Devicevm, Inc. Mechanism for enabling a program to be executed while the execution of an operating system is suspended
US20060069828A1 (en) * 2004-06-30 2006-03-30 Goldsmith Michael A Sharing a physical device among multiple clients
US7424601B2 (en) * 2004-07-07 2008-09-09 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
CA2577493A1 (en) * 2004-08-18 2006-02-23 Jaluna Sa Operating systems
US20060047878A1 (en) * 2004-08-25 2006-03-02 Zilavy Daniel V GPE register block
US20060058658A1 (en) * 2004-09-13 2006-03-16 Siemens Medical Solutions Usa, Inc. Communications between co-located operating systems for medical diagnostic ultrasound and other systems
JP4788124B2 (ja) * 2004-09-16 2011-10-05 株式会社日立製作所 データ処理システム
US7529921B2 (en) * 2004-12-17 2009-05-05 Cardiac Pacemakers, Inc. Fast initialization of medical device system having multiple operating systems
CN100383744C (zh) * 2004-12-24 2008-04-23 联想(北京)有限公司 一种计算机多操作***的切换方法
TW200627277A (en) * 2005-01-24 2006-08-01 Lite On Technology Corp OS selection method and computer system utilizing same
KR100746025B1 (ko) * 2006-01-12 2007-08-06 삼성전자주식회사 운영체제 스위칭 장치 및 방법
CN101359312B (zh) * 2006-01-17 2010-06-09 株式会社Ntt都科摩 输入输出控制***
JP2007220086A (ja) * 2006-01-17 2007-08-30 Ntt Docomo Inc 入出力制御装置、入出力制御システム及び入出力制御方法
US8769528B2 (en) * 2006-07-14 2014-07-01 Moka5, Inc. Fixed-function consumer-electronics device providing general-computing functions with virtual machines
US8718629B2 (en) 2006-07-18 2014-05-06 Nec Corporation Information communication processing device, information communication terminal, information communication system, function switching method and function switching program
JP4342576B2 (ja) 2006-07-25 2009-10-14 株式会社エヌ・ティ・ティ・ドコモ 複数オペレーティングシステム切替制御装置及びコンピュータシステム
JP4885639B2 (ja) * 2006-07-28 2012-02-29 東芝情報システム株式会社 Hils装置
JP4249779B2 (ja) 2006-12-25 2009-04-08 株式会社東芝 デバイス制御装置
JP5102528B2 (ja) * 2007-04-18 2012-12-19 株式会社エヌ・ティ・ティ・ドコモ 情報処理装置及び制御方法
US8312476B2 (en) * 2007-09-05 2012-11-13 Htc Corporation Method for synchronizing information of dual operating systems
JP4982347B2 (ja) * 2007-12-11 2012-07-25 株式会社東芝 画像情報の更新を検出するプログラム、方法および画像処理装置
CN101477476B (zh) * 2008-01-02 2012-02-29 联想(北京)有限公司 多操作***之间切换显示的控制方法和装置
JP5010492B2 (ja) 2008-01-31 2012-08-29 株式会社東芝 通信装置、方法及びプログラム
US8533707B2 (en) * 2008-03-04 2013-09-10 Lsi Corporation Linux matrix compilation system and method
JP4858720B2 (ja) * 2008-03-05 2012-01-18 日本電気株式会社 エミュレータ、エミュレーション方法、プログラム、及び、記録媒体
JP4916576B2 (ja) 2008-03-14 2012-04-11 三菱電機株式会社 マルチオペレーティングシステム(os)起動装置及びマルチos起動プログラム及び記録媒体及びマルチos起動方法
US8713241B2 (en) * 2008-08-27 2014-04-29 Wireless Silicon Group, Llc Method and apparatus for an active low power mode of a portable computing device
US8281169B2 (en) 2008-08-27 2012-10-02 Wireless Silicon Group, Inc. Method and system for power management for a handheld mobile electronic device executing-in-place an application kernel from execute-in-place non-volatile memory (XIP NVM)
CN101776877A (zh) * 2009-01-12 2010-07-14 鸿富锦精密工业(深圳)有限公司 可编程逻辑控制器程序编辑***及方法
JP4985662B2 (ja) * 2009-01-22 2012-07-25 株式会社デンソー プログラム、及び制御装置
JP5066112B2 (ja) * 2009-02-19 2012-11-07 株式会社エヌ・ティ・ティ・ドコモ 情報処理装置
JP4888742B2 (ja) * 2009-02-25 2012-02-29 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP5233817B2 (ja) * 2009-04-23 2013-07-10 富士通株式会社 ドライバ・プログラム、デバイス管理方法及びコンピュータ装置
JP2010055641A (ja) * 2009-12-07 2010-03-11 Fuji Xerox Co Ltd 情報処理装置及びプログラム
CN101782861A (zh) * 2009-12-24 2010-07-21 华为终端有限公司 在嵌入式***中操作***的管理方法及装置
JP5521824B2 (ja) 2010-06-24 2014-06-18 富士通株式会社 情報処理装置及び起動方法
WO2012053095A1 (ja) * 2010-10-22 2012-04-26 三菱電機株式会社 割込み信号受付け装置及びコンピュータ装置
CN102567103B (zh) * 2010-12-27 2015-03-25 联想(北京)有限公司 一种终端及切换方法
GB2487575B (en) 2011-01-28 2017-04-12 Advanced Risc Mach Ltd Controlling generation of debug exceptions
EP3053025A4 (en) 2013-09-30 2017-05-17 Hewlett-Packard Development Company, L.P. Selecting operating systems based on a computing device mode
CN104572287B (zh) * 2015-01-30 2018-12-25 西安酷派软件科技有限公司 一种***切换时保持应用状态的方法、装置及终端
JP6615726B2 (ja) 2016-09-16 2019-12-04 株式会社東芝 情報処理装置、情報処理方法及びプログラム
JP7000088B2 (ja) 2017-09-15 2022-01-19 株式会社東芝 通知制御装置、通知制御方法及びプログラム
GB2571922B (en) * 2018-03-05 2020-03-25 Advanced Risc Mach Ltd External exception handling
CN109039428B (zh) * 2018-08-17 2020-08-21 中南大学 基于冲突消解的中继卫星单址天线调度随机搜索方法
US11604657B2 (en) * 2021-04-30 2023-03-14 Ncr Corporation Containerized point-of-sale (POS) system and technique for operating

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4747040A (en) * 1985-10-09 1988-05-24 American Telephone & Telegraph Company Dual operating system computer
WO1999012095A1 (en) * 1997-09-02 1999-03-11 Symbios, Inc. Method and apparatus for concurrent execution of operating systems

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4993017A (en) * 1988-03-15 1991-02-12 Siemens Aktiengesellschaft Modularly structured ISDN communication system
DE3831048A1 (de) * 1988-09-12 1990-03-15 Nixdorf Computer Ag Betriebsprogramm fuer eine datenverarbeitungsanlage
US5596500A (en) * 1993-10-25 1997-01-21 Trimble Navigation Limited Map reading system for indicating a user's position on a published map with a global position system receiver and a database
US5901319A (en) * 1996-06-14 1999-05-04 The Foxboro Company System and methods for generating operating system specific kernel level code from operating system independent data structures
US6047280A (en) * 1996-10-25 2000-04-04 Navigation Technologies Corporation Interface layer for navigation system
US6121924A (en) * 1997-12-30 2000-09-19 Navigation Technologies Corporation Method and system for providing navigation systems with updated geographic data
CN101284525A (zh) * 2000-06-20 2008-10-15 株式会社日立制作所 车辆行驶控制装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4747040A (en) * 1985-10-09 1988-05-24 American Telephone & Telegraph Company Dual operating system computer
WO1999012095A1 (en) * 1997-09-02 1999-03-11 Symbios, Inc. Method and apparatus for concurrent execution of operating systems

Also Published As

Publication number Publication date
JP2000330806A (ja) 2000-11-30
EP1054322A2 (en) 2000-11-22
KR20010014944A (ko) 2001-02-26
EP1054322B1 (en) 2015-07-29
JP3659062B2 (ja) 2005-06-15
US6615303B1 (en) 2003-09-02
EP1054322A3 (en) 2003-10-01

Similar Documents

Publication Publication Date Title
KR100733852B1 (ko) 계산기 시스템
JP4072271B2 (ja) 複数のオペレーティングシステムを実行する計算機
EP0426323B1 (en) Portable, resource sharing file server using co-routines
US5964843A (en) System for enhancing device drivers
US6996828B1 (en) Multi-OS configuration method
US7386619B1 (en) System and method for allocating communications to processors in a multiprocessor system
US5337412A (en) Method and apparatus for substituting real and virtual devices independent from an data processing system application program
US5799188A (en) System and method for managing variable weight thread contexts in a multithreaded computer system
FI78993C (fi) Oevervakare av driftsystem.
EP1734444A2 (en) Exchanging data between a guest operating system and a control operating system via memory mapped I/O
US5029077A (en) System and method for controlling physical resources allocated to a virtual terminal
US9563466B2 (en) Method and apparatus for supporting programmable software context state execution during hardware context restore flow
KR100988395B1 (ko) 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체
CN115904617A (zh) 一种基于sr-iov技术的gpu虚拟化实现方法
US5764956A (en) Computer peripheral function emulator
US11189003B2 (en) Graphics processing method and related apparatus, and device for unidirectionally transmitting calling information of a graphics API to a client
EP0248992A2 (en) Display terminal
JPH07105120A (ja) 入出力制御装置
KR101130361B1 (ko) 코프로세서 내의 연산을 스트림라인하는 방법
JPS603229B2 (ja) 情報処理方式
JPH06187312A (ja) マルチcpuシステムにおける処理方法および装置
JPH06214808A (ja) クライアント/サーバ・アーキテクチャを提供する方法及び装置
JPH04350728A (ja) 複数タスクの実時間処理装置
JPH05224951A (ja) マイクロプロセッサ・システムの割込管理方法
KR19990059515A (ko) 운영체제 상에서의 콘솔 서버 방법 및 장치

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: 20130531

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140603

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150529

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee