JP3659048B2 - Operating system and computer - Google Patents

Operating system and computer Download PDF

Info

Publication number
JP3659048B2
JP3659048B2 JP03681499A JP3681499A JP3659048B2 JP 3659048 B2 JP3659048 B2 JP 3659048B2 JP 03681499 A JP03681499 A JP 03681499A JP 3681499 A JP3681499 A JP 3681499A JP 3659048 B2 JP3659048 B2 JP 3659048B2
Authority
JP
Japan
Prior art keywords
interrupt
endian
executed
register
cpu
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.)
Expired - Fee Related
Application number
JP03681499A
Other languages
Japanese (ja)
Other versions
JP2000235503A (en
Inventor
正 上脇
雅彦 斉藤
道雄 森岡
智明 中村
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/en
Publication of JP2000235503A publication Critical patent/JP2000235503A/en
Application granted granted Critical
Publication of JP3659048B2 publication Critical patent/JP3659048B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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−314733 号公報,特開平8−234781 号公報に、エンディアンに関する技術が開示されている。
【0004】
特開平8−278918 号公報,特開平8−314733 号公報では、タスク毎にビッグエンディアンで実行されるものとリトルエンディアンで実行するものに分けており、タスクを切り替える時にエンディアンを切り替える技術が開示されている。
【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とリトルエンディアンOSの両方の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〜図41を用いて説明する。
【0021】
図1は本発明の一実施例を示す。CPU21はエンディアンを動的に切り替え可能となっている。この詳細については、図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のエンディアン切替えプログラムがCPU21のエンディアンを切り替える。
【0022】
図45は、図1の計算機の状態遷移の概要を表している。561がTS−OSタスク実行中状態、562がTS−OS割り込みハンドラ実行中状態である。これら2つの状態にあるとき、TS−OS実行中であるという。一方、563は
RT−OSタスク実行中状態であり、564がRT−OS割り込みハンドラ実行中状態である。これら2つの状態にあるとき、RT−OS実行中であるという。TS−OSタスク実行中状態561のとき、TS−OSで処理すべき割り込みが受け付けられると(571)、TS−OS割り込みハンドラ実行中状態562に遷移する。ハンドラの実行が終了すると(572)、TS−OSタスク実行中状態561に戻る。TS−OSタスク実行中にRT−OSのタスクが実行可能となると(573)、RT−OSタスク実行中状態563に遷移する。RT−OSのタスクで実行可能なものがある限り、RT−OSのタスクが実行される。実行可能なRT−OSのタスクがなくなってはじめて(574)、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−OS割り込みハンドラ実行中の状態に遷移することはない。
【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が直結状態となり、CPU21がビッグエンディアンモードとなる。命令は、演算器211により実行される。212は汎用レジスタであり、命令実行の際にオペランドとして使用されることがある。割り込みコントローラ216が割り込みライン233から来る割り込み要求の制御を行う。ステータスレジスタ213は、CPU21の状態を表すレジスタであり、演算器211により読み書き可能である。ステータスレジスタ213の中には、割り込み要求を抑止する働きをするビットがある。割り込みが抑止されているときには、割込み要求が来ても、その割り込みに対応する処理が行われない。割り込みの抑止が解除された時点で割り込み処理が行われる。割り込み要求レジスタ215は、割り込みが入ったときに、その割り込みの種類が割り込みコントローラ216によって書き込まれるレジスタである。ベクタレジスタ214は、メモリ内の割り込みベクタテーブルのアドレスが入るレジスタである。割り込みが入ったときに、割り込みコントローラ216が、ベクタレジスタ214のアドレスの割り込みベクトルテーブルを検索し、そこに書かれた割り込み処理プログラムのアドレスをプログラムカウンタ217にセットする。タイマ218は、設定した時間毎に、割り込みコントローラ216宛に割り込みを要求する。
【0025】
図46は、図3のバイトスワップ回路411の構成を示したものである。232が図3のデータバスに相当する。データバス232は、バッファ591と592によって入力データバス2321と出力データバス2324に分けられる。データバスの入力と出力は、593の書き込み制御線により切り替えられる。データバスのライン数は32本である。2321(31−24)は2321の31ビット目から24ビット目までのラインを示している。他も同様である。601〜
604と611〜614はセレクタである。図3のバイトスワップレジスタ412から来ているバイトスワップライン4121がオンになると、右側の入力ラインの値が出力ラインに出力され、オフのときには左側の入力線が出力される。これにより、バイトスワップレジスタ412がセットされているときには、入力データバス2321のバイト順が反転して、2322の演算機入力ラインに出力され、2323の演算機出力線も反転して、出力データバス2324に出力される。バイトスワップレジスタ412がセットされていないときには、そのままのバイト順でデータが受け渡される。
【0026】
図4は、図3の割り込み要求レジスタ215の詳細である。2151〜2153は、それぞれレベル1〜レベル3の割り込みが入ったときにオンになるビットである。
【0027】
本実施例においては、ディスクコントローラからの割り込みレベルを1、入出力部からの割り込みレベルを2、タイマからの割り込みレベルを3としている。図5は、図3のステータスレジスタ213の詳細である。割り込み要求を抑止する働きをする割り込み抑止ビット2131〜2132がある。割り込み抑止ビットは、二進数で4つの割り込み要求レベルを表している。割り込み抑止ビットが表すレベル以下の割り込み要求は抑止される。また、割り込みが入ったときには、その割り込みのレベルに割り込み抑止ビットが設定され、後から入ってくる割り込みが設定されたレベル以下の場合には、その割り込みが抑止される。
【0028】
図6は図2の入出力部26の詳細構成である。この部分は、リアルタイム制御が必要な外部機器を制御するために使用される。261が入力線であり、外部機器の状態を取り込む。262が出力線でり、外部機器に制御信号を出力する。入力線261は、オア回路264に接続されている。ここでは、オア回路264の出力は、バスの割り込みライン233のレベル2の割り込みラインに接続されている。入力線261のいずれかがオンになると、CPUに割り込みが要求される。入力線261は、ラッチ263にも入力されており、入力線261の状態が保存される。このラッチの内容は、アドレスバス231でアドレスを指定することにより、データバスより読み出し可能である。デコーダ265は、アドレスバス231のアドレスをデコードして、読み書きするラッチを選択する。ラッチ266は出力線262の出力を保持する。アドレスバス231にアドレスを設定することにより、データバスの内容をラッチする。
【0029】
図7は図2のディスクコントローラ24の詳細構成を示したものである。セクタレジスタ242は、読み書きするディスク上のセクタを指定するレジスタである。データバッファ243には、ディスクに書き込んだり、ディスクから読み出したデータが入る。セクタレジスタ242,データバッファ243は、アドレスをアドレスバス231に与えることにより、データバス232からアクセス可能である。アドレスはデコーダ241により、デコードされる。アクセス終了通知線244,セクタ指定線245,データ線246は、図2のディスク25につながっている。アクセス終了通知線244は、ディスクのアクセスが終了した時点でオンとなる。この線はバス23の割り込みライン233に接続されており、オンになったときに割り込み要求がCPU21に送られる。この割り込みのレベルは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〜3262がつながるキューである。タスクテーブルは、図10でその詳細を説明する。スリープキュー322は、イベント待ちでブロックしているタスクのタスクテーブル3263〜3264がつながるキューである。リスケジューリングフラグ323は、RT−OSのリスケジューリングが必要であることを表すフラグである。RT−OSプログラム325は、RT−OSのプログラムである。このプログラムの詳細は後述するが、このプログラムの中には、RT−OSのタスクの実行順序を決定するスケジューラ62が含まれる。カーネルスタック3271〜3274はタスクテーブル3261〜3264のタスクが使用するスタック領域である。ハードウェア依存部33のうち、OS状態331は、TS−OS31とRT−OS32のどちらのOSを実行していたかを記憶する領域である。割り込みテーブル332は、割り込みが入った時に
TS−OS31とRT−OS32、それぞれ、どのような処理を行うかを記したテーブルである。割り込みテーブル332に関しては、図9で詳しく説明する。SIRQL335は、TS−OS31への割り込み抑止をソフトウェア的に行うための変数である。TS−OS31は、リアルタイム処理を考慮していないため、割り込みを長時間禁止したまま処理を行うことがありえる。このような状況でも、RT−OS32が割り込みに応答できるようにしなければならない。このことは、
TS−OS31の割り込み禁止をハードウェア的にではなく、ソフトウェア的に行うことにより実現する。SIRQL335の値以下のレベルの割り込みは、ハードウェアからは入るが、ソフトウェア的に保留される。保留された割り込みの情報は、保留キュー334に保存される。保留キューには、保留割り込みテーブル3411〜3412がつながる。336から339は、タイマ割り込みを2つのOSに割り振るために使用する変数である。TS周期336はTS−OS31が必要とするタイマ割り込みの周期である。RT周期は、RT−OSが要求するタイマ割り込み周期である。図3の218のようにハードウェアのタイマは1つであるが、これをソフトウェアにより、両OSにそれぞれ自分の固有のタイマがあるように見せる。TS−OS退避領域344とRT−OS退避領域342は、OSを切り替えたときに今まで実行していたOSのレジスタの状態を退避するための領域である。TS−OS退避領域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ベクタテーブル3431の内容の一例を示したものである。このベクタテーブルは、CPU21がリトルエンディアンで動作しているときに使用されることになるテーブルである。34311の列は割り込みレベル、
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関数を実行することを示している。このように割り込みを片方のOSに通知することも可能であるし、3326行のように両方のOSのハンドラを実行することも可能である。
【0032】
図10は図8のタスクテーブル3261の詳細である。Nextポインタ32611 は、タスクテーブルを図8のランキュー321やスリープキュー322に接続するためのリンク用ポインタである。優先度領域32612はタスクを実行する優先度が入る領域である。RT−OSが実行するタスクを選択するとき、優先度の最も高いタスクを選ぶ。ブロックチャネル領域32613は、タスクがあるイベントの発生を待ってブロックするとき、そのイベントの種類が入る領域である。スタック32614はタスクが使用するスタックのアドレスを記憶する。
【0033】
図11は図8の保留割り込みテーブル3411の詳細である。Nextポインタ
34111は保留割り込みテーブルを保留キュー334に接続するためのリンクポインタである。IRQL34112は、保留されている割り込みのレベルを記憶する。
図12はハードウェア依存部プログラム340の1つであるRaiseIRQL 関数
12である。この関数は、TS−OS31が割り込みを抑止するために呼ぶ関数である。この関数は、図21のバッファリードのアルゴリズムの中などでバッファキューの排他制御などに使用される。この関数は、RT−OSの割り込みまで禁止してしまわないよう、実際にはハードウェアのステータスレジスタ213の割り込み抑止ビットを書き換えず、メモリ22中のSIRQL335を書き変えるのみである(121)。
【0034】
図13はハードウェア依存部プログラム340のプログラムの1つである LowerIRQL 関数13である。この関数は、TS−OS31が割り込みを抑止を解除するために呼ぶ関数である。この関数は、図21のバッファリードのアルゴリズムにあるように図12のRaiseIRQL 関数12と対で使用されることが多い。引数として割り込みレベルを指定し、このレベルより大きい割り込みが許可される。この関数も、ハードウェアのステータスレジスタ213の割り込み抑止ビットを書き換えず、メモリ22中のSIRQL335を書き変える(131)。保留INT処理14で保留されている割り込みをTS−OSに通知する。
【0035】
図14は図13の保留INT処理14のフローチャートである。この関数は、ハードウェア依存部プログラム340の一部である。141で保留キューに SIRQL335より割り込みレベルIRQLが高い割り込み保留テーブルがあるか判定する。テーブルがない場合には終了する(144)。ある場合には、その中で
IRQLが最大のテーブルを選択する(142)。その割り込みレベルについて、割り込みテーブル332で指定されているTS−OS用のハンドラ関数を実行する(143)。以上を繰り返す。
【0036】
図40はTS−OS実行中、すなわち、プロセッサがリトルエンディアンになっているときに、タイマ割り込み以外の割り込みが入ったときに最初に実行されるLハンドラである。この関数のアドレスは、図52のLベクタテーブル3431に登録されている。この関数もハードウェア依存部プログラム340のプログラムの1つである。102でCPU21にある汎用レジスタ212などの内容をメモリ内のスタックに退避する。これは、割り込み前のプログラムが使用していたレジスタの内容を割り込みハンドラが破壊するのを防ぐためである。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で退避したレジスタを回復する(111)。
【0037】
図47はRT−OS実行中、すなわち、プロセッサがビッグエンディアンになっているときに、タイマ割り込み以外の割り込みが入ったときに最初に実行されるBハンドラである。この関数のアドレスは、図53のBベクタテーブル3432に登録されている。この関数もハードウェア依存部プログラム340のプログラムの1つである。731でCPU21にある汎用レジスタ212などの内容をメモリ内のスタックに退避する。これは、割り込み前のプログラムが使用していたレジスタの内容を割り込みハンドラが破壊するのを防ぐためである。732で割り込みテーブル332を調べて、入った割り込みのレベルのハンドラがRT−OSについて登録されているか調べる。登録されている場合には、RTハンドラ15を呼ぶことになる。105でTS−OS用にハンドラが登録されているか調べる。登録されている場合は割り込みが保留される(19)。これは、RT−OSの実行をTS−OSの実行によって阻害しないためである。最後に731で退避したレジスタを回復する(736)。
【0038】
図50は、OSをRT−OSに切り替えるRT−OS切替え70のアルゴリズムである。このプログラムは、図1や図8のOS切替え521の中にある。701で今まで実行していたTS−OSのレジスタの内容を図8のTS−OS退避領域344に退避する。これは、後でTS−OSに戻ったときに処理を続行できるようにするためである。702で図3のベクタレジスタ214をビッグエンディアン用のベクタテーブルである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で図42のプロセッサをリトルエンディアンに設定する関数を実行する。715で図8のRT−OS退避領域344からレジスタを回復する。
【0040】
図41は、図50の51のCPUをビッグエンディアンに設定するルーチンのアルゴリズムである。この関数は、図1のエンディアン切替え5211の中にある。511で図3のバイトスワップレジスタ412をリセットしている。これにより、図3のバイトスワップ回路が直結の状態になりCPU21とデータバス
232の間でデータの反転は行われなくなる。
【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)。これは、図45の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実行中か、TS−OSが割り込み抑止をしている間に入ったTS−OS宛の割り込みを保留する。この関数は、ハードウェア依存部プログラム340の1つである。191で新規に保留割り込みテーブル3411〜3412のエントリを割り当てる。192で保留割り込みテーブルのIRQL34112 に割り込みのレベルを入れる。193で保留割り込みテーブルを保留キュー334に入れる。
【0047】
図19は、RT−OSのタスクが、イベントの発生を待つときや、終了するときに呼ぶブロック関数40である。この関数は、RT−OSプログラム325の1つである。401で、現在実行中のタスクのタスクテーブルを図8のスリープキュー322に入れる。17で、図16のスケジューラを実行し、次に実行するタスクを選択する。実行するタスクがないときには、TS−OSに処理を戻す。図20は、図9で割り込みレベルの1が入ったときにTS−OSで呼ばれるよう設定されている関数の一例である。この関数は、図40の110または図14の143で呼ばれることになり、TS−OSプログラム311の1つである。この割り込みは、ディスク25の読み出しが終了したことをCPU21に知らせる割り込みである。411で新規にバッファ3131を獲得し、412でディスクコントローラ24のデータバッファ243からデータをコピーする。そして、バッファ3131をバッファキュー312に接続する。
【0048】
図21はTS−OSプログラム311の内、割り込みを抑止しなければならないプログラムの例である。バッファ3131からデータの読み出しを行う。バッファ3131は、割り込みハンドラである図20のプログラム41からもアクセスされるので、割り込みを抑止してアクセスする必要がある。そこで、 RaiseIRQL 関数12で割り込みを抑止した後、421でバッファ3131をバッファキュー312から外す。LowerIRQL 関数13で割り込みを許可して、422でバッファのデータをリードする。ただし、図12にある通り、RaiseIRQL 関数12は、ソフトウェア的にTS−OS宛の割り込みを抑止しているだけなので、RT−OS宛の割り込みは受け付けられる。
【0049】
図22は、RT−OSがタイマ割り込みの周期を設定するときに呼ぶ関数のアルゴリズムである。この関数は、ハードウェア依存部プログラム340の1つである。ハードウェアのタイマ218が1つしかない計算機においても、2つの
OSに独立に周期タイマを提供できるようになっている。431でリアルタイム周期337に新しい周期を設定する。432でTS周期336とリアルタイム周期337を比較し、リアルタイム周期が長い場合には、残時間338にリアルタイム周期337を設定し、434でTS周期336をハードウェアのタイマ218に設定する。リアルタイム周期337がTS周期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でプロセッサをビッグエンディアンに設定した後に実行する。実行終了後は、エンディアンを52でリトルエンディアンに戻す。最後に退避したレジスタを回復する。
【0051】
図49は、図48と同様なハンドラであるがRT−OS実行中にタイマ割り込みが発生したときに実行される関数である。RT−OSはビッグエンディアンで実行されるので図48のように途中でエンディアンを切り替える必要がない。
【0052】
図24は、タイマ割り込みが入った時の割り込みハンドラである。この関数は、ハードウェア依存部プログラム340の1つである。451でTS周期336とリアルタイム周期337を比較し、リアルタイム周期337の方が長い場合には、TS周期小関数46を実行し、そうでない場合には、RT周期小関数48を実行する。
【0053】
図25は、図24のTS周期小関数のアルゴリズムである。461で半端時間339が0か調べる。半端時間339はリアルタイム周期が終了した時点でTS周期終了までの時間である。半端時間339が0以外のときは、462で半端時間339をタイマ218に設定する。リアルタイム周期は終了しているので、
463でリアルタイムタイマハンドラ関数を呼ぶ。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の一部なので71で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〜532のタスクは、TS−OS31のタスクであり、533〜534はRT−OS32のタスクである。CPU21−1と21−2は共有メモリ80を共有している。図では、OS31〜32やタスク531〜534が共有メモリ80の外に記述されているが、これらのプログラムやデータが共有メモリの中に存在しても差し支えない。
【0057】
図28は、マルチプロセッサ計算機の構成の例である。21−1と21−2の2つのCPUがバス23に接続されている点が異なっている。21−1のCPUがRT−OSを専用に実行し、21−2のCPUがTS−OSを専用に実行する。メモリは80−1のROMと80−2のRAMに分かれている。両メモリとも両CPUと共有されている。CPU21−1はビッグエンディアンモードで実行され、CPU21−2はリトルエンディアンモードで実行される。レジスタ55は両CPUからアクセス可能である。このレジスタは、32ビットであり、ビッグエンディアンのCPUから見て0x00000001の値を持っている。リトルエンディアンのCPUは、レジスタの内容を反転して読むので0x01000000の値を読み込む。両CPUは、リセット後、ROM80−1内のプログラムを実行する。
【0058】
図29は、図28のROM80−1の内容である。図28のCPU21−1とCPU21−2は、リセット後にこのROM80−1のアドレス0から実行を開始する。図ではROMの内容はビッグエンディアンのCPUが呼んだ場合の値となっている。0番地の0400000Cは命令としては、現在実行中の命令のアドレス+0x0Cの番地にジャンプしなさいという命令である。したがって、ビッグエンディアンの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から見たメモリマップを示している。541がCPU21−1のメモリマップである。CPU21−1からROMを見るとROM−0の領域5411がマップの先頭に来ている。一方、CPU21−2から見るとROM−1の領域5421が先頭に来る。ROM−0の領域とROM−1の領域には、同じプログラムがROM−0にはビッグエンディアンのフォーマットで、ROM−1の領域にはリトルエンディアンのフォーマットで入っている。
【0061】
図43は、図31のROM−0およびROM−1領域に入っているCPU21−1およびCPU21−2のリセット後実行されるプログラムである。561で図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と343−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では必要なくなっている。また、マルチプロセッサ構成では、割込みを禁止したのみでは、共有データ347の排他制御ができないので、排他制御用のロック347が図35に加わっている。
図36は、図31のマルチプロセッサ構成のときの図12のRaiseIRQL 関数
12である。本構成では、SIRQL335を書き換える代わりに、自分のCPUのステータスレジスタ(213−1または213−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で行っていた処理内容181〜183の処理を行っている。111で退避しておいたレジスタの内容を回復し、162でリターンする。
【0069】
図31のマルチプロセッサ構成のときのブロック関数40は図19と同じである。ただし、スケジューラ17は、図39のようになる。図16と比較すると、図16ではランキューが空のときには、172でTS−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−OS切替え、73…Bハンドラ、80…共有メモリ、211…演算器、212…汎用レジスタ、213…ステータスレジスタ、214…ベクタレジスタ、215…割り込み要求レジスタ、216…割り込みコントローラ、217…プログラムカウンタ、218…タイマ、231…アドレスバス、232…データバス、233…割り込みライン、241…デコーダ、242…セクタレジスタ、243…データバッファ、244…アクセス終了通知線、245…セクタ指定線、246…データ線、261…入力線、262…出力線、263…ラッチ、
264…オア回路、265…デコーダ、266…ラッチ、311…TS−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…TS−OSタスク実行中状態、562…TS−OS割り込みハンドラ実行中状態、563…RT−OSタスク実行中状態、564…RT−OS割り込みハンドラ実行中状態、591〜592…バッファ、2131〜2136…割り込み抑止ビット、3121〜3122…バッファ、3261〜3264…タスクテーブル、3271〜3274…カーネルスタック、3411〜3412…保留割り込みテーブル、3431…Lベクタテーブル、3432…Bベクタテーブル、4121…バイトスワップライン、5211…エンディアン切り替えプログラム。
[0001]
BACKGROUND OF THE INVENTION
Run different endian operating systems simultaneously on the same computer.
[0002]
[Prior art]
The arrangement method of information in the memory may differ depending on the computer. This arrangement method is called endian. There are currently two endian types. One is big endian. In this endian, when there is 32-bit data of 01234567 in hexadecimal, it is stored in the memory in ascending order from the upper byte. That is, 01 is 4n address, 23 is 4n + 1 address, 45 is 4n + 2 address, 67 is 4n + 3 address, and so on. On the other hand, in the little endian, conversely, it is stored in the lower address from the lower byte. In the previous example,
67 is address 4n, 45 is address 4n + 1, 23 is address 4n + 2, and 01 is address 4n + 3.
[0003]
Japanese Patent Application Laid-Open Nos. 8-278918, 8-314733, and 8-234781 disclose techniques related to endianness.
[0004]
JP-A-8-278918 and JP-A-8-314733 disclose a technique for switching endian when switching tasks, which is divided into tasks executed in big endian and tasks executed in little endian for each task. ing.
[0005]
Japanese Patent Laid-Open No. 8-234781 discloses a technique for executing both a big endian operating system (hereinafter referred to as OS) and a little endian OS on a single computer.
[0006]
[Problems to be solved by the invention]
The business processing OS has a very good human interface. For this reason, there is an increasing demand for use in computers that control factory machines.
[0007]
However, since the paperwork OS is mainly human, there is no need for high-speed response. The method of finely dividing the interrupt suppression section as in the real-time OS not only makes the OS design difficult, but also reduces the processing throughput. Thus, there are many portions of the business processing OS that perform processing for a long time without interrupt interruption. In this state, it cannot be used for real-time control.
[0008]
In view of this, a technology has been developed in which a business processing OS and a real-time OS are operated on the same computer to achieve both an excellent interface and real-time responsiveness.
[0009]
However, at present, the mainstream business processing OS for personal computers operates in little endian, while the operating system for real time processing is often written in big endian. Currently, the above two
In the technology for operating the OS on the same computer, OSs with different endians cannot be operated on the same computer.
[0010]
Japanese Patent Application Laid-Open No. 8-234781 discloses a technique for executing both a big endian OS and a little endian OS on a single computer. The endian is selected.
[0011]
JP-A-8-278918 can execute both endian tasks, but cannot execute an operating system. Here, it should be noted that tasks and operating systems differ greatly as programs. One of the major differences is that the task program does not include interrupt processing from an external device. One of the important tasks of the OS is interrupt processing. In the technique described in Japanese Patent Laid-Open No. 8-278918, since there is one operating system, the interrupt processing program is executed in the endian of this operating system.
[0012]
Another difference is that the task does not include a scheduler. The scheduler is a means for determining the task execution order and is not included in the task itself. In order to execute two OSs on the same computer, it is necessary to coordinate these two schedulers, but this is not taken into consideration in the technique of Japanese Patent Application Laid-Open No. 8-278918.
[0013]
[Means for Solving the Problems]
In the present invention, a storage device that stores a plurality of operating systems that are executed in different endians, a plurality of tasks that operate on the respective operating systems, and a scheduling program that manages the execution order of the tasks, and a calculation are executed. In order to execute the operating system determined by the scheduling program, the processor is configured to have a switching unit for switching endian so as to achieve the above object.
[0014]
In other words, the same processor can be used to execute an operating system that is executed in big endian that stores the memory in ascending order starting from the upper byte and a little endian that is stored in the memory starting from the lower byte. Therefore, when the operating system determined by the scheduling program is big endian, it is possible to write to or read from memory in ascending order from the upper byte, and when the determined operating system is little endian, the lower end The processor is provided with a conversion circuit for exchanging in units of bytes so that writing or reading can be performed in ascending order from the byte.
[0015]
According to the present invention, there is provided a computer system having a storage device storing instructions that can be executed in different endians, and a plurality of processors that access the storage device in different endians and execute instructions read from the storage devices. The storage device is configured to have an instruction that is accessed in common by a plurality of processors and that an instruction to be executed next differs depending on the endian.
[0016]
That is, when there are a processor that is executed in big endian and a processor that is executed in little endian, and the programs executed by these processors are stored in the shared memory, the respective programs are different.
[0017]
That is, the shared memory stores a program executed in big endian and a program executed in little endian. In this case, a processor executing big endian must access a program executed in big endian, and a processor executing little endian must access a program executed in little endian. Therefore, an instruction that can be commonly accessed by a processor that executes big endian and a processor that executes little endian is stored in this memory. This instruction causes a big endian processor to jump to a big endian program and a little endian processor to jump to a little endian program. As a result, different endian processors can be executed using the shared memory.
[0018]
Further, when the shared memory is used as described above, an address accessed from the processor may be converted. That is, address conversion is performed so that a little endian processor can access a program executed in little endian, and a big endian processor can access a program executed in big endian.
[0019]
Further, a separate register may be provided, and access to the shared memory may be determined according to the value stored in this register.
[0020]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, the present invention will be described with reference to FIGS.
[0021]
FIG. 1 shows an embodiment of the present invention. The CPU 21 can dynamically switch the endian. This will be described in detail with reference to FIG. What is described above the CPU 21 is software that operates on the CPU 21. Reference numeral 31 denotes a business processing OS (TS-OS) program written in little endian. Reference numeral 32 denotes a real-time OS (RT-OS) program written in big endian. 531 to 532 and 533 on each OS
534 tasks are executed. Each task is described in the same endian as the OS to be executed. The OSs 31 and 32 are programs that do not depend on the hardware structure, and the hardware dependent part is included in the 33 hardware dependent part. This hardware-dependent unit is connected to TS-OS 31.
An OS switching program 521 for switching the RT-OS 32 is provided. The OS switching program 521 switches the OS based on information from the scheduler 62 of the TS-OS and the scheduler 17 of the RT-OS. When an interrupt is input from the interrupt line 233, the interrupt handler in the OS switching program 521 processes all interrupts first. This interrupt handler determines which OS the interrupt is to be processed by, and switches the OS. When switching OS
An endian switching program 5211 switches the endian of the CPU 21.
[0022]
FIG. 45 shows an overview of the state transition of the computer of FIG. Reference numeral 561 denotes a TS-OS task executing state, and reference numeral 562 denotes a TS-OS interrupt handler executing state. When in these two states, TS-OS is being executed. On the other hand, 563
An RT-OS task is being executed, and 564 is an RT-OS interrupt handler executing state. When in these two states, the RT-OS is being executed. In the TS-OS task executing state 561, when an interrupt to be processed by the TS-OS is accepted (571), the state transits to the TS-OS interrupt handler executing state 562. When the execution of the handler is completed (572), the process returns to the TS-OS task executing state 561. When the RT-OS task becomes executable during execution of the TS-OS task (573), the state transits to the RT-OS task executing state 563. As long as there is an RT-OS task that can be executed, the RT-OS task is executed. The transition to the TS-OS task executing state (561) is made only when there is no executable RT-OS task (574). When an interrupt to be processed by the RT-OS is accepted in the TS-OS task executing state 561, the TS-OS interrupt handler executing state 562, and the RT-OS task executing state 563 (575, 579,
578), and transits to the RT-OS interrupt handler executing state 564. If the execution of the handler is completed and there is no executable RT-OS task, the state returns to the state when the interrupt is accepted (576, 580). If there is an executable RT-OS task (577), in order to guarantee the real-time responsiveness of the RT-OS transitioning to the RT-OS task executing state 563, an interrupt of the TS-OS is executed during the RT-OS execution. Is masked. Therefore, the TS-OS interrupt from the RT-OS task executing state 563 and the RT-OS interrupt handler executing state 564 causes
There is no transition to the state during execution of the TS-OS interrupt handler.
[0023]
FIG. 2 shows the configuration of the computer. The CPU 21 executes a program stored in the memory 22. The memory 22 also stores data used by the program. The CPU 21 accesses the memory 22 through the bus 23. The CPU 21 can access the disk controller 24 through the bus 23 to read / write data on the disk 25. The disk controller 24 can interrupt the CPU 21 through the bus 23 to notify that the disk read / write has been completed. The input / output unit 26 is used to output a control signal to an external device that requires real-time control or to input a signal from the external device. 261 is an input line and 262 is an output line. When the input line 261 is turned on, the input / output unit 26 interrupts the CPU 21 through the bus 23.
[0024]
FIG. 3 shows the configuration of the CPU 21 of FIG. The address bus 231, the data bus 232, and the interrupt line 233 are part of the bus 23 in FIG. This CPU 21 has three levels of interrupts. The interrupt line 233 is also composed of three lines for each level. The program counter 217 remembers the address at which the next instruction to be executed is stored in the memory 22 of FIG. By outputting this address to the address bus 231, an instruction is received from the memory through the data bus 232. Reference numeral 411 denotes a byte swap circuit. The byte swap circuit 411 will be described in detail with reference to FIG. When the byte swap register 412 is set, the byte swap circuit 411 is inverted. As a result, a little endian mode in which data from the CPU 21 is inverted and output to the data bus 232 is set. When the byte swap register 412 is reset, the byte swap circuit 411 is directly connected, and the CPU 21 enters the big endian mode. The instruction is executed by the computing unit 211. A general-purpose register 212 may be used as an operand when executing an instruction. The interrupt controller 216 controls interrupt requests coming from the interrupt line 233. The status register 213 is a register representing the state of the CPU 21 and can be read and written by the arithmetic unit 211. In the status register 213, there is a bit that functions to suppress an interrupt request. When an interrupt is suppressed, even if an interrupt request is received, processing corresponding to the interrupt is not performed. Interrupt processing is performed when interrupt suppression is released. The interrupt request register 215 is a register to which the interrupt type is written by the interrupt controller 216 when an interrupt occurs. The vector register 214 is a register in which the address of the interrupt vector table in the memory is entered. When an interrupt occurs, the interrupt controller 216 searches the interrupt vector table for the address of the vector register 214 and sets the address of the interrupt processing program written therein in the program counter 217. The timer 218 requests an interrupt to the interrupt controller 216 every set time.
[0025]
FIG. 46 shows the configuration of the byte swap circuit 411 of FIG. Reference numeral 232 corresponds to the data bus of FIG. The data bus 232 is divided into an input data bus 2321 and an output data bus 2324 by buffers 591 and 592. The input and output of the data bus are switched by a 593 write control line. The number of data bus lines is 32. Reference numeral 2321 (31-24) denotes a line from the 31st bit to the 24th bit of 2321. Others are the same. 601-
Reference numerals 604 and 611 to 614 denote selectors. When the byte swap line 4121 coming from the byte swap register 412 in FIG. 3 is turned on, the value of the right input line is output to the output line, and when it is off, the left input line is output. As a result, when the byte swap register 412 is set, the byte order of the input data bus 2321 is inverted and output to the calculator input line 2322, the calculator output line of 2323 is also inverted, and the output data bus 2324. When the byte swap register 412 is not set, data is transferred in the byte order as it is.
[0026]
FIG. 4 shows details of the interrupt request register 215 of FIG. 2151 to 2153 are bits that are turned on when a level 1 to level 3 interrupt is received, respectively.
[0027]
In this embodiment, the interrupt level from the disk controller is 1, the interrupt level from the input / output unit is 2, and the interrupt level from the timer is 3. FIG. 5 shows details of the status register 213 of FIG. There are interrupt inhibit bits 2131 to 2132 that serve to inhibit interrupt requests. The interrupt suppression bit represents four interrupt request levels in binary. Interrupt requests below the level indicated by the interrupt suppression bit are suppressed. Also, when an interrupt is entered, an interrupt suppression bit is set at the level of the interrupt, and when an interrupt that enters later is below the set level, the interrupt is suppressed.
[0028]
FIG. 6 is a detailed configuration of the input / output unit 26 of FIG. This part is used to control an external device that requires real-time control. Reference numeral 261 denotes an input line that captures the state of the external device. An output line 262 outputs a control signal to an external device. The input line 261 is connected to the OR circuit 264. Here, the output of the OR circuit 264 is connected to the level 2 interrupt line of the bus interrupt line 233. When any of the input lines 261 is turned on, an interrupt is requested to the CPU. The input line 261 is also input to the latch 263, and the state of the input line 261 is saved. The contents of this latch can be read from the data bus by designating an address on the address bus 231. The decoder 265 decodes the address of the address bus 231 and selects a latch for reading and writing. A latch 266 holds the output of the output line 262. By setting an address in the address bus 231, the contents of the data bus are latched.
[0029]
FIG. 7 shows a detailed configuration of the disk controller 24 of FIG. The sector register 242 is a register that designates a sector on the disk to be read and written. The data buffer 243 stores data written to or read from the disk. The sector register 242 and the data buffer 243 can be accessed from the data bus 232 by giving addresses to the address bus 231. The address is decoded by the decoder 241. The access end notification line 244, the sector designation line 245, and the data line 246 are connected to the disk 25 in FIG. The access end notification line 244 is turned on when the disk access is completed. This line is connected to the interrupt line 233 of the bus 23, and an interrupt request is sent to the CPU 21 when turned on. The level of this interrupt is 1. The sector designation line 245 is a line for notifying the disk of a sector to be accessed, and the data line is a line for flowing data to be read from and written to the disk. FIG. 8 shows details of the contents of the memory 22 of FIG. The memory 22 consists of three parts. The TS-OS 31 is an OS program and data for business processing in which real-time characteristics are not considered. The RT-OS 32 performs real-time processing.
OS programs and data. The hardware dependence unit 33 is a program and data extracted from the OS depending on hardware. Many recent OSs have a configuration in which hardware-dependent portions are made independent in this way in order to improve portability between hardware. In this embodiment, by remodeling this part, two OSs can be switched and executed in parallel. Of the TS-OS 31, 311 is a TS-OS program. Reference numeral 312 denotes a buffer queue to which buffers 3131 to 3132 for storing data read from the disk 25 are connected. The run queue 321 in the RT-OS 32 is a queue to which task tables 3261 to 3262 of tasks in an executable state are connected. Details of the task table will be described with reference to FIG. The sleep queue 322 is a queue to which task tables 3263 to 3264 of tasks that are blocked waiting for an event are connected. The rescheduling flag 323 is a flag indicating that RT-OS rescheduling is necessary. The RT-OS program 325 is an RT-OS program. Although details of this program will be described later, this program includes a scheduler 62 for determining the execution order of RT-OS tasks. The kernel stacks 3271 to 3274 are stack areas used by the tasks in the task tables 3261 to 3264. In the hardware dependent unit 33, the OS state 331 is an area for storing which of the TS-OS 31 and the RT-OS 32 is being executed. The interrupt table 332 is displayed when an interrupt is entered.
It is a table describing what kind of processing each of the TS-OS 31 and the RT-OS 32 performs. The interrupt table 332 will be described in detail with reference to FIG. SIRQL335 is a variable for performing software interruption suppression to the TS-OS 31. Since the TS-OS 31 does not consider real-time processing, the TS-OS 31 may perform processing while prohibiting interruption for a long time. Even in such a situation, the RT-OS 32 must be able to respond to the interrupt. This means
The TS-OS 31 is prohibited from being interrupted not by hardware but by software. Interrupts with a level less than or equal to the value of SIRQL335 are entered from the hardware but are suspended in software. The information on the suspended interrupt is stored in the suspension queue 334. The hold interrupt tables 3411 to 3412 are connected to the hold queue. Reference numerals 336 to 339 are variables used to allocate timer interrupts to two OSs. The TS cycle 336 is a timer interrupt cycle required by the TS-OS 31. The RT cycle is a timer interrupt cycle requested by the RT-OS. As shown by 218 in FIG. 3, there is one hardware timer, but this is shown by software so that both OSs have their own timers. The TS-OS save area 344 and the RT-OS save area 342 are areas for saving the register state of the OS that has been executed so far when the OS is switched. A TS-OS register is saved in the TS-OS save area 344, and RT-
RT-OS registers are saved in the OS save area 342. The L vector table 3431 and the B vector table 3432 are tables in which jump destinations are set when an interrupt occurs. When the processor is executed in little endian and big endian, the interrupt handler address is different and the endian describing the vector table itself is also different. Use a table. The L vector table 3431 is used when little endian is used, and the B vector table 3432 is used when big endian is used. The contents of these vector tables will be described with reference to FIGS. The vector register 214 in FIG. 3 is set so that the address of this table can be entered. The shared data 345 is data accessed from both the TS-OS 31 and the RT-OS 32. Details of the hardware dependent program 340 will be described later.
[0030]
FIG. 52 shows an example of the contents of the L vector table 3431 of FIG. This vector table is used when the CPU 21 is operating in little endian. The column 34311 is the interrupt level,
The column 3431 describes the address of the interrupt handler corresponding to each interrupt level. As the address of the interrupt handler, the address of the L handler function is normally set like 34313 to 34314. However, regarding the level of the 34315 timer interrupt, a special handler called an L timer handler is used because it is necessary to share a timer between both OSs. The L handler algorithm will be described with reference to FIG. 40, and the L timer handler algorithm will be described with reference to FIG.
[0031]
FIG. 9 shows details of the interrupt table 332 of FIG. The column 3321 is the interrupt level, the column 3322 is the address of the handler program for the RT-OS 33 interrupt, and the column 3323 is the address of the TS-OS 32 handler program. The row 3324 indicates that the RT-OS need not be notified when an interrupt of interrupt level 1 is entered, but the TS-OS executes the DISK_END function. In this way, it is possible to notify an interrupt to one of the OSs, and it is also possible to execute the handlers of both OSs as in line 3326.
[0032]
FIG. 10 shows details of the task table 3261 of FIG. The Next pointer 32611 is a link pointer for connecting the task table to the run queue 321 and the sleep queue 322 in FIG. The priority area 32612 is an area for entering the priority for executing the task. When selecting a task to be executed by the RT-OS, the task having the highest priority is selected. The block channel area 32613 is an area for entering the type of event when the task is blocked waiting for the occurrence of an event. The stack 32614 stores the address of the stack used by the task.
[0033]
FIG. 11 shows details of the pending interrupt table 3411 of FIG. Next pointer
Reference numeral 34111 denotes a link pointer for connecting the hold interrupt table to the hold queue 334. The IRQL 34112 stores the level of interrupts that are pending.
FIG. 12 shows the RaiseIRQL function which is one of the hardware dependent program 340.
12. This function is a function that the TS-OS 31 calls to suppress interrupts. This function is used for buffer queue exclusive control in the buffer read algorithm of FIG. This function only rewrites SIRQL335 in the memory 22 without actually rewriting the interrupt suppression bit of the hardware status register 213 so that the RT-OS interrupt is not prohibited (121).
[0034]
FIG. 13 shows the LowerIRQL function 13 which is one of the programs of the hardware dependent unit program 340. This function is a function that the TS-OS 31 calls to cancel the interruption. This function is often used in combination with the RaiseIRQL function 12 of FIG. 12, as in the buffer read algorithm of FIG. An interrupt level is specified as an argument, and interrupts higher than this level are permitted. This function also rewrites the SIRQL 335 in the memory 22 without rewriting the interrupt suppression bit of the hardware status register 213 (131). The TS-OS is notified of the interrupt that is held in the hold INT process 14.
[0035]
FIG. 14 is a flowchart of the hold INT process 14 shown in FIG. This function is part of the hardware dependent program 340. In 141, it is determined whether there is an interrupt hold table having an interrupt level IRQL higher than SIRQL335 in the hold queue. If there is no table, the process ends (144). If there is,
The table with the largest IRQL is selected (142). For the interrupt level, the handler function for TS-OS specified in the interrupt table 332 is executed (143). Repeat above.
[0036]
FIG. 40 shows an L handler that is executed first when an interrupt other than a timer interrupt is received while the TS-OS is being executed, that is, when the processor is in little endian. The address of this function is registered in the L vector table 3431 in FIG. This function is also one of the programs of the hardware dependent program 340. In 102, the contents of the general-purpose register 212 in the CPU 21 are saved in a stack in the memory. This is to prevent the interrupt handler from destroying the contents of the register used by the program before the interrupt. In step 103, the interrupt table 332 is checked to check whether a handler at the level of the interrupt that has been entered is registered for the RT-OS. If registered, the RT handler 15 is called. Since the RT handler is an RT-OS program, the OS is switched to the RT-OS by 51 before calling. The RT-OS switching algorithm will be described with reference to FIG. And after returning from the RT handler,
At 52, the OS is returned to the TS-OS. The algorithm of TS-OS switching 51 will be described with reference to FIG. In 105, it is checked whether a handler is registered for TS-OS. If it is registered and the interrupt level is SIRQL335 or lower (107), the interrupt is suspended (19). If the interrupt level is greater than SIRQL,
In step 113, SIRQL335 is set to the interrupt level to suppress software interrupts, and in step 114, the status register 213 is returned to the value before the interrupt to release the hardware interrupt suppression. At 14, the pending INT function 14 is called to process the pending interrupt. This is because there is a possibility that the processing is suspended when a higher level interrupt occurs during the processing so far and the interrupt is destined for the TS-OS. Next, at 110, a TS-OS handler function registered in the interrupt table 332 is called. Finally, the register saved at 102 is restored (111).
[0037]
FIG. 47 shows a B handler that is executed first when an interrupt other than a timer interrupt is received during execution of the RT-OS, that is, when the processor is in big endian. The address of this function is registered in the B vector table 3432 in FIG. This function is also one of the programs of the hardware dependent program 340. In 731, the contents of the general-purpose register 212 in the CPU 21 are saved in a stack in the memory. This is to prevent the interrupt handler from destroying the contents of the register used by the program before the interrupt. At 732, the interrupt table 332 is checked to check whether or not a handler of the level of the interrupt that has entered is registered for the RT-OS. If registered, the RT handler 15 is called. In 105, it is checked whether a handler is registered for TS-OS. If registered, the interrupt is suspended (19). This is because the execution of the RT-OS is not inhibited by the execution of the TS-OS. Finally, the register saved at 731 is restored (736).
[0038]
FIG. 50 shows an algorithm of RT-OS switching 70 for switching the OS to the RT-OS. This program is in the OS switching 521 in FIG. 1 or FIG. The contents of the TS-OS register that has been executed in 701 are saved in the TS-OS save area 344 of FIG. This is so that the processing can be continued when returning to the TS-OS later. At 702, the vector register 214 of FIG. 3 is set to the address of the B vector table 3432 which is a vector table for big endian. In step 703, the OS state 331 in FIG. 8 that stores the type of OS being executed is set to be RT-OS. In 51, a function for setting the processor of FIG. 41 to big endian is executed. At 705, the register is restored from the RT-OS save area 342 of FIG.
[0039]
FIG. 51 shows an algorithm of TS-OS switching 71 for switching the OS to TS-OS. This program is also in the OS switching 521 in FIG. 1 or FIG. This function operates symmetrically with the RT-OS switching in FIG. In 711, the contents of the register are saved in the RT-OS save area 342. In 712, the vector register 214 is set to the address of the L vector table 3431. 713 to OS state 331
Set TS-OS. At 52, a function for setting the processor of FIG. 42 to little endian is executed. At 715, the register is restored from the RT-OS save area 344 of FIG.
[0040]
FIG. 41 shows a routine algorithm for setting 51 CPU in FIG. 50 to big endian. This function is in the endian switch 5211 of FIG. At 511, the byte swap register 412 of FIG. 3 is reset. As a result, the byte swap circuit of FIG. 3 is directly connected to the CPU 21 and the data bus.
Data inversion between 232 is not performed.
[0041]
FIG. 42 is a routine for setting the CPU 21 of FIG. 51 to little endian. This function is in the endian switch 5211 of FIG. The byte swap register reset by the routine of FIG. 41 is set.
[0042]
FIG. 15 is a flowchart of the RT handler 15 in FIGS. This program is one of the RT-OS programs 325, and performs processing of an interrupt addressed to the RT-OS. In 151, the contents of the register are saved in a stack in the memory. In 152, the RT-OS handler function registered in the interrupt table 332 is called. In 153, the interrupt suppression bit of the status register 213 is set to 0 and all interrupts are permitted. The interrupt suppression bit is set to the level of the interrupt when the interrupt is entered. At 154, the rescheduling flag 323 is checked to see if rescheduling is necessary. This is because the task may be newly executable in the function executed in 152 or the like. When rescheduling is necessary, the scheduler 17 in FIG. 16 is executed. Finally, the saved register is restored.
[0043]
FIG. 16 is a flowchart of the scheduler function 17 of FIG. This program corresponds to the scheduler 17 of FIG. In 171, it is checked whether the task table is connected to the run queue 321 in FIG. 8. This is the executable RT-
Checking whether OS task exists. If not, TS-OS switching is executed to return the processing to the TS-OS (172). This corresponds to a transition 574 in FIG. 45 and corresponds to a notification from the scheduler 17 in FIG. 1 to the OS switching 421. If there is a task table in the run queue, the task table having the highest priority (priority 32611 in FIG. 10) in the task table is selected. At 174, the register of the task currently being executed is saved in the stack of the task being executed, and the register is restored from the stack of the task selected at 175. Thereby, processing of the newly selected task is started.
[0044]
FIG. 17 is an example of a function set to be called by the RT-OS when the interrupt level 2 is entered in FIG. This function will be called at 152 in FIG. The level 2 interrupt is an interrupt from the input / output unit 26 of FIG. Therefore, this interrupt processing makes it possible to execute a task waiting for input from the control device. In step 181, the task queues 3263 to 3264 whose block channel 32613 is “123” are searched from the sleep queue 322.
[0045]
At 182, the task table is entered into the run queue 321. As new tasks can be executed, rescheduling is required. Therefore, the rescheduling flag 323 is turned on at 183.
[0046]
FIG. 18 is a flowchart of the hold function 19 of FIG. This function suspends an interrupt addressed to the TS-OS that is being executed while the RT-OS is being executed or while the TS-OS is suppressing the interrupt. This function is one of the hardware dependent program 340. In 191, new entries in the pending interrupt tables 3411 to 3412 are allocated. In 192, the interrupt level is entered in IRQL34112 of the pending interrupt table. At 193, the pending interrupt table is entered into the pending queue 334.
[0047]
FIG. 19 shows a block function 40 that is called when an RT-OS task waits for an event to occur or when it ends. This function is one of the RT-OS programs 325. In 401, the task table of the task currently being executed is placed in the sleep queue 322 of FIG. At 17, the scheduler of FIG. 16 is executed, and a task to be executed next is selected. When there is no task to be executed, the process is returned to the TS-OS. FIG. 20 shows an example of a function set to be called by the TS-OS when the interrupt level 1 is entered in FIG. This function will be called at 110 in FIG. 40 or 143 in FIG. 14 and is one of the TS-OS programs 311. This interrupt is an interrupt that informs the CPU 21 that the reading of the disk 25 has been completed. At 411, a new buffer 3131 is acquired, and at 412, data is copied from the data buffer 243 of the disk controller 24. Then, the buffer 3131 is connected to the buffer queue 312.
[0048]
FIG. 21 shows an example of a TS-OS program 311 that must suppress interrupts. Data is read from the buffer 3131. Since the buffer 3131 is also accessed from the program 41 of FIG. 20 which is an interrupt handler, it is necessary to access the buffer 3131 while suppressing interrupts. Therefore, after the interruption is suppressed by the RaiseIRQL function 12, the buffer 3131 is removed from the buffer queue 312 at 421. LowerIRQL Function 13 enables interrupts, and 422 reads buffer data. However, as shown in FIG. 12, the RaiseIRQL function 12 only suppresses interrupts addressed to TS-OS by software, and therefore interrupts addressed to RT-OS are accepted.
[0049]
FIG. 22 shows an algorithm of a function called when the RT-OS sets a timer interrupt period. This function is one of the hardware dependent program 340. Even on a computer with only one hardware timer 218,
A periodic timer can be provided to the OS independently. In 431, a new cycle is set in the real-time cycle 337. At 432, the TS cycle 336 is compared with the real-time cycle 337. If the real-time cycle is long, the real-time cycle 337 is set as the remaining time 338, and the TS cycle 336 is set as the hardware timer 218 at 434. If the real-time period 337 is equal to or less than the TS period 336, conversely, the TS period 336 is set to the remaining time 338 at 435, and the real-time period 337 is set to the timer 218 at 436. Finally, at 437, the half-time 437 is cleared.
[0050]
FIG. 23 is a function called when the TS-OS sets a timer interrupt period. 22 is the same as FIG. 22 except that a new cycle is set as the TS cycle. FIG. 48 shows an L timer handler function that is executed when a timer interrupt is input during execution of TS-OS, that is, when the processor is in little endian. The address of this function is stored in 34315 in the L vector table of FIG. It is necessary to call the timer handler 45 of FIG. 24, which saves the register to the stack in 631. The timer handler 45 is a function commonly used in the RT-OS and TS-OS. Suppose it is written in endian. Therefore, the processing is executed after setting the processor to big endian in 51. After completion of execution, the endian is returned to little endian at 52. Restore the last saved register.
[0051]
FIG. 49 is a handler similar to that shown in FIG. 48, but is a function that is executed when a timer interrupt occurs during RT-OS execution. Since the RT-OS is executed in big endian, there is no need to switch the endian on the way as shown in FIG.
[0052]
FIG. 24 shows an interrupt handler when a timer interrupt is entered. This function is one of the hardware dependent program 340. In 451, the TS cycle 336 is compared with the real-time cycle 337, and if the real-time cycle 337 is longer, the TS cycle small function 46 is executed, and if not, the RT cycle small function 48 is executed.
[0053]
FIG. 25 shows an algorithm of the TS periodic small function of FIG. In 461, it is checked whether the half-time 339 is 0. Half-end time 339 is the time from the end of the real-time cycle to the end of the TS cycle. If the half-end time 339 is other than 0, the half-end time 339 is set in the timer 218 at 462. Since the real-time cycle has ended,
At 463, the real-time timer handler function is called. In 464, the remaining time 338 is set to (real time period 337-TS period 336). The remaining time 338 is the time until the end of the real-time cycle when the next timer interrupt occurs. At 465, the half-time 339 is set to zero. If the half-time is 0 at 461, the remaining time 338 is checked at 466. When the remaining time 338 is 0, the real-time cycle has ended, so the real-time timer handler function is executed at 467, and the remaining time is set as the real-time cycle at 468. At this time, the TS timer handler function is called at 473 where the TS cycle has also ended. When there is a remaining time 338 at 466, the TS period is subtracted from the remaining time 338 at 469. In 470, the subtracted result is compared with the TS cycle. If the result is shorter, the half-time 339 (TS cycle 336-remaining time 338) is set in 471, and the remaining time 338 is set in the hardware timer 218. In this case as well, since the TS cycle has ended, the TS timer handler function is called at 473. However, since the TS timer handler is a part of the TS-OS, it is called after switching the OS to the TS-OS at 71, and after calling, the OS is returned to the original RT-OS at 70.
[0054]
FIG. 26 shows an algorithm of the RT periodic small function of FIG. The algorithm is the same as that shown in FIG. 25 except that the relationship between the RT-OS and the TS-OS is reversed.
[0055]
FIG. 27 shows another embodiment of the present invention. In the configuration of FIG. 1, a little endian OS and a big endian OS are switched and executed on one CPU. On the other hand, in FIG. 27, two CPUs are used. The CPU 21-2 is for executing a little endian business processing OS (TS-OS) 31. The endian of this CPU is fixed to little endian.
[0056]
The CPU 21-1 executes the big-endian RT-OS 32. this
The endian of the CPU is fixed to big endian. The tasks 531 to 532 are TS-OS 31 tasks, and 533 to 534 are RT-OS 32 tasks. The CPUs 21-1 and 21-2 share the shared memory 80. In the figure, the OS 31 to 32 and the tasks 531 to 534 are described outside the shared memory 80. However, these programs and data may exist in the shared memory.
[0057]
FIG. 28 shows an example of the configuration of a multiprocessor computer. The difference is that two CPUs 21-1 and 21-2 are connected to the bus 23. The CPU 21-1 executes RT-OS exclusively, and the CPU 21-2 executes TS-OS exclusively. The memory is divided into 80-1 ROM and 80-2 RAM. Both memories are shared with both CPUs. The CPU 21-1 is executed in the big endian mode, and the CPU 21-2 is executed in the little endian mode. The register 55 is accessible from both CPUs. This register is 32 bits and has a value of 0x00000001 when viewed from the big endian CPU. The little-endian CPU reads the value 0x01000000 because the contents of the register are inverted and read. Both CPUs execute the program in the ROM 80-1 after reset.
[0058]
FIG. 29 shows the contents of the ROM 80-1 shown in FIG. The CPU 21-1 and CPU 21-2 in FIG. 28 start execution from address 0 of the ROM 80-1 after reset. In the figure, the contents of the ROM are the values when called by the big endian CPU. The 000000C at address 0 is an instruction to jump to the address of the currently executing instruction + 0x0C. Therefore, the big endian CPU 21-1 executes the instruction at the address 10 after executing the instruction at the address 0. On the other hand, the little-endian CPU 21-2 reads the instruction 0c000004 even if it reads the instruction at the same address 0. This instruction is an instruction for loading the contents of the register 0 into the register 12. Therefore, the CPU next executes the instruction at address 4. By doing so, it becomes possible to separate the execution path between the big endian CPU and the little endian CPU. At addresses 4 to C, an instruction having a meaning in little endian is entered, and a branch instruction is executed at this portion to branch to a little endian OS. From the 10th address, there is a big endian OS program.
[0059]
FIG. 30 shows another embodiment of the ROM 22-1 shown in FIG. In FIG. 28, the same ROM portion is accessed by the CPU 21-2 and the CPU 21-2, but different portions are accessed in FIG. 23 is a bus. Reference numeral 232 denotes a data bus. Reference numeral 231 denotes an address bus. The address bus 231 is directly connected to the address line of the ROM other than the highest address line. A line 234 is a CPU determination line indicating whether a read request to the ROM is from the CPU 21-2 or the CPU 21-1. Set to 1 when coming from the CPU 21-2. The uppermost line 231-1 of the address bus is connected to the address line of the ROM 80-1 through the CPU determination line 234 and the exclusive logic circuit 235.
[0060]
FIG. 31 shows a memory map seen from two CPUs when the ROM of FIG. 30 is used. Reference numeral 541 denotes a memory map of the CPU 21-1. When the ROM is viewed from the CPU 21-1, an area 5411 of the ROM-0 is at the top of the map. On the other hand, when viewed from the CPU 21-2, the ROM-5 area 5421 comes first. The ROM-0 area and ROM-1 area contain the same program in ROM-0 in big endian format and ROM-1 area in little endian format.
[0061]
FIG. 43 shows a program that is executed after the CPU 21-1 and CPU 21-2 in the ROM-0 and ROM-1 areas of FIG. 31 are reset. In 561, the register 55 in FIG. 28 is read to determine whether the value is 1. When reading the register 55, the big endian CPU 21-1 reads 1, and jumps to RT-OS at 563. On the other hand, the little endian CPU 21-2 can read the value of the register 55 to 0x01000000, and jumps to TS-OS in 562.
[0062]
FIG. 44 shows an example in which a flag stored on the ROM 80-1 is used instead of using the register 55 in FIG. The operation can be separated between big endian and little endian CPUs in the same manner as in FIG.
[0063]
FIG. 32 is a configuration example of the status register. The two CPUs (21-1 and 21-2) of the multiprocessor computer of FIG. 32 have the same configuration as the CPU of FIG. 3, but the configuration of the status register 213 is different from the configuration of FIG. In the status register of FIG. 5, the interrupt suppression bits (2131 to 2132) represent binary values, and interrupts at levels below this value are suppressed.
The 32 status registers have interrupt suppression bits (2134 to 2136) corresponding to the respective interrupt levels. When each bit is set, the corresponding level interrupt is suppressed.
[0064]
FIG. 33 shows the status of the status register 213-1 of the CPU 21-1 of FIG. 31 executing the RT-OS. In this CPU, only bit 21134-1 is set, and only level 1 interrupts are masked.
[0065]
FIG. 34 shows the status of the status register 213-2 of the CPU 21-2 of FIG. 31 that executes TS-OS. In this CPU, only the bit 21135-2 is set, and only the level 2 interrupt is masked.
[0066]
FIG. 35 shows the contents of the memory 22 of FIG. Two vector tables (343-1 and 343-2) are provided for each CPU. The vector table is a table that contains the address of a program to be executed when an interrupt occurs. The CPU 21-1 in FIG. 31 that executes the RT-OS uses the vector table 343-1, and the CPU 21-2 in FIG. 31 that executes the TS-OS uses the vector table 343-2. The vector register 214 of FIG. 3 of each CPU points to the address of each vector table. The vector table contains the jump destination address for each interrupt level. In the vector table of 343-1, the jump destination of level 1 interrupt is 0, indicating that this interrupt is invalid. The destinations of level 2 and level 3 are both functions in the program 325 of the RT-OS 32. In the vector table 343-2, the jump destination of the level 2 interrupt is 0, indicating that this interrupt is invalid. Both the level 1 and level 3 destinations are functions in the program 311 of the TS-OS 31. The OS state 331, interrupt table 332, SIRQL335, hold queue 334, TS-OS save area 344, RT-OS save area 342, timer-related areas 336 to 339 and the like shown in FIG.
It is not necessary in FIG. 35 because it is a mechanism necessary for executing the OS. Further, in the multiprocessor configuration, exclusive control of the shared data 347 cannot be performed only by prohibiting the interrupt, and therefore a lock 347 for exclusive control is added to FIG.
36 shows the RaiseIRQL function of FIG. 12 for the multiprocessor configuration of FIG.
12. In this configuration, instead of rewriting SIRQL335, the status register (213-1 or 213-2) of its own CPU is set.
[0067]
FIG. 37 shows the LowerIRQL function of FIG. 13 in the multiprocessor configuration of FIG.
13. In this configuration, the status register (213-1 or 213-2) of its own CPU is only cleared.
[0068]
FIG. 38 shows the PIO_ON function 15 of FIG. 15 in the multiprocessor configuration of FIG. In the configuration of FIG. 2, it is necessary to allocate incoming interrupts to two OSs. However, in a multiprocessor configuration, each CPU executes a separate OS, and processing of necessary interrupts is performed according to the setting of the status register. I do. Therefore, the interrupt process is the same as the normal OS interrupt process. After saving the contents of the register in 102, the interrupt body is processed. Here, the processing contents 181 to 183 performed in FIG. 17 are performed. The contents of the register saved in 111 are restored, and the process returns in 162.
[0069]
The block function 40 in the multiprocessor configuration of FIG. 31 is the same as that of FIG. However, the scheduler 17 is as shown in FIG. Compared to FIG. 16, when the run queue is empty in FIG. 16, the process is returned to the TS-OS in 172, but in FIG. 39, the process waits in a loop.
[0070]
【The invention's effect】
According to the present invention, it is possible to execute in parallel on the same processor while switching operating systems having different endians.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating a software configuration.
FIG. 2 is a diagram showing a configuration of a computer.
FIG. 3 is a diagram illustrating a configuration of a CPU.
FIG. 4 is a diagram showing a configuration of an interrupt request register.
FIG. 5 is a diagram showing a configuration of a status register.
FIG. 6 is a diagram illustrating a configuration of an input / output unit.
FIG. 7 is a diagram showing a configuration of a disk controller.
FIG. 8 is a diagram for explaining the contents of a memory.
FIG. 9 is a diagram illustrating a configuration of an interrupt table.
FIG. 10 is a diagram showing a configuration of a task table.
FIG. 11 is a diagram showing a configuration of a pending interrupt table.
FIG. 12 is a diagram showing an algorithm of an interrupt inhibition function.
FIG. 13 is a diagram showing an algorithm of an interrupt permission function.
FIG. 14 is a diagram showing an algorithm of a pending interrupt permission function.
FIG. 15 is a diagram showing an RT-OS interrupt handler.
FIG. 16 is a diagram showing an algorithm of a scheduler.
FIG. 17 is a diagram illustrating an interrupt handler from an input / output device.
FIG. 18 is a diagram illustrating a function for holding an interrupt.
FIG. 19 is a diagram illustrating a block function.
FIG. 20 shows a disk access end interrupt handler.
FIG. 21 is a diagram illustrating a program for suppressing TS-OS interrupts.
FIG. 22 is a diagram showing a timer period setting function of the RT-OS.
FIG. 23 is a diagram showing a timer cycle setting function of TS-OS.
FIG. 24 is a diagram showing a timer interrupt handler.
FIG. 25 is a diagram illustrating processing when a TS interrupt is shorter than a real-time cycle due to a timer interrupt.
FIG. 26 is a diagram showing processing when a real-time cycle is shorter than a TS cycle due to a timer interrupt.
FIG. 27 is a diagram illustrating a software configuration.
FIG. 28 is a diagram showing a configuration of a multiprocessor computer.
FIG. 29 is a diagram for explaining the contents of a ROM;
FIG. 30 is a diagram illustrating a configuration of a ROM.
FIG. 31 is a diagram showing a memory map of a ROM.
FIG. 32 is a diagram showing a configuration of a status register.
FIG. 33 is a diagram illustrating a state of a status register of a TS-OS CPU.
FIG. 34 is a diagram illustrating a state of a status register of an RT-OS CPU.
FIG. 35 is a diagram showing the contents of a memory.
FIG. 36 is a diagram showing an algorithm of an interrupt suppression function.
FIG. 37 is a diagram showing an algorithm of an interrupt permission function.
FIG. 38 is a diagram illustrating an RT-OS interrupt handler.
FIG. 39 is a diagram illustrating a block function.
FIG. 40 is a view showing a flowchart of an L handler.
FIG. 41 is a diagram showing an algorithm for setting a big endian mode.
FIG. 42 is a diagram illustrating an algorithm for setting a little endian mode.
FIG. 43 is a diagram showing an algorithm of reset processing.
FIG. 44 is a diagram showing another algorithm of reset processing.
FIG. 45 is a diagram showing state transition of a computer.
FIG. 46 is a diagram showing a configuration of a byte swap circuit.
FIG. 47 is a diagram showing an algorithm of a B handler.
FIG. 48 is a diagram showing an algorithm of an L timer handler.
FIG. 49 is a diagram showing an algorithm of a B timer handler.
FIG. 50 is a diagram illustrating an RT-OS switching algorithm.
FIG. 51 is a diagram showing an algorithm for TS-OS switching.
FIG. 52 is a diagram showing the contents of an L vector table.
FIG. 53 shows the contents of a B vector table.
[Explanation of symbols]
17, 62 ... scheduler, 21 ... CPU, 22 ... memory, 23 ... bus, 24 ... disk controller, 25 ... disk, 26 ... input / output unit, 31 ... TS-OS, 32 ... RT-OS, 33 ... hardware dependent 55 ... CPU discrimination register, 63 ... L timer handler, 64 ... B timer handler, 70 ... RT-OS switching, 71 ... TS-OS switching, 73 ... B handler, 80 ... shared memory, 211 ... calculator, 212 ... general purpose register, 213 ... status register, 214 ... vector register, 215 ... interrupt request register, 216 ... interrupt controller, 217 ... program counter, 218 ... timer, 231 ... address bus, 232 ... data bus, 233 ... interrupt line, 241 ... Decoder, 242 ... Sector register, 243 ... Data back §, 244 ... access termination notification line, 245 ... sector specified lines, 246 ... data lines, 261 ... input line, 262 ... output line, 263 ... latch,
264 ... OR circuit, 265 ... decoder, 266 ... latch, 311 ... TS-OS program, 312 ... buffer queue, 321 ... run queue, 322 ... sleep queue, 323 ... rescheduling flag, 324 ... second handler address,
325 ... RT-OS program, 331 ... OS state, 332 ... interrupt table, 334 ... pending queue, 335 ... SIRQL (software IRQL), 336 ... TS cycle, 337 ... real time cycle, 338 ... remaining time, 339 ... half-time, 340 ... Hardware dependent program, 342 ... RT-OS save area, 344 ... TS-OS save area, 345 ... Shared data, 346 ... OS status counter, 347 ... Lock, 411 ... Byte swap circuit, 412 ... Byte swap register ,
521 ... OS switching program, 531 to 534 ... task, 561 ... TS-OS task executing state, 562 ... TS-OS interrupt handler executing state, 563 ... RT-OS task executing state, 564 ... RT-OS interrupt handler Execution state, 591 to 592 ... buffer, 2131 to 2136 ... interrupt suppression bit, 3121 to 3122 ... buffer, 3261 to 3264 ... task table, 3271 to 3274 ... kernel stack, 3411 to 3412 ... pending interrupt table, 3431 ... L vector Table 3432 ... B vector table, 4121 ... Byte swap line, 5211 ... Endian switching program.

Claims (3)

異なった複数のオペレーティングシステムと、上記それぞれのオペレーティングシステム上で動作する複数のタスクと、上記タスクの実行順序を管理するスケジューリングプログラムとを記憶する記憶装置と、
演算を実行するプロセッサとを有する計算機システムであって、
上記プロセッサは、上記スケジューリングプログラムによって決定されたオペレーティングシステムを実行するために、入力または出力する情報の配列を切り替える切替え部を有し、
上記記憶装置は、割り込みの種類と上記割り込みの処理を実行するオペレーティングシステムとを対応付けしたテーブルを記憶し、
上記切替え部は、割り込みを検出する割り込み検出部と、上記割り込み検出部によって検出された結果と上記記憶装置に記憶されたテーブルに基づいて、入力または出力する情報の配列を切り替える計算機システム。
A storage device for storing a plurality of different operating systems, a plurality of tasks operating on the respective operating systems, and a scheduling program for managing the execution order of the tasks;
A computer system having a processor for performing an operation,
The processor, in order to execute the operating system that is determined by the scheduling program includes a switching unit switching the sequence of input or output information,
The storage device stores a table in which an interrupt type is associated with an operating system that executes the interrupt process,
The switching unit, an interrupt detection unit that detects an interrupt, the interrupt based on the table stored in the detected result and the storage device by the detection unit, input or calculated motor Ru switches the sequence of the output information system.
異なったエンディアンで実行される複数のオペレーティングシステムと、異なったエンディアンで実行可能な命令とを格納した記憶装置と、
異なったエンディアンで上記記憶装置にアクセスし、上記記憶装置から読み出した命令を実行する複数のプロセッサと、
上記複数のプロセッサが共通にアクセスするレジスタとを有し、
それぞれの上記プロセッサは、上記レジスタに格納された値を読み出して実行すべきオペレーティングシステムを決定する計算機システム。
A storage device storing a plurality of operating systems executed in different endians and instructions executable in different endians;
A plurality of processors that access the storage device with different endians and execute instructions read from the storage device;
A register commonly accessed by the plurality of processors,
Each of the processors is a computer system that determines the operating system to be executed by reading the value stored in the register.
第1のオペレーティングシステムでタスクを実行している時に割り込みを検出し、上記割り込みの処理すべきオペレーティングシステムを決定し、上記決定されたオペレーティングシステムのエンディアンと、現在実行しているオペレーティングシステムのエンディアンが相違する場合、上記オペレーティングシステムでタスクを実行しているプロセッサのエンディアンを切り替え、上記プロセッサのエンディアンの切り替えを行った後に、上記決定されたオペレーティングシステムを実行する計算機システムのエンディアン切替え方法。  An interrupt is detected when a task is executed in the first operating system, an operating system to process the interrupt is determined, and the endian of the determined operating system and the endian of the currently executing operating system are determined. A computer system endian switching method for executing the determined operating system after switching the endian of the processor executing the task in the operating system, and switching the endian of the processor.
JP03681499A 1999-02-16 1999-02-16 Operating system and computer Expired - Fee Related JP3659048B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP03681499A JP3659048B2 (en) 1999-02-16 1999-02-16 Operating system and computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP03681499A JP3659048B2 (en) 1999-02-16 1999-02-16 Operating system and computer

Publications (2)

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

Family

ID=12480246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03681499A Expired - Fee Related JP3659048B2 (en) 1999-02-16 1999-02-16 Operating system and computer

Country Status (1)

Country Link
JP (1) JP3659048B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006260407A (en) 2005-03-18 2006-09-28 Fujitsu Ltd Information processing device
CN102150139A (en) 2008-09-12 2011-08-10 瑞萨电子株式会社 Data processing device and semiconductor integrated circuit device
JP5622429B2 (en) 2010-04-20 2014-11-12 ルネサスエレクトロニクス株式会社 Microcomputer
JP5869228B2 (en) * 2011-03-31 2016-02-24 キヤノン電子株式会社 Peripheral device, image reading device, and information processing system
EP2503466B1 (en) 2011-03-23 2017-08-23 Canon Denshi Kabushiki Kaisha Peripheral device used while being connected to information processing apparatus

Also Published As

Publication number Publication date
JP2000235503A (en) 2000-08-29

Similar Documents

Publication Publication Date Title
US6314471B1 (en) Techniques for an interrupt free operating system
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
KR100911796B1 (en) Multi processor and multi thread safe message queue with hardware assistance
US7350006B2 (en) System and method of interrupt handling
US20040205747A1 (en) Breakpoint for parallel hardware threads in multithreaded processor
US6944850B2 (en) Hop method for stepping parallel hardware threads
US20090271790A1 (en) Computer architecture
JPH0430053B2 (en)
US7797515B2 (en) System and method for limiting the number of unit processors for which suspension of processing is prohibited
JP2004157636A (en) Data processing apparatus
JP3659048B2 (en) Operating system and computer
JP5289688B2 (en) Processor system and operating system program processing method for operating processor system
JP5131269B2 (en) Multi-processing system
US7516311B2 (en) Deterministic microcontroller context arrangement
US9946665B2 (en) Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU)
JPH0916409A (en) Microcomputer
US20060168427A1 (en) Deterministic microcontroller with context manager
US6708259B1 (en) Programmable wake up of memory transfer controllers in a memory transfer engine
JP4631442B2 (en) Processor
JP2007317232A (en) Data processor
JP3539984B2 (en) Processor
WO2006081094A2 (en) Deterministic microcontroller
JPH04241032A (en) System call execution device
US6658514B1 (en) Interrupt and control packets for a microcomputer
JPH044630B2 (en)

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