JPH09179728A - 異パーソナリティ・アプリケーションの起動方法およびコンピュータ・システム - Google Patents

異パーソナリティ・アプリケーションの起動方法およびコンピュータ・システム

Info

Publication number
JPH09179728A
JPH09179728A JP7350537A JP35053795A JPH09179728A JP H09179728 A JPH09179728 A JP H09179728A JP 7350537 A JP7350537 A JP 7350537A JP 35053795 A JP35053795 A JP 35053795A JP H09179728 A JPH09179728 A JP H09179728A
Authority
JP
Japan
Prior art keywords
personality
application
task
different
name
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.)
Pending
Application number
JP7350537A
Other languages
English (en)
Inventor
Osamu Takeuchi
理 竹内
Masaaki Iwasaki
正明 岩▲崎▼
Tatsutoshi Sakuraba
健年 櫻庭
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 JP7350537A priority Critical patent/JPH09179728A/ja
Publication of JPH09179728A publication Critical patent/JPH09179728A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 (修正有) 【課題】高速に異パーソナリティ・アプリケーション・
タスクを起動することができ、従来の単一パーソナリテ
ィ・オペレーティング・システム上で動作していたアプ
リケーションのバイナリ・ファイルをそのまま利用する
ことができ、さらに、異パーソナリティ・アプリケーシ
ョン・タスクの強制終了を複雑な処理を経ないで実行す
ることのできる、マルチ・パーソナリティ・シェルを実
現可能なインタフェースを提供する。 【解決手段】カーネルは、タスク制御ブロック406内
に割り込みベクタテーブルを保持し、タスクごとに異な
る割り込みベクタ・テーブルを持てるようにする。さら
に、カーネルはマウント表800、パーソナリティ登録
表900を保持し、起動したいアプリケーションのバイ
ナリ・ファイルのパス名の指定のみで、いかなるパーソ
ナリティのアプリケーションも起動可能にするインタフ
ェースを提供する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、異種のオペレーテ
ィング・システムに属するアプリケーションを同一イン
ターフェースにより高速に起動することのできる起動方
法およびそのような起動方法を実装したコンピュータ・
システムに関する。
【0002】
【従来の技術】異種のオペレーティング・システムに属
するアプリケーションを同一インターフェースにより起
動するシェル・プログラムは、既存の各種オペレーティ
ング・システム上で開発されてきたアプリケーションの
すべてを利用可能なものにするため有用である。
【0003】本明細書では、異種のオペレーティング・
システムに属するアプリケーションを同一インターフェ
ースにより起動可能にするタスク制御方式をマルチ・パ
ーソナリティ、マルチ・パーソナリティを実現している
システム上で動作する各アプリケーションが発するシス
テムコールの処理を行なうソフトウェアをパーソナリテ
ィと定義する。タスクが属するオペレーティング・シス
テムが異なれば、異なるパーソナリティが必要となる。
また、マルチ・パーソナリティを実現しているオペレー
ティング・システムをマルチ・パーソナリティ・オペレ
ーティング・システムと定義する。それに対し、従来の
オペレーティング・システムを単一パーソナリティ・オ
ペレーティング・システムと定義する。
【0004】マルチ・パーソナリティを実現した典型的
な例として、Machオペレーティング・システムによ
る実現例や、単一パーソナリティ・オペレーティング・
システム上に異なるオペレーティング・システムのエミ
ュレータを作動させる方式がある。以下では、まず始め
にMachオペレーティング・システムによりマルチ・
パーソナリティを実現する方式について本「従来の技
術」の欄および次の「発明が解決しようとする課題」の
欄の前半で説明し、次に、単一パーソナリティ・オペレ
ーティング・システム上に異なるオペレーティング・シ
ステムのエミュレータを作動させる方式について「発明
が解決しようとする課題」の欄の後半で説明する。
【0005】まず、Machオペレーティング・システ
ム(特に、Machマイクロ・カーネル)によりマルチ
・パーソナリティを実現する方式について説明する。こ
の方式では、以下のような、タスクごとにシステムコー
ル実行ルーチンを切り替えるtask_set_emu
lation_vectorインタフェースを提供して
いる。
【0006】task_set_emulation_vector(task,vector_
start,emulation_vector,emulation_vector_count)
【0007】taskは、システムコール・エミュレー
ション・ルーチンのエントリポイントを設定するタスク
を指定する引数である。vector_startおよ
びemulation_vector_countは、
エントリポイントを設定するシステムコール番号の先頭
およびその数を指定する引数である。emulatio
n_vectorは、エントリ・ポイントの列を指定す
る引数である。なお、システムコール・エミュレーショ
ン・ルーチン(以下、単にエミュレーション・ルーチン
という)とは、実行したいシステムコール処理を、Ma
chマイクロ・カーネルを用いてエミュレートするソフ
トウェアのことを言う。
【0008】図1は、Machマイクロ・カーネルを用
いたマルチ・パーソナリティ・システムのソフトウェア
構成の概要を示す。Machマイクロ・カーネル(Mach
Micro Kernel)101上に、Machマイクロ・カー
ネル101が管理するタスクとしてOSサーバ・タスク
(102,103)とアプリケーション・タスク(シェ
ル104、アプリケーション105)が配されている。
OSサーバ・タスクは、各アプリケーション・タスクか
ら要求されるシステム・コールの処理を行なうタスクで
ある。図1では、シェル104はOSサーバ1(10
2)に属し、アプリケーション105はOSサーバ2
(103)に属している。
【0009】OSサーバは、自パーソナリティに属する
タスク生成時に、上述の関数task_set_emu
lation_vectorをコールする。例えば、O
Sサーバ1(102)はシェル104のタスク生成時に
この関数をコールし、OSサーバ2(103)アプリケ
ーション105のタスク生成時にこの関数をコールす
る。これにより、生成されたタスクからOSサーバに対
するシステムコールを実行することが可能となる。
【0010】実際に、アプリケーション・タスクがシス
テムコール実行を行なうためには、決められたレジスタ
にシステムコール番号を格納して、決められた割り込み
番号を引数として、トラップ命令を発行するのみでよい
(111,112)。
【0011】トラップ命令とは、CPU(中央処理装
置)に対して割り込み処理要求を割り込み番号とともに
通知するCPU命令である。CPUは、割り込み処理要
求信号を受け取ると、割り込みテーブルに定義されてい
る割り込みハンドラのエントリ・アドレスへのジャン
プ、およびプログラム状態語の変更を行なう。旧プログ
ラム・カウンタと旧プログラム状態語はスタックに保持
しておく。割り込みハンドラの実行が終了すると、スタ
ックに保持されていたプログラム・カウンタとプログラ
ム状態語がレジスタに回復され、割り込まれていた次の
命令から実行を継続する。
【0012】図1の111,112のようにトラップ命
令が発行されると、Machマイクロ・カーネルが定義
した割り込みハンドラに制御が移る。この割り込みハン
ドラでは、task_set_emulation_v
ectorインターフェースによって予め登録されてい
た、エミュレーション・ルーチンのエントリ・ポイント
へのリダイレクションを行なう。このリダイレクション
は、スタックに保持してある旧プログラム・カウンタの
値を、エミュレーション・ルーチンのエントリ・ポイン
トに変更することによって実現する。このエミュレーシ
ョン・ルーチンのエントリ・ポイントがタスクごとに変
更可能であるために、タスクごとに異なるシステムコー
ル実行ルーチンを実現することが可能になる。
【0013】エミュレーション・ルーチンでは、予め定
められたOSサーバ・タスクに対してリモート・プロシ
ージャ・コール(113や114)を行なうことによっ
てシステムコール処理を要求する。リモート・プロシー
ジャ・コールを受け取ったOSサーバ・タスクは、実際
のシステムコール処理を行なう。
【0014】このように、システムコール処理部分をユ
ーザ空間に配置し、各システムコール処理部分がカーネ
ル空間での実行を必要とする機能のみを提供するMac
hのようなカーネルをマイクロ・カーネルと呼ぶ。一
方、従来のように、システムコール処理部分をカーネル
空間に配置してあるカーネルをインテグレーテッド(i
ntegrated)・カーネルと呼ぶ。
【0015】
【発明が解決しようとする課題】図1のようにMach
マイクロ・カーネルを用いてマルチ・パーソナリティを
実現している場合に、あるOSサーバを用いて稼動して
いるシェルから、異パーソナリティ・アプリケーション
を起動する場合の処理の流れを、図2に示す。
【0016】以下、図2に沿って説明する。なお、図2
中の(1)から(7)は、以下のステップ(1)からス
テップ(7)に対応している。
【0017】ステップ(1):シェル・タスクが、異パ
ーソナリティ・タスク起動のシステムコールの実行のた
めに、トラップ命令を発行する。 ステップ(2):Machマイクロ・カーネルは、エミ
ュレーション・ライブラリへリダイレクションを行な
う。 ステップ(3):エミュレーション・ライブラリは、シ
ステムコールごとに処理要求メッセージ送信先のOSサ
ーバ・タスクを定義しているテーブルを持つ。そのテー
ブルに沿って、当該システムコールに対応するOSサー
バ・タスクに対して、アプリケーション・タスク起動を
要求するメッセージを送信する。 ステップ(4):OSサーバはメッセージを受信するた
めに、予めトラップを発行した後に休眠している。 ステップ(5):OSサーバはメッセージが到達すると
起床し、トラップからリターンして、アプリケーション
起動のための処理を開始する。 ステップ(6):OSサーバは、上記処理内で、Mac
hマイクロ・カーネルに対して、Machタスクの生成
および起動関数の実行を要求する。 ステップ(7):Machマイクロ・カーネルは、指定
アプリケーション用タスクを生成および起動する。
【0018】ところが、この方式によると、以下の2点
(A1)および(A2)が問題となる。
【0019】(A1)図2に示す通り、シェル・タスク
から異アプリケーション・タスクを実行するためには、
2回のタスク間通信(図2でIPCと記載してある位置
で行われる)と、7回のコンテクスト・スイッチ(図2
におけるステップ(1)〜(7)の各ステップにつき1
回づつコンテクスト・スイッチが発生している)を要
し、高速に実行を行なうことができない。
【0020】(A2)アプリケーション・タスクがOS
サーバ・タスクに対してシステムコール処理を要求する
場合も、上記ステップ(1)から(5)までの処理を経
て、OSサーバ・タスクが起動される。このときの、ス
テップ(1)におけるトラップのトラップ番号は、予め
Machマイクロ・カーネルによって定義されている番
号を用いる必要がある。そのために、従来のインテグレ
ーテッド・カーネル上で実行していたアプリケーション
のバイナリ・ファイルをそのまま用いることができな
い。
【0021】このように、Machマイクロ・カーネル
のtask_set_emulation_vecto
rインタフェースを用いて異パーソナリティ・アプリケ
ーションを起動しようとすると、タスク間通信やコンテ
クスト・スイッチが多発して高速に実行を行なうことが
できないという問題があった。
【0022】一方、タスク間通信やコンテクスト・スイ
ッチの多発を防いで、異アプリケーションの高速起動を
可能にする別の方式として、単一パーソナリティ・オペ
レーティング・システム(パーソナリティAとする)上
に、異なるオペレーティング・システム(パーソナリテ
ィBとする)のエミュレータを作動させる方式(以下、
エミュレーション方式と呼ぶ)がある。
【0023】図3は、エミュレーション方式の処理手順
を示す。図3に沿って、パーソナリティA上のシェルか
らパーソナリティBのアプリケーションを起動させる場
合について説明する。なお、図3中の(1)から(4)
は、以下のステップ(1)からステップ(4)に対応し
ている。
【0024】ステップ(1):パーソナリティAのシェ
ル・タスクは、launchシステムコールを発する。 ステップ(2):パーソナリティAに属するカーネル
は、エミュレータに付随しているメッセージキューに、
指定アプリケーション起動要求メッセージをエンキュー
する。 ステップ(3):トラップからリターンし、エミュレー
タが実行を開始する。 ステップ(4):エミュレータは、単一パーソナリティ
・カーネルの場合と同様な手順を用いてアプリケーショ
ンを起動する。
【0025】しかし、このエミュレーション方式におい
ても以下の課題(B1)〜(B3)が残っている。
【0026】(B1)異パーソナリティに属するアプリ
ケーション(図3のパーソナリティBのアプリケーショ
ン)の起動のためには、通常の単一パーソナリティ・カ
ーネルにおけるタスク起動手順に加えて、パーソナリテ
ィAのカーネルに対するシステムコールを1回実行する
必要がある。しかも、通常のタスク起動手順を行なう部
分はエミュレータを通じて実行されるので、通常の単一
パーソナリティ・カーネルにおけるタスク起動に比べて
かなりの実行時間を要することになる。
【0027】(B2)エミュレータ上で動作しているパ
ーソナリティBのアプリケーションはパーソナリティA
のタスク起動システムコールを用いて起動されたもので
はないため、パーソナリティAのカーネルからはタスク
として認識されない。そのため、シェルのコマンド・ラ
インから、パーソナリティBのアプリケーションを強制
終了させたい場合、その強制終了処理を容易な手順で行
なうことができない。
【0028】(B3)上述(A2)と同様な問題が生じ
る。すなわち、エミュレーション方式においては、パー
ソナリティAのシステムコールで用いるトラップ番号
は、パーソナリティBで用いるトラップ番号と重なり合
わないように確保してある。そのため、今まで単一パー
ソナリティ・カーネル上で動作していたアプリケーショ
ンのバイナリ・ファイルを、そのままエミュレーション
方式で動作する保証ができないという問題が生じる。
【0029】本発明は、従来のMachやエミュレーシ
ョン方式で生じている上記の問題を解決することのでき
るインタフェースを提供することを目的とする。すなわ
ち、本発明は、高速に異パーソナリティ・アプリケーシ
ョン・タスクを起動することができ、従来の単一パーソ
ナリティ・オペレーティング・システム上で動作してい
たアプリケーションのバイナリ・ファイルをそのまま利
用することができ、さらに、異パーソナリティ・アプリ
ケーション・タスクの強制終了を複雑な処理を経ないで
実行することのできる、マルチ・パーソナリティ・シェ
ルを実現可能なインタフェースを提供することを目的と
する。
【0030】
【課題を解決するための手段】本発明は上記の課題を解
決するため、各アプリケーション・タスクの割り込みベ
クタ・テーブルをパーソナリティごとに差し替えるよう
にすることにより、高速な異パーソナリティ・アプリケ
ーション起動を可能にするインタフェースを提供する。
【0031】すなわち、本発明に係る異パーソナリティ
・アプリケーションの起動方法は、異種のオペレーティ
ング・システム上で動作するアプリケーションである異
パーソナリティ・アプリケーションを起動する起動方法
であって、異種のオペレーティング・システム用のファ
イル・システムのマウント情報を、カーネル内に予め登
録するステップと、異種のオペレーティング・システム
上で動作するタスクを起動するにあたって必要となる該
オペレーティング・システムに依存するパーソナリティ
依存情報を、カーネル内に予め登録するステップと、異
種のオペレーティング・システム上で動作するアプリケ
ーションのバイナリ・ファイルのパス名が指定されたと
き、上記マウント情報とパーソナリティ依存情報を用い
て、該アプリケーションのバイナリ・ファイルのディス
ク上の存在位置と、該アプリケーションの属するパーソ
ナリティを特定し、バイナリ・ファイルの内容をファイ
ル・システムから読み込み、主メモリにロードし、かつ
初期環境を与えて該アプリケーションを起動させるステ
ップとを備えたことを特徴とする。
【0032】また、本発明に係るコンピュータ・システ
ムは、異種のオペレーティング・システム上で動作する
アプリケーションである異パーソナリティ・アプリケー
ションを起動するインターフェースを有するコンピュー
タ・システムであって、異種のオペレーティング・シス
テム用のファイル・システムのマウント情報を、カーネ
ル内に予め登録するインターフェースと、上記登録され
たマウント情報を削除するインターフェースと、異種の
オペレーティング・システム上で動作するタスクを起動
するにあたって必要となる該オペレーティング・システ
ムに依存するパーソナリティ依存情報を、カーネル内に
予め登録するインターフェースと、上記登録されたパー
ソナリティ依存情報を削除するインターフェースと、異
種のオペレーティング・システム上で動作するアプリケ
ーションのバイナリ・ファイルのパス名が指定されたと
き、上記マウント情報とパーソナリティ依存情報を用い
て、該アプリケーションのバイナリ・ファイルのディス
ク上の存在位置と、該アプリケーションの属するパーソ
ナリティを特定し、バイナリ・ファイルの内容をファイ
ル・システムから読み込み、主メモリにロードし、かつ
初期環境を与えて該アプリケーションを起動させるイン
ターフェースとを備えたことを特徴とする。
【0033】具体的にパーソナリティ依存情報は、当該
パーソナリティに特有の、パーソナリティ名、バイナリ
・ファイルのロード・ルーチン、タスクの初期化ルーチ
ン、割り込みベクタ・テーブル、およびサーバ関数エン
トリ・ポイントを特定する情報である。
【0034】異種のオペレーティング・システム用のフ
ァイル・システムのマウント情報をカーネル内に予め登
録することによって、カーネルから異パーソナリティ・
アプリケーションのファイル・システムをアクセスする
ことが可能になる。そのため、起動すべき異パーソナリ
ティ・アプリケーションを、そのアプリケーションのバ
イナリ・ファイルのパス名によって指定することが可能
になる。
【0035】また、異種のオペレーティング・システム
上で動作するタスクを起動するにあたって必要となる該
オペレーティング・システムに依存するパーソナリティ
依存情報をカーネル内に予め登録することによって、ユ
ーザはパーソナリティ名を指定するのみで、任意のパー
ソナリティに属するアプリケーションの起動を同一イン
タフェースで行なうことが可能になる。
【0036】さらに、異種のオペレーティング・システ
ム上で動作するアプリケーションのバイナリ・ファイル
のパス名が指定されたとき、カーネルにより、上記マウ
ント情報とパーソナリティ依存情報を用いて、該アプリ
ケーションのバイナリ・ファイルのディスク上の存在位
置と、該アプリケーションの属するパーソナリティを特
定し、バイナリ・ファイルの内容をファイル・システム
から読み込み、主メモリにロードし、かつ初期環境を与
えて該アプリケーションを起動させるようにしているの
で、1回のシステムコールの実行のみで、異パーソナリ
ティ・アプリケーションのロード、および起動が可能に
なる。従来の方式に比べて実行性能が向上する。
【0037】
【発明の実施の形態】以下、図4から図15を用いて、
この発明の実施の形態を説明する。始めに、本発明を適
用して、マルチ・パーソナリティを実現し、異パーソナ
リティ・アプリケーションを同一インターフェースで
(すなわち、異なるパーソナリティのアプリケーション
であっても同一のインターフェースで)起動可能なシェ
ル(マルチ・パーソナリティ・シェル)を実現する本発
明の実施の形態例について説明する。さらに、この形態
例におけるインターフェースを用いて、df(disk
free)コマンドを拡張する応用例、および^C入力
に対する処理を拡張する応用例について説明する。
【0038】図4に、本発明の形態例のソフトウェア構
成を示す。図15に、図4のソフトウェア構成が実装さ
れる本形態例のコンピュータ・システムのハードウェア
構成を示す。
【0039】本形態例が前提とするコンピュータ・シス
テムは、現在実用化されている多くのコンピュータ・シ
ステムと同様のものでよい。すなわち、図15に示すよ
うに、CPU1501、主メモリ1502、ディスク・
コントローラ1503、およびディスク1504などを
備えたシステムであればよい。CPU1501は、割り
込み処理機構(トラップ命令も含む)を備えている。ま
た、CPU1501は、論理アドレスから物理アドレス
への変換とセグメントごとのメモリ保護とを実現するセ
グメント機構(図5で詳述する)を備えている。
【0040】図4を参照して、本形態例におけるソフト
ウェア構成を説明する。本形態例におけるソフトウェア
は、アプリケーション(401)、複数のサーバ・プロ
グラム(402)、およびマイクロ・カーネル(40
3)の3階層からなる。サーバ・プログラム(402)
は、前述のOSサーバ・タスクと役割は同等であるが、
別タスクとして実現する訳ではないので、このように呼
ぶこととする。また、サーバ・プログラム(402)と
マイクロ・カーネル(403)とを併せて、アプリケー
ションから要求されるシステムコールの実行を行なう1
つのパーソナリティを形成する。
【0041】アプリケーション(401)は複数存在し
うる。アプリケーション(401)は、サーバ・プログ
ラム(402)(またはマイクロ・カーネル(40
3))に対してシステムコールを発するが、マイクロ・
カーネル(403)がタスク制御ブロック(406)内
にタスクごとの割り込みベクタ・テーブル(411)の
ベース・アドレス(IDTR407)を定義することに
より、同じCPU命令を発しても、アプリケーション
(401)ごとにシステムコールの処理内容を変えるこ
とを可能にしている。また、このアプリケーション(4
01)の一つに、マルチ・パーソナリティ・アプリケー
ションを起動できるシェルがある。このシェルの構成に
ついては、後に詳述する。
【0042】サーバ・プログラム(402)は、当該サ
ーバ・プログラム(402)が管理するタスクに関する
タスク制御ブロック(404)を保持する。これらのタ
スク制御ブロック(404)は、マイクロ・カーネル
(403)が保持するタスク制御ブロック(406)へ
のポインタと、当該サーバ・プログラム(402)が個
別に管理するタスク制御ブロック・フィールド(40
5)とから構成されている。
【0043】マイクロ・カーネル(403)は、各種の
テーブルを保持する。図4では、本発明と関係の深いパ
ーソナリティ登録表(900)、マウント表(80
0)、およびタスク制御ブロック(406)のみを描い
ている。タスク制御ブロック(406)は、パーソナリ
ティ名(414)、割り込みベクタ・テーブル・ベース
・アドレス(407)、サーバ・プログラムが存在する
セグメントのセグメント・ディスクリプタ(408)、
サーバ関数エントリ・ポイント・テーブル(412)の
ベース・アドレス(409)、および局所セグメント・
テーブル(413)のベース・アドレス(410)を保
持する。
【0044】セグメント・テーブルとは、以下で述べる
セグメント機構を実現するために必要となるテーブルで
ある。本形態例では、CPUがこのセグメント機構を提
供することを前提としている。セグメント機構は、論理
アドレスから物理アドレスへの変換と、セグメントごと
のメモリ保護を実現する。図5に、セグメント機構にお
ける論理アドレスから物理アドレスへの変換方式を示
す。
【0045】図5において、論理アドレス(501)
は、セグメント番号(503)とオフセット(504)
に分割される。セグメント・テーブル・ベース・レジス
タ(505)とセグメント番号(503)との和の主メ
モリ番地に、そのセグメントに関する情報(セグメント
・テーブル(413)内)が格納されている。この情報
をセグメント・ディスクリプタ(506)と呼ぶ。論理
アドレス(501)のオフセット(504)とセグメン
ト・ディスクリプタ(506)内に格納されているベー
ス・アドレス(507)の和が求める物理アドレス(5
02)となる。
【0046】また、セグメントにおけるメモリ保護に
は、セグメント・ディスクリプタ(506)の保護レベ
ル情報L(509)を用いる。現在実行中のプログラム
が属するセグメントの保護レベルより保護レベルが高い
セグメントへのジャンプや読み書きを禁止することによ
ってメモリ保護を実現する。
【0047】また、論理アドレス(501)から物理ア
ドレス(502)への変換時に、論理アドレスのオフセ
ット(504)がセグメント・ディスクリプタ(50
6)に格納されているサイズ(508)より大きいか否
かを判別し、大きかったらエラーを返すことによって、
セグメント(510)外への不法なアクセスを防いでい
る。
【0048】本形態例では、アプリケーション(40
1)、サーバ・プログラム(402)、マイクロ・カー
ネル(403)が、それぞれ別セグメントに配置され、
かつ保護レベルも上記順序で高くなるように設定されて
いるものとする。従って、アプリケーションからサーバ
・プログラムやマイクロ・カーネルにコールする場合に
はトラップを、マイクロ・カーネルからサーバ・プログ
ラムをコールする場合にはサブ・ルーチン・コールを用
いる。
【0049】図6に、本形態例における空間の配置方法
を示す。セグメント・テーブルには、全タスクで共通に
使用される大域セグメント・テーブル(601)と各タ
スクごとに個別に使用される局所セグメント・テーブル
(413)があるものとする。
【0050】マイクロ・カーネル(403)空間は、大
域セグメント・テーブル(601)を用いて物理空間に
マップされる。すなわち、マイクロ・カーネル(40
3)空間は、すべてのアプリケーション(401)やサ
ーバ・プログラム(402)からトラップを用いてアク
セス可能になる。サーバ・プログラム(402)空間
は、局所セグメント・テーブル(413)の予め定めら
れたエントリを用いて物理空間にマップされる。この定
められたエントリに、マイクロ・カーネル(403)が
所持するタスク制御ブロック(406)内のサーバ・プ
ログラム・セグメント・ディスクリプタ・フィールド
(408)の内容をコピーすることによって、アプリケ
ーション(401)ごとにトラップを用いてアクセス可
能なサーバ・プログラム(402)を切り替える。ま
た、アプリケーション(401)は、局所セグメント・
テーブル(413)を用いて物理空間にマップする。従
って、1つのアプリケーション(401)から他のアプ
リケーション(401)へのアクセスを行なうことはで
きない。
【0051】次に、本形態例で用いるマルチ・パーソナ
リティ・アプリケーションが起動可能なシェルの構成に
ついて述べる。
【0052】本シェルは、図7のプログラムによって実
現される。図7のプログラムにおいて、左側の001〜
009の数字は行番号を示す。1行目、2行目、3行
目、4行目、および8行目の文は、本発明に係る固有な
関数を含んでいる。
【0053】<パーソナリティの初期化>の部分では、
各パーソナリティの初期化を行なう段階で実行する必要
のあるコードのうち、本発明と関係の深い部分のみを示
している。1行目の文は、パーソナリティのファイル・
システムをマイクロ・カーネルからアクセス可能にする
べくマウント表(800)(エントリの内容は後述)へ
ファイル・システムの登録を行なう関数df_pers
onality_mountの呼び出しである。2行目
の文は、パーソナリティ登録表(900)(エントリの
内容は後述)に必要なパーソナリティ情報を登録する関
数personality_registerの呼び出
しである。
【0054】<パーソナリティの終了>の部分では、各
パーソナリティの終了処理を行なう段階で実行する必要
のあるコードのうち、本発明と関係の深い部分のみを示
している。3行目目の文は、パーソナリティのファイル
・システムをマイクロ・カーネルからアクセス不可能に
するべくマウント表(800)からファイル・システム
の削除を行なう関数df_personality_u
mountの呼び出しである。4行目の文は、パーソナ
リティ登録表(900)から、終了するパーソナリティ
に関する情報を削除する関数personality_
free関数の呼び出しである。
【0055】<マルチパーソナリティシェル>の部分で
は、複数のパーソナリティ上で動作するアプリケーショ
ンを同様なコマンド入力によって起動可能にするシェル
のメインループの部分を示している。5行目の文は、コ
マンド・プロンプトの出力を行なう。6行目の文は、入
力されるコマンドを読み込んでいる。7行目は、入力さ
れたコマンドをコマンド引数に分解し、コマンド引数の
文字列の配列argv,と引数の数argcを返す関数
get_argumentを呼び出している。8行目の
文は、argv[0]で示されるアプリケーションを自
らの子タスクとして起動する関数df_persona
lity_tsk_executeの呼び出しである。
9行目の文は、子タスクの実行終了を待つ。
【0056】以下、図7のプログラムに登場する本形態
例に固有の関数群、df_personality_m
ount関数、df_personality_umo
unt関数、personality_registe
r関数、personality_free関数、df
_personality_tsk_execute関
数の外部仕様(アプリケーション・プログラム・インタ
フェース)とその内部処理フロー、およびこれと関連す
るデータ構造について説明する。
【0057】まず、df_personality_m
ount関数について説明する。df_persona
lity_mount関数は、下記の外部仕様を提供す
る。 記述形式:df_personality_mount(partition,pty_name,
mount_dir,root_inf) 機能:マウント表(800)に、partitionで
示されたパーティション名、pty_nameで示され
たパーソナリティ名、mount_dirで示されたマ
ウント・ディレクトリの登録を行なう。 引数: partition:パーティション名 pty_name:パーソナリティ名 mount_dir:マウント・ディレクトリ root_inf:ルート情報 リターン値:マウントに成功した場合にはE_OKを、
そうでなければエラーコード(負の整数値)をリターン
する。
【0058】df_personality_moun
t関数は、図8に示されるマウント表(800)の各フ
ィールドの登録を行なう。マウント表(800)は以下
の各フィールドで構成される。 パーティション名(801):ファイル・システムを含
むパーティション名を示す。 マウント・ディレクトリ(802):シェル・タスクが
動作しているパーソナリティのファイル・システムにお
ける、各ファイル・システムのマウント・ディレクトリ
を示す。シェル・タスクが動作しているパーソナリティ
名のパス名の指定方法に基づいた表記法を用いて指定す
る。 パーソナリティ名(803):当該パーティションに格
納されているファイル・システムのパーソナリティ名を
示す。 ルート情報(804):ファイル・システムのルートに
関する情報を格納する。このフィールドに格納される情
報はファイル・システムに依存する。例えば、UNIX
ファイル・システムの場合には、ルート・ディレクトリ
のiノード番号が入る。MS−DOSファイル・システ
ムの場合は、パーティションの先頭ブロック内の固定さ
れたオフセットにルートのFAT情報が格納されている
ため、このフィールドは使用されない。
【0059】次に、df_personality_u
mount関数について説明する。df_person
ality_umount関数は、下記の外部仕様を提
供する。 記述形式:df_personality_umount(pty_name) 機能:マウント表(800)から、pty_nameで
指定されるパーソナリティに関するマウント情報を削除
する。 引数:pty_name:マウント表(800)からマ
ウント情報を削除したいパーソナリティ名。 リターン値:マウント情報の削除成功の場合にはE_O
Kを、そうでなければエラーコード(負の整数値)をリ
ターンする。
【0060】次に、personality_regi
ster関数について説明する。personalit
y_register関数は、下記の外部仕様を提供す
る。 記述形式:personality_register(pty_name,load_routi
ne,setup_routine,trap_vector,server_segment,server
_function_routine) 機能:パーソナリティ登録表(900)に、pty_n
ameで指定されたパーソナリティ名、load_ro
utineで指定されたバイナリ・ファイルの主メモリ
へのロード・ルーチン、setup_routineで
指定されたタスク制御ブロックの個別フィールド部の初
期化ルーチン、trap_vectorで指定された割
り込みベクタ・テーブル・ベース・アドレス、serv
er_segmentで指定されたサーバ・プログラム
の配置されているセグメント番号に対応するセグメント
・ディスクリプタ、server_function_
routineで指定されたサーバ関数ルーチン・エン
トリ・ポイント・テーブル・ベース・アドレスを登録す
る。 引数: pty_name:パーソナリティ名 load_routine:バイナリ・ファイルのロー
ド・ルーチン setup_routine:タスク制御ブロックの個
別フィールドの初期化ルーチン trap_vector:割り込みベクタ・テーブル リターン値:登録成功の場合にはE_OK(0)を、そ
うでなければエラーコード(負の整数値)をリターンす
る。
【0061】personality_registe
r関数は、図9に示されるパーソナリティ登録表(90
0)の各フィールドの登録を行なう。パーソナリティ登
録表(900)は、以下の各フィールドで構成する。 パーソナリティ名(901):パーソナリティ名を登録
する。マウント表(800)に登録されるパーソナリテ
ィ名(803)と同じ名前になるようにする。 ロード・ルーチン(902):パーソナリティごとに異
なるロード・ルーチンのエントリポイントを登録する。
ロード・ルーチンとは、パス名、コマンド・ライン引
数、およびマウント表のエントリへのポインタを関数の
引数としてとり、パス名で指定されたバイナリ・ファイ
ルの主メモリへのロードおよびコマンド・ライン引数に
応じたスタック状態の設定を行なうルーチンである。ま
た、戻り値として、指定アプリケーションの属するパー
ソナリティ名を返す。 セット・アップ・ルーチン(903):パーソナリティ
ごとに異なるセット・アップ・ルーチンのエントリポイ
ントを登録する。セット・アップ・ルーチンとは、サー
バ・プログラムの管理するタスク制御ブロック(40
4)の初期化を行なうルーチンである。
【0062】割り込みベクタ・テーブル(904):パ
ーソナリティごとに異なる割り込みベクタ・テーブル・
ベース・アドレス(割り込みベクタ・テーブルへのポイ
ンタ)を登録する。このフィールドをパーソナリティご
とに設けてあるので、アプリケーションは、当該アプリ
ケーションが属するパーソナリティごとに異なるシステ
ムコールを、同じCPU命令を用いて、実行することが
できる。なお、本形態例で提供している関数を実行する
ための割り込みベクタなどは、各パーソナリティで共通
にとっておく必要がある。全体としての割り込み番号の
割り振りは、図10で示すようにする。すなわち、各パ
ーソナリティで共通の割り込み番号として、マイクロ・
カーネル用システムコール実行用割り込みベクタおよび
外部割り込みベクタに割り振りをしておき、さらにパー
ソナリティごとに異なるシステムコールを実行すること
ができるように、サーバ・プログラムごとにサーバ・プ
ログラム用システムコール実行用割り込みベクタ・テー
ブルを用意しておく。
【0063】サーバ・プログラムのセグメント情報(9
05):サーバ・プログラムの属するセグメントのセグ
メント・ディスクリプタが格納されている。引数で与え
られたサーバ・プログラムが属するセグメント番号を対
応するセグメント・ディスクリプタに変換して格納す
る。 サーバ関数エントリポイント:マイクロ・カーネルから
サーバ・プログラムに対して通知したいイベントが発生
した場合にコールする関数のエントリ・ポイントの配列
のベースを格納する。マイクロ・カーネルがUNIXサ
ーバ・プログラムがシグナル処理を行なうために、割り
込みの発生をマイクロ・カーネルからUNIXサーバ・
プログラムに通知したい場合などに用いられる。
【0064】次に、personality_free
関数について説明する。personality_fr
ee関数は、下記の外部仕様を提供する。 記述形式:personality_free(pty_name) 機能:パーソナリティ登録表(900)から、pty_
nameで指定されたパーソナリティ名に関するエント
リを削除する。 引数:pty_name:パーソナリティ登録表(90
0)から削除したいエントリのパーソナリティ名 リターン値:削除に成功した場合にはE_OK(0)
を、そうでない場合にはエラーコード(負の整数値)を
リターンする。
【0065】次に、df_personality_t
sk_execute関数について説明する。df_p
ersonality_tsk_execute関数
は、下記の外部仕様を提供する。 記述形式:df_personality_tsk_execute(file,argv,arg
c,init_envp) 機能:file名で示されたバイナリ・ファイルを、a
rgv,argcで与えられた引数を持ち、init_
envpで与えられた初期環境の下で、子タスクとして
実行を開始する。 引数: file:バイナリ・ファイルのパス名 argv:コマンド引数の文字列の配列 argc:コマンド引数の数 init_envp:初期環境へのポインタ リターン値:子タスクのタスクIDを関数値(正の整数
値)としてリターンする。ただし、子タスクの生成に失
敗した場合には、エラーコード(負の整数値)をリター
ンする。
【0066】df_personality_tsk_
execute関数は、指定されたバイナリ・ファイル
を主メモリ(1502)上にロードし、それを呼び出し
たタスクの子タスクとして実行を開始させる。
【0067】図11に、df_personality
_tsk_execute関数の処理フローを示す。d
f_personality_tsk_execute
関数が呼び出されると、まずマイクロ・カーネルは、処
理ステップ1102において、新しく生成される子タス
ク用の空きタスク制御ブロック(406)を確保する。
次に、処理ステップ1103において、新しく生成され
るタスクのセグメント・テーブル(413)領域などを
主メモリ上に確保する。処理ステップ1104では、指
定されたバイナリ・ファイルの内容を主メモリにロード
する。このロード処理に関しては、後に詳述する。この
ロード処理は、リターン値として、主メモリに展開した
バイナリ・ファイルのパーソナリティ名を返す。
【0068】処理ステップ1105では、マイクロ・カ
ーネルが管理するタスク制御ブロック(406)(ステ
ップ1102で確保)を初期化する。具体的には、タス
ク制御ブロック(406)のパーソナリティ名(41
4)に、ステップ1104のロード処理から返されたパ
ーソナリティ名を設定する。また、そのパーソナリティ
名に対応するパーソナリティ登録表(900)内のエン
トリを探し、そのエントリに従って、タスク制御ブロッ
ク(406)のサーバ・プログラムのセグメント・ディ
スクリプタ・フィールド(408)、サーバ関数エント
リ・ポイント・テーブル・ベース・アドレス・フィール
ド(409)、および割り込みベクタ・テーブル・ベー
ス・アドレス・フィールド(407)を設定する。局所
セグメント・テーブル(413)のベース・アドレス
(410)としては、処理ステップ1103において主
メモリ上に確保された領域の先頭アドレスを設定する。
【0069】処理ステップ1106では、ロード・ルー
チン(902)によってリターンされたパーソナリティ
名に従って分岐し、処理ステップ1107では、そのパ
ーソナリティ名に従ったセット・アップ・ルーチン(9
03)を起動する。このルーチンでは、サーバ・プログ
ラム(402)が管理するタスク制御ブロック(40
4)の初期化が行なわれる。処理ステップ1108で、
初期環境に従った環境設定を行なう。最後に処理ステッ
プ1109で、レディーキュー操作とディスパッチャを
起動して終了する。
【0070】図12に、先程詳細を省略したロード処理
(図11のステップ1104)の処理フローの代表例と
して、UNIXパーソナリティのロード・ルーチン(9
02)の処理フローを示す。ロード処理は、argv
[0](argvはdf_personality_t
sk_execute関数の引数として与えられる)で
指定されたパス名に該当するバイナリ・ファイルの主メ
モリ(1502)へのロード、およびargvに従った
スタックの設定を行なう。ロード・ルーチン(902)
は、argv,argcおよびマウント表(800)へ
のエントリへのポインタを引数にとり、リターン値とし
て、主メモリ(1502)に展開したバイナリ・ファイ
ルのパーソナリティ名を返す。引数として与えられるマ
ウント表(800)へのエントリへのポインタというの
は、現在、シェルが動作しているパーソナリティ(本例
では、UNIXパーソナリティ)のパーティションに対
応するエントリへのポインタのことである。
【0071】処理ステップ1201において、引数とし
て与えられたマウント表(800)のエントリのルート
情報(804)から、ルートiノードを獲得し、これを
作業iノードとする。処理ステップ1202では、パス
名(argv[0]で指定されたパス名)の次の区切り
文字(UNIXであれば”/”がこれにあたる)までの
ディレクトリ名(またはファイル名)の読み込みを行な
う。一番始めは、パス名の先頭から第1番目に出現する
ディレクトリ名(またはファイル名)が読み込まれるこ
とになる。次に、処理ステップ1203では、現在の作
業iノードの内容から、ステップ1202で読み込んだ
ディレクトリ名(またはファイル名)に該当するiノー
ド番号を得て、これを新たな作業iノードとする。
【0072】次に、処理ステップ1204において、作
業iノードがマウント・ポイントであるか否かを調べ
る。マウント・ポイントであるか否かの判別は、作業i
ノードのディレクトリをマウント表(800)のマウン
ト・ディレクトリ・エントリ(802)と比較し、一致
するものを検索することにより行なう。
【0073】マウント・ポイントであれば、処理ステッ
プ1205で、マウント・ディレクトリ・エントリ(8
02)が作業iノードのディレクトリと合致するマウン
ト表(800)の当該エントリから、マウント先のファ
イル・システムのパーソナリティ名(802)を得る。
そして、処理ステップ1206において、未解析のパス
名(すなわち、argv[0]で指定されたパス名から
マウント・ディレクトリ(802)部分を除いた分)、
コマンド・ライン引数、および当該マウント表(80
0)エントリへのポインタを引数として与えて、マウン
ト先パーソナリティのロード・ルーチン(902)を呼
び出す。マウント先のパーソナリティ名(802)は既
にステップ1205で分かっているから、パーソナリテ
ィ登録表(900)を参照して当該パーソナリティ名に
対応するロード・ルーチン(902)が分かる。ロード
後は、当該パーソナリティ名と呼び出したロード・ルー
チン(902)のリターン値を、リターン値として返し
て、ロード処理の実行を終了する。
【0074】また、処理ステップ1204において、マ
ウント・ポイントでなければ、処理ステップ1207に
おいて、未解析のパス名が残っているかを判定し、残っ
ている場合には、処理ステップ1202に戻って実行を
継続する。残っていない場合には、UNIXパーソナリ
ティのバイナリが指定されたということであるから、処
理ステップ1208でそのロードを行なう。すなわち、
処理ステップ1208で、マイクロ・カーネルは、まず
iノード情報からバイナリ・イメージが存在する論理ブ
ロック番号を得る。また、マイクロ・カーネルは、主メ
モリ(1502)上の空き領域を確保して、局所セグメ
ント・テーブル(413)を更新し、上記論理ブロック
番号のディスク・ブロック・データ(指定されたバイナ
リ・ファイルの内容)を主メモリに転送する。最後に、
argvに応じてスタック状態を変更して実行を終了す
る。この場合、リターン値のパーソナリティ名は、UN
IXパーソナリティとなる。
【0075】次に、上記形態例で説明したインターフェ
ースを用いて機能拡張されたdfコマンドを実行する応
用例について説明する。dfコマンドとはディスクの使
用状況を標準出力に出力するコマンドであるが、本例に
よる拡張dfコマンドでは、他パーソナリティのファイ
ル・システムが格納されているディスクパーティション
のディスク使用状況も知ることができる。例えば、UN
IXのファイル・システムとMS−DOSのファイル・
システムとが混在していた場合であっても、本例の拡張
dfコマンドによれば、UNIXで動作するdfコマン
ドを起動してUNIXのファイル・システムのディスク
使用状況を取得し、引続きMS−DOSで動作するdf
コマンドを起動してMS−DOSのファイル・システム
のディスク使用状況を取得することができる。
【0076】図13に、拡張dfコマンドの具体的なプ
ログラム例を示す。1行目で、ファイル・システムのマ
ウント状況を示すファイル/etc/fstabをオー
プンしている。3行目で、その/etc/fstabの
次のエントリのデバイス名(パーティション名)を、g
et_next_device関数で取得している。g
et_next_device関数は、次のエントリを
読み込む際にEOF(ファイルの終り)文字を読み込ん
だ場合には負の整数値を返すものとする。3行目から6
行目ではすべてのデバイスについて処理を終了したとき
にfinishを1としてbreakするようにし、こ
れによりwhileのループ(2行目から18行目)を
抜けて処理を終了するようにしている。
【0077】7行目では、get_next_pers
onality関数により、ファイル・システムのパー
ソナリティ名を取得している。そして、8行目以降で、
ファイル・システムのパーソナリティ名に従って、それ
ぞれのパーソナリティのディスク使用状況を標準出力に
出力するコマンドを実行している。なお、この例では、
ファイル・システムのパーソナリティ名として、UNI
XとMS−DOSしか存在しないとした。従って、ファ
イル・システムのパーソナリティ名として「UNIX」
が返ってきたときは11行目でdf_personal
ity_tsk_execute関数を用いてUNIX
のdfコマンド(/bin/df)を実行し、「MS−
DOS」が返ってきたときは15行目でdf_pers
onality_tsk_execute関数を用いて
MS−DOSのdfコマンド(/dos/MSDOS¥
DF.EXE)を実行している。
【0078】このように、df_personalit
y_tsk_execute関数を用いると、通常のシ
ステムコール実行と同じ回数のコンテクスト・スイッチ
を用いて異パーソナリティ・アプリケーション・タスク
を起動することが可能であるので、上述の拡張dfコマ
ンドのような複数のパーソナリティに対してそれぞれコ
マンド実行を要求しなければならないようなコマンド
も、高速な実行が可能になる。
【0079】次に、上記形態例で説明したインターフェ
ースを用いて、拡張された^C入力の実行をする応用例
について説明する。^C入力とは、キーボード上のct
rlキーとCキーとを同時に押下することをいう。^C
入力により、現在シェルの前面で動作しているアプリケ
ーション・タスクを強制終了させることができる。
【0080】ここでは、例として、マルチ・パーソナリ
ティ・シェルがMS−DOSパーソナリティ上で動作し
ており、かつ、そのシェルからUNIXアプリケーショ
ンが起動されているものとする。本例の拡張された^C
入力の実行では、たとえシェルの前面で異パーソナリテ
ィ・アプリケーション・タスクが実行されていた場合に
も、その異パーソナリティ・アプリケーション・タスク
の実行を強制終了させることができる。図14に、その
実行の手順を示す。
【0081】いま、マルチ・パーソナリティ・シェルが
MS−DOSパーソナリティ上で動作しており、かつ、
そのシェルからUNIXアプリケーション(1406)
が起動されているとする。^Cが入力されると、マイク
ロ・カーネルは、割り込みにより^Cが入力されたこと
を知る(1401)。マイクロ・カーネルは、タスク制
御ブロック(406)により現在シェルの前面で実行中
のタスクを知ることができるから、^C入力がかけられ
た被割り込みタスクがUNIXパーソナリティに属して
いることを知ることができる。動作中のシェルはMS−
DOSパーソナリティに属するので、UNIXパーソナ
リティに属するタスクを強制終了させるためには、この
割り込み発生をUNIXサーバ・プログラム(140
4)に通知する必要がある。
【0082】そこで、マイクロ・カーネルは、割り込み
ハンドラの最後において、現在実行中のタスクID(ア
プリケーション(1406)のタスクID)を引数にし
てUNIXパーソナリティのサーバ関数をコール(14
02)するように、割り込みハンドラを形成しておく。
UNIXパーソナリティのサーバ関数のエントリ・ポイ
ント(1403)が格納されているサーバ関数エントリ
・ポイント・テーブル(412)のベース・アドレス
は、予めpersonality_register関
数でパーソナリティ登録表(900)のサーバ関数エン
トリ・ポイント・フィールド(906)に登録されてお
り、さらにdf_personality_tsk_e
xecute関数によりアプリケーション(1406)
のタスクを生成するときにタスク制御ブロック(40
6)のサーバ関数エントリ・ポイント・テーブル・ベー
ス・アドレス・フィールド(409)にコピーされるの
で、当該エントリ・ポイント(1403)を知ることが
できる。
【0083】UNIXサーバ・プログラム(1404)
は、サーバ関数の中で、引数で与えられたタスクIDに
該当するアプリケーション・タスク(1406)にSI
GTERMシグナルを送信する(1405)。SIGT
ERMシグナルを受信したタスク(1406)は、シグ
ナル・ハンドラを実行し、自らを強制終了させる。
【0084】エミュレーション方式のように、エミュレ
ータ上で異パーソナリティ・アプリケーション・タスク
を実行している場合には、カーネルから見えているエミ
ュレション・タスクに対し、まず、指定アプリケーショ
ンの終了を要求するシグナルを送信する必要がある。そ
して、そのシグナルハンドラ内で、エミュレータから実
行しているアプリケーションに対して強制終了を要求す
るメッセージを送信してやる必要がある。このようにエ
ミュレーション方式では、コマンド・ラインから^Cが
入力されたとしても、容易に異アプリケーション・タス
クの強制終了を行なうことができない。それに対し、d
f_personality_tsk_execute
関数を用いて起動された異アプリケーション・タスクに
対しては、上述したように強制終了を容易に実現でき
る。
【0085】上記形態例および応用例によれば、パーソ
ナリティごとに割り込みベクタ・テーブルを定義可能に
した。その結果、例えば異なるパーソナリティの2つの
タスクがシステムコール実行のために同じトラップ命令
を発しても、異なるシステムコール処理ルーチンが実行
される。また、パーソナリティごとに割り込みベクタ・
テーブルを差し替えることに加えて、タスクを起動する
際にパーソナリティごとに異なるルーチンをパーソナリ
ティ登録表に登録するインターフェースを提供した。さ
らに、異パーソナリティ・ファイル・システムのマウン
ト情報をマウント表に登録するインターフェースも提供
した。その結果、起動したいアプリケーションのバイナ
リ・ファイルのパス名を指定すれば、マウント表を用い
たパス名解析を行ない、属するファイル・システムのパ
ーソナリティ名が判別可能になった。そして、パーソナ
リティ登録表内のパーソナリティ名に対応するエントリ
から、タスク起動の際のパーソナリティ依存ルーチンを
得ることができる。その結果、パス名の指定のみで、異
アプリケーション・タスクを同一インタフェースで起動
することを可能にしている。以下、本形態例がもたらす
結果を要約する。
【0086】1)本形態例が提供するpersonal
ity_register関数などを用いると、パーソ
ナリティごとに、任意の割り込みベクタ・テーブルを実
現できる。その結果、従来の単一パーソナリティ・サポ
ートのオペレーティング・システム上で動作していたア
プリケーションのバイナリ・ファイルがそのままマルチ
・パーソナリティ・シェルにおいても利用できる。
【0087】2)本形態例が提供するdf_perso
nality_tsk_execute関数を用いる
と、単一パーソナリティ・サポートのオペレーティング
・システムと同じコンテクスト・スイッチ回数で異パー
ソナリティ・アプリケーション・タスクを起動可能にな
る。従来のMachやエミュレーション方式による異パ
ーソナリティ・アプリケーション起動より、起動時間が
短縮できる。
【0088】3)本形態例が提供するdf_perso
nality_tsk_execute関数を用いる
と、マイクロ・カーネルがすべてのパーソナリティのタ
スクを管理することになる。また、サーバ・プログラム
へのイベント通知は、タスク間通信機構ではなくサブ・
ルーチン・コールで実現可能になる。そのため、任意の
パーソナリティに属するタスクの強制終了処理が容易な
手順でしかも高速に実現可能になる。
【0089】
【発明の効果】以上説明したように、本発明によれば、
高速に異パーソナリティ・アプリケーション・タスクを
起動することができ、従来の単一パーソナリティ・オペ
レーティング・システム上で動作していたアプリケーシ
ョンのバイナリ・ファイルをそのまま利用することがで
き、さらに、異パーソナリティ・アプリケーション・タ
スクの強制終了を複雑な処理を経ないで実行することの
できる、マルチ・パーソナリティ・シェルを実現可能な
異パーソナリティ・アプリケーションの起動方法および
コンピュータ・システムが提供される。
【図面の簡単な説明】
【図1】Machマイクロ・カーネルを用いてマルチ・
パーソナリティを実現する従来のソフトウェア構成の概
要図
【図2】Machマイクロ・カーネルの異パーソナリテ
ィ・タスク起動手順を示す図
【図3】エミュレーション方式の異パーソナリティ・タ
スク起動手順を示す図
【図4】本発明の実施の形態例のソフトウェア構成図
【図5】セグメント機構を示す図
【図6】形態例の空間配置を示す図
【図7】形態例のマルチ・パーソナリティ・シェル・プ
ログラムの一例を示す図
【図8】マウント表の構造を示す図
【図9】パーソナリティ登録表の構造を示す図
【図10】形態例の割り込みベクタ・テーブルの割り付
け法を示す図
【図11】異アプリケーション・タスク起動処理(df
_personality_tsk_execute関
数)の処理フローを示す図
【図12】UNIXパーソナリティのロード・ルーチン
の処理フローを示す図
【図13】拡張dfプログラムの一例を示す図
【図14】異パーソナリティ・アプリケーションの強制
終了の手順を示す図
【図15】形態例のコンピュータ・システムのハードウ
ェア構成を示す図
【符号の説明】
401…アプリケーション、402…サーバ・プログラ
ム、403…マイクロ・カーネル、404…タスク制御
ブロック、406…タスク制御ブロック、414…パー
ソナリティ名、407…割り込みベクタ・テーブル・ベ
ース・アドレス、408…サーバ・プログラムが存在す
るセグメントのセグメント・ディスクリプタ、412…
サーバ関数エントリ・ポイント・テーブル、409…サ
ーバ関数エントリ・ポイント・テーブル・ベース・アド
レス、413…局所セグメント・テーブル、410…局
所セグメント・テーブルのベース・アドレス、800…
マウント表、900…パーソナリティ登録表、1501
…CPU、1502…主メモリ、1503…ディスク・
コントローラ、1504…ディスク。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】異種のオペレーティング・システム上で動
    作するアプリケーションである異パーソナリティ・アプ
    リケーションを起動する起動方法であって、 異種のオペレーティング・システム用のファイル・シス
    テムのマウント情報を、カーネル内に予め登録するステ
    ップと、 異種のオペレーティング・システム上で動作するタスク
    を起動するにあたって必要となる該オペレーティング・
    システムに依存するパーソナリティ依存情報を、カーネ
    ル内に予め登録するステップと、 異種のオペレーティング・システム上で動作するアプリ
    ケーションのバイナリ・ファイルのパス名が指定された
    とき、上記マウント情報とパーソナリティ依存情報を用
    いて、該アプリケーションのバイナリ・ファイルのディ
    スク上の存在位置と、該アプリケーションの属するパー
    ソナリティを特定し、バイナリ・ファイルの内容をファ
    イル・システムから読み込み、主メモリにロードし、か
    つ初期環境を与えて該アプリケーションを起動させるス
    テップとを備えたことを特徴とする異パーソナリティ・
    アプリケーションの起動方法。
  2. 【請求項2】前記パーソナリティ依存情報が、当該パー
    ソナリティに特有の、パーソナリティ名、バイナリ・フ
    ァイルのロード・ルーチン、タスクの初期化ルーチン、
    割り込みベクタ・テーブル、およびサーバ関数エントリ
    ・ポイントを特定する情報である請求項1に記載の異パ
    ーソナリティ・アプリケーションの起動方法。
  3. 【請求項3】異種のオペレーティング・システム上で動
    作するアプリケーションである異パーソナリティ・アプ
    リケーションを起動するインターフェースを有するコン
    ピュータ・システムであって、 異種のオペレーティング・システム用のファイル・シス
    テムのマウント情報を、カーネル内に予め登録するイン
    ターフェースと、 上記登録されたマウント情報を削除するインターフェー
    スと、 異種のオペレーティング・システム上で動作するタスク
    を起動するにあたって必要となる該オペレーティング・
    システムに依存するパーソナリティ依存情報を、カーネ
    ル内に予め登録するインターフェースと、 上記登録されたパーソナリティ依存情報を削除するイン
    ターフェースと、 異種のオペレーティング・システム上で動作するアプリ
    ケーションのバイナリ・ファイルのパス名が指定された
    とき、上記マウント情報とパーソナリティ依存情報を用
    いて、該アプリケーションのバイナリ・ファイルのディ
    スク上の存在位置と、該アプリケーションの属するパー
    ソナリティを特定し、バイナリ・ファイルの内容をファ
    イル・システムから読み込み、主メモリにロードし、か
    つ初期環境を与えて該アプリケーションを起動させるイ
    ンターフェースとを備えたことを特徴とするコンピュー
    タ・システム。
  4. 【請求項4】前記パーソナリティ依存情報が、当該パー
    ソナリティに特有の、パーソナリティ名、バイナリ・フ
    ァイルのロード・ルーチン、タスクの初期化ルーチン、
    割り込みベクタ・テーブル、およびサーバ関数エントリ
    ・ポイントを特定する情報である請求項3に記載のコン
    ピュータ・システム。
JP7350537A 1995-12-22 1995-12-22 異パーソナリティ・アプリケーションの起動方法およびコンピュータ・システム Pending JPH09179728A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7350537A JPH09179728A (ja) 1995-12-22 1995-12-22 異パーソナリティ・アプリケーションの起動方法およびコンピュータ・システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7350537A JPH09179728A (ja) 1995-12-22 1995-12-22 異パーソナリティ・アプリケーションの起動方法およびコンピュータ・システム

Publications (1)

Publication Number Publication Date
JPH09179728A true JPH09179728A (ja) 1997-07-11

Family

ID=18411164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7350537A Pending JPH09179728A (ja) 1995-12-22 1995-12-22 異パーソナリティ・アプリケーションの起動方法およびコンピュータ・システム

Country Status (1)

Country Link
JP (1) JPH09179728A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001516079A (ja) * 1997-08-18 2001-09-25 マイクロソフト コーポレイション 複数のプラットフォームを備えたコンピュータ用プログラム・インターフェース・コンバータ
JP2009509214A (ja) * 2005-08-10 2009-03-05 シンビアン ソフトウェア リミテッド スレッドコールテーブルを用いたコンピュータ装置への機能性の付加

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001516079A (ja) * 1997-08-18 2001-09-25 マイクロソフト コーポレイション 複数のプラットフォームを備えたコンピュータ用プログラム・インターフェース・コンバータ
JP2009509214A (ja) * 2005-08-10 2009-03-05 シンビアン ソフトウェア リミテッド スレッドコールテーブルを用いたコンピュータ装置への機能性の付加

