JP2000235503A - オペレーティングシステム及び計算機 - Google Patents

オペレーティングシステム及び計算機

Info

Publication number
JP2000235503A
JP2000235503A JP11036814A JP3681499A JP2000235503A JP 2000235503 A JP2000235503 A JP 2000235503A JP 11036814 A JP11036814 A JP 11036814A JP 3681499 A JP3681499 A JP 3681499A JP 2000235503 A JP2000235503 A JP 2000235503A
Authority
JP
Japan
Prior art keywords
interrupt
storage device
endian
executed
processor
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP11036814A
Other languages
English (en)
Other versions
JP3659048B2 (ja
Inventor
Tadashi Kamiwaki
正 上脇
Masahiko Saito
雅彦 斉藤
Michio Morioka
道雄 森岡
Tomoaki Nakamura
智明 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP03681499A priority Critical patent/JP3659048B2/ja
Publication of JP2000235503A publication Critical patent/JP2000235503A/ja
Application granted granted Critical
Publication of JP3659048B2 publication Critical patent/JP3659048B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】エンディアンの異なる複数のオペレーティング
システムを同一計算機上で並行して実行する。 【解決手段】リトルエンディアンのオペレーティングシ
ステム実行中にビッグエンディアンが処理すべき割り込
みが入るとハードウェア依存部がビッグエンディアン宛
であることを判別し、CPUのエンディアンを切り替え
た後、ビッグエンディアンの割り込みハンドラにジャン
プする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】エンディアンの異なるオペレ
ーティングシステムを同一の計算機上で同時に実行す
る。
【0002】
【従来の技術】計算機によってメモリ内にある情報の配
列方法が異なっていることがある。この配列方法をエン
ディアンと呼ぶ。現在、エンディアンの種類には2つあ
る。1つはビッグエンディアンであり、このエンディア
ンでは、16進数で01234567の32ビットデータがある
とき、メモリには上位のバイトから順に小さいアドレス
に記憶される。すなわち、01が4n番地、23が4n
+1番地、45が4n+2番地、67が4n+3番地の
ようにである。一方、リトルエンディアンでは、これと
は逆に、下位のバイトから小さいアドレスに記憶され
る。前の例では、67が4n番地、45が4n+1番
地、23が4n+2番地、01が4n+3番地のように
である。
【0003】特開平8−278918 号公報,特開平8−31473
3 号公報,特開平8−234781 号公報に、エンディアンに
関する技術が開示されている。
【0004】特開平8−278918 号公報,特開平8−31473
3 号公報では、タスク毎にビッグエンディアンで実行さ
れるものとリトルエンディアンで実行するものに分けて
おり、タスクを切り替える時にエンディアンを切り替え
る技術が開示されている。
【0005】特開平8−234781 号公報には、単一の計算
機上でビッグエンディアンのオペレーティングシステム
(以下OS)とリトルエンディアンのOSの両方のOS
を実行する技術について開示されている。
【0006】
【発明が解決しようとする課題】事務処理用OSは、人
間とのインタフェースが非常に優れている。そのため、
工場の機械を制御するコンピュータにも使用したい、と
いう要求が高くなっている。
【0007】しかし、事務処理用OSは、人間を主な相
手としているので、高速な応答性の必要がない。リアル
タイム用のOSのように割り込み抑止区間を細かく区切
る方式は、OSの設計が難しいだけでなく、処理のスル
ープットが低下する。そこで、事務処理用OSには、長
い時間、割り込み抑止のまま処理を実行する部分が存在
することが多い。このままでは、リアルタイム制御には
使用できない。
【0008】そこで、事務処理用OSとリアルタイム用
OSを同一の計算機上で動作させ、優れたインタフェー
スとリアルタイム応答性を両立させる技術が開発されて
いる。
【0009】しかし、現在、主流となっているパーソナ
ルコンピュータ用事務処理OSはリトルエンディアンで
動作し、一方、リアルタイム処理用のオペレーティング
システムはビッグエンディアンで記述されているものが
多い。現在、上記の2つのOSを同一の計算機上で動作
させる技術では、エンディアンの異なるOSを同一計算
機上で動作させることはできていない。
【0010】特開平8−234781 号公報には、単一の計算
機上でビッグエンディアンOSとリトルエンディアンO
Sの両方のOSを実行する技術について開示されている
が、同時に実行するものではなく、立ち上げ時にどちら
かのエンディアンが選択されるものである。
【0011】特開平8−278918 号公報は、両エンディア
ンのタスクを実行できるが、オペレーティングシステム
は実行できない。ここで、タスクとオペレーティングシ
ステムでは、プログラムとして大きく異なることに注意
しなければならない。大きな違いの1つは、タスクのプ
ログラムには外部機器からの割り込み処理が含まれてい
ないことである。OSの重要な仕事の1つが割り込み処
理である。特開平8−278918号に記載の技術では、オペ
レーティングシステムが1つであることから、割り込み
処理プログラムは、このオペレーティングシステムのエ
ンディアンで実行されることとなる。
【0012】もう1つの違いは、タスクにはスケジュー
ラが含まれていないことである。スケジューラとはタス
クの実行順序を決定する手段であり、タスク自体には含
まれていない。2つのOSを同一計算機上で実行するに
は、この2つのスケジューラを協調させることが必要と
なるが、特開平8−278918 号公報の技術ではこのことが
考慮されていない。
【0013】
【課題を解決するための手段】本発明では異なったエン
ディアンで実行する複数のオペレーティングシステム
と、それぞれのオペレーティングシステム上で動作する
複数のタスクと、上記タスクの実行順序を管理するスケ
ジューリングプログラムとを記憶する記憶装置と、演算
を実行するプロセッサとを有する計算機システムであっ
て、プロセッサは、スケジューリングプログラムによっ
て決定されたオペレーティングシステムを実行するため
に、エンディアンを切り替える切替え部を有するよう構
成して上記目的を達成できるようにしている。
【0014】つまり、メモリに上位バイトから順に小さ
いアドレスに記憶するビッグエンディアンで実行される
オペレーティングシステムとメモリに下位バイトから順
に小さいアドレスに記憶するリトルエンディアンで実行
されるオペレーティングシステムとを同一のプロセッサ
で実行できるようにするために、スケジューリングプロ
グラムで決定されたオペレーティングシステムがビック
エンディアンの時は、メモリに上位バイトから順に小さ
いアドレスで書き込みまたは読み出しができるように
し、決定されたオペレーティングシステムがリトルエン
ディアンの時は、下位バイトから順に小さいアドレスで
書き込みまたは読み出しができるようにプロセッサにバ
イト単位で入換えを行う変換回路を備えるようにしてい
る。
【0015】また本発明では、異なったエンディアンで
実行可能な命令を格納した記憶装置と、異なったエンデ
ィアンで記憶装置にアクセスし、記憶装置から読み出し
た命令を実行する複数のプロセッサとを有する計算機シ
ステムであって、記憶装置は、複数のプロセッサが共通
にアクセスすると共にエンディアンによって次に実行す
べき命令が異なるようにした命令を有するよう構成して
いる。
【0016】つまり、ビッグエンディアンで実行するプ
ロセッサとリトルエンディアンで実行するプロセッサと
があり、これらのプロセッサが実行するプログラムが共
有メモリに格納されている場合には、それぞれのプログ
ラムが異なる。
【0017】つまり共有メモリにはビッグエンディアン
で実行されるプログラムとリトルエンディアンで実行さ
れるプログラムとが格納される。この場合、ビッグエン
ディアンを実行するプロセッサはビッグエンディアンで
実行されるプログラムを、リトルエンディアンを実行す
るプロセッサはリトルエンディアンで実行されるプログ
ラムをアクセスしなければならない。そこで、このメモ
リにはビッグエンディアンを実行するプロセッサとリト
ルエンディアンを実行するプロセッサとが共通にアクセ
スできる命令を格納する。そしてこの命令は、ビッグエ
ンディアンのプロセッサに対してビッグエンディアンの
プログラムへジャンプさせ、リトルエンディアンのプロ
セッサに対してはリトルエンディアンのプログラムへジ
ャンプさせるようにする。これにより、共有メモリを使
っても異なるエンディアンのプロセッサを実行すること
ができる。
【0018】また、上記のように共有メモリを使う場
合、プロセッサからアクセスされるアドレスを変換する
ようにしてもよい。つまり、リトルエンディアンのプロ
セッサからはリトルエンディアンで実行されるプログラ
ムに、ビッグエンディアンのプロセッサからはビッグエ
ンディアンで実行されるプログラムにアクセスできるよ
うにアドレス変換するようにする。
【0019】更に、別にレジスタを設けておき、このレ
ジスタに格納された値にしたがって、共有メモリへのア
クセスを決定するようにしてもよい。
【0020】
【発明の実施の形態】以下、本発明の説明を図1〜図4
1を用いて説明する。
【0021】図1は本発明の一実施例を示す。CPU2
1はエンディアンを動的に切り替え可能となっている。
この詳細については、図3で説明する。CPU21より
上に記述されているものは、このCPU21上で動作す
るソフトウェアである。31がリトルエンディアンで記
述されている事務処理用OS(TS−OS)のプログラム
である。32はビッグエンディアンで記述されているリ
アルタイムOS(RT−OS)のプログラムである。そ
れぞれのOS上で531〜532と533〜534のタ
スクが実行される。それぞれのタスクはそれぞれ実行さ
れるOSと同じエンディアンで記述されている。31や
32のOSはハードウェアの構造に依存しないプログラ
ムとなっており、ハードウェアに依存した部分は、33
のハードウェア依存部に入っている。このハードウェア
依存部は、TS−OS31とRT−OS32を切り替え
るOS切替プログラム521を持っている。OS切替え
プログラム521は、TS−OSのスケジューラ62と
RT−OSのスケジューラ17からの情報を元にOSを
切り替える。また、233の割り込みラインから割り込
みが入ると、OS切替えプログラム521内にある割り
込みハンドラが全ての割り込みを最初に処理する。この
割り込みハンドラで、割り込みがどちらのOSで処理す
べき割り込みか判別し、OSを切り替える。OS切替え
時に、5211のエンディアン切替えプログラムがCP
U21のエンディアンを切り替える。
【0022】図45は、図1の計算機の状態遷移の概要
を表している。561がTS−OSタスク実行中状態、
562がTS−OS割り込みハンドラ実行中状態であ
る。これら2つの状態にあるとき、TS−OS実行中で
あるという。一方、563はRT−OSタスク実行中状
態であり、564がRT−OS割り込みハンドラ実行中
状態である。これら2つの状態にあるとき、RT−OS
実行中であるという。TS−OSタスク実行中状態56
1のとき、TS−OSで処理すべき割り込みが受け付け
られると(571)、TS−OS割り込みハンドラ実行
中状態562に遷移する。ハンドラの実行が終了すると
(572)、TS−OSタスク実行中状態561に戻
る。TS−OSタスク実行中にRT−OSのタスクが実
行可能となると(573)、RT−OSタスク実行中状
態563に遷移する。RT−OSのタスクで実行可能な
ものがある限り、RT−OSのタスクが実行される。実
行可能なRT−OSのタスクがなくなってはじめて(5
74)、TS−OSタスク実行中状態(561)に遷移す
る。TS−OSタスク実行中状態561,TS−OS割
り込みハンドラ実行中状態562,RT−OSタスク実
行中状態563のときに、RT−OSで処理すべき割り
込みが受け付けられると(575,579,578)、
RT−OS割り込みハンドラ実行中状態564に遷移す
る。ハンドラの実行が終了し、実行可能なRT−OSの
タスクがなければ、割り込みが受け付けられたときの状
態に戻る(576,580)。実行可能なRT−OSタ
スクがあれば(577)、RT−OSタスク実行中状態
563に遷移するRT−OSのリアルタイム応答性を保
証するため、RT−OS実行中には、TS−OSの割り
込みはマスクされている。このため、RT−OSタスク
実行中状態563やRT−OS割り込みハンドラ実行中
状態564からTS−OSの割り込みにより、TS−O
S割り込みハンドラ実行中の状態に遷移することはな
い。
【0023】図2は計算機の構成を示したものである。
CPU21はメモリ22に格納されているプログラムを
実行する。メモリ22には、プログラムが使用するデー
タも格納されている。CPU21のメモリ22へのアク
セスは、バス23を通して行われる。CPU21は、バ
ス23を通して、ディスクコントローラ24にアクセス
して、ディスク25のデータの読み書きを行うことがで
きる。ディスクコントローラ24は、ディスクの読み書
きが終了したことを知らせるため、バス23を通して、
CPU21に割り込みを入れることができる。入出力部
26は、リアルタイム制御が必要な外部機器へ制御信号
を出力したり、外部機器からの信号を入力するために使
用される。261が入力線であり、262が出力線で
る。入力線261がオンになったときに、入出力部26
はバス23を通して、CPU21に割り込みを入れる。
【0024】図3は図2のCPU21の構成を示したも
のである。アドレスバス231,データバス232,割
り込みライン233は、図2のバス23の一部である。
このCPU21は、3つのレベルの割り込みを持ってい
る。割り込みライン233も、レベル毎に3本の線より
構成されている。プログラムカウンタ217は、次に実
行する命令が図2のメモリ22中に格納されているアド
レスを覚えている。このアドレスをアドレスバス231
に出力することにより、データバス232を通してメモ
リから命令を受け取る。411はバイトスワップ回路で
ある。バイトスワップ回路411に関しては、図46で
詳細に説明する。バイトスワップレジスタ412をセッ
トすると、バイトスワップ回路411が反転状態とな
る。これにより、CPU21からのデータがデータバス
232に反転して出力されるリトルエンディアンモード
となる。バイトスワップレジスタ412がリセットされ
ると、バイトスワップ回路411が直結状態となり、C
PU21がビッグエンディアンモードとなる。命令は、
演算器211により実行される。212は汎用レジスタ
であり、命令実行の際にオペランドとして使用されるこ
とがある。割り込みコントローラ216が割り込みライ
ン233から来る割り込み要求の制御を行う。ステータ
スレジスタ213は、CPU21の状態を表すレジスタ
であり、演算器211により読み書き可能である。ステ
ータスレジスタ213の中には、割り込み要求を抑止す
る働きをするビットがある。割り込みが抑止されている
ときには、割込み要求が来ても、その割り込みに対応す
る処理が行われない。割り込みの抑止が解除された時点
で割り込み処理が行われる。割り込み要求レジスタ21
5は、割り込みが入ったときに、その割り込みの種類が
割り込みコントローラ216によって書き込まれるレジス
タである。ベクタレジスタ214は、メモリ内の割り込
みベクタテーブルのアドレスが入るレジスタである。割
り込みが入ったときに、割り込みコントローラ216
が、ベクタレジスタ214のアドレスの割り込みベクト
ルテーブルを検索し、そこに書かれた割り込み処理プロ
グラムのアドレスをプログラムカウンタ217にセット
する。タイマ218は、設定した時間毎に、割り込みコ
ントローラ216宛に割り込みを要求する。
【0025】図46は、図3のバイトスワップ回路41
1の構成を示したものである。232が図3のデータバス
に相当する。データバス232は、バッファ591と5
92によって入力データバス2321と出力データバス
2324に分けられる。データバスの入力と出力は、5
93の書き込み制御線により切り替えられる。データバ
スのライン数は32本である。2321(31−24)
は2321の31ビット目から24ビット目までのライ
ンを示している。他も同様である。601〜604と6
11〜614はセレクタである。図3のバイトスワップ
レジスタ412から来ているバイトスワップライン412
1がオンになると、右側の入力ラインの値が出力ライン
に出力され、オフのときには左側の入力線が出力され
る。これにより、バイトスワップレジスタ412がセッ
トされているときには、入力データバス2321のバイ
ト順が反転して、2322の演算機入力ラインに出力さ
れ、2323の演算機出力線も反転して、出力データバ
ス2324に出力される。バイトスワップレジスタ41
2がセットされていないときには、そのままのバイト順
でデータが受け渡される。
【0026】図4は、図3の割り込み要求レジスタ21
5の詳細である。2151〜2153は、それぞれレベル1
〜レベル3の割り込みが入ったときにオンになるビット
である。
【0027】本実施例においては、ディスクコントロー
ラからの割り込みレベルを1、入出力部からの割り込み
レベルを2、タイマからの割り込みレベルを3としてい
る。図5は、図3のステータスレジスタ213の詳細で
ある。割り込み要求を抑止する働きをする割り込み抑止
ビット2131〜2132がある。割り込み抑止ビット
は、二進数で4つの割り込み要求レベルを表している。
割り込み抑止ビットが表すレベル以下の割り込み要求は
抑止される。また、割り込みが入ったときには、その割
り込みのレベルに割り込み抑止ビットが設定され、後か
ら入ってくる割り込みが設定されたレベル以下の場合に
は、その割り込みが抑止される。
【0028】図6は図2の入出力部26の詳細構成であ
る。この部分は、リアルタイム制御が必要な外部機器を
制御するために使用される。261が入力線であり、外
部機器の状態を取り込む。262が出力線でり、外部機
器に制御信号を出力する。入力線261は、オア回路2
64に接続されている。ここでは、オア回路264の出
力は、バスの割り込みライン233のレベル2の割り込
みラインに接続されている。入力線261のいずれかが
オンになると、CPUに割り込みが要求される。入力線
261は、ラッチ263にも入力されており、入力線2
61の状態が保存される。このラッチの内容は、アドレ
スバス231でアドレスを指定することにより、データ
バスより読み出し可能である。デコーダ265は、アド
レスバス231のアドレスをデコードして、読み書きす
るラッチを選択する。ラッチ266は出力線262の出力
を保持する。アドレスバス231にアドレスを設定する
ことにより、データバスの内容をラッチする。
【0029】図7は図2のディスクコントローラ24の
詳細構成を示したものである。セクタレジスタ242
は、読み書きするディスク上のセクタを指定するレジス
タである。データバッファ243には、ディスクに書き
込んだり、ディスクから読み出したデータが入る。セク
タレジスタ242,データバッファ243は、アドレス
をアドレスバス231に与えることにより、データバス
232からアクセス可能である。アドレスはデコーダ2
41により、デコードされる。アクセス終了通知線24
4,セクタ指定線245,データ線246は、図2のデ
ィスク25につながっている。アクセス終了通知線24
4は、ディスクのアクセスが終了した時点でオンとな
る。この線はバス23の割り込みライン233に接続さ
れており、オンになったときに割り込み要求がCPU2
1に送られる。この割り込みのレベルは1である。セク
タ指定線245は、アクセスするセクタをディスクに知
らせる線であり、データ線は、ディスクに対して読み書
きするデータを流す線である。図8は図2のメモリ22
の内容の詳細である。メモリ22は、3つの部分よりな
る。TS−OS31は、リアルタイム性が考慮されてい
ない事務処理用のOSのプログラム及びデータである。
RT−OS32は、リアルタイム処理を行うOSのプロ
グラム及びデータである。ハードウェア依存部33は、
OSからハードウェアに依存したプログラム及びデータ
を抽出したものである。近年のOSの多くは、ハードウ
ェア間の移植性を向上させるため、このようにハードウ
ェア依存部を独立させた構成になっている。本実施例で
は、この部分を改造することにより、2つのOSを切り
替えつつ並行に実行可能にしている。TS−OS31の
うち、311はTS−OSのプログラムである。312
は、ディスク25から読み込んだデータが入るバッファ
3131〜3132が接続されるバッファキューであ
る。RT−OS32のうちのランキュー321は、実行
可能状態にあるタスクのタスクテーブル3261〜32
62がつながるキューである。タスクテーブルは、図1
0でその詳細を説明する。スリープキュー322は、イ
ベント待ちでブロックしているタスクのタスクテーブル
3263〜3264がつながるキューである。リスケジ
ューリングフラグ323は、RT−OSのリスケジュー
リングが必要であることを表すフラグである。RT−O
Sプログラム325は、RT−OSのプログラムであ
る。このプログラムの詳細は後述するが、このプログラ
ムの中には、RT−OSのタスクの実行順序を決定する
スケジューラ62が含まれる。カーネルスタック327
1〜3274はタスクテーブル3261〜3264のタ
スクが使用するスタック領域である。ハードウェア依存
部33のうち、OS状態331は、TS−OS31とR
T−OS32のどちらのOSを実行していたかを記憶す
る領域である。割り込みテーブル332は、割り込みが
入った時にTS−OS31とRT−OS32、それぞ
れ、どのような処理を行うかを記したテーブルである。
割り込みテーブル332に関しては、図9で詳しく説明
する。SIRQL335は、TS−OS31への割り込み抑止を
ソフトウェア的に行うための変数である。TS−OS3
1は、リアルタイム処理を考慮していないため、割り込
みを長時間禁止したまま処理を行うことがありえる。こ
のような状況でも、RT−OS32が割り込みに応答で
きるようにしなければならない。このことは、TS−O
S31の割り込み禁止をハードウェア的にではなく、ソ
フトウェア的に行うことにより実現する。SIRQL335の値
以下のレベルの割り込みは、ハードウェアからは入る
が、ソフトウェア的に保留される。保留された割り込み
の情報は、保留キュー334に保存される。保留キュー
には、保留割り込みテーブル3411〜3412がつなが
る。336から339は、タイマ割り込みを2つのOS
に割り振るために使用する変数である。TS周期336
はTS−OS31が必要とするタイマ割り込みの周期で
ある。RT周期は、RT−OSが要求するタイマ割り込
み周期である。図3の218のようにハードウェアのタ
イマは1つであるが、これをソフトウェアにより、両O
Sにそれぞれ自分の固有のタイマがあるように見せる。
TS−OS退避領域344とRT−OS退避領域342
は、OSを切り替えたときに今まで実行していたOSの
レジスタの状態を退避するための領域である。TS−O
S退避領域344にはTS−OSのレジスタが退避さ
れ、RT−OS退避領域342にはRT−OSのレジス
タが退避される。Lベクタテーブル3431とBベクタ
テーブル3432は、割り込みが入った時にジャンプす
る先を設定したテーブルである。プロセッサがリトルエ
ンディアンで実行されているときと、ビッグエンディア
ンで実行されているときでは、割り込みハンドラのアド
レスが異なることと、ベクタテーブル自身を記述するエ
ンディアンも異なることから、それぞれのエンディアン
で別々のベクタテーブルを使用する。リトルエンディア
ンのときにはLベクタテーブル3431を使用し、ビッ
グエンディアンのときにはBベクタテーブル3432を
使用する。これらのベクタテーブルの内容に関しては図
52と図53で説明する。図3のベクタレジスタ214
は、このテーブルのアドレスが入るように設定する。共
有データ345は、TS−OS31とRT−OS32の両
方からアクセスされるデータである。ハードウェア依存
部プログラム340の詳細は後で述べる。
【0030】図52は、図8のLベクタテーブル343
1の内容の一例を示したものである。このベクタテーブ
ルは、CPU21がリトルエンディアンで動作している
ときに使用されることになるテーブルである。3431
1の列は割り込みレベル、34312の列は各割り込み
レベルに対応する割り込みハンドラのアドレスが記述さ
れている。割り込みハンドラのアドレスは、34313
〜34314のように通常、Lハンドラ関数のアドレス
を設定する。ただし、34315のタイマ割り込みのレ
ベルに関しては、両OS間でタイマを共有する必要上、
Lタイマハンドラという特別なハンドラを使用する。L
ハンドラのアルゴリズムは図40、Lタイマハンドラの
アルゴリズムは図49で説明する。
【0031】図9は図8の割り込みテーブル332の詳
細である。3321の列は割込みレベル、3322の列
はRT−OS33の割り込みに対するハンドラプログラ
ムのアドレス、3323の列はTS−OS32のハンド
ラプログラムのアドレスである。3324の行は割り込
みレベル1の割り込みが入った時、RT−OSには知ら
せる必要がないが、TS−OSではDISK_END関数を実行
することを示している。このように割り込みを片方のO
Sに通知することも可能であるし、3326行のように
両方のOSのハンドラを実行することも可能である。
【0032】図10は図8のタスクテーブル3261の
詳細である。Nextポインタ32611 は、タスクテーブルを
図8のランキュー321やスリープキュー322に接続
するためのリンク用ポインタである。優先度領域326
12はタスクを実行する優先度が入る領域である。RT
−OSが実行するタスクを選択するとき、優先度の最も
高いタスクを選ぶ。ブロックチャネル領域32613
は、タスクがあるイベントの発生を待ってブロックする
とき、そのイベントの種類が入る領域である。スタック
32614はタスクが使用するスタックのアドレスを記
憶する。
【0033】図11は図8の保留割り込みテーブル34
11の詳細である。Nextポインタ34111は保留割り
込みテーブルを保留キュー334に接続するためのリン
クポインタである。IRQL34112は、保留されている割り
込みのレベルを記憶する。図12はハードウェア依存部
プログラム340の1つであるRaiseIRQL 関数12であ
る。この関数は、TS−OS31が割り込みを抑止する
ために呼ぶ関数である。この関数は、図21のバッファ
リードのアルゴリズムの中などでバッファキューの排他
制御などに使用される。この関数は、RT−OSの割り
込みまで禁止してしまわないよう、実際にはハードウェ
アのステータスレジスタ213の割り込み抑止ビットを
書き換えず、メモリ22中のSIRQL335を書き変えるのみ
である(121)。
【0034】図13はハードウェア依存部プログラム3
40のプログラムの1つであるLowerIRQL 関数13であ
る。この関数は、TS−OS31が割り込みを抑止を解
除するために呼ぶ関数である。この関数は、図21のバ
ッファリードのアルゴリズムにあるように図12のRais
eIRQL 関数12と対で使用されることが多い。引数とし
て割り込みレベルを指定し、このレベルより大きい割り
込みが許可される。この関数も、ハードウェアのステー
タスレジスタ213の割り込み抑止ビットを書き換え
ず、メモリ22中のSIRQL335を書き変える(131)。
保留INT処理14で保留されている割り込みをTS−
OSに通知する。
【0035】図14は図13の保留INT処理14のフ
ローチャートである。この関数は、ハードウェア依存部
プログラム340の一部である。141で保留キューに
SIRQL335より割り込みレベルIRQLが高い割り込み保
留テーブルがあるか判定する。テーブルがない場合には
終了する(144)。ある場合には、その中でIRQL
が最大のテーブルを選択する(142)。その割り込み
レベルについて、割り込みテーブル332で指定されて
いるTS−OS用のハンドラ関数を実行する(14
3)。以上を繰り返す。
【0036】図40はTS−OS実行中、すなわち、プ
ロセッサがリトルエンディアンになっているときに、タ
イマ割り込み以外の割り込みが入ったときに最初に実行
されるLハンドラである。この関数のアドレスは、図5
2のLベクタテーブル3431に登録されている。この関数
もハードウェア依存部プログラム340のプログラムの
1つである。102でCPU21にある汎用レジスタ2
12などの内容をメモリ内のスタックに退避する。これ
は、割り込み前のプログラムが使用していたレジスタの
内容を割り込みハンドラが破壊するのを防ぐためであ
る。103で割り込みテーブル332を調べて、入った
割り込みのレベルのハンドラがRT−OSについて登録
されているか調べる。登録されている場合には、RTハ
ンドラ15を呼ぶことになるが、RTハンドラはRT−
OSのプログラムなので、呼ぶ前に、51によってOS
をRT−OSに切り替える。RT−OS切り替えのアル
ゴリズムは、図50で説明する。そして、RTハンドラ
からリターンした後には、52でOSをTS−OSに戻
す。TS−OS切り替え51のアルゴリズムは、図51
で説明する。105でTS−OS用にハンドラが登録さ
れているか調べる。登録されており、割り込みレベルが
SIRQL335以下(107)の場合は割り込みが保留される
(19)。割り込みレベルがSIRQLより大きかった
場合には、113でSIRQL335を割り込みのレベルに設定
してソフトウェア的な割り込み抑止をした後、114で
ステータスレジスタ213を割り込み前の値に戻して、
ハードウェアの割り込み抑止を解除する。14では、保
留INT関数14を呼び出して保留中の割り込みの処理
をする。これは、ここまでの処理の間により高いレベル
の割り込みが入り、しかも、その割り込みがTS−OS
宛だったときに、その処理が保留されている可能性があ
るためである。次に110で、割り込みテーブル332
に登録されているTS−OS用ハンドラの関数を呼び出
す。最後に102で退避したレジスタを回復する(11
1)。
【0037】図47はRT−OS実行中、すなわち、プ
ロセッサがビッグエンディアンになっているときに、タ
イマ割り込み以外の割り込みが入ったときに最初に実行
されるBハンドラである。この関数のアドレスは、図5
3のBベクタテーブル3432に登録されている。この関数
もハードウェア依存部プログラム340のプログラムの
1つである。731でCPU21にある汎用レジスタ2
12などの内容をメモリ内のスタックに退避する。これ
は、割り込み前のプログラムが使用していたレジスタの
内容を割り込みハンドラが破壊するのを防ぐためであ
る。732で割り込みテーブル332を調べて、入った
割り込みのレベルのハンドラがRT−OSについて登録
されているか調べる。登録されている場合には、RTハ
ンドラ15を呼ぶことになる。105でTS−OS用に
ハンドラが登録されているか調べる。登録されている場
合は割り込みが保留される(19)。これは、RT−O
Sの実行をTS−OSの実行によって阻害しないためで
ある。最後に731で退避したレジスタを回復する(7
36)。
【0038】図50は、OSをRT−OSに切り替える
RT−OS切替え70のアルゴリズムである。このプロ
グラムは、図1や図8のOS切替え521の中にある。
701で今まで実行していたTS−OSのレジスタの内容
を図8のTS−OS退避領域344に退避する。これ
は、後でTS−OSに戻ったときに処理を続行できるよ
うにするためである。702で図3のベクタレジスタ2
14をビッグエンディアン用のベクタテーブルであるB
ベクタテーブル3432のアドレスに設定する。703
で実行中のOSの種類を記憶する図8のOS状態331
にRT−OSであることを設定する。51で図41のプ
ロセッサをビッグエンディアンに設定する関数を実行す
る。705で図8のRT−OS退避領域342からレジ
スタを回復する。
【0039】図51は、OSをTS−OSに切り替える
TS−OS切替え71のアルゴリズムである。このプロ
グラムも、図1や図8のOS切替え521の中にある。
この関数は、図50のRT−OS切替えと対称的な動作
をする。711でレジスタの内容をRT−OS退避領域
342に退避する。712でベクタレジスタ214をL
ベクタテーブル3431のアドレスに設定する。713
でOS状態331にTS−OSを設定する。52で図4
2のプロセッサをリトルエンディアンに設定する関数を
実行する。715で図8のRT−OS退避領域344か
らレジスタを回復する。
【0040】図41は、図50の51のCPUをビッグ
エンディアンに設定するルーチンのアルゴリズムであ
る。この関数は、図1のエンディアン切替え5211の
中にある。511で図3のバイトスワップレジスタ41
2をリセットしている。これにより、図3のバイトスワ
ップ回路が直結の状態になりCPU21とデータバス2
32の間でデータの反転は行われなくなる。
【0041】図42は、図51の52のCPU21をリ
トルエンディアンに設定するルーチンである。この関数
は、図1のエンディアン切替え5211の中にある。図
41のルーチンでリセットしたバイトスワップレジスタ
をセットしている。
【0042】図15は図40と図47の中のRTハンド
ラ15のフローチャートである。このプログラムはRT
−OSプログラム325の1つであり、RT−OS宛の
割り込みの処理を行う。151でレジスタの内容をメモ
リ内のスタックに退避する。152で、割り込みテーブ
ル332に登録されているRT−OS用ハンドラの関数
を呼び出す。153でステータスレジスタ213の割り
込み抑止ビットを0にして、すべての割り込みを許可す
る。割り込み抑止ビットは、割り込みが入った時点で、
その割り込みのレベルに設定されている。154でリス
ケジューリングフラグ323を調べてリスケジューリン
グが必要か調べる。これは、152で実行した関数内な
どで、新たにタスクが実行可能になっている可能性があ
るからである。リスケジューリングの必要がある場合に
は、図16のスケジューラ17を実行する。最後に、退
避したレジスタを回復する。
【0043】図16は、図15のスケジューラ関数17
のフローチャートである。このプログラムは、図1のス
ケジューラ17に相当する。171で図8のランキュー
321にタスクテーブルが接続されているか調べている。
これは、実行可能なRT−OSタスクが存在するか調べ
ている。ない場合には、処理をTS−OSに戻すために
TS−OS切替えを実行する(172)。これは、図4
5の574の遷移に相当し、図1のスケジューラ17か
らOS切替え421への通知に相当する。ランキューに
タスクテーブルがある場合には、タスクテーブル中の優
先度(図10の優先度32611)が最も高いタスクテ
ーブルを選択する。174で現在実行中のタスクのレジ
スタを実行中のタスクのスタックに退避し、175で選
択したタスクのスタックからレジスタを回復する。これ
により、新たに選択されたタスクの処理が開始される。
【0044】図17は、図9で割り込みレベルの2が入
ったときにRT−OSで呼ばれるよう設定されている関
数の一例である。この関数は、図15の152で呼ばれ
ることになる。レベル2の割り込みは、図2の入出力部
26からの割り込みになっている。そこで、この割り込
みの処理は、制御機器から入力を待っているタスクを実
行可能にすることになる。181で、ブロックチャネル
32613が‘123’であるタスクテーブル3263〜
3264をスリープキュー322から探す。
【0045】182で、そのタスクテーブルをランキュ
ー321に入れる。新しいタスクが実行可能となったの
でリスケジューリングが必要となる。よって、183で
リスケジューリングフラグ323をオンにする。
【0046】図18は、図40の保留関数19のフロー
チャートである。この関数は、RT−OS実行中か、T
S−OSが割り込み抑止をしている間に入ったTS−O
S宛の割り込みを保留する。この関数は、ハードウェア
依存部プログラム340の1つである。191で新規に
保留割り込みテーブル3411〜3412のエントリを
割り当てる。192で保留割り込みテーブルのIRQL3411
2 に割り込みのレベルを入れる。193で保留割り込み
テーブルを保留キュー334に入れる。
【0047】図19は、RT−OSのタスクが、イベン
トの発生を待つときや、終了するときに呼ぶブロック関
数40である。この関数は、RT−OSプログラム32
5の1つである。401で、現在実行中のタスクのタス
クテーブルを図8のスリープキュー322に入れる。1
7で、図16のスケジューラを実行し、次に実行するタ
スクを選択する。実行するタスクがないときには、TS
−OSに処理を戻す。図20は、図9で割り込みレベル
の1が入ったときにTS−OSで呼ばれるよう設定され
ている関数の一例である。この関数は、図40の110
または図14の143で呼ばれることになり、TS−O
Sプログラム311の1つである。この割り込みは、デ
ィスク25の読み出しが終了したことをCPU21に知
らせる割り込みである。411で新規にバッファ313
1を獲得し、412でディスクコントローラ24のデー
タバッファ243からデータをコピーする。そして、バ
ッファ3131をバッファキュー312に接続する。
【0048】図21はTS−OSプログラム311の
内、割り込みを抑止しなければならないプログラムの例
である。バッファ3131からデータの読み出しを行
う。バッファ3131は、割り込みハンドラである図2
0のプログラム41からもアクセスされるので、割り込
みを抑止してアクセスする必要がある。そこで、RaiseI
RQL 関数12で割り込みを抑止した後、421でバッフ
ァ3131をバッファキュー312から外す。LowerIRQ
L 関数13で割り込みを許可して、422でバッファの
データをリードする。ただし、図12にある通り、Rais
eIRQL 関数12は、ソフトウェア的にTS−OS宛の割
り込みを抑止しているだけなので、RT−OS宛の割り
込みは受け付けられる。
【0049】図22は、RT−OSがタイマ割り込みの
周期を設定するときに呼ぶ関数のアルゴリズムである。
この関数は、ハードウェア依存部プログラム340の1
つである。ハードウェアのタイマ218が1つしかない
計算機においても、2つのOSに独立に周期タイマを提
供できるようになっている。431でリアルタイム周期
337に新しい周期を設定する。432でTS周期33
6とリアルタイム周期337を比較し、リアルタイム周
期が長い場合には、残時間338にリアルタイム周期3
37を設定し、434でTS周期336をハードウェア
のタイマ218に設定する。リアルタイム周期337がT
S周期336以下だった場合は、逆に、435でTS周
期336を残時間338に設定し、436でリアルタイ
ム周期337をタイマ218に設定する。最後に437
で半端時間437をクリアする。
【0050】図23は、TS−OSがタイマ割り込み周
期を設定するときに呼ぶ関数である。441でTS周期
に新しい周期を設定している以外は、図22と同じであ
る。図48は、TS−OS実行中、すなわち、プロセッ
サがリトルエンディアンになっているときに、タイマ割
り込みが入ったときに実行されるLタイマハンドラ関数
である。この関数のアドレスは、図52のLベクタテー
ブルの中の34315 に入っている。631でスタックへの
レジスタの退避を行う、図24のタイマハンドラ45を
呼び出す必要があるが、タイマハンドラ45は、RT−
OSとTS−OSで共通に使用される関数であるが、こ
こではビッグエンディアンで記述されていると仮定す
る。そこで51でプロセッサをビッグエンディアンに設
定した後に実行する。実行終了後は、エンディアンを5
2でリトルエンディアンに戻す。最後に退避したレジス
タを回復する。
【0051】図49は、図48と同様なハンドラである
がRT−OS実行中にタイマ割り込みが発生したときに
実行される関数である。RT−OSはビッグエンディア
ンで実行されるので図48のように途中でエンディアン
を切り替える必要がない。
【0052】図24は、タイマ割り込みが入った時の割
り込みハンドラである。この関数は、ハードウェア依存
部プログラム340の1つである。451でTS周期3
36とリアルタイム周期337を比較し、リアルタイム
周期337の方が長い場合には、TS周期小関数46を
実行し、そうでない場合には、RT周期小関数48を実
行する。
【0053】図25は、図24のTS周期小関数のアル
ゴリズムである。461で半端時間339が0か調べ
る。半端時間339はリアルタイム周期が終了した時点
でTS周期終了までの時間である。半端時間339が0
以外のときは、462で半端時間339をタイマ218
に設定する。リアルタイム周期は終了しているので、4
63でリアルタイムタイマハンドラ関数を呼ぶ。464
で残時間338に(リアルタイム周期337−TS周期
336)を設定する。残時間338は、次にタイマ割り
込みが発生したときにリアルタイム周期終了までの時間
である。465で半端時間339を0とする。461で
半端時間が0の場合は、466で残時間338を調べ
る。残時間338が0の場合は、リアルタイム周期が終
了しているので467でリアルタイムタイマハンドラ関
数を実行し、468で残時間をリアルタイム周期とす
る。このとき、TS周期も終了している473でTSタ
イマハンドラ関数を呼ぶ。466で残時間338がある
ときには、469で残時間338からTS周期を減じる。
470で、減じた結果をTS周期と比較し、短い場合に
は、471で半端時間339に(TS周期336−残時
間338)を設定し、残時間338をハードウェアのタ
イマ218に設定する。この場合もTS周期は終了して
いるので、473でTSタイマハンドラ関数を呼ぶ。た
だし、TSタイマハンドラはTS−OSの一部なので7
1でTS−OSにOSを切り替えた後に呼び、呼んだ後
に70でOSを元のRT−OSに戻す。
【0054】図26は、図24のRT周期小関数のアル
ゴリズムである。アルゴリズムは、RT−OSとTS−
OSの関係が逆転しているだけで、図25と同様であ
る。
【0055】図27は、本発明の別の実施例を示したも
のである。図1の構成では、1つのCPU上でリトルエ
ンディアンOSとビッグエンディアンOSを切り替えつ
つ実行していた。一方、図27では、CPUを2つ用い
ている。21−2のCPUはリトルエンディアンの事務
処理用OS(TS−OS)31を実行するためのもので
ある。このCPUのエンディアンはリトルエンディアン
に固定されている。
【0056】21−1のCPUは、ビッグエンディアン
のRT−OS32を実行する。このCPUのエンディア
ンはビッグエンディアンに固定されている。531〜5
32のタスクは、TS−OS31のタスクであり、53
3〜534はRT−OS32のタスクである。CPU2
1−1と21−2は共有メモリ80を共有している。図
では、OS31〜32やタスク531〜534が共有メ
モリ80の外に記述されているが、これらのプログラム
やデータが共有メモリの中に存在しても差し支えない。
【0057】図28は、マルチプロセッサ計算機の構成
の例である。21−1と21−2の2つのCPUがバス
23に接続されている点が異なっている。21−1のC
PUがRT−OSを専用に実行し、21−2のCPUが
TS−OSを専用に実行する。メモリは80−1のRO
Mと80−2のRAMに分かれている。両メモリとも両
CPUと共有されている。CPU21−1はビッグエン
ディアンモードで実行され、CPU21−2はリトルエ
ンディアンモードで実行される。レジスタ55は両CP
Uからアクセス可能である。このレジスタは、32ビッ
トであり、ビッグエンディアンのCPUから見て0x0000
0001の値を持っている。リトルエンディアンのCPU
は、レジスタの内容を反転して読むので0x01000000の値
を読み込む。両CPUは、リセット後、ROM80−1
内のプログラムを実行する。
【0058】図29は、図28のROM80−1の内容
である。図28のCPU21−1とCPU21−2は、
リセット後にこのROM80−1のアドレス0から実行
を開始する。図ではROMの内容はビッグエンディアン
のCPUが呼んだ場合の値となっている。0番地の0400
000Cは命令としては、現在実行中の命令のアドレス+0
x0Cの番地にジャンプしなさいという命令である。し
たがって、ビッグエンディアンのCPU21−1は、0
番地の命令を実行した次は、10番地の命令を実行す
る。一方、リトルエンディアンのCPU21−2は、同
じ0番地の命令を読み込んでも0c000004という命令を読
み込む。この命令はレジスタ0の内容をレジスタ12に
ロードする命令である。したがって、このCPUは、次
に4番地の命令を実行する。このようにすることによ
り、ビッグエンディアンのCPUとリトルエンディアン
のCPUで実行の経路を分けることが可能となる。4〜
C番地にはリトルエンディアンで意味を持つ命令が入っ
ており、この部分で分岐命令を実行してリトルエンディ
アンのOSへ分岐する。10番地以降には、ビッグエン
ディアンのOSのプログラムが入っている。
【0059】図30は、図28のROM22−1別の実
施例である。図28ではCPU21−2とCPU21−
2で同じROMの部分がアクセスされるようになってい
たが、図30では別々の部分がアクセスされる。23は
バスである。232はデータバスである。231はアド
レスバスである。アドレスバス231は最上位のアドレ
スライン以外、ROMのアドレスラインに直結されてい
る。234のラインは、ROMへの読み出しのリクエス
トがCPU21−2から来ているのかCPU21−1から来て
いるのかを示すCPU判別ラインである。CPU21−
2から来ているとき1となる。アドレスバスの最上位の
ライン231−1は、CPU判別ライン234と排他論
理輪回路235を通ってROM80−1のアドレスライ
ンに接続されている。
【0060】図31は、図30のROMを用いたときの
2つのCPUから見たメモリマップを示している。54
1がCPU21−1のメモリマップである。CPU21
−1からROMを見るとROM−0の領域5411がマ
ップの先頭に来ている。一方、CPU21−2から見る
とROM−1の領域5421が先頭に来る。ROM−0
の領域とROM−1の領域には、同じプログラムがRO
M−0にはビッグエンディアンのフォーマットで、RO
M−1の領域にはリトルエンディアンのフォーマットで
入っている。
【0061】図43は、図31のROM−0およびRO
M−1領域に入っているCPU21−1およびCPU2
1−2のリセット後実行されるプログラムである。56
1で図28のレジスタ55を読んで、その値が1である
か判断している。ビッグエンディアンのCPU21−1
は、このレジスタ55を読むと1を読み取るので563で
RT−OSにジャンプする。一方、リトルエンディアン
のCPU21−2は、レジスタ55の値が0x01000000に
読めるので、562でTS−OSにジャンプする。
【0062】図44は、図43でレジスタ55を使用し
た代わりにROM80−1上に記憶されたフラグを用い
た例である。図43とまったく同様の方法でビッグエン
ディアンとリトルエンディアンのCPUで動作を分離す
ることが可能である。
【0063】図32は、ステータスレジスタの構成例で
ある。図32のマルチプロセッサ計算機の2つのCPU
(21−1と21−2)は、図3のCPUと同様の構成
であるが、213のステータスレジスタの構成が、図5
の構成と異なっている。図5のステータスレジスタで
は、割り込み抑止ビット(2131〜2132)が2進
数の値を表しており、この値以下のレベルの割り込みが
抑止されていたが、図32のステータスレジスタは、割
り込みレベルそれぞれに対応した割り込み抑止ビット
(2134〜2136)が存在する。各ビットがセット
されているときに、それに対応したレベルの割り込みが
抑止される。
【0064】図33は、RT−OSを実行する図31の
CPU21−1のステータスレジスタ213−1の状態
である。このCPUは、2134−1のビットのみがセ
ットされており、レベル1の割り込みのみがマスクされ
ている。
【0065】図34は、TS−OSを実行する図31の
CPU21−2のステータスレジスタ213−2の状態
である。このCPUは、2135−2のビットのみがセ
ットされており、レベル2の割り込みのみがマスクされ
ている。
【0066】図35は、図31のメモリ22の内容であ
る。ベクタテーブルがCPU毎に2つ(343−1と3
43−2)設けられている。ベクタテーブルは、割り込
みが入ったときに実行するプログラムのアドレスが入っ
ているテーブルである。RT−OSを実行する図31の
CPU21−1が、ベクタテーブル343−1を使用
し、TS−OSを実行する図31のCPU21−2がベ
クタテーブル343−2を使用する。それぞれのCPU
の図3のベクタレジスタ214が、それぞれのベクタテ
ーブルのアドレスを指すことになる。ベクタテーブルに
は割り込みレベル毎に飛び先のアドレスが入っている。
343−1のベクタテーブルはレベル1の割り込みの飛
び先が0になっており、この割り込みは無効であること
を示している。レベル2とレベル3の飛び先は、いずれ
もRT−OS32のプログラム325の中の関数になっ
ている。343−2のベクタテーブルはレベル2の割り
込みの飛び先が0になっており、この割り込みは無効で
あることを示している。レベル1とレベル3の飛び先
は、いずれもTS−OS31のプログラム311の中の
関数になっている。図8にあったOS状態331,割込
みテーブル332,SIRQL335,保留キュー334,TS
−OS退避領域344,RT−OS退避領域342,タ
イマ関係の領域336〜339などは、単一のプロセッ
サで2つのOSを実行するために必要な機構のため、図
35では必要なくなっている。また、マルチプロセッサ
構成では、割込みを禁止したのみでは、共有データ34
7の排他制御ができないので、排他制御用のロック34
7が図35に加わっている。図36は、図31のマルチ
プロセッサ構成のときの図12のRaiseIRQL 関数12で
ある。本構成では、SIRQL335を書き換える代わりに、自
分のCPUのステータスレジスタ(213−1または2
13−2)をセットしている。
【0067】図37は、図31のマルチプロセッサ構成
のときの図13のLowerIRQL 関数13である。本構成で
は、自分のCPUのステータスレジスタ(213−1ま
たは213−2)をクリアするのみである。
【0068】図38は、図31のマルチプロセッサ構成
のときの図15のPIO_ON関数15である。図2の構成で
は、入ってきた割り込みを2つのOSに割り振る必要が
あったが、マルチプロセッサ構成では、各CPUが別々
のOSを実行しており、ステータスレジスタの設定に従
って、必要な割り込みの処理を行う。このため、割り込
みの処理は、通常のOSの割り込み処理と同じである。
102でレジスタの内容を退避した後、割り込み本体の
処理を行う。ここでは、図17で行っていた処理内容1
81〜183の処理を行っている。111で退避してお
いたレジスタの内容を回復し、162でリターンする。
【0069】図31のマルチプロセッサ構成のときのブ
ロック関数40は図19と同じである。ただし、スケジ
ューラ17は、図39のようになる。図16と比較する
と、図16ではランキューが空のときには、172でT
S−OSに処理を戻していたが、図39では、ループし
て待つ。
【0070】
【発明の効果】本発明によれば、エンディアンの異なる
オペレーティングシステムを切り替えつつ同一プロセッ
サ上で並行して実行可能である。
【図面の簡単な説明】
【図1】ソフトウェア構成を示した図である。
【図2】計算機の構成を示した図である。
【図3】CPUの構成を示した図である。
【図4】割込み要求レジスタの構成を示した図である。
【図5】ステータスレジスタの構成を示した図である。
【図6】入出力部の構成を示した図である。
【図7】ディスクコントローラの構成を示した図であ
る。
【図8】メモリの内容を説明するための図である。
【図9】割り込みテーブルの構成を示した図である。
【図10】タスクテーブルの構成を示した図である。
【図11】保留割り込みテーブルの構成を示した図であ
る。
【図12】割り込み抑止関数のアルゴリズムを示した図
である。
【図13】割り込み許可関数のアルゴリズムを示した図
である。
【図14】保留割り込みの許可関数のアルゴリズムを示
した図である。
【図15】RT−OSの割り込みハンドラを示した図で
ある。
【図16】スケジューラのアルゴリズムを示した図であ
る。
【図17】入出力機器からの割り込みハンドラを示した
図である。
【図18】割り込みを保留する関数を示した図である。
【図19】ブロック関数を示した図である。
【図20】ディスクアクセス終了割り込みハンドラを示
した図である。
【図21】TS−OSの割り込みを抑止するプログラム
を示した図である。
【図22】RT−OSのタイマ周期設定関数を示した図
である。
【図23】TS−OSのタイマ周期設定関数を示した図
である。
【図24】タイマ割り込みハンドラを示した図である。
【図25】タイマ割り込みでTS周期がリアルタイム周
期より短い場合の処理を示した図である。
【図26】タイマ割り込みでリアルタイム周期がTS周
期より短い場合の処理を示した図である。
【図27】ソフトウェア構成を示した図である。
【図28】マルチプロセッサ計算機の構成を示した図で
ある。
【図29】ROMの内容を説明するための図である。
【図30】ROMの構成を示した図である。
【図31】ROMのメモリマップを示した図である。
【図32】ステータスレジスタの構成を示した図であ
る。
【図33】TS−OS用CPUのステータスレジスタの
状態を示した図である。
【図34】RT−OS用CPUのステータスレジスタの
状態を示した図である。
【図35】メモリの内容を示した図である。
【図36】割り込み抑止関数のアルゴリズムを示した図
である。
【図37】割り込み許可関数のアルゴリズムを示した図
である。
【図38】RT−OSの割り込みハンドラを示した図で
ある。
【図39】ブロック関数を示した図である。
【図40】Lハンドラのフローチャートを示した図であ
る。
【図41】ビッグエンディアンモード設定のアルゴリズ
ムを示した図である。
【図42】リトルエンディアンモード設定のアルゴリズ
ムを示した図である。
【図43】リセット処理のアルゴリズムを示した図であ
る。
【図44】リセット処理の別のアルゴリズムを示した図
である。
【図45】計算機の状態遷移を示した図である。
【図46】バイトスワップ回路の構成を示した図であ
る。
【図47】Bハンドラのアルゴリズムを示した図であ
る。
【図48】Lタイマハンドラのアルゴリズムを示した図
である。
【図49】Bタイマハンドラのアルゴリズムを示した図
である。
【図50】RT−OS切替えのアルゴリズムを示した図
である。
【図51】TS−OS切替えのアルゴリズムを示した図
である。
【図52】Lベクタテーブルの内容を示した図である。
【図53】Bベクタテーブルの内容を示した図である。
【符号の説明】
17,62…スケジューラ、21…CPU、22…メモ
リ、23…バス、24…ディスクコントローラ、25…
ディスク、26…入出力部、31…TS−OS、32…
RT−OS、33…ハードウェア依存部、55…CPU
判別レジスタ、63…Lタイマハンドラ、64…Bタイ
マハンドラ、70…RT−OS切替え、71…TS−O
S切替え、73…Bハンドラ、80…共有メモリ、21
1…演算器、212…汎用レジスタ、213…ステータ
スレジスタ、214…ベクタレジスタ、215…割り込
み要求レジスタ、216…割り込みコントローラ、21
7…プログラムカウンタ、218…タイマ、231…ア
ドレスバス、232…データバス、233…割り込みラ
イン、241…デコーダ、242…セクタレジスタ、2
43…データバッファ、244…アクセス終了通知線、
245…セクタ指定線、246…データ線、261…入
力線、262…出力線、263…ラッチ、264…オア
回路、265…デコーダ、266…ラッチ、311…T
S−OSプログラム、312…バッファキュー、321
…ランキュー、322…スリープキュー、323…リス
ケジューリングフラグ、324…第2ハンドラアドレ
ス、325…RT−OSプログラム、331…OS状
態、332…割り込みテーブル、334…保留キュー、
335…SIRQL(ソフトウェアIRQL)、336
…TS周期、337…リアルタイム周期、338…残時
間、339…半端時間、340…ハードウェア依存部プ
ログラム、342…RT−OS退避領域、344…TS
−OS退避領域、345…共有データ、346…OS状
態カウンタ、347…ロック、411…バイトスワップ回
路、412…バイトスワップレジスタ、521…OS切
替えプログラム、531〜534…タスク、561…T
S−OSタスク実行中状態、562…TS−OS割り込
みハンドラ実行中状態、563…RT−OSタスク実行
中状態、564…RT−OS割り込みハンドラ実行中状
態、591〜592…バッファ、2131〜2136…
割り込み抑止ビット、3121〜3122…バッファ、32
61〜3264…タスクテーブル、3271〜3274…カ
ーネルスタック、3411〜3412…保留割り込みテ
ーブル、3431…Lベクタテーブル、3432…Bベ
クタテーブル、4121…バイトスワップライン、52
11…エンディアン切り替えプログラム。
フロントページの続き (72)発明者 森岡 道雄 茨城県日立市大みか町七丁目1番1号 株 式会社日立製作所日立研究所内 (72)発明者 中村 智明 茨城県日立市大みか町五丁目2番1号 株 式会社日立製作所大みか工場内 Fターム(参考) 5B060 AA20 AC11 DA09 KA01 KA02 MM01 5B098 AA10 BB05 EE06 GA02 GA04 GA08 GC01 GD03

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】異なったエンディアンで実行する複数のオ
    ペレーティングシステムと、上記それぞれのオペレーテ
    ィングシステム上で動作する複数のタスクと、上記タス
    クの実行順序を管理するスケジューリングプログラムと
    を記憶する記憶装置と、 演算を実行するプロセッサとを有する計算機システムで
    あって、 上記プロセッサは、上記スケジューリングプログラムに
    よって決定されたオペレーティングシステムを実行する
    ために、エンディアンを切り替える切替え部を有する計
    算機システム。
  2. 【請求項2】異なった複数のオペレーティングシステム
    と、上記それぞれのオペレーティングシステム上で動作
    する複数のタスクと、上記タスクの実行順序を管理する
    スケジューリングプログラムとを記憶する記憶装置と、 演算を実行するプロセッサとを有する計算機システムで
    あって、 上記プロセッサは、上記スケジューリングプログラムに
    よって決定されたオペレーティングシステムを実行する
    ために、一度に入力または出力する情報の配列を切り替
    える切替え部を有する計算機システム。
  3. 【請求項3】請求項2において、 上記記憶装置は、割り込みの種類と上記割り込みの処理
    を実行するオペレーティングシステムとを対応付けした
    テーブルを記憶し、 上記プロセッサは、割り込みを検出する割り込み検出部
    と、上記割り込み検出部によって検出された結果と上記
    記憶装置に記憶されたテーブルに基づいて、一度に入力
    または出力するデータの並びを切り替える切替え部を有
    する計算機システム。
  4. 【請求項4】異なったエンディアンで実行可能な命令を
    格納した記憶装置と、 異なったエンディアンで上記記憶装置にアクセスし、上
    記記憶装置から読み出した命令を実行する複数のプロセ
    ッサとを有する計算機システムであって、 上記記憶装置は、上記複数のプロセッサが共通にアクセ
    スすると共にエンディアンによって次に実行すべき命令
    が異なるようにした命令を有する計算機システム。
  5. 【請求項5】異なったエンディアンで実行可能な命令を
    格納した記憶装置と、 異なったエンディアンで上記記憶装置にアクセスし、上
    記記憶装置から読み出した命令を実行する複数のプロセ
    ッサとを有する計算機システムであって、 上記記憶装置は、アクセスするプロセッサのエンディア
    ンによってプロセッサからのアドレスを変換するアドレ
    ス変換器を有する計算機システム。
  6. 【請求項6】異なったエンディアンで実行される複数の
    オペレーティングシステムと、異なったエンディアンで
    実行可能な命令とを格納した記憶装置と、 異なったエンディアンで上記記憶装置にアクセスし、上
    記記憶装置から読み出した命令を実行する複数のプロセ
    ッサと、 上記複数のプロセッサが共通にアクセスするレジスタと
    を有し、 それぞれの上記プロセッサは、上記レジスタに格納され
    た値を読み出して実行すべきオペレーティングシステム
    を決定する計算機システム。
  7. 【請求項7】一度に読み出し又は書き込みが可能な情報
    の配列によって構成される複数の命令を記憶する記憶装
    置と、 上記記憶装置に記憶された情報の配列で読み出して実行
    する第1のプロセッサと、 上記記憶装置に記憶された情報の配列とは異なった配列
    で読み出して実行する第2のプロセッサとを有し、 上記記憶装置は、上記第1のプロセッサによって実行さ
    れる第1の命令と、上記第2のプロセッサによって実行
    される第2の命令と、上記第1のプロセッサと上記第2
    のプロセッサとが共通にアクセスでき、次に実行すべき
    命令が上記第1の命令か上記第2の命令かを決定する第
    3の命令とを記憶する計算機システム。
  8. 【請求項8】第1のオペレーティングシステムでタスク
    を実行している時に割り込みを検出し、上記割り込みの
    処理すべきオペレーティングシステムを決定し、上記決
    定されたオペレーティングシステムのエンディアンと、
    現在実行しているオペレーティングシステムのエンディ
    アンが相違する場合、上記オペレーティングシステムで
    タスクを実行しているプロセッサのエンディアンを切り
    替え、上記プロセッサのエンディアンの切り替えを行っ
    た後に、上記決定されたオペレーティングシステムを実
    行する計算機システムのエンディアン切替え方法。
JP03681499A 1999-02-16 1999-02-16 オペレーティングシステム及び計算機 Expired - Fee Related JP3659048B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP03681499A JP3659048B2 (ja) 1999-02-16 1999-02-16 オペレーティングシステム及び計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP03681499A JP3659048B2 (ja) 1999-02-16 1999-02-16 オペレーティングシステム及び計算機

Publications (2)

Publication Number Publication Date
JP2000235503A true JP2000235503A (ja) 2000-08-29
JP3659048B2 JP3659048B2 (ja) 2005-06-15

Family

ID=12480246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03681499A Expired - Fee Related JP3659048B2 (ja) 1999-02-16 1999-02-16 オペレーティングシステム及び計算機

Country Status (1)

Country Link
JP (1) JP3659048B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1703385A2 (en) 2005-03-18 2006-09-20 Fujitsu Limited Operating system switchover method
WO2010029794A1 (ja) * 2008-09-12 2010-03-18 株式会社ルネサステクノロジ データ処理装置及び半導体集積回路装置
JP2012215986A (ja) * 2011-03-31 2012-11-08 Canon Electronics Inc 周辺装置、画像読取装置および情報処理システム
US9176745B2 (en) 2011-03-23 2015-11-03 Canon Kabushiki Kaisha Peripheral device used while being connected to information processing apparatus
US9395999B2 (en) 2010-04-20 2016-07-19 Renesas Electronics Corporation Microcomputer having processor capable of changing endian based on endian information in memory

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1703385A2 (en) 2005-03-18 2006-09-20 Fujitsu Limited Operating system switchover method
EP1703385A3 (en) * 2005-03-18 2009-01-21 Fujitsu Limited Operating system switchover method
WO2010029794A1 (ja) * 2008-09-12 2010-03-18 株式会社ルネサステクノロジ データ処理装置及び半導体集積回路装置
JP2014179107A (ja) * 2008-09-12 2014-09-25 Renesas Electronics Corp 半導体集積回路装置
US9524237B2 (en) 2008-09-12 2016-12-20 Renesas Electronics Corporation Data processing device and semiconductor intergrated circuit device for a bi-endian system
US9395999B2 (en) 2010-04-20 2016-07-19 Renesas Electronics Corporation Microcomputer having processor capable of changing endian based on endian information in memory
US9176745B2 (en) 2011-03-23 2015-11-03 Canon Kabushiki Kaisha Peripheral device used while being connected to information processing apparatus
JP2012215986A (ja) * 2011-03-31 2012-11-08 Canon Electronics Inc 周辺装置、画像読取装置および情報処理システム

Also Published As

Publication number Publication date
JP3659048B2 (ja) 2005-06-15

Similar Documents

Publication Publication Date Title
US6314471B1 (en) Techniques for an interrupt free operating system
JP3546678B2 (ja) マルチos構成方法
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
US6697935B1 (en) Method and apparatus for selecting thread switch events in a multithreaded processor
US6105051A (en) Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6212544B1 (en) Altering thread priorities in a multithreaded processor
JP5323828B2 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
JP2005502119A (ja) 複数スレッドの同時実行に対応するコンピュータシステムにおける割込み処理の方法
WO1999021082A1 (en) Method and apparatus to force a thread switch in a multithreaded processor
JP2006216042A (ja) 割り込み処理のためのシステムおよび方法
EP1966693A1 (en) Data structure and management techniques for local user-level thread data
JPH0430053B2 (ja)
JP2007133456A (ja) 半導体装置
US7797515B2 (en) System and method for limiting the number of unit processors for which suspension of processing is prohibited
JP5289688B2 (ja) プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
JP5131269B2 (ja) マルチプロセッシングシステム
JP3659048B2 (ja) オペレーティングシステム及び計算機
US7516311B2 (en) Deterministic microcontroller context arrangement
JP2001216172A (ja) マルチos構成方法
US20060168427A1 (en) Deterministic microcontroller with context manager
JP4631442B2 (ja) プロセッサ
JP7331768B2 (ja) リアルタイム演算処理装置
JP7322797B2 (ja) リアルタイム演算処理装置
JPH044630B2 (ja)
JPH1196022A (ja) リアルタイム処理計算機

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040427

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040624

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050307

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090325

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090325

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100325

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110325

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110325

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees