(57)【要約】【課題】２つのオペレーティングシステムを動作させるための少なくとも１つのプロセッサを備える埋込みシステムを提供する。【解決手段】プロセッサ２において少なくとも２つのオペレーティングシステムであって、第１オペレーティングシステムはスレッドの第１グループを備え、第２オペレーティングシステムはスレッドの第２グループを備えるものを動作させるための手段401、412と、プロセッサ２に割込みを作成するための手段と、プロセッサ２に来た割込みFIQ 、IRQ 、SWIがどのスレッドの実行に影響を及ぼすかを調べるための手段401と、プロセッサ２に受け取られた割込みFIQ、IRQ 、SW1に影響を及ぼすスレッドに関連する割込みデータを前記オペレーティングシステムに伝えるための手段401、412と、を更に備える。【選択図】図４ｂ
2011216132.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステム（OS＿A 、OS＿B ）を動作させるための少なくとも１つのプロセッサ（２）を備える埋込みシステム（１）であって、該埋込みシステム（１）は、
前記プロセッサ（２）において少なくとも２つのオペレーティングシステム（OS＿A 、OS＿B ）を動作させるための手段（１７、４０１、４１２）と、
スレッド（THA1、THA2、THA ＿IDLE）の第１グループを備える第１オペレーティングシステム（OS＿A ）と、
スレッド（THB1、THB2、THB ＿IDLE）の第２グループを備える第２オペレーティングシステム（OS＿B ）と、
前記プロセッサ（２）に対する割込み（FIQ 、IRQ 、SWI ）を作るための手段（nFIQ、nIRQ、SWI ）と、
前記プロセッサ（２）に来た割込み（FIQ 、IRQ 、SWI ）がどのスレッド（THA1、THA2、THB1、THB2、THA ＿IDLE、THB ＿IDLE）の実行に影響を及ぼすのか調べるための手段（４０１、６０３、６１７）と、
プロセッサ（２）により受信された割込み（FIQ 、IRQ 、SWI ）に影響を及ぼすスレッド（THA1、THA2、THB1、THB2、THA ＿IDLE、THB ＿IDLE）に関連する割込みデータを前記オペレーティングシステム（OS＿A 、OS＿B ）に伝送するための手段（４０１、４１２、６０３、６０９、６１７）と、
を更に備えることを特徴とする埋込みシステム。
【請求項２】
請求項１に記載の埋込みシステム（１）であって、前記調べるための手段（４０１、６０３、６１７）は、前記少なくとも２つのオペレーティングシステム（OS＿A 、OS＿B ）のための少なくとも１つの、少なくとも部分的に共通の割込みハンドラ（６０３、６１７）を備えることを特徴とする埋込みシステム。
【請求項３】
請求項１又は２に記載の埋込みシステム（１）であって、移動局機能とデータ処理機能とを備え、前記少なくとも２つのオペレーティングシステム（OS＿A 、OS＿B ）のうちの、前記第１オペレーティングシステム（OS＿A ）は移動局機能の動作に関連し、前記第２オペレーティングシステム（OS＿B ）はデータ処理機能の動作に関連することを特徴とする埋込みシステム。
【請求項４】
請求項３に記載の埋込みシステム（１）であって、少なくとも部分的に移動局機能と関連する少なくとも１つのユーザインタフェース（UI1 ）と、少なくとも部分的にデータ処理機能と関連する少なくとも１つのユーザインタフェース（IU2)とを備えることを特徴とする埋込みシステム。
【請求項５】
請求項４に記載の埋込みシステム（１）であって、前記移動局機能に関連するユーザインタフェース（UI1)と、前記データ処理機能に関連するユーザインタフェース（UI2)とは、少なくとも部分的に共通の表示装置（１０、１５）を備えることを特徴とする埋込みシステム。
【請求項６】
請求項４又は５に記載の埋込みシステム（１）であって、前記移動局機能に関連するユーザインタフェース（UI1)と、前記データ処理機能に関連するユーザインタフェース（UI2)とは、データを供給するための少なくとも部分的に共通の手段（９、１４）を備えることを特徴とする埋込みシステム。
【請求項７】
請求項１〜６のいずれか一項に記載の埋込みシステム（１）であって、前記第１オペレーティングシステム（OS＿A ）のどのスレッド（THA1、THA2、THA ＿IDLE）も動作していないとき、前記第１オペレーティングシステム（OS＿A ）の実行から前記第２オペレーティングシステム（OS＿B ）の実行へ移行するための手段（２、THA ＿IDLE）を備えることを特徴とする埋込みシステム。
【請求項８】
請求項１〜７のいずれか一項に記載の埋込みシステム（１）であって、前記プロセッサ（２）に対する割込み（FIQ 、IRQ 、SWI ）が前記第１オペレーティングシステム（OS＿A ）のもとで少なくとも１つのスレッド（THA1、THA2、THA ＿IDLE）の動作に影響を及ぼすとき、前記第２オペレーティングシステム（OS＿B ）の実行から前記第１オペレーティングシステム（OS＿A ）の動作へ移行するための手段（２、SCH ＿A ）を備えることを特徴とする埋込みシステム。
【請求項９】
請求項１〜８のいずれか一項に記載の埋込みシステム（１）であって、少なくとも前記第１オペレーティングシステム（OS＿A ）は実時間オペレーティングシステムであることを特徴とする埋込みシステム。
【請求項１０】
請求項１〜９のいずれか一項に記載の埋込みシステム（１）であって、前記プロセッサ（２）は少なくとも次のモード、
ユーザ・モード（USERモード）、
特権モード（SVC モード）、
未定義モード（UND モード）、
１つ又はそれより多い割込みモード（FIQ モード、IRQ モード、SWI モード）、を有し、前記第１オペレーティングシステム（OS＿A ）は少なくとも部分的に前記未定義モード（UND モード）で動作するようになっており、前記第２オペレーティングシステム（OS＿B ）は少なくとも部分的に前記ユーザ・モード（USERモード）で動作するようになっており、前記割込みハンドラ（６０３、６１７）は何らかの割込みモード（FIQ モード、IRQ モード、SWI モード）で動作するようになっていることを特徴とする埋込みシステム。
【請求項１１】
請求項１〜１０のいずれか一項に記載の埋込みシステム（１）であって、スレッドの前記第１グループの１つのスレッド（THA1、THA2、THA ＿IDLE）は前記第２オペレーティングシステム（OS＿B ）を備えることを特徴とする埋込みシステム。
【請求項１２】
請求項２〜１０のいずれか一項に記載の埋込みシステム（１）であって、少なくとも２つの割込み（FIQ 、IRQ 、SWI ）のための少なくとも２つの割込みサービス・ルーチンと、前記少なくとも２つの割込みサービス・ルーチンから前記割込み（FIQ 、IRQ 、SWI ）との関連で使用される１つの割込みサービス・ルーチンを選択するための手段（２）とを備えることを特徴とする埋込みシステム。
【請求項１３】
埋込みシステム（１）のプロセッサ（２）でオペレーティングシステム（OS＿A 、OS＿B ）を実行するための方法であって、該方法は、
少なくとも２つのオペレーティングシステム（OS＿A 、OS＿B ）が前記プロセッサ（２）で実行され、
前記第１オペレーティングシステム（OS＿A ）に関連して、前記第１グループのスレッド（THA1、THA2、THA ＿IDLE）が実行され、
前記第２オペレーティングシステム（OS＿B ）に関連して、前記第２グループのスレッド（THB1、THB2、THB ＿IDLE）が実行され、
前記プロセッサ（２）に対する割込み（FIQ 、IRQ 、SWI ）がもたらされ、
前記プロセッサ（２）に到達した割込みがどのスレッド（THA1、THA2、THB1、THB2、THA ＿IDLE、THB ＿IDLE）の実行に影響を及ぼすかが調べられ、
前記プロセッサ（２）に受け取られた割込みについての情報が、前記プロセッサ（２）に受け取られた前記割込み（FIQ 、IRQ 、SWI ）に影響を及ぼすスレッド（THA1、THA2、THB1、THB2、THA ＿IDLE、THB ＿IDLE）に関連する前記オペレーティングシステム（OS＿A 、OS＿B ）に伝えられることを特徴とする、埋込みシステム（１）のプロセッサ（２）でオペレーティングシステム（OS＿A 、OS＿B ）を実行するための方法。
【請求項１４】
請求項１３に記載の方法であって、前記プロセッサ（２）に受け取られた割込み（FIQ 、IRQ 、SWI ）を調べるとき、前記少なくとも２つのオペレーティングシステム（OS＿A 、OS＿B ）に少なくとも部分的に共通の少なくとも１つの割込みハンドラが使用されることを特徴とする方法。
【請求項１５】
請求項１３に記載の方法であって、前記埋込みシステム（１）で移動局機能とデータ処理機能とが実行され、前記少なくとも２つのオペレーティングシステム（OS＿A 、OS＿B ）のうちの、前記第１オペレーティングシステム（OS＿A ）は前記移動局機能の実行に関連し、前記第２オペレーティングシステム（OS＿B ）は前記データ処理機能に関連することを特徴とする方法。
【請求項１６】
請求項１５に記載の方法であって、前記移動局機能は前記第１ユーザインタフェース(UI1) により使用され、前記データ処理機能は前記第２ユーザインタフェース(UI2) により使用されることを特徴とする方法。
【請求項１７】
請求項１６に記載の方法であって、前記移動局機能と前記データ処理機能とは少なくとも部分的に共通の表示装置（１０、１５）で表示されることを特徴とする方法。
【請求項１８】
請求項１６又は１７に記載の方法であって、前記移動局機能と前記データ処理機能とを使用するために、少なくとも部分的に共通の手段（９、１４）によってデータが供給されることを特徴とする方法。
【請求項１９】
請求項１３〜１８のいずれか一項に記載の方法であって、前記第１オペレーティングシステム（OS＿A ）のどのスレッド（THA1、THA2、THA ＿IDLE）もラン・モードになっていない段階において、前記第１オペレーティングシステム（OS＿A ）の実行から前記第２オペレーティングシステム（OS＿B ）の実行への変換が行われることを特徴とする方法。
【請求項２０】
請求項１３〜１９のいずれか一項に記載の方法であって、前記プロセッサ（２）により受け取られた割込み（FIQ 、IRQ 、SWI ）が前記第１オペレーティングシステム（OS＿A ）のもとで少なくとも１つのスレッド（THA1、THA2、THA ＿IDLE）の実行に影響を及ぼす段階において、前記第２オペレーティングシステム（OS＿B ）の実行から前記第１オペレーティングシステム（OS＿A ）の実行への変換が行われることを特徴とする方法。
【請求項２１】
請求項１３〜２０のいずれか一項に記載の方法であって、少なくとも前記第１オペレーティングシステム（OS＿A ）は実時間オペレーティングシステムであることを特徴とする方法。
【請求項２２】
請求項１３〜２１のいずれか一項に記載の方法であって、前記第１グループのスレッドのうちの１つのスレッド（THA1、THA2、THA ＿IDLE）において前記第２オペレーティングシステム（OS＿B ）が実行されることを特徴とする方法。
【請求項２３】
請求項２２に記載の方法であって、スレッドの前記第１グループの各スレッド（THA1、THA2、THA ＿IDLE）について優先順位が決定され、前記第２オペレーティングシステム（OS＿B ）の実行時間を増やすために、前記第２オペレーティングシステム（OS＿B ）が実行されるスレッドの優先順位を高めることができることを特徴とする方法。
【請求項２４】
オペレーティングシステム（OS＿A 、OS＿B ）を実行するための少なくとも１つのプロセッサ（２）を備える通信装置（１）であって、該通信装置（１）は、
前記プロセッサ（２）において少なくとも２つのオペレーティングシステム（OS＿A 、OS＿B ）を動作させるための手段（１７、４０１、４０２）と、
スレッド（THA1、THA2、THA ＿IDLE）の第１グループを含む第１オペレーティングシステム（OS＿A ）と、
スレッド（THB1、THB2、THB ＿IDLE）の第２グループを含む第２オペレーティングシステム（OS＿B ）と、
前記プロセッサ（２）に対して割込み（FIQ 、IRQ 、SWI ）を作るための手段（nFIQ、nIRQ、SWI ）と、
前記プロセッサ（２）に来た割込み（FIQ 、IRQ 、SWI ）がどのスレッド（THA1、THA2、THB1、THB2、THA ＿IDLE、THB ＿IDLE）の実行に影響を及ぼすか調べるための手段（４０１、６０３、６１７）と、
前記プロセッサ（２）により受け取られた割込み（FIQ 、IRQ 、SWI ）に影響を及ぼすスレッド（THA1、THA2、THB1、THB2、THA ＿IDLE、THB ＿IDLE）に関連する割込みデータを前記オペレーティングシステム（OS＿A 、OS＿B ）に伝えるための手段（４０１、４１２、６０３、６０９、６１７）と、
を更に備えることを特徴とする通信装置。
【請求項２５】
請求項２４に記載の通信装置（１）であって、前記調べるための手段（４０１、６０３、６１７）は前記少なくとも２つのオペレーティングシステム（OS＿A 、OS＿B ）のための、少なくとも１つの、少なくとも部分的に共通の割込みハンドラ（６０３、６１７）を備えることを特徴とする通信装置。
【請求項２６】
請求項２４又は２５に記載の通信装置（１）であって、移動局機能とデータ処理機能とを備え、前記少なくとも２つのオペレーティングシステム（OS＿A 、OS＿B ）のうちの、前記第１オペレーティングシステム（OS＿A ）は前記移動局機能の動作に関連し、前記第２オペレーティングシステム（OS＿B ）は前記データ処理機能の動作に関連することを特徴とする通信装置。
【請求項２７】
請求項２６に記載の通信装置（１）であって、少なくとも部分的に移動局機能に関連する少なくとも１つのユーザインタフェース（UI）と、少なくとも部分的にデータ処理機能に関連する少なくとも１つのユーザインタフェース（UI2 ）とを備えることを特徴とする通信装置。
【請求項２８】
請求項２７に記載の通信装置（１）であって、前記移動局機能に関連する前記ユーザインタフェース（UI1)と、前記データ処理機能に関連する前記ユーザインタフェース（UI2)とは、少なくとも部分的に共通の表示装置（１０、１５）を備える含むことを特徴とする通信装置。
【請求項２９】
請求項２７又は２８に記載の通信装置（１）であって、前記移動局機能に関連する前記ユーザインタフェース（UI1)と、前記データ処理機能に関連する前記ユーザインタフェース（UI2)とは、少なくとも部分的に共通の、データを供給するための手段（９、１４）を備えることを特徴とする通信装置。
【請求項３０】
請求項２４〜２９のいずれか一項に記載の通信装置（１）であって、前記第１オペレーティングシステム（OS＿A ）のどのスレッド（THA1、THA2、THA ＿IDLE）も動作していないときに前記第１オペレーティングシステム（OS＿A ）の実行から前記第２オペレーティングシステム（OS＿B ）の実行へ移行するための手段（２、THA ＿IDLE）を備えることを特徴とする通信装置。
【請求項３１】
請求項２４〜３０のいずれか一項に記載の通信装置（１）であって、前記プロセッサ（２）に対する割込み（FIQ 、IRQ 、SWI ）が前記第１オペレーティングシステム（OS＿A ）のもとで少なくとも１つのスレッド（THA1、THA2、THA ＿IDLE）の動作に影響を及ぼすときに前記第２オペレーティングシステム（OS＿B ）の実行から前記第１オペレーティングシステム（OS＿A ）の動作へ移行するための手段（２、THA ＿SCH ＿A ）を備えることを特徴とする通信装置。
【請求項３２】
請求項２４〜３１のいずれか一項に記載の通信装置（１）であって、少なくとも前記第１オペレーティングシステム（OS＿A ）は実時間オペレーティングシステムであることを特徴とする通信装置。
【請求項３３】
請求項２４〜３２のいずれか一項に記載の通信装置（１）であって、前記プロセッサ（２）は少なくとも次のモード、
ユーザ・モード（USERモード）、
特権モード（SVC モード）、
未定義モード（UND モード）、
１つ以上の割込みモード（FIQ モード、IRQ モード、SWI モード）、を有し、前記第１オペレーティングシステム（OS＿A ）は少なくとも部分的に前記未定義モード（UND モード）で動作するようになっており、前記第２オペレーティングシステム（OS＿B ）は少なくとも部分的に前記ユーザ・モード（USERモード）で動作するようになっており、割込みハンドラは何らかの割込みモード（FIQ モード、IRQ モード、SWI モード）で動作するようになっていることを特徴とする通信装置。
【請求項３４】
請求項２４〜３３のいずれか一項に記載の通信装置（１）であって、スレッドの前記第１グループの１つのスレッド（THA1、THA2、THA ＿IDLE）は前記第２オペレーティングシステム（OS＿B ）を備えることを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、付随する請求項１のおいて書き部分に記載のシステムに関する。本発明は、更に、付随する請求項１３のおいて書き部分に記載の方法と、請求項２４のおいて書き部分に記載の通信装置とに関する。
【背景技術】
【０００２】
エレクトロニクス産業では、基本的機能コンポーネントとしてある種のマイクロプロセッサ又は対応するプロセッサを有する数々の装置が設計されている。このプロセッサを例えばマイクロコントローラと関連させて置くことができ、それは同じマイクロチップ内に置かれた周辺装置を有する。これらの装置は埋込みシステムとも称され、その例はセルラー・ネットワーク移動局CMT (Cellular Mobile Telephone：セルラー移動電話）等の移動局、PC (Personal Computer：パーソナルコンピュータ) 、PDA (Personal Digital Assistant：パーソナルディジタルアシスタント）等である。そのような装置を制御するために、システムのタイミングを整え、資源を制御し、メッセージを処理すると共にいろいろなプログラム・ブロック間でメッセージを伝送するという基本タスクを有する、装置固有のオペレーティングシステムがしばしば設計される。通常、その種のオペレーティングシステムはいわゆる実時間オペレーティングシステム(RTOS)である。そのような実時間オペレーティングシステムの典型的特徴は、例えば、キーを押す動作などの外部割込みについての応答時間あるいはタイミングを予測するためにそれを使用することができるという事実、メモリ資源の使用がなるべく少なくされているという事実、及び、付加的に、実時間オペレーティングシステムはタスクを制御するのに非常に効率が良いという事実である。更に、実時間オペレーティングシステムでは、例えば携帯装置においてバッテリの動作時間を長くするために、容量を制御するための特性がしばしば設計される。そのような実時間オペレーティングシステムのサイズは、プログラムコード及び情報メモリ（ＲＡＭ、ランダムアクセスメモリ）については普通は１０ｋＢと１００ｋＢとの間である。
【０００３】
非実時間オペレーティングシステムは、例えば、いろいろな動作をさせるときの応答時間が実時間オペレーティングシステムにおける応答時間より長いという事実、また一方では、非実時間オペレーティングシステムでは応答時間を予測することはできないという事実において、実時間オペレーティングシステムとは違っている。マルチタスク方式の非実時間オペレーティングシステムでは、各実行プロセスは、優先レベルが同じかあるいはより低い他のプロセスの動作を阻止し、応答時間も長くなることがある。更に、非実時間オペレーティングシステムにはオペレーティングシステムのカーネルで決定する応答時間は無く、そのことが、そのようなオペレーティングシステムの実行速度の予測可能性を困難にする。
【０００４】
移動局は、限られた容量のメモリと、他のシステム資源とを有する。更に、移動局には、書込み可能な大容量記憶装置（ハードディスク）あるいはＦＬＡＳＨメモリ等のメモリカード等の、周辺装置のためのシステム・サポートを持っていないことがしばしばある。移動局には普通はプログラムを動的にシステムにロードするための可能性が設けられていない、すなわち、移動局のソフトウェアは製造段階でこの移動局にロードされるか、あるいは場合によっては例えば保守点検との関係でプログラムを更新することができる。更に、移動局のソフトウェアは通常は移動局メーカによって製造されて試験されるので、多くの移動局はメモリ管理ユニット（ＭＭＵ）を備えていない。このような背景から、装置固有の実時間オペレーティングシステムは、上記の特性をサポートするものを備えていない。
【０００５】
パーソナルコンピュータ及びパーソナルディジタルアシスタントを製造している会社は、上記特性のためのサポートを有するオペレーティングシステムを開発しているけれども、それらのオペレーティングシステムは、そのままでは実時間で動作しなくて、一定の動作をさせるために最大応答時間を予測するためにそれらを使用することはできない。そのようなオペレーティングシステムのサイズは通常は２００ｋＢから数ＭＢの範囲にあり、それらを移動局等の携帯可能な機器に適合させることは必ずしも容易なことではない。
【０００６】
実時間オペレーティングシステム、特にデータプロセッサ向けに開発されたオペレーティングシステムには部分的に相反する必要条件があり、このオペレーティングシステム向けの同じプログラミング・インタフェースのあるオペレーティングシステムを、小メモリ消費及び実時間特性等の全ての必要な特性と同時に達成することは困難である。
【０００７】
近時、データプロセッサと電気通信装置との両方を組み合わせた電子装置が開発されている。そのような装置は本明細書では通信装置と称される。そのような装置の１例はノキア９０００コミュニケータであり、これはデータ処理の機能及び移動局の機能の両方を持っている比較的に小型の装置である。しかし、この種の複合装置の１つの目的は、前に開発された製品をなるべく多く利用することであり、その場合、１つの目的はそれらの種々の装置向けのソフトウェアをこの新しい装置と両立し得るように保つことである。このことは、データ処理部分にそれ自身のプロセッサを設けると共にそれ自身のオペレーティングシステムをその中に設けることによって達成されており、同様に、実現される移動局はそれ自身のプロセッサとそれ自身のオペレーティングシステムとを有する。このようにして、前の製品開発の結果をなるべく効率よく利用すると共に装置の事業化を促進することが可能となっている。しかし、別々のプロセッサは、普通は単一プロセッサによる解決策で得ることができるよりも多くの容量を消費し、そのような携帯装置は効率が更に良いバッテリを必要とするか、さもなければ、その実行時間を別々の装置で可能であるよりも長くすることはできない。
【０００８】
１つのプロセッサで２つのオペレーティングシステムを動作させることは、従来技術の解決策では、どちらのオペレーティングシステムの特徴をも利用して該オペレーティングシステムを実現することにより達成されている。この種の組み合わせには問題があって、例えば、オペレーティングシステムが非常に異なった種類の特性を持っている場合には組み合わされるべきオペレーティングシステムの特性の全てを実施することは不可能である点である。このことに起因して、例えば、それらのオペレーティングシステムのために開発されたアプリケーション・プログラムの全てを利用することはできないか、あるいは利用するためには当該アプリケーション・プログラムを変更することが必要である。更に、新しいアプリケーションが開発されるとき、１つのオペレーティングシステムに基づいて作られたアプリケーション・プログラムを他のオペレーティングシステムに従って変更しなければならない。このことが所要の作業に加わると共に間違いの可能性を加える。
【０００９】
更に、特許ＵＳ５、２７８、９７３号は、１つのプロセッサで数個のオペレーティングシステムを使用することのできるデータプロセッサを開示している。しかし、それらのオペレーティングシステムのうち、１度に使えるのは１つだけである。オペレーティングシステムを変更するには、使用中のオペレーティングシステムの実行を止め、データプロセッサを再起動する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の１つの目的は、１つのプロセッサ等によって少なくとも２つのオペレーティングシステムの動作を実行することのできる埋込みシステムを達成することである。
【課題を解決するための手段】
【００１１】
本発明は、各割込みがどのオペレーティングシステムのスレッドに作用するかを調べるために少なくとも１つの、少なくとも部分的に共通の割込みハンドラを形成し、割込みデータをそれぞれのオペレーティングシステムに伝えるというアイデアに基づいている。本発明の埋込みシステムは、付随の請求項１の特徴部分に記載されているものを特徴とする。本発明の方法は、付随の請求項１３の特徴部分に記載されているものを特徴とする。本発明の通信装置は、付随の請求項２４の特徴部分に記載されているものを特徴とする。
【００１２】
本発明は、従来技術の解決策を越える顕著な利点を提供する。プロセッサにより消費される容量は、通常は、各オペレーティングシステムのために別々のプロセッサを使う場合よりも少ない。更に、メモリ等の共通コンポーネントをより多く使えるので、必要なスペースが少なくなる。本発明の埋込みシステムは、開発されたアプリケーション・プログラムを変更無しに使用することを可能にし、更に、一方のオペレーティングシステムに基づいて他方のオペレーティングシステムに従って開発されたアプリケーション・プログラムを始めに変更する必要無しにどのオペレーティングシステムのためにも新しいアプリケーションを更に開発することができる。本発明は、更に、２つのオペレーティングシステムが両方のオペレーティングシステムの特徴を利用できるように組み合わされている解決策や、各々のオペレーティングシステムが自由に使えるプロセッサを有する解決策と比べたときに、作業量と、発生する可能性のある間違いとを減少させる。更に、本発明の解決策は、例えば移動局機能の実施のための、一定のアプリケーションあるいはアプリケーション領域で更に最適化され得るオペレーティングシステムのどの特徴をも緩めない。
【００１３】
更に、携帯可能な装置では、電力消費量が少なくなっているので、１回のバッテリ充電で長い動作時間が得られる。
【００１４】
次に、添付図面を参照して本発明を更に詳しく説明する。
【図面の簡単な説明】
【００１５】
【図１】１つのオペレーティングシステムの層構造を示す図である。
【図２】プロセッサの１状態モデルを示す図である。
【図３】プロセス要素の例を示す図である。
【図４ａ】本発明の有利な実施形態の埋込みシステムの簡略ブロック図である。
【図４ｂ】１つのプロセッサの簡略ブロック図である。
【図５】本発明の埋込みシステムと関連して使用される１オペレーティングシステム・アーキテクチャの簡略図である。
【図６ａ】本発明の好適な実施形態の埋込みシステムで割込みを処理する種々の状態を示す図である。
【図６ｂ】本発明の好適な実施形態の埋込みシステムで割込みを処理する種々の状態を示す図である。
【図６ｃ】本発明の好適な実施形態の埋込みシステムで割込みを処理する種々の状態を示す図である。
【図６ｄ】本発明の好適な実施形態の埋込みシステムで割込みを処理する種々の状態を示す図である。
【図６ｅ】本発明の好適な実施形態の埋込みシステムで割込みを処理する種々の状態を示す図である。
【図６ｆ】本発明の好適な実施形態の埋込みシステムで割込みを処理する種々の状態を示す図である。
【図６ｇ】本発明の好適な実施形態の埋込みシステムで割込みを処理する種々の状態を示す図である。
【図６ｈ】本発明の好適な実施形態の埋込みシステムで割込みを処理する種々の状態を示す図である。
【図６ｉ】本発明の好適な実施形態の埋込みシステムで割込みを処理する種々の状態を示す図である。
【図７ａ】メッセージ伝送のメカニズムの簡略図である。
【図７ｂ】メッセージ伝送のメカニズムの簡略図である。
【図８】本発明の好適な実施形態の埋込みシステムにおいて割込みを取り扱う１つの状態の簡略矢印図である。
【図９】本発明の好適な実施形態の埋込みシステムにおけるインターリーブされたスケジューリング・オプションのタイミング図である。
【図１０】本発明の好適な実施形態の埋込みシステムにおけるインターリーブされたスケジューリング・オプションの機能図である。
【発明を実施するための形態】
【００１６】
本発明をよりよく理解するために、始めに従来技術のプロセッサ及びオペレーティングシステムについて図１〜３を参照して説明をする。
【００１７】
命令セットにより、プロセッサを２つのクラス、すなわち複合命令セット・コンピュータ（ＣＩＳＣ：complex instruction set computer ）と縮小命令セット・コンピュータ（ＲＩＳＣ：reduced instruction set computer）とに分けることができる。縮小命令セット・コンピュータでは、あまりありふれていない命令の一部分は取り除かれている、例えば、アドレス指定フォームの数は複合命令セット・コンピュータのよりも少なくて良い。しかし、普通のアプリケーション・プログラムでは、アプリケーション・プログラムを実現するために非常に少量の命令が使用され、必要なアプリケーション・プログラムを縮小命令セット・コンピュータにより実行することが普通は可能である。複合命令セットコンピュータと比べての縮小命令セットプロセッサの利点は、例えば、実行速度を高めることができ、また一方では、プログラム・コードが必要とするメモリ・スペースは複合命令セットコンピュータが使われるときより小さいという事実である。特に、プログラム・メモリの量が減少すると、装置のための容量の必要性も減少し、また一方では、装置のサイズを減少させることができる。
【００１８】
実用的な実施形態では、マイクロコントローラがしばしば使用され、それは、実際のプロセッサと、それに接続される、例えばランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、入／出力装置（Ｉ／Ｏ）、タイマ、アナログ−ディジタル変換器（Ａ／Ｄ変換器）、ディジタル−アナログ変換器（Ｄ／Ａ変換器）などの補助コンポーネントとを含んでいる。これらのいろいろなユニット間のインタフェース・ラインをなるべく小さくすることができ、装置のサイズを更に減少させることができ、また一方では、これらのいろいろなユニット間での信号の伝送を加速することができる。マイクロコントローラ製造は、種類の異なるマイクロコントローラを生産し、それらは同じプロセッサを持つことができるが、周辺コンポーネントの量及び種類はまちまちであって良くて、各アプリケーションには、必要ならば、それに最適のマイクロコントローラを設けることができる。
【００１９】
本明細書において前述したように、マイクロプロセッサ又は対応するプロセッサを利用するような装置のために、いわゆる基本ソフトウェアとして動作するオペレーティングシステムが開発される。このオペレーティングシステムは装置のいろいろなユニットの制御、データの読出しなどを担当し、そのような装置でのアプリケーション・プログラムの使用を可能にする。例えばパーソナルコンピュータでは、該コンピュータがオンにされるとき、オペレーティングシステムがプログラムメモリにロードされ、それは一定の初期設定動作を実行する。その後、ユーザは希望するアプリケーション・プログラムを始動させることができ、その時オペレーティングシステムはユーザにより与えられたコマンドを受け取り、当該アプリケーション・プログラムを探索し、それをプログラムメモリにロードし、アプリケーション・プログラムを始動させる。多重処理システムでは、表面上は同時に数個のそのようなアプリケーション・プログラムを使用することが可能であり、アプリケーション・プログラムは、これらのいろいろなアプリケーション・プログラム間で実行時間及びスケジューリングを与えることに対処する。更に、オペレーティングシステムのタスクは、それらのいろいろなアプリケーション・プログラム間で信号を伝送し、必要ならばアプリケーション・プログラムと周辺装置との間でのシグナリングを整えることである。
【００２０】
オペレーティングシステムは、プロセスの実行をいわゆるスレッドとして制御することができる。１つのスレッドは１つ又は数個のプロセスの実行に関連する機能を備えることができ、その一方で１つのプロセスは１つまたはそれより多いスレッドに分けられる。スレッドの実行は、オペレーティングシステムのスケジューラにより制御される。換言すると、スレッドは、オペレーティングシステムによりプロセスに与えられる一種のサポートである。
【００２１】
知られているオペレーティングシステムでは、普通は次の特性を見いだすことができる。ユーザにより与えられた、例えば当該コマンド中のアプリケーション・プログラムの名前を読み出してユーザがこのアプリケーション・プログラムにより伝送されるべく与えたパラメータを認識するなど、ユーザにより与えられたコマンドを解釈するコマンド・インタープリタと、いろいろなプロセスへの資源の割り当てを行うスケジューラと、割込みに反応してこの割込みにより要求されている例えば割込み要求のオペレーティングシステムへの伝送などの処置を実行する割込み要求サービスと、である。更に、オペレーティングシステムは、例えばキーパッドを読む、ディスプレイに書込みをする、存在することのある外部インタフェースを制御する機能のためのものなど、機能ブロックを有する。資源は、例えばメインメモリ、周辺装置、及びプロセッサ時間の使用を含む。オペレーティングシステムは、例えば、実行されるべき各プロセスのためのメモリ領域を予約するが、プロセスはデータを書くことができ、プロセスはデータを読む。あるプロセスが該プロセスのために予約されているこのメモリ領域の外側に書こうと試みた場合、メモリ制御ユニットは普通はその書込みを妨げて通常はそのようなプロセスの動作を停止させる。
【００２２】
多くのプロセッサはユーザ・モード及び特権モード（管理モード及びカーネル・モードなども）などの、種々の使用モードを依然として有する。ユーザにより開始されるアプリケーション・プログラム及び他のプロセスは、普通はユーザ・モードに従って動作するようにセットされる。対照的に、オペレーティングシステム、及びそれにより始動されるプロセスの一部分は通常は特権モードで動作する。ユーザ・モードは限られた動作だけが可能であって、例えばプロセスのコマンドの一部は特権モードでだけ作用し、それをユーザ・モードで使用することはできない。あるオペレーティングシステムでは、特権動作モードは数個の、例えば３個の、レベルを有する。動作モードのカーネルは、最大の権利を有する特権モードの第１レベルで実行される。第２レベルは例えば制御ルーチン等を有する（エグゼクティブ）。第３レベルは例えばコマンド・インタープリタを有する。
【００２３】
プロセッサ２は一般に割込みを使用する可能性を含んでいる。プロセッサ２の外部から割込み要求を１つ又は数個の割込みサービス・ラインnIRQ、nFIQ（図４ｂ）で伝送することができ、そのモードの変更、例えば論理モード１から論理モード０への変更、はプロセッサ２に対する割込みの原因となる。プロセッサ２に対する割込み要求は、実質的に遅延無しに、あるいはより高位の優先順位の割込み要求が待機していないときに、それぞれの割込みサービス・ルーチンを動作させるようにプロセッサ２を転換させる。割込みサービス・ルーチンでは、割込み処理動作の少なくとも一部分が実行される。それらのハンドリング動作は、例えばそれぞれのアプリケーションと、割込みの原因とによる。割込みサービス・ルーチンの動作は、実行中のプロセス及びオペレーティングシステムの動作を遅くするので、特に実時間オペレーティングシステムでは、割込みサービス・ルーチンをなるべく短くかつ高速にしようとする試みがなされる。割込みサービス・ルーチンでは、オペレーティングシステムのために例えば割込みと、割込み処理処置の一部分が実行しようと待機している情報の状態可変通知をセットすることが可能であり、その場合オペレーティングシステムは例えばそのスケジューリング処理手順に従ってそれらの動作の実行を制御する。割込みサービス・ルーチンへの伝送は、種々の割込みブロッキング及びマスキングの影響も受ける。割込みがディスエーブルにされると、割込み要求は普通は割込みブロッキングのキャンセルを待つ状態とされ、その後に割込み要求はその優先順位に応じて有利に処理される。割込みは、ほとんどのプロセッサ２において選択的にも防止されることができ、そのバックアップには、割込みマスク・レジスタ等において各割込みにイネーブル状態又はディスエーブル状態が与えられる。
【００２４】
割込み要求は、例えば、シリアル・バスを通して受け取られた情報に起因するシリアル・バス割込み要求、キーパッドのキーを押したことに起因する割込み要求、タイマに起因する割込み要求、あるいは実行中のプロセスにより形成されるいわゆるプログラム割込み要求など、外部装置により与えられた信号に基づいて作成される。割込みについて優先順位が決定され、相対的に低位の割込みサービス・ルーチンの実行は相対的に高位の割込みによって中断させられることがある。対照的に、相対的に高位の割込みサービス・ルーチンは普通は相対的に低位の割込みサービス・ルーチンによって割り込まれない。オペレーティングシステムのための基本タイミングを達成するために、普通はタイマが使用され、これは一定の時間をおいてプロセッサに対する割込み要求を作成し、それは、タイマの割込みサービス・ルーチンを実行するように変化する。その結果として、タイマの割込みサービスに高い優先順位が与えられる。対照的に、例えばディスプレイの更新には普通は低い優先順位が与えられる。
【００２５】
特許ＵＳ５，５１５，５３８は、データ・プロセッサの多重処理オペレーティングシステムにおいて割込みを処理する１つの方法を開示している。その方法では、割込みハンドラが自分自身のスレッドを形成するように構成され、これに対して割込み状態において実行が向けられる。しかし、この刊行物で紹介された方法は、１オペレーティングシステムの装置にだけ関しており、それは、このオペレーティングシステムのプロセスを動作させるために同時に数個のプロセッサを包含することができる。
【００２６】
次に、１つの多重処理オペレーティングシステムの動作を簡略化した形で解説する。オペレーティングシステムのスケジューラは、一定間隔で、どのアプリケーション・プログラム、すなわちプロセス、をその時に実行するべきか調べる。このスケジューラは、例えばタイマ割込みによって起動される。各アプリケーション・プログラムは、更に、１つまたはいくつかのスレッドを含んでいることがあり、各スレッドは、１つのプロセッサ・システムで異なる時に動作する。１つのスレッドは例えばキーパッド等の周辺インタフェースでのデータの読出しであり、第２のスレッドはデータの処理であり、第３のスレッドは例えば処理済みのデータのディスプレイ等の周辺装置への書込みであって良い。このアプリケーション・プログラムが始動されるとき、スケジューラは一度に各スレッドについての実行時間とスレッドを、動作するための繰返し間隔とを定めている。スケジューラは、スレッドの実行を開始し、この実行時間が経過した後にスレッドを待機へ移し、そして、もし必要ならば、このスレッドのデータをメモリ手段に記憶して、同じかあるいは異なるプロセスであって良い新しいスレッドの実行を開始する。スケジューラは、全てのスレッドを実行した後、新しい実行ラウンドを開始するか、あるいはどのスレッドの実行間隔も満了していない場合には、いわゆるアイドル・スレッドが実行される。しかし、上記スレッドの実行時間の間に、割込み要求が発生する可能性があり、その場合にはそれらの割込み要求の優先順位に基づいてオペレーティングシステムは割込みサービス・ルーチンを実行し始め、あるいはスケジューラが割込みサービスを実行するのに適する時間を決めて、割り込まれたスレッドを実行し続ける。例えばキーパッド・インタフェースにより達成された割込み状況において、キーパッド割込みプログラムは、押されたキーのコードを読み取り、それを一時記憶場所に記憶する。その割込みサービス・ルーチンが終了した後、オペレーティングシステムのスケジューラは、キー押しの試験プログラムのための実行時間を決めて、キーパッド割込みについて決められている優先順位が割り込まれたプログラム・スレッドの優先順位を越えなかったならば割り込まれたプログラム・スレッドに戻る。
【００２７】
添付の図１は１オペレーティングシステムの層構造の例を示している。オペレーティングシステムの最低部はカーネルであり、その次のレベルはメモリ制御に関連する部分から成り、第３レベルはファイル・システム部分である。これらの３レベルより上には、例えばコマンド・インタープリタ、プロセス（図示せず）、インタフェース・プログラム、スケジューラ機能、等々が位置している。
【００２８】
次に、あるオペレーティングシステムのカーネルの構造を説明する。カーネルの動作のための主要部分は、割込み処理、プロセスの制御、及び周辺装置の制御である。割込み処理は、割り込まれたプログラムのデータの記憶と、正しい割込みサービス・ルーチンの実行の制御とを含む。プロセスの制御は、例えばプロセスを作成すること、実行時間を決定すること（スケジューリング）、プロセスの動作を終了させること、タイミング、等々を行う。周辺装置の制御機能は、例えばデータ伝送を開始させること、及び、各周辺装置に関連する１つ以上の割込みの処理を含む。オペレーティングシステムの見地からは、プロセスは常に３つのモード、すなわちレディ（ＲＥＡＤＹ）・モード、動作モード及び待機モード、のうちの１つである。このモード分割が、付随する図２に示されている。実行モードは、その時に実行されているプロセスを含んでおり、１プロセスを含むシステムはこのモードでは最大で１つのプロセスを有する。実行モードで実行されるべく待っているプロセスはレディ・モードとなっている。スケジューラのタスクは、レディ・モードの１つのプロセスを実行モードで実行される１つのプロセスとして選択することである。待機モードは、キー押し、資源の再割り当てなど、何らかの動作を待っているプロセスを備える。
【００２９】
スケジューラは、最高優先順位のプロセスをレディ・モードから実行モードに移す。実行モードにおいて、プロセスは、例えば、その実行が待機を含む何らかのオペレーティングシステム・サービスを要求するなど、通常はそれ自身の要求によって待機モードに移る。待機モードからレディ・モードへの移行は、前記待機が終わろうとするときに行われる。スケジューラが例えば割込み処理を終了するなど、実行されるべき他のプロセスを変更するような場合にも、プロセスを実行モードからレディ・モードに戻すことができる。
【００３０】
カーネルの実現は、普通は、その要素がオペレーティングシステムの領域にある空きメモリ空間から割り当てられる２方向チェーン・リストである多数の動的情報構造を通常は伴う。例えば、各プロセスのデータはプロセス制御ブロック（ＰＣＢ）で有利に維持される。プロセス要素はプロセス・テーブルにまとめられており、そのサイズは、システムにおけるプロセスの量に上限を設定する。付随する図３に示されているこの例は、基本要素に例えば次の情報を含んでいる。
プロセスステータス：待機、実行可能又は実行、
プロセスの名称、
プロセスの優先順位、
割り込まれたプロセスの情報（環境）の記憶（スタック）についての状況、
割り当てられた資源についてのデータ：メモリ、装置、開放ファイルなど、
プロセス割り当てのトラッキングに関連するフィールド、
認可に関連するフィールド。
【００３１】
これはプロセス要素の実現の例に過ぎなくて、実際の実施形態では、これらは大幅に変化し、プロセス要素のデータは大幅にまちまちであって良いことに言及しておく。
【００３２】
プロセス記号は、例えばシーケンス番号などの、そのプロセスの名称である。このプロセスの名称に基づいて、オペレーティングシステムはいろいろなプロセス同士を分ける。プロセスが２つ以上のスレッドを含んでいる場合には、プロセス記号、又はこのプロセス要素の他のフィールドはスレッドのこの番号についての情報も含むことができる。プロセスのステータスを知らせるために、ステータスフィールドが使用される。オペレーティングシステムは、プロセスの状態が変化するときにこのステータスフィールドの値を変更する。スケジューラはプロセスの実行シーケンスを決定するために優先順位フィールドの値を使用し、例えばこのフィールドに含まれている数値が大きいほど当該プロセスの優先順位は高い。待機モードのプロセスの優先順位フィールドの値を比較することにより、スケジューラは最高の優先順位値のプロセスを次に実行されるプロセスとして選択する。
【００３３】
次に、新しいプロセスの作成について説明する。本例では、プロセスは、装置のメモリ手段内のファイルに、例えば書込み可能な大容量記憶装置に、記憶される。このプログラムはファイル名に従って認識される。オペレーティングシステムのカーネルは、プロセスを起動するためのサービス・ルーチンを備えており、そのサービス・ルーチンにパラメータとして与えられる名称は、そのファイルの名称であるのが有利である。この起動サービス・ルーチンは、そのプロセスのためにプロセス・テーブル上にプロセス要素を形成し、メインメモリの領域をプロセスに割り当てる。このプログラム・ファイルの内容は、それのために予約されているメモリ領域に読み込まれ、プロセス要素のフィールドが適当な値で初期化され、その後にプロセスを立ち上げて実行待ちの状態とすることができる。このプロセスのために使われる記号は、例えば、次の自由プロセス記号であって良い。該プロセスのステータスは有利には、値レディにセットされる。オペレーティングシステムのスケジューラは、そのスケジューリング処理手順に従って、これらのプロセスを実行に向けて制御する。
【００３４】
プロセスがスレッドとして実行されるオペレーティングシステムでは、起動サービス・ルーチンがプロセスから１つ又は数個のスレッドを形成すると共にプロセス・テーブル上にスレッドのためのプロセス要素を形成するように、上記のプロセス作成をそれぞれ適合させることが可能である。
【００３５】
更に、オペレーティングシステムは周辺装置を制御するために１つの重要な特徴、いわゆるデバイス・ドライバ、を含んでいる。デバイス・ドライバは、ディスプレイ、キーパッド、コーデック等の周辺装置を制御するために必要なルーチン及び情報構造を備える。必要なルーチンは、例えば、装置の動作を初期化すること、読み書き、端末の特性を設定する等の制御ルーチン、装置に関連する割込みを処理するルーチンなどである。装置に関連する変数及び情報構造を例えばいわゆる装置記述子に集めることができる。この種の情報は例えば次の通りである。
装置に対して待ち合わせしている転送要求のパラメータ・ブロック同士が連鎖形成されるワーク・キュー。同時値及び書込みが可能である場合、２つのワーク・キューがある。当該パラメータ・ブロックは、例えばデータ・バッファの場所に関連する情報など、転送要求のパラメータ、転送されるべきブロックの番号、などを含む。
デバイス・ドライバ・ルーチンのアドレス、
転送制御に必要とされる装置の変数及びモード・データ、並びに
装置固有のパラメータ。
【００３６】
あるシステムでは、デバイス・ドライバはオペレーティングシステムのプロセスである。このプロセスは永久ループで動作し、そこでプロセスは始めに転送要求メッセージを待つ。そのようなメッセージを受信した後、デバイス・ドライバ・プロセスは転送を起動し、割込みメッセージを待つ。オペレーティングシステムの割込みハンドラは、割込みメッセージのデバイス・ドライバ・プロセスへの伝送を担当する。実際の装置では、デバイス・ドライバ・プロセスは通常は高い優先順位を有し、オペレーティングシステムのカーネルは実時間で動作する。
【００３７】
書込み可能な大容量記憶装置から読み出すときには、その読出し動作は例えば次のように動作する。装置テーブルから、それぞれの装置記述子のアドレスが始めに探索される。その後、読出しルーチンのアドレスが装置記述子から取り出される。読出しルーチンは、転送要求のパラメータからパラメータ・ブロックを形成する。転送が当該装置によって現在行われつつあるならば、すなわちこの装置が他のプロセスにより使用されているならば、パラメータ・ブロックはワーク・キューの中の最後のものとしてつながれ、待機が行われる。この装置が使用可能で、ワーク・キューが空であるならば、パラメータ・ブロックはワーク・キューの第１ブロックとなるようにつながれる。その後、ブロックの番号はシート表面、トラック及びセクタの番号に変更され、例えば装置レジスタを修正することによって転送が起動される。この後、転送終了を待つ。転送が終了した後、装置割込みが行われる。オペレーティングシステムの割込み処理は装置番号に従って装置テーブルから装置記述子のアドレスを捜し、それから更に割込み処理ルーチンのアドレスを探し、割込みハンドラのプログラム・コードの実行に転換する。割込みハンドラは、間違いが生じていないかどうか調べるのが有利である。転送を成功させるという目的のために、パラメータ・ブロックはワーク・キューから切り離され、転送を待っていたプロセスが呼び起こされる。待ち合わせ転送要求がワーク・キューに存在している場合には、次の転送動作は実質的に遅延無しで起動される。
【００３８】
周辺装置の種類により、動作は前述したものとはある程度異なることがあり得る。ディスプレイ及びプリンタ等の文字印刷装置により、ワーク・キューは、印刷されるべき文字を含むキューと単に置き換えられる。
【００３９】
多くのオペレーティングシステムは使用されるメッセージ伝送メカニズムを有し、これでプロセスはメッセージを互いに伝え合う。メッセージ・キューを使用するときには、１つ又は数個のメッセージ・キューがプロセスと関連させられ、それに、このプロセスに伝えられるべきメッセージを書き込むことができる。普通はバッファリングがプロセス同士の通信に関連させられ、メッセージの送信側は受信側がそのメッセージを受信するのを待っていなくても良い。従って、メッセージの書込み段階で、メッセージがプロセスを待っていることを知らせる情報（状態変数）が確立され、当該プロセスは適当な段階でこのメッセージを読む。
【００４０】
本発明の好適な実施形態の埋込みシステムでは、すなわち通信装置１（図４ａ）では、２つのオペレーティングシステムが使用される。第１オペレーティングシステムは、本明細書では参照符号OS＿A で指示され、主として移動局機能の実現に使用され、第２オペレーティングシステムは、本明細書では参照符号OS＿B で指示され、主としてデータ処理機能を実現するために使われる。データ処理機能とは、主としてパーソナルコンピュータ等から知られている機能を指しており、例えばファイルの読込み、書込み可能な大容量記憶装置による書込み、データの印刷、いわゆる組織機能（ノートブック、接触データの整備等）などのアプリケーション・プログラムの実行、などである。通信装置１との関連で１つのプロセッサ２を使用するのが有利であるので、異なる動作装置OS＿A 、OS＿B のこれらの機能を、両方のオペレーティングシステムOS＿A 、OS＿B の両方の特徴が同時に維持されるように、結合させることができる。更に、１つの基準は、必要なときには、機能の実時間性である。次に、例を挙げて、これらの異なるオペレーティングシステムOS＿A 、OS＿B を同じプロセッサ２との関係でどのように結合させ得るのか説明をする。
【００４１】
図５は、第２オペレーティングシステムOS＿B の構成の１例を示している。各ブロックは、一定のプロセス、スレッド、接続インタフェース等を示している。ブロックは、前記ブロックでユーザ・モードUSERが使われているか、それとも特権モードSVC が使われているのかという情報に従って更に分けられる。それ自身の更に分けられている部分は割込みモードであり、それは図５においてブロック５０１で示されている。割込みモードは、高速割込みモードFIQ 、通常割込みモードIRQ 又はソフトウェア割込みモードSWI を使用する。第２オペレーティングシステムOS＿B のカーネル（ブロック５０２）は、特権モードSVC （管理モード）で動作するようにセットされる。対照的に、第２オペレーティングシステムのスケジューラSCH ＿B （ブロック５０３）、接続インタフェース（ブロック５０４）、ユーザのプロセスのスレッド（５０６、５０７及び５０８）、データプロセッサ等のカレンダー・アプリケーションなど、並びにデバイス・ドライバの接続インタフェース（ブロック５０５）は、ユーザ・モードUSERで動作するようにセットされ、それらは例えばオペレーティングシステムのスタック（図示せず）あるいは他の極めて重要なメモリ・ブロックへのアクセスを持っていない。特権モードは更にデバイス・ドライバ（ブロック５０９）、アイドル・スレッド（ブロック５１０）及びいわゆるポッシブル・スーパー・スレッド（ブロック５１１）を含んでいる。アイドル・スレッド５１０は、他のプロセスが実行されていないときにオペレーティングシステムが実行するある種の待機プロセスである。スーパー・スレッド５１１は、本明細書では、通常のスレッド５０６、５０７、５０８の応答時間と比べると非常に小さな応答時間を有するスレッドを指す。スーパー・スレッド５１１の応答時間は例えばおおよそ数百マイクロ秒であり、これに対して通常のスレッド５０６、５０７、５０８の応答時間は例えば数十ミリ秒である。本発明は、例えば、スーパー・スレッド５１１を持っていないようなオペレーティングシステムとの関係でも応用され得るものである。
【００４２】
オペレーティングシステムのカーネル５０２には最高の優先順位が与えられる。上記の応答時間要件があるために、スーパー・スレッド５１１には、通常のスレッド５０６、５０７、５０８のそれより高い優先順位が与えられる。応答時間とは、ここでは、事件に起因する割込み要求の到着から、スレッドの動作が開始されるときまでに経過する時間を指す。この応答時間は予想値であり、実際には応答は通常の動作においてはこの予想値より短いか、あるいは最大でもこの予想値に等しい。過負荷状態では、応答時間はときには予想値を上回ることがある。応答時間は、割込みサービス・ルーチンを実行するために経過する時間も含んでいる。実際には、割込みサービス・ルーチンはなるべく短くなり、高速に実行され得るように意図される。
【００４３】
本発明の好適な実施形態の１埋込みシステムが通信装置１で添付の図４ａに示されている。それは、例えば、マイクロプロセッサ又はマイクロコントローラの一部分であるプロセッサ２を含んでおり、図４ａのブロック図の少なくとも一部のブロックはマイクロコントローラの機能ブロックから形成され得る。プロセッサ２に加えて、制御機能の一部分は、この好適な実施形態ではいわゆるアプリケーション特有の集積回路３（ＡＳＩＣ）により実現される。プロセッサ２と、そのアプリケーション特有の集積回路３との間には個別のデータ伝送バス４があっても良く、その場合にはデータ伝送速度を高めることができ、また一方で、第２データ伝送バス５には負荷はかからない。移動局機能を得るために、通信装置は、送信機／受信機ユニット６、送信／受信アンテナＡＮＴ、ディジタル信号処理ユニット（ＤＳＰ）、音響信号をコード化／デコード化するためのコーデック８、移動局機能を使用するための第１キーパッド９、情報をユーザに表示するための第１ディスプレイ装置１０を備えている。更に、通信装置１はオーディオ・ブロック１１を含んでおり、ここで、マイクロホン１２により形成されるアナログ信号のために必要なアナログ／ディジタル変換と、スピーカ１３に向けられる信号のためのディジタル／アナログ変換とが実行される。データ処理機能を達成するために、通信装置１は、第２キーパッド１４、第２ディスプレイ１５、及び、例えば通信装置１と関連するプリンタを接続するための手段を有するインタフェース・ブロック１６を備えている。キーパッド９、１４及びディスプレイ１０、１５について一般に使われる呼称はユーザインタフェース（ＵＩ）であり、これによりユーザと通信装置１との通信が少なくとも部分的に実行され得る。あるアプリケーションでは、ユーザインタフェースは、マイクロホン１２及びスピーカ１３などの、オーディオ手段も包含する。図１の通信装置１は２つのユーザインタフェースＵＩ１、ＵＩ２を示しており、第１ユーザインタフェースＵＩ１は第１キーパッド９と第１ディスプレイ１０とを包含し、第２ユーザインタフェースＵＩ２は第２キーパッド１４と第２ディスプレイ１５とを包含している。第１ユーザインタフェースＵＩ１は主として移動局動作のために考慮され、他方のユーザインタフェースＵＩ２は主としてデータ処理動作のために考慮されるが、必要ならば両方のユーザインタフェースＵＩ１、ＵＩ２を移動局動作との関係で使用すると共にデータ処理動作との関係でも使用することができる。ユーザインタフェースＵＩ１、ＵＩ２は別々でなくても良く、例えば１つのディスプレイ及び／又は１つのキーパッドを有する１つのユーザインタフェースとして実現されても良い。
【００４４】
ユーザインタフェースＵＩ１、ＵＩ２のキーパッドは、いわゆるタッチスクリーンを利用して実現されても良く、その場合には有利にはディスプレイの上に触感手段が配置され、この手段は例えばユーザの指の接触に反応する。触感手段の動作原理はそれ自体としては公知であり、例えばキャパシタンスの変化あるいは抵抗の変化に基づいている。
【００４５】
通信装置１は、更に、メモリ１７を含んでおり、それは、例えば、ブート・コードを蓄積するための読出し専用メモリＲＯＭ、実行されるべきアプリケーション・プログラムをロードすると共に場合によっては書込み可能な大容量記憶装置から使用中にデータを記憶しておくためのランダムアクセスメモリＲＡＭ、ＦＬＡＳＨメモリ及び／又は不揮発性ランダムアクセスメモリＮＶＲＡＭを有利に含む。通信装置１の機能ブロックは第２データ伝送バス５によって接続されており、それは例えばアドレス・バス、データ・バス及び制御バスを含む。しかし、明快にするために、それは当業者に知られている従来技術であるので、それらのバスは別々に図示されてはいない。電源は電圧形成ブロック１９に接続されているバッテリ１８から供給され、それは電圧調整器、電圧変換器等を含んでいて、必要ならばいろいろな動作電圧Ｖｃｃ１、Ｖｃｃ２を形成することが可能である。電圧形成ブロックは、更に、バッテリ１８の充電を、通信装置１が動作を止めることができるような低レベルまで下げるための信号を形成することができる。それゆえ、バッテリ１８が再充電されなければならないか又は動作電圧がオフにならなければならない。実用的な実施形態では、充電状況のこの情報はプロセッサ２に対する割込み要求を生じさせ、その場合、この割込みサービス・ルーチンと関連してデータ記憶要求が確立されて、有利にはオペレーティングシステムOS＿A 、OS＿B は累算器１８を空にしてデータをメモリ１７に記憶し始めるためのメッセージをディスプレイ１０、１５に形成する。更に、動作電圧をオフにする制御は自動的に実行されて良い。
【００４６】
通信装置１は、例えばその周辺装置のいずれかに他のプロセッサを有しても良いが、そのことは本発明にとっては重要ではなく、それらはオペレーティングシステム機能を実行する目的以外の他の目的のためのものである。
【００４７】
この例示実施形態で使われるプロセッサ２は、アドバンストＲＩＳＣマシーンズ社によって製造されているＡＲＭ７シリーズに属するプロセッサである。このプロセッサはいわゆる縮小命令セット・プロセッサである。しかし、本発明は、この種のプロセッサあるいは縮小命令セット・プロセッサだけに限定されるものではなくて、本発明を他の種類のプロセッサとの関係で適応させることもできる。付随の図４ｂは、ＡＲＭ７シリーズの１つのプロセッサの簡略ブロック図を示している。プロセッサ２の見地から、中央ブロックはコマンド・インタープリタ及び制御ブロック４０１である。その目的は、例えば、プログラム・コマンドを解釈して、それにより要求されている処置を制御し、高速割込みラインnFIQ及び通常割込みラインnIRQを通して来る割込み要求に応答し、ソフトウェア割込み要求に応答し、外部クロック信号（図示せず）からプロセッサの動作のためのタイミング信号等を形成し、例えばメモリ１７とプロセッサ２との間でデータを読み出したりデータを書き込んだりするための制御信号を形成し、また、その時にアドレス・バス４０２のために必要なアドレス・データの形成を制御することである。
【００４８】
データ・バスの読出しレジスタ４０３は、データ・バス４０４から来るプログラム・コマンドを該データ・バスの読出しレジスタ４０３の内部コマンド・キュー（図示せず）へ配置すると共にこのデータをデータ・レジスタ（図示せず）へ配置する。コマンド・インタープリタ及び制御ブロック４０１は、次に実行されるべきプログラム・コマンドを内部コマンド・キューに読み出して、それを解釈する。必要ならば、コマンド・インタープリタ及び制御ブロック４０１は、データ・レジスタからデータを読み出し、それを第２内部データ・バス４０５（Ｂバス）に転送し、ここから、それはバレル・シフタ４０６を介して演算論理ユニット（ＡＬＵ）４０７へ転送されることができ、これには第１内部データ・バス４０９（Ａバス）も向けられている。対応的に、コマンド・インタープリタ及び制御ブロック４０１は、データ・バスの書込みレジスタ４０８へのデータの書込みを制御し、ここからこのデータをデータ・バス４０４へ転送することができる。
【００４９】
演算論理ユニット４０７において、それ自体としては公知の方法で足し算、引き算及び論理演算が実行される。演算論理ユニット４０７から、アドレス・レジスタ４１１と、内部データ・レジスタ（レジスタ・バンク）を有するデータ・レジスタ・ブロック４１２とへ第３内部データ・バス４１０（ＡＬＵバス）沿いにデータを転送することができる。データ・レジスタ・ブロック４１２は、データを記憶するためのレジスタと、ステータスレジスタと、例えばプログラムメモリ領域から、例えば通信装置のメモリから、プログラム・コマンドを示すために使われるプログラム・カウンタ（ＰＣ）とを備える。この目的のために、内部アドレス・バス４１３がデータ・レジスタ・ブロック４１２からアドレス・レジスタ４１１へ向けられている。
【００５０】
アドレス・レジスタ４１１はアドレス・カウンタ・ブロック４１４に接続されており、該プログラム・カウンタの値は通常は１だけ加算され、プログラム・コードにおいて次に実行されるべきプログラム・コマンドが普通は置かれているプログラム・コードの次の場所を指す。ある状況では、サブプログラム要求又は割込み要求など、実行されるプログラム・コマンドはプログラム・コード上の他の場所への転送を生じさせ、コマンド・インタープリタ及び制御ブロックは、このアドレスをプログラム・カウンタにセットして、それをアドレス・レジスタ４１１の値となるように移す。アドレス・カウンタ・ブロック４１４から、アドレス変更バス４１５がアドレス・レジスタ４１１及びデータ・レジスタ・ブロック４１２へ向けられている。
【００５１】
プロセッサ２は、掛け算及びわり算を実行するための掛け算ブロック４１６を更に備える。掛け算ブロック４１６は第１内部データ・バス４０９及び第２内部データ・バス４０５に接続されている。上記プロセッサ２は、上で紹介したもの以外の他の接続ラインも備える。しかし、この文脈では、それらについてもっと詳しく説明する必要はない。
【００５２】
プロセッサ２のデータ・レジスタ・ブロック４１２のデータ・レジスタの一部は、プロセッサの全ての動作モードで使用され得るものであり、更に種々の動作モードのために他の動作モードにおいて妨げられているデータ・レジスタが予約されている。この構成により、特に割込み状態と関連してデータを記憶する必要を減少させることが可能である。更に、いろいろな動作モードのために特定のスタックポインタが設けられており、各動作モードは、必要ならば、スタックのために予約されているメモリ１７の自分自身の自由に使えるメモリ領域を持つことができる。
【００５３】
プロセッサ２は少なくとも３つの動作モード、すなわち、資源の使用が区域に分けられるユーザ・モード、プロセッサの全ての資源を使うことのできる特権モード（管理モード）、あるいは、プロセッサ２がプログラム・コードの中に未確認のコマンドを発見している状態で普通は使用される特権モードの特殊なモードである未定義モード、にセットされ得るものである。この好適な実施形態では、この未定義モードは、本明細書で後述する１つのモードとして意図的に使用される。このプロセッサ２では、未定義モードがこの目的に役立つ。必要ならば、他の何らかの特権モードを、対応するモードとして使用することができる。更に、プロセッサ２のために、３種類の割込み、すなわち、高速割込み（FIQ：Fast Interrupt Request（高速割込み要求））、普通の割込み要求（IRQ：Interrupt Request （割込み要求））、及びプログラミングされている割込み（SWI：Software Interrupt Request（ソフトウェア割込み要求））、を使用することができる。高速割込みFIQ は普通の割込みIRQ より高い優先レベルを有し、それはプログラミングされている割込みより高い優先レベルを有する。応答時間の見地から、高速割込みFIQ を用いることによって重大な割込みが有利に整えられる。
【００５４】
通信装置１を起動するとき、プロセッサ２の制御下で、好適には通信装置のメモリ１７に、好適には読出し専用メモリ又は不揮発性ランダムアクセスメモリに、記憶されている起動プログラム・コードは、例えばメモリ・チェックを実行するためのプログラム・コマンドは、起動プログラム・コードに形成される。起動開始と関連して、ファイルの制御ルーチンがロードされ、オペレーティングシステムOS＿A 、OS＿B のプログラム・コードのメモリ１７へのロードは、必要ならば、ファイルの制御ルーチンによって実行されることができる。これは、多くのデータ処理装置及びオペレーティングシステムの公知技術である。オペレーティングシステムOS＿A 、OS＿B のプログラム・コードを読出し専用メモリROM 、不揮発性メモリNVRAM 又は電気的に消去可能なプログラマブルROM EEPROMに記憶することもできる。オペレーティングシステムOS＿A 、OS＿B を記憶場所から直接使用することができる（XIP 技術、正しい場所での実行）。
【００５５】
オペレーティングシステムOS＿A 、OS＿B は、ロードされた後、始動される。そのとき、第１ステップは、例えば第２オペレーティングシステムOS＿B の開始プログラムを実行することであり、プロセス・テーブル、メモリ領域、割込みサービス・ルーチン、メッセージ・キュー及びオペレーティングシステムの他の対応する記述子がセットアップされ、デバイス・ドライバ及びデータ・タイプがロードされ、割込みが許容される。次のステップにおいて、第１オペレーティングシステムOS＿A の対応する開始動作の実行が開始される。第２オペレーティングシステムOS＿B の開始動作が実行されるとき、第１オペレーティングシステムOS＿A の開始動作において、例えばオペレーティングシステムOS＿A の割込み機能、すなわち、割込みの開始及び割込みの終了は、割込みハンドラに動的に結びつけられる（例えば、機能の開始アドレスがメモリ１７にセットされる）。更に、第１オペレーティングシステムOS＿A のスレッドのスケジューリングのためのインタフェースが割込みハンドラに形成される。
【００５６】
デバイス・ドライバは、特に、周辺装置のモードの初期設定を実行する。メモリ領域が通常動作中に必要に応じて割り当てられる（動的割当て）という選択肢と比べて充分な実行速度を確保するために、好適には一定の領域（静的割当て）がオペレーティングシステムのデータ・メモリＲＡＭのために予約される。
【００５７】
開始動作後、例えばアイドル・スレッドの実行、並びに場合によっては何らかのアプリケーション・プログラムのロード及び実行が開始される。例えば移動局機能を開始することが可能であり、そのとき通信装置１はコール、メッセージ、ファクシミリ等を受け取る準備が整っており、ユーザは、希望するならば、当該機能が通信装置１でセットアップされているならば、コールを開始したり、メッセージ又はファクシミリを送ったりすることができる。
【００５８】
本発明の通信装置１での割込みの場合、プロセッサ２は、割り込まれたスレッドの状態を記憶する割込みインタープリタ又はディスパッチャを実行し始める。その後、ディスパッチャは割込みサービス・ルーチンを開始する。どの割込みサービス・ルーチンが開始されるかは、通常は、割込み要求の原因による。これを、その内容がその原因を知らせる状態レジスタをプロセッサ２が有することとなるように、終結させることができる。例えば、キーパッド割込みの結果として、状態レジスタの対応するビットが他の論理状態に変更され（例えば論理０状態から論理１状態へ）、プロセッサ２はこのレジスタのいろいろなビットを調べて、対応する割込みサービス・ルーチンを開始する。数個の割込み要求が有効である状態においては、始めに最高の優先順位を有する割込みサービス・ルーチンが開始される。
【００５９】
自由に使える割込みラインnFIQを数本有するプロセッサ２も知られており、そのプロセッサでは割込みラインnFIQの状態の変化は割込み要求をもたらす。各割込みラインnFIQ、nIRQに特定の割込みサービス・ルーチンを定義することができる。更に、それらの割込みサービス・ルーチンのアドレスはテーブルの形をとっていても良く、その場合にはプロセッサ２は割込みに応じてこのテーブルから割込みサービス・ルーチンの開始アドレスを取りだして、それをそのプログラム・カウンタの値としてセットし、次に実行されるコマンドはそのアドレスにある。
【００６０】
本発明では、割込みFIQ 、IRQ 、SWL について定義されている一部あるいは全ての割込みサービス・ルーチンを変更することも可能である。例えば、あるアプリケーション・プログラムは、割込みFIQ 、IRQ 、SWL との関係で使用されるべき新しい割込みサービス・ルーチンを定義することができる。そのアプリケーション・プログラムが実行されるとき、プロセッサ２はメモリ１７の割込みサービス・ルーチンを修正する。本発明の有利な実施形態では、プロセッサ２は、他の割込みサービス・ルーチンを使用するべき割込みの開始アドレスだけを修正することが可能である。割込みサービス・ルーチンの実際のコードがメモリ１７に記憶される。このことは、割込みサービス・ルーチンの開始アドレスの何らかの種類のアドレス・テーブルが存在することを意味する。割込みFIQ 、IRQ 、SWL のために、どの割込みサービス・ルーチンを使用するべきか定めるために、上記以外の他の選択肢もあり得る。
【００６１】
割込みサービス・ルーチンに必要とされる動作、例えばキーパッド・バッファを呼んだりデータをメモリに記憶したりする動作、が実行される。更に、割込みサービス・ルーチンは、スレッド又はオペレーティングシステムに伝えられるべき信号を形成することができる。本発明の好適な実施形態の通信装置１の動作について、本明細書において後述する。
【００６２】
割込みサービスの応答時間は、通常は、例えば約１００マイクロ秒など、上記スーパースレッド５１１の応答時間より短い。割込みサービスのこの応答時間に影響を及ぼす要素は、例えば、プログラム・コードの何らかの部分で割込みがどのくらいの長さにわたってディスエーブルにされていたかという事実を含む。割込みキャンセルは、全ての割込み、又は指定されたレベルより低い優先レベルを有する割込みに関連し、あるいは割込み等のマスクレジスタを通して割込みを一時的にキャンセルすることができる。従って、割込み要求はメモリにとどまり、割込みサービス・ルーチンは、この割込み要求について割込みのキャンセルが取り除かれた段階で実行され、もっと優先レベルの高いスレッドは実行されない。
【００６３】
第１オペレーティングシステムOS＿A から第２オペレーティングシステムOS＿B への移行は、第１オペレーティングシステムOS＿A のスレッドが実行されていないときに行われる。このように、第１オペレーティングシステムOS＿A の見地から、実行はアイドル・スレッドで行われる。
【００６４】
通信装置１の動作の間、異なるオペレーティングシステムOS＿A 、OS＿B で動作しているアプリケーション同士の間で情報を伝えることが必要となることがある。このことは、特に、両方のオペレーティングシステムOS＿A 、OS＿B が少なくとも部分的に共通の資源を使用する状況において必要となる。例えば、キーパッド９、１４は共通のキーを含むことができ、あるいは別々のキーパッド９、１４の代わりに共通のキーパッドを使用することができる。一方、自分自身の接続インタフェースが異なるオペレーティングシステムOS＿A 、OS＿B から整えられているような資源の制御を１つのデバイス・ドライバによって行うのが道理にかなったことであることがしばしばある。これは、２つ以上のオペレーティングシステムOS＿A 、OS＿B が同時に同じ資源を使おうと試みる状態の制御を容易にする。
【００６５】
次に、種々のオペレーティングシステムOS＿A 、OS＿B を考慮して本発明の通信装置の動作を説明する。本発明のこの好適な実施形態では、第１オペレーティングシステムOS＿A はいわゆる実時間オペレーティングシステムであり、そのための一定の実行時間要件が定められている。第２オペレーティングシステムOS＿はその実行時間に関して厳しくはないが、特に使用快適性の見地から第２オペレーティングシステムOS＿B も、そのためにセットされている動作を程良い時間内に実行しなければならない。
【００６６】
第１オペレーティングシステムOS＿A のスレッドは、例えば埋込みシステムの設計段階でそれらのために決定された優先順位を有する。優先順位を利用することにより、重要なスレッドの例えば実行順序及び応答時間に影響を及ぼすことが可能である。第１オペレーティングシステムのスケジューラSCH ＿A はそのときに最高の優先順位のスレッドを実行ラウンドで最初に動作するスレッドとする。実用的なシステムでは、このことは、本発明の好適な実施形態の通信装置１が、プロセッサ２のプログラム・コマンドにより実現されている、第１オペレーティングシステムOS＿A のスケジューリング機能を実行することを意味する。スレッドを動作させるとき、プロセッサ２はスレッドにプログラミングされているプログラム・コマンドに従う処置を実行する。
【００６７】
第１オペレーティングシステムOS＿A で動作しているプロセッサの全てのスレッドTHA1、THA2を実行した後、プロセッサ２は、例えば遅延機能コールDSR (Delayed Service Routine）や、待機しているスレッドTHB1、THB2など、第２オペレーティングシステムOS＿B の動作の実行に移行する。第１オペレーティングシステムOS＿A のスレッドTHA1、THA2は、割込み処理の間の短い中断を除いて、常に動作することを認められる。このことについて、本明細書で後述する。本発明のこの好適な実施形態では、第２オペレーティングシステムOS＿B の実行は、第１オペレーティングシステムOS＿A の見地からは、例えばアイドル・スレッドTHA ＿IDLEあるいはスーパー・スレッドなど、第１オペレーティングシステムOS＿A の第１スレッドの実行に対応する。これを達成するために、第１オペレーティングシステムOS＿はアイドル・スレッドTHA ＿IDLEを表す情報構造（図示せず）を与えられるが、第１オペレーティングシステムOS＿A は本実施形態の実現では適切なアイドル・スレッドを含んでいない。
【００６８】
第２オペレーティングシステムOS＿B の実行に移った後、プロセッサ２は、第２オペレーティングシステムOS＿B の動作しているスレッドTHB1、THB2の優先順位及びスケジューリングの実際に基づいて第２オペレーティングシステムOS＿B のスケジューリング機能を実行する。始めに、遅延サービス・ルーチンDSR のうちのあるものが待機している場合、当該遅延サービス・ルーチンDSR が実行され、その後にスレッドTHB1、THB2の実行が好適には優先順位に従って開始される。実行されるべきスレッドTHB1、THB2を実行した後、どのスレッドTHB1、THB2もラン・モード下ではなくて、プロセッサ２は新しい実行ラウンドが必要となるまで残っている第２オペレーティングシステムOS＿B のアイドル・スレッドTHB ＿IDLEへ移行する。
【００６９】
第２オペレーティングシステムOS＿B の実行中、第１オペレーティングシステムOS＿A への変更がほとんど何時でも行われ得る。これは、割込み要求に起因してプロセッサ２が割込みサービス・ルーチンの実行に移るように行われるのが有利であり、第１オペレーティングシステムOS＿A は後述するように起動される。第２オペレーティングシステムOS＿B への復帰は、第１オペレーティングシステムOS＿A での実行がアイドル・スレッドTHB1、THB2THA ＿IDLEへ進んだ段階で行われる。第１オペレーティングシステムOS＿A の実行は、第２オペレーティングシステムOS＿B の見地から、割込みサービス・ルーチンを動作させる。
【００７０】
本発明の目的は、種々のオペレーティングシステムOS＿A 、OS＿B のプログラム・コードがなるべく小さく、かつ、オペレーティングシステムOS＿A 、OS＿B の特性がアプリケーション開発者の見地から著しく変化しないように、オペレーティングシステムOS＿A 、OS＿B の接続を実現することである。本発明の好適な実施形態の通信装置では、接続は割込みサービス・ルーチンのレベルでなされる。装置割込みFIQ 、IRQ 又はプログラム割込みSWI が生じると、プロセッサ２は割込みサービス・ルーチンの実行へ移行する。このプログラムは全ての割込みに共通であっても良く、その場合にはレジスタ等を調べることによりプロセッサ２のコマンド・インタープリタ及び制御ブロック４０１は、必要ならば割込みの原因を推定することができ、あるいは、異なる装置割込みFIQ 、IRQ 又はプログラム割込みSWI のために数個の異なる割込みサービス・ルーチンがあっても良い。割込みサービス・ルーチンの始まりのときに、割込み開始ルーチンに加えてプログラム・コール（機能コール）があり、オペレーティングシステムOS＿A 、OS＿B の内部ステータスは変更され、オペレーティングシステムOS＿A 、OS＿B のデータは、割込みサービスが動作していることを知らせる。割込みサービス・ルーチンへの移転、サブプログラムの実行、状態データの調査、及び他の対応する動作は、コマンド・インタープリタ及び制御ブロック４０１の制御下で行われるが、それについては本明細書で前に説明してあって、当業者に知られている技術である。
【００７１】
その後、割込みハンドラの機能が実行されるが、それは、プロセッサ２に来ている割込みのために決定されているプログラム・コマンドをコマンド・インタープリタ及び制御ブロック４０１が実行することを意味し、それらのプログラム・コマンドは好適にはメモリ１７に記憶される。割込みハンドラにおいて、例えば、割込みを生じさせた原因が調べられて、割込み処理が第１オペレーティングシステムOS＿A 又は第２オペレーティングシステムOS＿B の実行を必要とするか否かが推定される。もしそれぞれの割込み処理が第１オペレーティングシステムOS＿A の実行を必要とするならば、割込みハンドラは、そのことについての情報を第１オペレーティングシステムOS＿A のスケジューラSCH ＿A にセットする。もし割込み処理が第２オペレーティングシステムOS＿B のスレッドの実行を必要とするならば、割込みハンドラは第１オペレーティングシステムOS＿A のスレッドの実行後に実行されるべき遅延サービス・ルーチンDSR を形成する。その遅延サービス・ルーチンDSR は、第１オペレーティングシステムOS＿A の動作しているスレッドを通して形成されても良い。この遅延サービス・ルーチンDSR は、割込み処理が第２オペレーティングシステムOS＿B の一定のスレッドの実行を必要とすることを第２オペレーティングシステムOS＿B のスケジューラSCH ＿B に知らせることができる。ある状況では、割込みハンドラが遅延サービス・ルーチンDSR を使用せずに第２オペレーティングシステムのスケジューラSCH ＿B にこのデータをセットすることも可能である。
【００７２】
割込みサービス・ルーチンでは、データがアドレス指定されているアプリケーション・プログラムのスレッドが実行段階にある段階で、データが読まれるバッファにデータを読み出すなどの他の動作を実行することも可能である。
【００７３】
割込みプログラムの終わりに割込み終了機能要求が加えられており、それには、例えば割込みサービス・ルーチンの実行が終わっているという情報がセットされる。更に、この機能は、割込みサービスにおいて、第１オペレーティングシステムOS＿A のスケジューラSCH ＿A からスレッドまでの実行時間を必要とする第１オペレーティングシステムOS＿A のいずれかのルーチンが実行されたか否かという情報を報告する。割込みサービス・ルーチンの終了後、プロセッサ２のモード及び第１オペレーティングシステムOS＿A のステータスは変更される。割込み処理が第１オペレーティングシステムOS＿A のスレッドの実行を必要とする原因となる場合には、実行される次のプログラムは第１オペレーティングシステムOS＿A のスケジューラ・プログラムであり、それでは、例えばバッファの情報を読むなどの、割込みに起因する処置がなされるスレッドに新しいステータス（レディ) が与えられる。第１オペレーティングシステムOS＿A のスケジューラSCH ＿A は、実行のために、優先順位に従って、実行待ち（レディステータス）の第１オペレーティングシステムOS＿A のスレッドを制御する。
【００７４】
第１オペレーティングシステムOS＿A の割込みサービスにあるかあるいは動作している第１オペレーティングシステムOS＿A のスレッドにおいて、ある状態では遅延サービス・ルーチンDSR を形成することが可能であり、その場合、第２オペレーティングシステムOS＿B のスレッドのステータスは変更される。遅延サービス・ルーチンDSR は、実行待ちだった第１オペレーティングシステムOS＿A のスレッドをプロセッサ２が全て実行した後に、処理される。遅延サービス・ルーチンの処理後に、第２オペレーティングシステムOS＿B の実行を有利には優先順位に従って待っているスレッドを動作させるために、第２オペレーティングシステムOS＿B のスケジューラ・ルーチンが更に実行される。
【００７５】
上記処置の実行中、新しい割込みが発生する可能性があり、その場合には動作は再び割込み処理に移行し、その後の動作は上記原理に従って行われる。
【００７６】
動作は、そのときに最高の実効優先順位を有する動作が行われるように割込みが継続された後に、行われる。これは、割込みの時点でプロセッサ２が動作していた段階により、またその割込みの原因により、左右される。付随する図６ａ〜６ｉにいろいろな状態が示されており、次に、これについて詳しく説明する。埋込みシステム１の例は、移動局機能及びデータ処理機能の両方が例えばパーソナルディジタルアシスタントPDA の機能として実現されている通信装置である。通信装置のプロセッサ２において、２つのオペレーティングシステムOS＿A 、OS＿B が使用される。第１オペレーティングシステムOS＿A は、主として移動局機能の制御及び使用に関連する。第２オペレーティングシステムOS＿B は、主としてデータ処理機能の制御及び使用に関連する。
【００７７】
図６ａ〜６ｈの例示状態では、状態はいわゆる通常割込みIRQ （割込み要求）に関する。本発明の好適な実施形態のこの通信装置１では、いわゆる高速割込みFIQ(Fast Interrupt Request) を使用することもでき、それは図６ｉの例に示されている。高速割込みの優先順位は、有利には通常割込みIRQ のそれより高い。更に、ソフトウェア割込みも利用することができ、これは通常割込みIRQ よりも低い優先順位を有利には有する。付随する図６ａ〜６ｉに示されている高速割込みFIQ 及びプログラム割込みSWI にも適合させられることができるので、本明細書では主として通常割込みIRQ のみについて説明する。
【００７８】
遅延サービス・ルーチンは第２オペレーティングシステムOS＿B のものであり、それを例えばいろいろなスレッド間で、また、必要ならば、いろいろなオペレーティングシステムOS＿A 、OS＿B 間でのメッセージ転送に使用することができる。遅延サービス・ルーチンDSR は、第２オペレーティングシステムOS＿B のスレッドのステータスを実行待ち状態（レディ状態）に変更する。第２オペレーティングシステムOS＿B の遅延サービス・ルーチンDSR の優先順位はスレッドのそれより高いので、それらは第２オペレーティングシステムOS＿B のスレッドが動作させられる前に処理される。
【００７９】
プロセッサ２は、この例では、次のモード、
ユーザ・モードUSER、
特権モードSVC 、
未定義モードUND 、
高速割込みモードFIQ 、
通常割込みモードIRQ 、及び
ソフトウェア割込みモードSWI 
を備える。
【００８０】
未定義モードUND は、本発明のこの好適な実施形態では通常ラン・モードとして使用されるが、本例で使用されるプロセッサ２におけるそのデフォルト値アプリケーションは未定義モードである。
【００８１】
図６ａは、通常割込みと関連してプロセッサ２が第２オペレーティングシステムOS＿B （ブロック６０１）のもとでスレッドTHB1を実行する状態を示しており、それは通信装置１のデータ処理機能において例えばユーザにより起動されるアプリケーション・プログラムに関連するプロセスを備える。プロセス２はユーザ・モードUSERになっている。通常割込みは、モードを通常割込みモードに変化させ、プロセッサ２は通常割込み機能を開始させ（ブロック６０２）、その後に通常割込みのサービス・プログラムを動作させる（ブロック６０３）。割込みは第１オペレーティングシステムOS＿A のスレッドを動作させる必要を生じさせなくて、第１オペレーティングシステムのスケジューラSCH ＿A は割込み後に呼び出されない。この割込みでは、遅延サービス要求DSR も形成されない。割込み処理の終わりに、通常割込み機能の終わり（ブロック６０４）が呼び出され、割込みが終了したという情報が設定される。通常割込みのサービス・プログラムが終了した後、プロセッサ２のモードはユーザ・モードUSERに戻される。実行は、第２オペレーティングシステムOS＿B の割り込まれたスレッドTHB1（ブロック６０５）から続けられる。
【００８２】
割込みは、例えば、通信装置１の蓋（図示せず）の開放により引き起こされ、このときこの蓋の位置を示すスイッチＳ１がそのステータスを変化させ、例えばそれは開き、プロセッサ２は、スイッチＳ１に接続されている識別ライン２０の論理状態（０／１）を読むことによってスイッチの位置を調べる。この場合、蓋の開放は何らの即時動作も引き起こしていない。
【００８３】
図６ｂは通常割込みと関連してプロセッサ２が第１オペレーティングシステムOS＿A の第１アイドル・スレッドTHA ＿IDLEを動作させている状態を示している。この状態では、モードは未定義モードUND から通常割込みモードIRQ に変化し、プロセッサ２は通常割込み機能の始まり（ブロック６０２）の動作に移行し、その後に通常割込みのサービス・プログラムを動作させる。割込みは第１オペレーティングシステムOS＿A のスレッドを動作させる必要を何ら引き起こしていなくて、第１オペレーティングシステムOS＿A のスケジューラSCH ＿A は割込み後に呼び出されない。該割込みでは、遅延サービス・ルーチンDSR も形成されていない。割込みが終了した後、通常割込み機能の終わり（ブロック６０４）が要求され、割込みが終了しているという情報が確立される。通常割込みのサービス・プログラムが終了したとき、プロセッサ２のモードは未定義モードUND に戻される。実行は、アイドル・スレッドTHA ＿IDLEから続けられる（ブロック６０５）。
【００８４】
割込みIRQ は、例えば、ユーザが開放状態の通信装置１の蓋でデータ処理機能のキーパッド１４の１つのキーを押すことによって引き起こされる。割込みハンドラは、この状態でそれぞれのキーを押す動作が移動局機能の動作に何らかの影響を及ぼすか否か調べて、否であることを確かめ、そのときこの割込みは移動局機能における処置を引き起こしていない。
【００８５】
図６ｃは、通常割込みの場合にプロセッサ２が第２オペレーティングシステムOS＿B のもとでスレッドTHB1を動作させる状態（ブロック６０１）を示しており、そのスレッドは、例えば、データ処理機能の、ユーザによって起動されるアプリケーション・プログラムと関連するプロセスを備える。この状態は、図８の矢印図によっても示されている。プロセッサ２はユーザ・モードUSERになっている。モードは通常割込みモードIRQ に変化し、プロセスは通常割込み機能の始まりの動作に移行し（ブロック６０２）、その後に通常割込みのサービス・プログラムに移行する（図６ｃのブロック６０３、図８の矢印８０１及び８０２）。割込みは第１オペレーティングシステムOS＿A の少なくとも１つのスレッドを動作させる必要を引き起こしているけれども、遅延サービス・ルーチンDSR はこの割込みでは形成されていない。割込みが終了した後（矢印８０３）、通常割込み機能の終わり（ブロック６０４）が呼び出され、割込みの終わりの情報がセットされる。通常割込みのサービス・プログラムが終了した後、プロセッサ２のモードは未定義モードUND に変更され、同時に第１オペレーティングシステムのスケジューラSCH ＿A が呼び出され、このスケジューラは必要ならばスレッドについて与えられたステータスをセットする（図６ｃのブロック６０８、図８の矢印８０４）。その後、実行待ちをしている第１オペレーティングシステムOS＿A のスレッド（レディ・モード・スレッド）が動作させられる（矢印８０５〜８０８）。その後、動作するべく待機しているスレッドが無いとき、プロセッサ２のモードはユーザ・モードUSERに戻され、実行は第２オペレーティングシステムOS＿B の割り込まれたスレッドTHB1から続けられる（図６ｃのブロック６０５、図８の矢印８０９、８１０、及び８１１）。
【００８６】
この状態を示す例では、無応答のコールが通信装置１により受信される。移動局機能の表示装置１０及びデータ処理機能の表示装置１５は、例えば「１無応答コール」等のテキストなど、受信され、応答されないコールについてのメッセージを表示する。ユーザはデータ処理機能の入力キー（図示せず）を押し、通常割込み IRQが形成される。割込み処理では、移動局機能の表示装置１０から当該テキストを消すことのできる第１オペレーティングシステムOS＿A のスレッドがラン・モードを待つ状態にセットされる。割込みが終了した後、プロセッサ２は第１オペレーティングシステムのスケジューラSCH ＿A の動作に移行し、第１オペレーティングシステムOS＿A は、ラン・モードに到達した後、当該テキストを移動局機能の表示装置１０から消去することができる。
【００８７】
図６ｄは、通常割込みが発生したときにプロセッサ２が第２オペレーティングシステムOS＿B のもとでスレッドTHB1を動作させていて（ブロック６０１）、ユーザ・モードUSERにセットされる状態を示している。モードは通常割込みモードIRQ に変更され、プロセッサ２は通常割込み機能の始まり（ブロック６０２）の動作に移行し、その後に通常割込みのサービス・プログラムに移行する（ブロック６０３）。この割込みは第１オペレーティングシステムOS＿A の少なくとも１つのスレッドを動作させる必要を生じさせている。更に、割込みでは、及び／又は、割込み後に動作する第１オペレーティングシステムOS＿A の何らかのスレッドでは、遅延サービス・ルーチンDSR が形成されている。
【００８８】
割込みが終了した後、通常割込み機能の終わり（ブロック６０４）が呼び出され、該割込みの終了の情報がセットされる。通常割込みのサービス・プログラムが終了した後、プロセッサ２のモードは未定義モードUND にセットされ、第１オペレーティングシステムのスケジューラSCH ＿A が呼び出され、これは、必要ならば、スレッドに新しい状況をセットし、動作されるべく待機している第１オペレーティングシステムOS＿A のスレッドをそのスケジューリング処理手順に従って実行されるように指揮する（ブロック６０８）。実行待ちの状態にとどまっている第１オペレーティングシステムOS＿A のスレッドが無かった後、第２オペレーティングシステムOS＿B の遅延サービス・ルーチンDSR が処理され、その後、プロセッサ２のモードはユーザ・モードUSERに戻され、ステータスの遅延サービス・ルーチンにより変更された第２オペレーティングシステムOS＿B のスレッドは第２オペレーティングシステムOS＿B の割り込まれたスレッドTHB1より低い優先順位を有するので、実行は第２オペレーティングシステムOS＿B の割り込まれたスレッドTHB1から継続される（ブロック６０５）。
【００８９】
言及できる１例は、ユーザがデータ処理機能のキーパッド１４によりショートメッセージ（ＳＭ）を書いた場合である。送信キー（図示せず）を押す動作は通常割込みIRQ を生じさせる。割込み処理では、第１オペレーティングシステムOS＿A のスレッドはバッファから送信されるべきメッセージを読み出して送信するラン・モードを待つ状態にセットされ、データ処理機能の表示装置１５にアイコンが形成され、これにより、メッセージが送信されることがユーザに知らされる。割込みが終了した後、プロセッサ２は第１オペレーティングシステムOS＿A 、OS＿B のスケジューラSCH ＿A の動作に移行し、第１オペレーティングシステムOS＿A のスレッドはラン・モードでメッセージを送信し、その後に遅延サービス・ルーチンDSR が形成されてアイコンを消す。その後、第２オペレーティングシステムのスケジューラSCH ＿B はラン・モードに第２オペレーティングシステムOS＿B の割り込まれたスレッドTHB1をセットするが、その理由は、この実例としての状態においては、その優先順位が第２オペレーティングシステムOS＿B のアイコン消去スレッドの優先順位より高いことである。後に、このスレッドは、ラン・モードに達して当該テキストをデータ処理機能の表示装置１５から消去する。
【００９０】
図６ｅは、通常割込みが来るときにプロセッサ２が第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLE（ブロック６０６）を動作させていて未定義モードUND にセットされる状態を示している。従って、モードは通常割込みモードIRQ に変更され、プロセッサ２は通常割込み機能の始まり（ブロック６０２）を動作させ始め、その後に通常割込みのサービス・プログラムに移る（ブロック６０３）。割込みは、第１オペレーティングシステムOS＿A の少なくとも１つのスレッドを動作させる必要を生じさせている。更に、割込み及び／又は第１オペレーティングシステムOS＿A のスレッドにおいて遅延サービス・ルーチンDSR が形成され、それは更に第２オペレーティングシステムOS＿B の１つまたはそれより多いスレッドのステータスの実行待ち（レディ）への変更を引き起こさせる。割込みが終了した後、通常割込み機能の終わり（ブロック６０４）が呼び出され、それに割込みの終了についての情報がセットされる。通常割込みのサービス・プログラムが終了した後、プロセッサ２のモードと第１オペレーティングシステムOS＿A のステータスとが変更される。プロセッサ２のモードは未定義モードUND に変更され、その後に第１オペレーティングシステムのスケジューラSCH ＿A （ブロック６０８）が要求され、それはスレッドをその順番のときにラン・モードにセットする、すなわち、実行待ちをしている（レディ・モードで）第１オペレーティングシステムOS＿A のスレッドが動作させられる。実行待ちをしている第１オペレーティングシステムOS＿A のスレッドが無くなった後、第２オペレーティングシステムOS＿B の遅延サービス・ルーチンDSR が処理され（ブロック６０９）、その後に第２オペレーティングシステムOS＿B のスケジューラSCH ＿B が呼び出され（ブロック６１０）、それは、第２オペレーティングシステムOS＿B の動作順序で、好適には優先順位の順に、実行待ちをしている第１スレッドをラン・モードにセットする。その後に、プロセッサ２のモードはユーザ・モードUSERに戻され、動作は、そのときに最高の優先順位を有する第２オペレーティングシステムOS＿B のスレッドTHB1（ブロック６０５）から継続する。第２オペレーティングシステムのスケジューラSCH ＿B は、スレッドの動作をそのスケジューリング原理に従って制御する。
【００９１】
例示状況において、通信装置１にショートメッセージが到着しており、それは、移動局機能の表示装置１０及びデータ処理機能の表示装置１５上のアイコンにより示される。ユーザは移動局機能のキーパッド９上の読出しキー（図示せず）を押し、それは通常割込みIRQ を生じさせる。この割込み処理では、第１オペレーティングシステムOS＿A の１つ又は複数のスレッドは、移動局機能の表示装置１０からアイコンを消去するためと共に受信したメッセージを移動局機能の表示装置１０で表示するために、ラン・モードを待つ状態にセットされる。更に、このアイコンをデータ処理装置の表示装置１５から消去するために遅延サービス・ルーチンDSR が形成される。プロセッサ２は、割込み後に、第１オペレーティングシステムOS＿A のスケジューリング機能を動作させ、遅延サービス・ルーチンDSR を処理し、第２オペレーティングシステムOS＿B のスケジューリング機能を動作させ始め、第２オペレーティングシステムのスレッドは、実行に至った後、データ処理機能の表示装置１５からアイコンを消去する。
【００９２】
図６ｆは、通常割込みが来るとき、プロセッサ２が第２オペレーティングシステムOS＿B のスレッドTHB1を実行し（ブロック６０１）、ユーザ・モードUSERにセットされる状態を示している。モードは通常割込みモードIRQ に変化し、プロセッサ２は通常割込み機能の始まりを動作させ（ブロック６０２）、その後に通常割込みのサービス・プログラムに移行する（ブロック６０３）。割込みは、第１オペレーティングシステムOS＿A の少なくとも１つのスレッドを動作させる必要を生じさせる。更に、割込みにおいて、及び／又は、割込み後に動作している第１オペレーティングシステムOS＿A のスレッドにおいて、遅延サービス要求DSR が形成され、それは、更に、第２オペレーティングシステムOS＿B のスレッドの実行時間のリセットを引き起こす。割込みが終了した後、通常割込み機能の終わり（ブロック６０４）が呼び出され、それにこの割込みの終わりの情報がセットされる。通常割込みのサービス・プログラムが終了した後、プロセッサ２のモードと第１オペレーティングシステムOS＿A のステータスとが変更される。プロセッサ２のモードは未定義モードUND に変更され、その後に第１オペレーティングシステムのスケジューラSCH ＿A が呼び出され、それは、必要ならば（ブロック６０８）、スレッドに新しい状況をセットする。その後、実行待ちをしている第１オペレーティングシステムOS＿A のスレッドが動作される（レディ・モードのスレッド）。その後、動作されるべきスレッドが残っていなくなったとき、第２オペレーティングシステムOS＿B の遅延サービス・ルーチンDSR が処理され（ブロック６０９）、その後に第２オペレーティングシステムOS＿B のスケジューラSCH-B が呼び出され（ブロック６１０）、それは、動作順序の第１位置で待機している第２オペレーティングシステムOS＿B のスレッドをラン・モードで実行されるようにセットする。本例では、割込み処理に起因して、割込みされたスレッドTHB1はラン・モードに移行するものには未だなっていなくて、そのステータスがラン待ちに変更されたこの第２動作モードOS＿B の他のスレッドTHB2になっている。プロセッサ２のモードはユーザ・モードUSERに戻され、その後にプロセッサ２は、ラン・モードにセットされたスレッドTHB2を動作させ始める（ブロック６１１）。割込みされたスレッドTHB1はその番が来るとラン・モードにセットされる（ブロック６０５）。
【００９３】
上記の実例は、ユーザがデータ処理機能のキーパッド１４を使ってショートメッセージを書いて充電装置（図示せず）を通信装置１に接続する状態である。それは通常割込みIRQ を引き起こす。割込み処理において、第１オペレーティングシステムOS＿A の、充電が実行されることを知らせるアイコンを移動局機能の表示装置１０上に形成するスレッドは、ラン・モードを待つ状態にセットされる。更に、遅延サービス・ルーチンDSR によって、対応するアイコンがデータ処理機能の表示装置１５上に形成される。
【００９４】
図６ｇは通常割込みが来るとき、プロセッサ２が第１オペレーティングシステムOS＿A のもとでスレッドTHA1を動作させている状態（ブロック６１２）を示しており、それは例えば通信装置１の移動局機能における接続確立アプリケーションである。プロセッサ２は未定義モードUND になっている。モードは通常割込みモードIRQ に変化し、プロセッサ２は通常割込み機能の始まりを動作させ始め（ブロック６０２）、その後に通常割込みのサービス・プログラムに移行する（ブロック６０３）。この割込みは第１オペレーティングシステムOS＿A のスレッドを動作させる必要を生じさせてはいなくて、割込み後、第１オペレーティングシステムのスケジューラSCH ＿A は呼び出されない。割込みが終了した後、通常割込み機能の終わりが呼び出され（ブロック６０４）、それに割込みの終了についての情報がセットされる。通常割込みの終了後、プロセッサ２のモードと第１オペレーティングシステムOS＿A のステータスとが変更される。プロセッサ２のモードは未定義モードUND に戻され、動作は、割込みされたスレッドTHA1から続けられる（ブロック６１３）。第２オペレーティングシステムOS＿B の遅延サービス・ルーチンDSR が割込みで形成されたが、それらは、第１オペレーティングシステムOS＿A の全ての動作しているスレッドが実行される前には処理に至らない。
【００９５】
ユーザは例えば電話番号をダイヤルし、その場合にキーを押す動作は通常割込みIRQ を生じさせる。割込み処理において、キーを押す動作がメモリ１７に読み込まれて、移動局機能の表示装置１０からプリントされ、次のキー押しを待つためにリターンがなされる。
【００９６】
図６ｈは、通常割込みが到来し、プロセッサ２が第１オペレーティングシステムOS＿A 下でスレッドTHA1を動作させている状態を示しており（ブロック６１２）、それは例えば通信装置の移動局機能の接続確立アプリケーションである。プロセッサは未定義モードになっている。モードは通常割込みモードIRQ に変化し、プロセッサ２は通常割込み機能の始まりを動作させ始め（ブロック６０２）、その後に通常割込みのサービス・プログラムに移行する（ブロック６０３）。割込みは、第１オペレーティングシステムOS＿A の少なくとも１つのスレッドを動作させる必要を生じさせている。割込みが終了した後、通常割込み機能の終わり（ブロック６０４）が呼び出され、割込みの終了についての情報がセットされる。通常割込みのサービス・プログラムの終了後に、プロセッサ２のモードと第１オペレーティングシステムOS＿A のステータスとが変更される。プロセッサ２のモードは未定義モードUND に変更され、その後、第１オペレーティングシステムのスケジューラSCH ＿A が要求され、それは、必要ならば、スレッドについて新しい状況をセットする（ブロック６０８）。その後、実行待ちをしている（レディ・モードの）第１オペレーティングシステムOS＿A のスレッドが優先順位に従って動作される。この例では、割込みは第２スレッドTHA2を直ぐに実行へ移行させ（ブロック６１４）、割込みされたスレッドTHA1は、場合によっては後で実行される番になる（ブロック６１３）。第２オペレーティングシステムOS＿B の遅延サービス・ルーチンDSR が該割込みで形成されたが、それらは、第１オペレーティングシステムOS＿A の全ての動作するスレッドが実行される前には動作させられない。
【００９７】
ユーザは、例えば、電話番号をダイヤルし、通常割込みIRQ を生じさせるハンドセット・アップ・キー（図示せず）を押している。割込み処理後、第１オペレーティングシステムのスケジューラSCH ＿A は接続確立スレッドを実行にセットする。
【００９８】
図６i は、通常割込みサービス・ルーチンが動作しているとき（ブロック６１５）、高速割込みFIQ が到来する状態を示している。プロセッサ２は通常割込みモードIRQ になっていて、高速割込みモードFIQ に移行して高速割込み機能の始まり（ブロック６１６）を動作させ、その後に高速割込みFIQ のサービス・プログラムに移行する（ブロック６１７）。高速割込み処理が終了した後、高速割込み機能の終わり（ブロック６１８）が呼び出され、それに高速割込みFIQ の終わりについての情報がセットされる。高速割込みのサービス・プログラムが終了した後、第１オペレーティングシステムOS＿A のステータスとプロセッサ２のモードとは通常割込み状態IRQ に戻され、その後に動作は割込みされた場所から続く（ブロック６１９）。
【００９９】
この状態の例を挙げると、プロセッサ２はキーパッド９、１４の割込み処理を動作させていて、そのとき通信装置に、例えばアプリケーション特有の集積回路３に、設けられているタイマ（図示せず）が高速割込みFIQ を形成する。プロセッサ２はこのタイマの値を読み取り、それをメモリ１７に記憶する。その後、プロセッサ２はキーパッド９、１４の割込み処理に戻る。
【０１００】
プロセッサ２の上記モード変更と関連して、プロセッサ２はいろいろなレジスタの使用を有利に開始し、その場合、一時記憶場所へのデータの転送は必ずしも常に必要とは限らない。しかし、ある割込み状態ではデータ転送が必要になることがあり、それは割込みの処理をある程度遅らせる。また、プロセッサ２として使われるあるマイクロプロセッサは上記のモードの全部を持ってはいなくて、そのいろいろなモードをモード変数等によって表示することができる。
【０１０１】
ときには、第２オペレーティングシステムOS＿B への応答時間を決定することが必要となる。第１オペレーティングシステムのスケジューラSCH ＿A は、第２オペレーティングシステムOS＿B のために残っている実行時間が応答時間が必要とする時間より短くなるという状態においては第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEの優先順位を高めることができる。第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEは、他のあまり重要でないスレッドの前に動作の順番となり、それは第２オペレーティングシステムOS＿B の動作への移行を引き起こす。この優先レベルの上昇は、例えば、所定時間後に割込みするようにセットされたタイマによって引き起こされる。タイマ割込みに至るときにプロセッサ２が第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEに達していない場合には、第１オペレーティングシステムのスケジューラSCH ＿A が呼び出され、それはアイドル・スレッドTHA ＿IDLEの優先順位を高める。しかし、この文脈では、第１オペレーティングシステムOS＿A のあまり重要でないタスクにも定期的に実行時間が与えられるように、アイドル・スレッドTHA ＿IDLEの優先順位をそのときに短い時間にわたって高めておくのが有利であることに注目されたい。第１オペレーティングシステムOS＿A の重要なスレッドが実行されなければならないので、アイドル・スレッドTHA ＿IDLEの優先順位を余りに高いレベルまで高めることはできない。この種のスケジューリングはインターリーブ・スケジューリングとも称され得る。
【０１０２】
付随する図９及び１０は、上記のインターリーブ・スケジューリング・オプションの例を示している。図９には実例としての状態のタイミング図が記述されており、その状態では、第１オペレーティングシステムOS＿A で操作しているプロセスの動作中のスレッドTHA1、THA2、THA3と、第２オペレーティングシステムOS＿B の動作中のスレッドTHB1、THB2、THB3とが実行される。図１０には、インターリーブ・スケジューリングを更に明らかにするために第１オペレーティングシステムOS＿A のプロセス図が記述されている。
【０１０３】
この例示図では、第１オペレーティングシステムOS＿A で動作するプロセスの３つのスレッドTHA1、THA2、THA3と、第２オペレーティングシステムOS＿B で動作する３つのスレッドTHB1、THB2、THB3とが示されているが、オペレーティングシステムOS＿A 、OS＿B で動作するスレッドはもっと多くても良いし、もっと少なくても良いことが理解できよう。
【０１０４】
第１オペレーティングシステムOS＿A の第１スレッドTHA1は、例えば、電話アプリケーションであり、非常に高い優先順位を有する。第１オペレーティングシステムOS＿A の第３スレッドTHA3は、例えばユーザインタフェースのために設けられる。第２スレッドTHA2の優先順位は第１スレッドTHA1の優先順位より低く、第３スレッドTHA3の優先順位は第１オペレーティングシステムOS＿A の第２スレッドTHA2の優先順位より低い。
【０１０５】
第２オペレーティングシステムOS＿B の第１スレッドTHB1は、例えば、インタフェース・ブロック１６を介する通信のためのプログラムである。第２オペレーティングシステムOS＿B の第２スレッドTHB2及び第３スレッドTHB3は、例えばノートパッド・アプリケーション及びカレンダー・アプリケーションなどの、ＰＤＡアプリケーションである。この例では、第２オペレーティングシステムOS＿B の第１スレッドTHB1の優先順位は第２オペレーティングシステムOS＿B の第２スレッドTHB2の優先順位より高く、第２オペレーティングシステムOS＿B の第３スレッドTHB3の優先順位は、これら３つのスレッドのうちで最低であるということが仮定されている。
【０１０６】
図９では、スレッドの実行は太い線として示されている。例えば、時点ｔ１において第１オペレーティングシステムOS＿A の第２スレッドTHA2が動作する番となる。これは参照符号９０１で指示されている。後の時点ｔ２において第１オペレーティングシステムOS＿A の第３スレッドTHA3が動作する番９０２となる。これは第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEの前の最後のスレッドであるということも仮定されている。従って、しばらく後に、インタフェース・ブロック１６を介して通信する必要があるか否か調べるために、第２オペレーティングシステムOS＿B の第１スレッドTHB1が時点ｔ３で動作する番９０３となる。後の時点ｔ４で第２オペレーティングシステムOS＿B の第２スレッドTHB2が動作する番９０４となる。第２オペレーティングシステムOS＿B の第３スレッドTHB3のためのある程度の実行時間９０５が時点ｔ５に残っている。この例では、動作する番９０６に至る次のスレッドは時点ｔ６で第２オペレーティングシステムOS＿B の第１スレッドTHB1である。
【０１０７】
上記状態が、図１０にも、時点ｔ７から左に、示されている。スレッドTHA1、THA2、THA3、スケジューラSCH ＿A 、割込みサービス・ルーチンISR 、割込みベクトル及びその他の第１オペレーティングシステムのサービスが図１０にブロックとして示されている。図１０においてスレッドの優先順位は、最高のスレッドが最高の優先順位を持つように配置されている。第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEは最低の優先順位を有する。時点t7において第１オペレーティングシステムOS＿A のスケジューラSCH ＿A は第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEの優先順位をしばらくの間変化させる。この状態は図１０において時点ｔ７から右に示されている。時点ｔ１１で第１オペレーティングシステムOS＿A のスケジューラSCH ＿A は第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEの優先順位を最低優先順位に戻す。第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEの優先順位の変更を例えばタイマにより、何らかのイベント等により、配置することができる。
【０１０８】
ユーザは、例えば第２インタフェースU12 のどれかのキーを押す。従って、第１オペレーティングシステムOS＿A の第３スレッドTHA3は時点ｔ８で再び動作する番９０７になる。スケジューラSCH ＿A は第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEの優先順位を上げている。インタフェース・ブロック１６を介する伝送が必要である間、第１オペレーティングシステムOS＿A の第３スレッドTHA3が動作している。これに起因して割込みが生じ、アイドル・スレッドTHA ＿IDLEの優先順位がこの時点ｔ９においては第１オペレーティングシステムOS＿A の第３スレッドTHA3の優先順位より高いので、第１オペレーティングシステムOS＿A の第３スレッドTHA3の実行は割込みされ、第２オペレーティングシステムOS＿B の第１スレッドTHB1が動作する番９０８となる。第２オペレーティングシステムOS＿B の第１スレッドTHB1の実行後、第１オペレーティングシステムOS＿A の第３スレッドTHA3の実行が時点Ｔ１０から続く９０９。
【０１０９】
スケジューラSCH ＿A は、この例では時点ｔ１１で第１オペレーティングシステムOS＿A のアイドル・スレッドTHA ＿IDLEの優先順位を最低レベルに落とす。
【０１１０】
第１オペレーティングシステムOS＿A の第３スレッドTHA3の実行は、時点ｔ１２において、実行９１０されるように信号されている、より高位の優先順位スレッドがあるので、再び割込みされる。このスレッドは例えば第１オペレーティングシステムOS＿A の第２スレッドTHA2である。
【０１１１】
時点Ｔ１３において、より高位の優先順位のスレッド、実行９１１されるべく信号されている第１オペレーティングシステムOS＿A の第１スレッドTHA1、があるので、第１オペレーティングシステムOS＿A の第２スレッドTHA2の実行は割込みされる。
【０１１２】
第１オペレーティングシステムOS＿A の第１スレッドTHA1が時点Ｔ１４で実行され終わった後、第１オペレーティングシステムOS＿A の第２スレッドTHA2の実行が続く９１２。
【０１１３】
時点ｔ１５において第１オペレーティングシステムの第２スレッドTHA2の実行が終了する。同じ時点ｔ１５において、第２オペレーティングシステムの第１スレッドTHB1が動作可能になる。しかし、時点ｔ１５から第１オペレーティングシステムOS＿A の第３スレッドTHA3の実行が続く９１３。これは、時点ｔ９での先の挙動とは反対である。
【０１１４】
第１オペレーティングシステムOS＿A の第２スレッドTHA2が時点ｔ１５で実行され終わった後に第１オペレーティングシステムOS＿A の第３スレッドTHA3の実行が続く９１３。
【０１１５】
第２オペレーティングシステムOS＿B の第１スレッドTHB1が時点Ｔ１６で動作する番９１４になってインタフェース・ブロック１６を介する伝送のために動作する。
【０１１６】
表１は、割込みとの関係での１モードから他のモードへの移行を要約している。縦のラインの第１列はモードが変化したときのプロセッサ２のモードを示しており、横のラインの第１行はプロセッサ２が移行する先のモードを示している。表の他のボックスはそれぞれのモードの変化を引き起こす状態を示している。省略形は本明細書で前に使われたいろいろなモード及び割込みに使われている省略形を指している。
【表１】
2011216132.tif 000003
【０１１７】
次の例は、異なるオペレーティングシステムOS＿A 、OS＿B で実行されるスレッド間でのメッセージの伝送を説明する。図７ａ及び７ｂは、このメッセージ伝送メカニズムを簡略図として示している。メッセージ・ドライバMDは、メッセージ・キューMQ1 、MQ2 と同様に、オペレーティングシステムOS＿A 、OS＿B に共通である。第２オペレーティングシステムOS＿B の動作しているスレッドTHB1は、メッセージ・ドライバMDを呼び出し、例えばテキスト・メッセージなどの有利に伝送されるメッセージ、及びオブジェクトスレッドTHA1のシンボルをパラメータとして送信する（図７ａ、矢印７０１）。メッセージ・ドライバMDは、メッセージを第１メッセージ・キューMQ1 に転送して（矢印７０２）ソフトウェア割込み（SWI ）を有利に形成し、この割込みは、割込みが通常割込み IRQの代わりにソフトウェア割込みSWI により引き起こされたということを除いて、本明細書で前述した図６ｃに実質的に従って割込み処理を起動する。割込みハンドラを放置しておくと第１オペレーティングシステムのスケジューラSCH ＿A が起動し、優先順位により決定される段階でオブジェクトスレッドが実行される（矢印７０３）。このオブジェクトスレッドTHA1は、第１メッセージ・キューMQ1 の中のメッセージを読み出して（矢印７０４）例えば無線経路へのメッセージの伝送を行わせる。
【０１１８】
第１オペレーティングシステムOS＿A のアプリケーション・プログラムにおいて、遅延サービス・ルーチンDSR を実行することができ、これにより、例えば、次のようにしてメッセージを第２オペレーティングシステムOS＿B のスレッドに伝えることが可能である（図７ｂ）。第２オペレーティングシステムOS＿B において、動作するスレッドTHB2はメッセージ・キューを形成して、メッセージを待つ状態にとどまる（矢印７０５）。メッセージ・キューはソフトウェア割込みSWI を引き起こしており、割込みハンドラは、割込みの原因を調べて第２オペレーティングシステムOS＿B のスレッドTHB2が第１オペレーティングシステムOS＿A のスレッドTHA2からのメッセージを待っていると結論を出す。割込み処理後、第１オペレーティングシステムのスケジューラSCH ＿A （矢印７０６）が呼び出される。望まれたスレッドTHA2が動作する番になった後、それはメッセージを形成して、それを第２メッセージ・キューMQ2 に加える（矢印７０７）。更に、スレッドTHA2は遅延サービス・ルーチンDSR を形成する（矢印７０８）。第１オペレーティングシステムOS＿A のスレッドを動作させた後、この遅延サービス・ルーチンDSR が処理され、スレッドTHA2によって加えられた遅延サービス・ルーチンDSR は第２オペレーティングシステムOS＿B のスレッドのステータスを実行待ちに（レディ）変更する（矢印７０９）。第２オペレーティングシステムOS＿B のスケジューラSCH ＿B は、スレッドをそのスケジューリング原理に従って実行へ制御する。送信要求を送ったスレッドTHB2が動作しているとき（矢印７１０）、それは、メッセージ・ドライバMDの接続インタフェースを通して第２メッセージ・キューMQ2 からのメッセージを読む（矢印７１１）。
【０１１９】
実用的な実施形態では、メッセージ・キューMQ1 、MQ2 を優先順位に従って好適には配列することができる。このことは、高い優先順位の受信スレッドを伴うメッセージがキュー内で優先順位の比較的に低いメッセージを通り越すことを意味する。あるいは、この例で使われている第１MQ1 及び第２メッセージ・キューMQ2 より多数のメッセージ・キューが使われる。
【０１２０】
概要としては、本発明は２つ又はそれより多いオペレーティングシステムOS＿A 、OS＿B の動作を１つのプロセッサのもとで使用することを可能にするものである。目的は、共通部分をなるべく少なくすることであり、この通信装置１で従来技術のアプリケーションを動作させることもできる。オペレーティングシステムOS＿A 、OS＿B の共通部分は、主として、割込みハンドラからなっており、それにオペレーティングシステムOS＿A 、OS＿B との接続部が形成される。上記の例ではメッセージ・ドライバMDも共通である。
【０１２１】
実用的な埋込みシステム１では異なるオペレーティングシステムOS＿A 、OS＿B のために多数の共通割込みハンドラ（割込みサービス・ルーチン）を配列することがある。一度に１割込みあたりにこれらの割込みハンドラのうちの１つが、すなわち、例えば高速割込みFIQ のために１つ、通常割込みIRQ のために１つ、及びソフトウェア割込みSWI のために１つが、アクティブになることができる。従って、当該割込みのために整備されている他の１つの割込みハンドラをアクティブな割込みハンドラとなるように変更することが可能である。
【０１２２】
第２オペレーティングシステムOS＿B のスレッドTHB1、THB2、THB ＿IDLEのうちから、アイドル・スレッドTHA ＿IDLEあるいはスーパースレッドなどの、第１オペレーティングシステムOS＿A のスレッドが形成されるように、１プロセッサ２のシステムでの２つのオペレーティングシステムOS＿A 、OS＿B の動作を実現することもでき、その場合、第２オペレーティングシステムOS＿B に関連する動作するスレッドTHB1、THB2、THB ＿IDLEはこのスレッドで実行されるということに言及しておくべきである。対応的に、第１オペレーティングシステムOS＿A のスレッドTHA1、THA2、THA ＿IDLEのうちから、アイドル・スレッドTHB ＿IDLEあるいはスーパースレッド５１１などの、第2 オペレーティングシステムOS＿B の１つのスレッドを形成することが可能であり、その場合、第１オペレーティングシステムOS＿A に関連する動作するスレッドTHA1、THA2、THA ＿IDLEはこのスレッドで実行される。もう１つの選択肢は、第１オペレーティングシステムOS＿A の各スレッドTHA1、THA2、THA ＿IDLEを第２オペレーティングシステムOS＿B とは別のスーパー・スレッド５１１として形成することであり、その場合、第２オペレーティングシステムOS＿B は、それらを別々のスーパー・スレッド（図示せず）として取り扱う。本明細書で前述したように、これらのスーパー・スレッドの応答時間は通常は通常スレッドのそれより相当短い。最も厳しい応答時間要件を有するタスクでも、それらのために例えばタイマの割込みハンドラと関連して割込み処理を形成することによって動作させることができ、その場合、それらのタスクの実行に取りかかるときにスケジューリング機能は必ずしも使用されない。
【０１２３】
第１オペレーティングシステムOS＿A の各スレッドTHA1、THA2、THA ＿IDLEが第２オペレーティングシステムOS＿B の別々のスーパー・スレッド５１１として実現される場合には、もしそれが第１オペレーティングシステムOS＿A のいろいろなスレッドTHA1、THA2、THA ＿IDLE間でのデータ伝送を望むならば、第２オペレーティングシステムOS＿B に従う信号伝送が必要となる。対照的に、第１オペレーティングシステムOS＿A のスレッドTHA1、THA2、THA ＿IDLE１つのスーパー・スレッド５１１として実現されるときには、第１オペレーティングシステムOS＿A のメッセージ伝送方法を用いることによってデータ伝送をより簡単に実現することができる。
【０１２４】
本発明は上記実施形態のみに限定されるものではなくて、付随する請求項の範囲内で修正され得るものである。
【図１】
2011216132.tif 000004
【図２】
2011216132.tif 000005
【図３】
2011216132.tif 000006
【図４ａ】
2011216132.tif 000007
【図４ｂ】
2011216132.tif 000008
【図５】
2011216132.tif 000009
【図６ａ】
2011216132.tif 000010
【図６ｂ】
2011216132.tif 000011
【図６ｃ】
2011216132.tif 000012
【図６ｄ】
2011216132.tif 000013
【図６ｅ】
2011216132.tif 000014
【図６ｆ】
2011216132.tif 000015
【図６ｇ】
2011216132.tif 000016
【図６ｈ】
2011216132.tif 000017
【図６ｉ】
2011216132.tif 000018
【図７ａ】
2011216132.tif 000019
【図７ｂ】
2011216132.tif 000020
【図８】
2011216132.tif 000021
【図９】
2011216132.tif 000022
【図１０】
2011216132.tif 000023