Similar Documents

Publication Publication Date Title
CN108170503B (zh) 一种跨系统运行安卓应用的方法、终端及存储介质
CA2178581C (en) Automatic booting framework
US5574915A (en) Object-oriented booting framework
US9189263B1 (en) Object synchronization in shared object space
US6052732A (en) System for dynamically loading object viewer from client or server
US8336056B1 (en) Multi-threaded system for data management
US7096473B2 (en) Computer system with an improved device and driver framework
EP3035191A1 (en) Identifying source code used to build executable files
JPH06324849A (ja) オペレーティング・システム環境の起動方法およびシステム
JP2004355620A (ja) Acpiマシン語テーブルの生成システムおよび生成方法
JPH11327919A (ja) オブジェクト指向割込みシステム用の方法およびデバイス
JPH0916503A (ja) コンピュータプロセスを管理する方法および装置
JPH06222931A (ja) パーソナルコンピュータのための制御プログラム及びプログラム間連絡提供方法
JPH02153434A (ja) データ処理システム
JPH09179728A (ja) 異パーソナリティ・アプリケーションの起動方法およびコンピュータ・システム
US7730015B1 (en) Stackable storage access mechanism for file systems
US20200401415A1 (en) Operating system architecture for microkernel generations support
Cohn et al. Basing Micro-kernel Abstractions on High-Level Language Models
Alias et al. Fundamental of Operating System Technology
Kedem Creating an Arduino Operating System
Krzyzanowski Operating System Concepts What is an operating system, what does it do, and how do you talk to it?
Brain et al. Win32 system services: the heart of Windows 98 and Windows 2000
Meza Hand held workstation: a guide to embedding the Linux kernel
Neugebauer et al. ESPRIT LTR 21917 (Pegasus II) Deliverable 4.5. 2: Unix functionality
JP2005514686A (ja) 動作環境においてソフトウェアコントロールを適合させるシステムおよび方法