JPH06295237A - 動作システムを動作させるシステム及び方法 - Google Patents
動作システムを動作させるシステム及び方法Info
- Publication number
- JPH06295237A JPH06295237A JP5156393A JP15639393A JPH06295237A JP H06295237 A JPH06295237 A JP H06295237A JP 5156393 A JP5156393 A JP 5156393A JP 15639393 A JP15639393 A JP 15639393A JP H06295237 A JPH06295237 A JP H06295237A
- Authority
- JP
- Japan
- Prior art keywords
- module
- kernel
- loaded
- modules
- operating system
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Hardware Redundancy (AREA)
Abstract
(57)【要約】 (修正有)
【目的】新しいモジュールが作り出されても、カーネル
を格納するのに必要な記憶装置の量を増大しないように
する。 【構成】動作システムのモジュールにアクセスするプロ
セスにより要求を阻止し、モジュールがカーネル記憶装
置にロードされてカーネル記憶装置に設置され且つ適切
な表に載置されている他のモジュールと連結されている
か否かを判定するモジュールサブシステムを設ける。モ
ジュールがカーネル記憶装置に入っており且つ設置さえ
ていれば、モジュールサブシステムは要求されているモ
ジュールへの設置プロセスアクセスを承認し、処理が継
続する。モジュールがカーネル記憶装置にロードされて
いなければ、モジュールサブシステムはモジュールのコ
ピーを検索してこれをカーネル記憶装置内に複写する。
次にモジュールをカーネルに設置されている他のモジュ
ールと連結し、設置する。アクセスの承認が要求中のプ
ロセスに対して与えられ、通常の処理が継続する。
を格納するのに必要な記憶装置の量を増大しないように
する。 【構成】動作システムのモジュールにアクセスするプロ
セスにより要求を阻止し、モジュールがカーネル記憶装
置にロードされてカーネル記憶装置に設置され且つ適切
な表に載置されている他のモジュールと連結されている
か否かを判定するモジュールサブシステムを設ける。モ
ジュールがカーネル記憶装置に入っており且つ設置さえ
ていれば、モジュールサブシステムは要求されているモ
ジュールへの設置プロセスアクセスを承認し、処理が継
続する。モジュールがカーネル記憶装置にロードされて
いなければ、モジュールサブシステムはモジュールのコ
ピーを検索してこれをカーネル記憶装置内に複写する。
次にモジュールをカーネルに設置されている他のモジュ
ールと連結し、設置する。アクセスの承認が要求中のプ
ロセスに対して与えられ、通常の処理が継続する。
Description
【0001】
【産業上の利用分野】本発明は、動的に構成可能なカー
ネルに関する。更に詳細には、本発明は、必要に応じて
カーネルのモジュールを自動的にロードするシステムに
関する。
ネルに関する。更に詳細には、本発明は、必要に応じて
カーネルのモジュールを自動的にロードするシステムに
関する。
【0002】
【従来の技術】コンピュータシステムの中心構成要素の
一つはその動作システムのカーネルである。カーネル
は、ストリームドライバや装置ドライバを含むドライ
バ、ファイルシステムモジュール、スケジュールクラ
ス、ストリームモジュール、およびシステムコールのよ
うな複数のモジュールから構成されているのが普通であ
る。これらモジュールはコンパイルされ、続いて互いに
連結されてカーネルを形成する。それに続き、システム
が始動するかまたは「ブートアップ」されると、カーネ
ルが記憶装置にロードされる。しかし、技術が進歩し、
一層多くの機能を発揮する更にこみ入った複雑なモジュ
ールが作られ、新しいモジュールが作り出されるにつれ
て、カーネルを格納するのに必要な記憶装置の量が劇的
に増大する。
一つはその動作システムのカーネルである。カーネル
は、ストリームドライバや装置ドライバを含むドライ
バ、ファイルシステムモジュール、スケジュールクラ
ス、ストリームモジュール、およびシステムコールのよ
うな複数のモジュールから構成されているのが普通であ
る。これらモジュールはコンパイルされ、続いて互いに
連結されてカーネルを形成する。それに続き、システム
が始動するかまたは「ブートアップ」されると、カーネ
ルが記憶装置にロードされる。しかし、技術が進歩し、
一層多くの機能を発揮する更にこみ入った複雑なモジュ
ールが作られ、新しいモジュールが作り出されるにつれ
て、カーネルを格納するのに必要な記憶装置の量が劇的
に増大する。
【0003】
【発明が解決しようとする課題】コンピュータシステム
の記憶装置の限界を克服する一つの方法はページング可
能なカーネルである。ページング機構はカーネル記憶装
置をカーネル記憶装置のメモリ使用法に従ってページン
グするかまたはディスクに取換えることにより実現され
る。しかし、カーネルの多大な部分がページング不可能
であり、カーネルをページング可能な部分に区分する困
難さは得られる可能性のある利益より大きいことがわか
っている。コンピュータシステムはコンピュータ利用の
各計画形式について静的に構成されるのが普通である。
コンピュータの中には基本モジュールだけが利用される
ものがある。他のコンピュータはこみ入った処理に利用
され、別のモジュールを必要とすることがある。しか
し、カーネルを構成したりまたは再構成したりする仕事
は簡単ではなく、一般に典型的なユーザの技能の程度を
超えている。
の記憶装置の限界を克服する一つの方法はページング可
能なカーネルである。ページング機構はカーネル記憶装
置をカーネル記憶装置のメモリ使用法に従ってページン
グするかまたはディスクに取換えることにより実現され
る。しかし、カーネルの多大な部分がページング不可能
であり、カーネルをページング可能な部分に区分する困
難さは得られる可能性のある利益より大きいことがわか
っている。コンピュータシステムはコンピュータ利用の
各計画形式について静的に構成されるのが普通である。
コンピュータの中には基本モジュールだけが利用される
ものがある。他のコンピュータはこみ入った処理に利用
され、別のモジュールを必要とすることがある。しか
し、カーネルを構成したりまたは再構成したりする仕事
は簡単ではなく、一般に典型的なユーザの技能の程度を
超えている。
【0004】
【課題を解決する手段】本発明によれば、仮想的カーネ
ル機能が提供される。これは要求時に、必要に応じて、
カーネル記憶装置にモジュールを設けることにより達成
される。したがって、可能な限り少ない組合わせのモジ
ュールを最初カーネルにロードし、残りのモジュールを
必要なときだけ追加する。これは、コンピュータシステ
ムの典型的なほとんどのユーザが利用可能なモジュール
すべてを必要とすることはないから、カーネルに必要な
記憶装置の量を劇的に減らすことがわかっている。更
に、この方法ではカーネルにロードしようとするモジュ
ールのどれかが変わる場合再構成する、すなわち、(カ
ーネルを構築しなおす)必要性が回避される。
ル機能が提供される。これは要求時に、必要に応じて、
カーネル記憶装置にモジュールを設けることにより達成
される。したがって、可能な限り少ない組合わせのモジ
ュールを最初カーネルにロードし、残りのモジュールを
必要なときだけ追加する。これは、コンピュータシステ
ムの典型的なほとんどのユーザが利用可能なモジュール
すべてを必要とすることはないから、カーネルに必要な
記憶装置の量を劇的に減らすことがわかっている。更
に、この方法ではカーネルにロードしようとするモジュ
ールのどれかが変わる場合再構成する、すなわち、(カ
ーネルを構築しなおす)必要性が回避される。
【0005】当業界ではドライバを、ドライバモジュー
ルをロードする命令を明らかに実行することによりユー
ザがロードし得ることが周知であるが、これでは必要に
応じてモジュールを自動的にロードしてカーネルを維持
するのに必要な記憶装置の量を可能な限り少なくするよ
うになっていない。
ルをロードする命令を明らかに実行することによりユー
ザがロードし得ることが周知であるが、これでは必要に
応じてモジュールを自動的にロードしてカーネルを維持
するのに必要な記憶装置の量を可能な限り少なくするよ
うになっていない。
【0006】本発明のシステムは仮想的カーネル機能を
提供するシステムを示している。各モジュールは実行可
能なイメージに別々にコンパイルされる。モジュールは
カーネルにより要求されるまで記憶装置に置かれる。カ
ーネル記憶装置に設けられているシステム構成表は、モ
ジュールがカーネルに存在するか、またはモジュールが
カーネルに存在せず、したがってカーネルをカーネル記
憶装置にロードして既にカーネル記憶装置にロードされ
ているモジュールと連結する必要があるかを判定するの
に利用される。仮想的機能は、モジュールを参照すると
きモジュール構成表にアクセスする要求を検出し、モジ
ュールが記憶装置に存在するか否かを判定するためにア
クセスの要求を中断することにより与えられる。モジュ
ールがカーネル記憶装置に存在しなければ、モジュール
をカーネル記憶装置にロードし、そのモジュールをカー
ネル記憶装置に存在しているモジュールと動的に連結
し、その後のアクセスがモジュールがカーネルにロード
され且つ設置されていることを示すようにモジュールを
適切な構成表に設置する。
提供するシステムを示している。各モジュールは実行可
能なイメージに別々にコンパイルされる。モジュールは
カーネルにより要求されるまで記憶装置に置かれる。カ
ーネル記憶装置に設けられているシステム構成表は、モ
ジュールがカーネルに存在するか、またはモジュールが
カーネルに存在せず、したがってカーネルをカーネル記
憶装置にロードして既にカーネル記憶装置にロードされ
ているモジュールと連結する必要があるかを判定するの
に利用される。仮想的機能は、モジュールを参照すると
きモジュール構成表にアクセスする要求を検出し、モジ
ュールが記憶装置に存在するか否かを判定するためにア
クセスの要求を中断することにより与えられる。モジュ
ールがカーネル記憶装置に存在しなければ、モジュール
をカーネル記憶装置にロードし、そのモジュールをカー
ネル記憶装置に存在しているモジュールと動的に連結
し、その後のアクセスがモジュールがカーネルにロード
され且つ設置されていることを示すようにモジュールを
適切な構成表に設置する。
【0007】
【実施例の説明】説明の目的のための以下の記述では、
特定の記憶装置、組織、構造、データ速度などを本発明
を充分理解できるようにするため示してある。しかし、
当業者には本発明をこれら特定の細目が無くても実用化
し得ることが明らかであろう。他の場合には、本発明を
不必要に不明瞭にしないために周知の回路またはハード
ウェアをブロック図の形で示してある。本発明の動的に
構成可能な動作システムを下にUNIX動作システムに関し
て説明する(UNIXはAT&Tの登録商標である)。当業者に
は次の説明から本発明がそのように限定されるものでは
なく、他の動作システムにも適用し得ることが明らかで
あろう。
特定の記憶装置、組織、構造、データ速度などを本発明
を充分理解できるようにするため示してある。しかし、
当業者には本発明をこれら特定の細目が無くても実用化
し得ることが明らかであろう。他の場合には、本発明を
不必要に不明瞭にしないために周知の回路またはハード
ウェアをブロック図の形で示してある。本発明の動的に
構成可能な動作システムを下にUNIX動作システムに関し
て説明する(UNIXはAT&Tの登録商標である)。当業者に
は次の説明から本発明がそのように限定されるものでは
なく、他の動作システムにも適用し得ることが明らかで
あろう。
【0008】カーネルを動的に構成する2ステッププロ
セスについて説明する。カーネルに設置されているシス
テム構成表の組合わせを利用してモジュールの状態を識
別する。モジュールが呼出されるかまたは参照されるか
すると、そのモジュール形式に対する構成表を調べてモ
ジュールが設置されているか否か判定する。モジュール
が設置されていなければ、モジュールをロードし、設置
し、それにより構成表を対応して更新する。
セスについて説明する。カーネルに設置されているシス
テム構成表の組合わせを利用してモジュールの状態を識
別する。モジュールが呼出されるかまたは参照されるか
すると、そのモジュール形式に対する構成表を調べてモ
ジュールが設置されているか否か判定する。モジュール
が設置されていなければ、モジュールをロードし、設置
し、それにより構成表を対応して更新する。
【0009】カーネル内にアクセス可能なモジュールを
設けるために、モジュールをカーネルにロードして設置
する。ロードするプロセスの間、仮想的および物理的な
記憶装置をそのモジュールのためにとっておく。モジュ
ールを物理的記憶装置に書込み、モジュールをその連結
された仮想的アドレスに再配置し、すべての記号参照を
行えるようにする。設置している間、モジュールを適切
な構成表に接続し、モジュールに関する表のエントリが
割当てられ、それに適切な情報が記入されるようにす
る。
設けるために、モジュールをカーネルにロードして設置
する。ロードするプロセスの間、仮想的および物理的な
記憶装置をそのモジュールのためにとっておく。モジュ
ールを物理的記憶装置に書込み、モジュールをその連結
された仮想的アドレスに再配置し、すべての記号参照を
行えるようにする。設置している間、モジュールを適切
な構成表に接続し、モジュールに関する表のエントリが
割当てられ、それに適切な情報が記入されるようにす
る。
【0010】図1を参照すると、モジュールはしたがっ
て三つの状態の一つにあることができる。最初モジュー
ルはロードされまたは設置されてなく、エントリが構成
表に割当てられていない(構成表があらかじめ割当てら
れたエントリを備えている場合の他) (1)。モジュール
をロードし得るが、モジュールは設置されずエントリが
構成表内に割当てられていない (2)。モジュールに対す
るエントリを構成表に割当てることができ、それに適切
な情報が書込まれ、モジュールがカーネルにロードさ
れ、設置されている (3)。この状態では、モジュールに
アクセスすることができ、モジュールが行う動作をシス
テムに利用することができる。下に説明するとおり、構
成表内のエントリはモジュールを最初に設置したとき割
当てられることができる。代わって、装置ドライバ構成
表のような或る構成表では、エントリを各モジュールの
あらかじめ割当てられた識別番号に対応するようにあら
かじめ割当てることが有利である。
て三つの状態の一つにあることができる。最初モジュー
ルはロードされまたは設置されてなく、エントリが構成
表に割当てられていない(構成表があらかじめ割当てら
れたエントリを備えている場合の他) (1)。モジュール
をロードし得るが、モジュールは設置されずエントリが
構成表内に割当てられていない (2)。モジュールに対す
るエントリを構成表に割当てることができ、それに適切
な情報が書込まれ、モジュールがカーネルにロードさ
れ、設置されている (3)。この状態では、モジュールに
アクセスすることができ、モジュールが行う動作をシス
テムに利用することができる。下に説明するとおり、構
成表内のエントリはモジュールを最初に設置したとき割
当てられることができる。代わって、装置ドライバ構成
表のような或る構成表では、エントリを各モジュールの
あらかじめ割当てられた識別番号に対応するようにあら
かじめ割当てることが有利である。
【0011】カーネルはハードウェアの動作に関する機
能を行う複数のモジュールから構成されている。モジュ
ールには装置ドライバ、システムコールモジュール、フ
ァイルシステムモジュール、ストリームモジュール、ス
ケジューリングクラスモジュール、および他の雑多なモ
ジュールがある。これらモジュールは別々にコンパイル
され、格納される。カーネルは最初基本的な組合わせの
モジュールで構成される。基本的組合わせのモジュール
は少なくとも、モジュールを記憶装置から読出すモジュ
ール、およびモジュールをカーネル記憶装置にロード
し、ロードしようとするモジュールをカーネルに現存し
ているモジュールと連結するモジュールサブシステムを
備えるべきである。基本的組合わせのモジュールを始動
時にロードしまたは結合することを要求するだけで、モ
ジュールの残りの結合をモジュールが必要になるまで遅
らせ、それによりシステムの柔軟性が保たれる。しか
し、ユーザの要求および仕様に従って別のモジュールを
最初にロードすることができる。たとえば、記憶装置管
理モジュールおよび或る装置ドライバモジュールを、そ
れらモジュールの使用頻度に基づきロードするのが望ま
しいことがある。
能を行う複数のモジュールから構成されている。モジュ
ールには装置ドライバ、システムコールモジュール、フ
ァイルシステムモジュール、ストリームモジュール、ス
ケジューリングクラスモジュール、および他の雑多なモ
ジュールがある。これらモジュールは別々にコンパイル
され、格納される。カーネルは最初基本的な組合わせの
モジュールで構成される。基本的組合わせのモジュール
は少なくとも、モジュールを記憶装置から読出すモジュ
ール、およびモジュールをカーネル記憶装置にロード
し、ロードしようとするモジュールをカーネルに現存し
ているモジュールと連結するモジュールサブシステムを
備えるべきである。基本的組合わせのモジュールを始動
時にロードしまたは結合することを要求するだけで、モ
ジュールの残りの結合をモジュールが必要になるまで遅
らせ、それによりシステムの柔軟性が保たれる。しか
し、ユーザの要求および仕様に従って別のモジュールを
最初にロードすることができる。たとえば、記憶装置管
理モジュールおよび或る装置ドライバモジュールを、そ
れらモジュールの使用頻度に基づきロードするのが望ま
しいことがある。
【0012】システムを作り上げるときは、複数のモジ
ュール構成表を作り、カーネル記憶装置に格納する。こ
れら構成表をカーネルにロードすべきモジュールの形式
に従って分類する。たとえば、装置ドライバ用構成表、
システムコール用構成表、ストリームモジュール用構成
表、およびファイルシステムモジュール用構成表が存在
する。モジュールを静的にロードし、始動時に結合する
従来技術のシステムでは、これら構成表は、各モジュー
ルの構造を指すポインタまたはハンドルを含む、各モジ
ュールに関する情報と共にロードされる。たとえば、Su
nOs動作システム(SunOsはSun Microsystems, Inc.の
商標である)UNIXカーネルでは、装置ドライバ構成表、
devopsp、の各エントリにはdev−ops構成を指すハンド
ルに対するフィールドがある。同様に、ファイルシステ
ム構成表、 vfssw、にはファイルシステムの名称に関す
るフィールド、ファイルシステムについての「init」ル
ーチンを指すハンドル、vfsops構造を指すハンドル、お
よびファイルシステムにアクセスするのに使用されるロ
ックがある。
ュール構成表を作り、カーネル記憶装置に格納する。こ
れら構成表をカーネルにロードすべきモジュールの形式
に従って分類する。たとえば、装置ドライバ用構成表、
システムコール用構成表、ストリームモジュール用構成
表、およびファイルシステムモジュール用構成表が存在
する。モジュールを静的にロードし、始動時に結合する
従来技術のシステムでは、これら構成表は、各モジュー
ルの構造を指すポインタまたはハンドルを含む、各モジ
ュールに関する情報と共にロードされる。たとえば、Su
nOs動作システム(SunOsはSun Microsystems, Inc.の
商標である)UNIXカーネルでは、装置ドライバ構成表、
devopsp、の各エントリにはdev−ops構成を指すハンド
ルに対するフィールドがある。同様に、ファイルシステ
ム構成表、 vfssw、にはファイルシステムの名称に関す
るフィールド、ファイルシステムについての「init」ル
ーチンを指すハンドル、vfsops構造を指すハンドル、お
よびファイルシステムにアクセスするのに使用されるロ
ックがある。
【0013】本発明のシステムでは、異なるモジュール
を識別する表のエントリをモジュール名称と静的に結び
つけるのではなく、モジュールをカーネルに設置すると
き必要に応じて作り、または割当てるようにしている。
しかし、ユーザによりアクセスし得る一貫した識別が必
要なこれらモジュール形式はブーツを横断しておよび機
能を横断して一貫した識別または結合を確保するために
構成表にエントリをあらかじめ割当ててある。たとえ
ば、構成表が装置ドライバ用のもの、「 devopsp」、で
あれば、装置ドライバ用のエントリを各装置ドライバの
主要番号が一貫して割当てられるようにあらかじめ割当
てられている。同じ要求事項がシステムコールについて
存在する。すなわち「sysint」表は各システムコールモ
ジュールをそのシステムコール番号により一貫して識別
しなければならない。
を識別する表のエントリをモジュール名称と静的に結び
つけるのではなく、モジュールをカーネルに設置すると
き必要に応じて作り、または割当てるようにしている。
しかし、ユーザによりアクセスし得る一貫した識別が必
要なこれらモジュール形式はブーツを横断しておよび機
能を横断して一貫した識別または結合を確保するために
構成表にエントリをあらかじめ割当ててある。たとえ
ば、構成表が装置ドライバ用のもの、「 devopsp」、で
あれば、装置ドライバ用のエントリを各装置ドライバの
主要番号が一貫して割当てられるようにあらかじめ割当
てられている。同じ要求事項がシステムコールについて
存在する。すなわち「sysint」表は各システムコールモ
ジュールをそのシステムコール番号により一貫して識別
しなければならない。
【0014】システムはそのようなものに限定されない
が、モジュールが構成表内にエントリを割当てられれ
ば、エントリはシステムが再ブーツされるまで割当てら
れたままであることが望ましい。各構成表において表内
の各エントリに対する所定のフィールドはモジュールの
状態を識別するのに使用される。構成表に複数のハンド
ルがあれば、モジュールの状態を識別するのに最も活動
的なハンドルを利用するようにする。ハンドルがヌル値
のような所定の値であれば、モジュールは未設置状態に
ある。表の空フィールドを参照するとき生ずることがあ
る不参照エラーを回避するために、モジュールの未設置
状態をモジュールの未設置状態を示す所定の特定値を挿
入することにより識別するようにする。たとえば、ハン
ドルをモジュールがカーネルに設置されていないことを
示すようにあらかじめ決定されているアドレスと共にロ
ードする。モジュールがカーネルにロードされれば、ハ
ンドルフィールドにはモジュールに対する有効ハンドル
が入ることになる。
が、モジュールが構成表内にエントリを割当てられれ
ば、エントリはシステムが再ブーツされるまで割当てら
れたままであることが望ましい。各構成表において表内
の各エントリに対する所定のフィールドはモジュールの
状態を識別するのに使用される。構成表に複数のハンド
ルがあれば、モジュールの状態を識別するのに最も活動
的なハンドルを利用するようにする。ハンドルがヌル値
のような所定の値であれば、モジュールは未設置状態に
ある。表の空フィールドを参照するとき生ずることがあ
る不参照エラーを回避するために、モジュールの未設置
状態をモジュールの未設置状態を示す所定の特定値を挿
入することにより識別するようにする。たとえば、ハン
ドルをモジュールがカーネルに設置されていないことを
示すようにあらかじめ決定されているアドレスと共にロ
ードする。モジュールがカーネルにロードされれば、ハ
ンドルフィールドにはモジュールに対する有効ハンドル
が入ることになる。
【0015】これらヌルまたは特殊エントリはモジュー
ルサブシステムに対してモジュールをカーネルにロード
して設置すべきことを示すフラグとして働く。したがっ
て、コードを実行して特定のモジュールを呼出すと、そ
のモジュールがカーネルにロードされ、カーネル記憶装
置に現存する他のモジュールと連結され、構成表に設置
されているかを判定するチェックが行われる。モジュー
ルがロードされていず、設置されていなければ、モジュ
ールサブシステムは処理を続ける前にモジュールをカー
ネルにロードし設置させる。モジュールが設置されてい
ることが確認されれば、カーネルでの処理が続行され
る。代わりに、特定のモジュールを最初に呼出すかまた
は参照する場合にはフラグをカーネルの異なる場所に組
込むことができる。こうしてから代わりの機構を使用し
てこれらフラグの有無およびモジュールの状態を検出す
る。
ルサブシステムに対してモジュールをカーネルにロード
して設置すべきことを示すフラグとして働く。したがっ
て、コードを実行して特定のモジュールを呼出すと、そ
のモジュールがカーネルにロードされ、カーネル記憶装
置に現存する他のモジュールと連結され、構成表に設置
されているかを判定するチェックが行われる。モジュー
ルがロードされていず、設置されていなければ、モジュ
ールサブシステムは処理を続ける前にモジュールをカー
ネルにロードし設置させる。モジュールが設置されてい
ることが確認されれば、カーネルでの処理が続行され
る。代わりに、特定のモジュールを最初に呼出すかまた
は参照する場合にはフラグをカーネルの異なる場所に組
込むことができる。こうしてから代わりの機構を使用し
てこれらフラグの有無およびモジュールの状態を検出す
る。
【0016】モジュールサブシステムをカーネルに設け
て、カーネル内の一定のモジュールに対して行われる呼
出しを中断し、モジュールが現在カーネルにロードされ
て設置されているかまたはモジュールをカーネル記憶装
置にロードし、連結し、設置することを必要としている
か判定する。模範的なモジュールサブシステムおよびカ
ーネルとの相互作用のブロック図を図2に示す。モジュ
ールサブシステム20は、モジュールがカーネル記憶装置
にロードされ且つ設置されているか否かを判定するため
にモジュールに対する各呼びを阻止する。モジュールサ
ブシステムはまた、呼ばれたモジュールがロードされて
設置されているか判定するため、モジュールを呼出す他
のモジュールからの呼びを阻止する。図2を参照する
と、ユーザプログラムおよびライブラリはシステムコー
ルを発し、これはカーネルにおいてシステムコールモジ
ュール10により受取られる。モジュールサブシステム20
は、特定の呼びがカーネルに設置されているモジュール
により支持されているか否かを、システムコール構成表
システム30を調べることにより判定する。モジュールが
ロードされ且つ設置されていれば、それに対応する動作
が行われる。同様に、ファイルサブシステム33またはプ
ロセス制御サブシステム35が必要ならば、モジュールの
設置が、 vfssw表37を参照することにより、またはプロ
セス制御サブシステムの場合には、クラス39またはexec
sw表40を参照することによりチェックされる。これらは
モジュールサブシステム20により検査されてモジュール
がロードされ設置されているか判定する。装置ドライバ
モジュールが必要なときは表devopsp 42がモジュールサ
ブシステム20によりチェックされ、ストリームモジュー
ルが必要なときは、表fmodsw44が同様にモジュールサブ
システムによりチェックされる。
て、カーネル内の一定のモジュールに対して行われる呼
出しを中断し、モジュールが現在カーネルにロードされ
て設置されているかまたはモジュールをカーネル記憶装
置にロードし、連結し、設置することを必要としている
か判定する。模範的なモジュールサブシステムおよびカ
ーネルとの相互作用のブロック図を図2に示す。モジュ
ールサブシステム20は、モジュールがカーネル記憶装置
にロードされ且つ設置されているか否かを判定するため
にモジュールに対する各呼びを阻止する。モジュールサ
ブシステムはまた、呼ばれたモジュールがロードされて
設置されているか判定するため、モジュールを呼出す他
のモジュールからの呼びを阻止する。図2を参照する
と、ユーザプログラムおよびライブラリはシステムコー
ルを発し、これはカーネルにおいてシステムコールモジ
ュール10により受取られる。モジュールサブシステム20
は、特定の呼びがカーネルに設置されているモジュール
により支持されているか否かを、システムコール構成表
システム30を調べることにより判定する。モジュールが
ロードされ且つ設置されていれば、それに対応する動作
が行われる。同様に、ファイルサブシステム33またはプ
ロセス制御サブシステム35が必要ならば、モジュールの
設置が、 vfssw表37を参照することにより、またはプロ
セス制御サブシステムの場合には、クラス39またはexec
sw表40を参照することによりチェックされる。これらは
モジュールサブシステム20により検査されてモジュール
がロードされ設置されているか判定する。装置ドライバ
モジュールが必要なときは表devopsp 42がモジュールサ
ブシステム20によりチェックされ、ストリームモジュー
ルが必要なときは、表fmodsw44が同様にモジュールサブ
システムによりチェックされる。
【0017】図4を参照すると、モジュールサブシステ
ムは制御モジュール70、設置モジュール74、および実行
時リンカー72から構成されている。制御モジュール70は
モジュールに対するアクセス要求を阻止し、適切なモジ
ュール構成表を調べてモジュールがカーネルに設置され
ているか判定する。設置モジュール74は、制御モジュー
ル70がカーネルに存在しないことを確認するときモジュ
ールをカーネルにロードさせ、設置させ、実行時リンカ
ー72は、ロードされ設置されるモジュールに呼出される
が、カーネルに既に存在しているモジュールとロードし
ようとするモジュールとの間の参照を解決する。
ムは制御モジュール70、設置モジュール74、および実行
時リンカー72から構成されている。制御モジュール70は
モジュールに対するアクセス要求を阻止し、適切なモジ
ュール構成表を調べてモジュールがカーネルに設置され
ているか判定する。設置モジュール74は、制御モジュー
ル70がカーネルに存在しないことを確認するときモジュ
ールをカーネルにロードさせ、設置させ、実行時リンカ
ー72は、ロードされ設置されるモジュールに呼出される
が、カーネルに既に存在しているモジュールとロードし
ようとするモジュールとの間の参照を解決する。
【0018】好適実施例では、モジュールサブシステム
は対応するモジュール構成表を参照することによりモジ
ュールの状態を判断する。モジュールは必要なとき自動
的にロードされ、設置される。モジュールは、それらが
行う機能が名称(ストリームモジュールのプッシュまた
はファイルシステムのマウントのような)により参照さ
れるときまたはカーネルに存在しない機能に対するカー
ネル参照を満足するのにモジュールが必要であるとき、
必要である。模範的な構成表を図3に示す。好適実施例
では、これらの表を、モジュールの形式(たとえば、fm
odsw)を識別する特定の記号名または変数名により識別
されるロケーションで参照されるカーネル記憶装置のロ
ケーションに設置される。たとえば、ファイルシステム
モジュールに対する構成表は「 vfssw」として識別され
る。使用する名称および表が設置されるロケーションは
現存するUNIXカーネルに見られるものと同じであること
が望ましい。
は対応するモジュール構成表を参照することによりモジ
ュールの状態を判断する。モジュールは必要なとき自動
的にロードされ、設置される。モジュールは、それらが
行う機能が名称(ストリームモジュールのプッシュまた
はファイルシステムのマウントのような)により参照さ
れるときまたはカーネルに存在しない機能に対するカー
ネル参照を満足するのにモジュールが必要であるとき、
必要である。模範的な構成表を図3に示す。好適実施例
では、これらの表を、モジュールの形式(たとえば、fm
odsw)を識別する特定の記号名または変数名により識別
されるロケーションで参照されるカーネル記憶装置のロ
ケーションに設置される。たとえば、ファイルシステム
モジュールに対する構成表は「 vfssw」として識別され
る。使用する名称および表が設置されるロケーションは
現存するUNIXカーネルに見られるものと同じであること
が望ましい。
【0019】カーネルにモジュールを動的にロードする
プロセスを図5の流れ図により図解してある。モジュー
ルへのアクセスが要求されるときおよび/またはプロセ
ス表にアクセスしようとするとき、モジュールサブシス
テムはアクセス要求を阻止する、ステップ 100。モジュ
ールに対する表のエントリをチェックしてそこにモジュ
ールがカーネルに設置されていないことを示す特別のま
たは空のエントリが入っていないか判定する、ステップ
105。特別のまたは空のエントリが存在しないためモジ
ュールが設置されていることが確認されれば、ステップ
110、モジュールサブシステムは戻って要求中のプロセ
スアクセスを承認し、通常の処理を継続させる、ステッ
プ 115。空のまたは特別のエントリが存在すれば、制御
モジュールは記憶装置からコンパイル済みモジュールが
入っているファイルを検索し、ステップ120、そのファ
イルを調べてファイルの大きさを決定する、ステップ12
5。次に記憶装置をそのファイルのカーネル記憶装置に
割当てる、ステップ 130。好ましくは、これは現存のUN
IXカーネルに存在するカーネル記憶装置割付けルーチン
を用いて行われる。次にコンパイル済みモジュールが入
っているファイルを割当てられた記憶装置に複写し、ス
テップ 135、次に設けられている実行時リンカーを始動
させてモジュールをカーネル記憶装置に設置されている
他のモジュールと連結し、それとの参照を解決する、ス
テップ 140。
プロセスを図5の流れ図により図解してある。モジュー
ルへのアクセスが要求されるときおよび/またはプロセ
ス表にアクセスしようとするとき、モジュールサブシス
テムはアクセス要求を阻止する、ステップ 100。モジュ
ールに対する表のエントリをチェックしてそこにモジュ
ールがカーネルに設置されていないことを示す特別のま
たは空のエントリが入っていないか判定する、ステップ
105。特別のまたは空のエントリが存在しないためモジ
ュールが設置されていることが確認されれば、ステップ
110、モジュールサブシステムは戻って要求中のプロセ
スアクセスを承認し、通常の処理を継続させる、ステッ
プ 115。空のまたは特別のエントリが存在すれば、制御
モジュールは記憶装置からコンパイル済みモジュールが
入っているファイルを検索し、ステップ120、そのファ
イルを調べてファイルの大きさを決定する、ステップ12
5。次に記憶装置をそのファイルのカーネル記憶装置に
割当てる、ステップ 130。好ましくは、これは現存のUN
IXカーネルに存在するカーネル記憶装置割付けルーチン
を用いて行われる。次にコンパイル済みモジュールが入
っているファイルを割当てられた記憶装置に複写し、ス
テップ 135、次に設けられている実行時リンカーを始動
させてモジュールをカーネル記憶装置に設置されている
他のモジュールと連結し、それとの参照を解決する、ス
テップ 140。
【0020】リンカーはモジュールでのコードによる参
照を固定し、正しいアドレスを参照しまたは呼出す。こ
のようにして、リンカーは、呼出すべきモジュールの名
称を使用して、機能が存在しているモジュール内のアド
レスを決定する。このアドレスを次に機能参照時にモジ
ュールに書込み、コードを実行するとき正しいアドレス
が識別されるようにする。リンカーの技術は当業者に周
知であり、ここでは詳細には説明しないことにする。好
適実施例ではカーネルは、或る一つの時期にモジュール
が一つだけ連結されることを除いてはUNIXファイルシス
テムで行われているdlopen、dlclose、およびdlsymと同
様の機能を行うリンカーを備えている。dlopen、dlclos
e、およびdlsymに関する事項については、Sun Microsys
tems, Inc.のSunOs動作システムマニアルページ、「Mi
scellaneous Library Functions(雑多なライブラリの機
能)」 (1990)を参照のこと。更にリンカーがモジュール
ファイルを指定アドレスに割当てしなおし、次いで共通
変数を割当て、モジュールからのカーネルへの参照を解
決するのが望ましい。
照を固定し、正しいアドレスを参照しまたは呼出す。こ
のようにして、リンカーは、呼出すべきモジュールの名
称を使用して、機能が存在しているモジュール内のアド
レスを決定する。このアドレスを次に機能参照時にモジ
ュールに書込み、コードを実行するとき正しいアドレス
が識別されるようにする。リンカーの技術は当業者に周
知であり、ここでは詳細には説明しないことにする。好
適実施例ではカーネルは、或る一つの時期にモジュール
が一つだけ連結されることを除いてはUNIXファイルシス
テムで行われているdlopen、dlclose、およびdlsymと同
様の機能を行うリンカーを備えている。dlopen、dlclos
e、およびdlsymに関する事項については、Sun Microsys
tems, Inc.のSunOs動作システムマニアルページ、「Mi
scellaneous Library Functions(雑多なライブラリの機
能)」 (1990)を参照のこと。更にリンカーがモジュール
ファイルを指定アドレスに割当てしなおし、次いで共通
変数を割当て、モジュールからのカーネルへの参照を解
決するのが望ましい。
【0021】モジュールは目的ファイルであるから、そ
れには未解決の参照が存在していることがある。これら
参照はモジュールがカーネル記号表をのぞくことにより
ロードされると満足される。それ故、モジュールが他の
モジュールを必要とするということを特に述べている場
合の他はこれら参照を解決するのに他のモジュールに関
する記号を使用しないことが望ましい。これは幾つかの
異なるモジュールに共通のコードが必要であるとき生ず
ることがある。たとえば、他のモジュールが必要である
ことを特に述べる一つの方法は文字列変数「_depends
_on 」を宣言し、これをこのモジュールが従属してい
る他のモジュールの<subdir/filename>対を用いて初期
設定することによることである。これは共通ライブラリ
にアクセスする実行可能イメージにある所要ライブラリ
リストと同様に働く。したがって、モジュールをロード
すると、従属変数で表されているモジュールのリストを
最初にロードする。
れには未解決の参照が存在していることがある。これら
参照はモジュールがカーネル記号表をのぞくことにより
ロードされると満足される。それ故、モジュールが他の
モジュールを必要とするということを特に述べている場
合の他はこれら参照を解決するのに他のモジュールに関
する記号を使用しないことが望ましい。これは幾つかの
異なるモジュールに共通のコードが必要であるとき生ず
ることがある。たとえば、他のモジュールが必要である
ことを特に述べる一つの方法は文字列変数「_depends
_on 」を宣言し、これをこのモジュールが従属してい
る他のモジュールの<subdir/filename>対を用いて初期
設定することによることである。これは共通ライブラリ
にアクセスする実行可能イメージにある所要ライブラリ
リストと同様に働く。したがって、モジュールをロード
すると、従属変数で表されているモジュールのリストを
最初にロードする。
【0022】カーネルの静的に連結された部分には未規
定の参照が存在する可能性があり、それ故、カーネルは
モジュール記号を直接参照することができない。モジュ
ールは、モジュールをロードするとカーネル実行時リン
カーが参照をモジュールからカーネルへ変ずるから、カ
ーネル記号への参照を備えていることがある。
定の参照が存在する可能性があり、それ故、カーネルは
モジュール記号を直接参照することができない。モジュ
ールは、モジュールをロードするとカーネル実行時リン
カーが参照をモジュールからカーネルへ変ずるから、カ
ーネル記号への参照を備えていることがある。
【0023】しかし、カーネルがカーネルの存在部分か
ら移動してしまっている機能を参照することを必要とす
るときがある。たとえば、カーネルでのexit()ルーチン
は常に退出プロセスがUNIXシステムV共有記憶装置を使
用して場合に浄化するshmexit()を呼出す。しかし、shm
exit()は今はロード可能モジュールにあってカーネルの
存在部分と連結していない。それ故、 shmexit()が規定
されていなければ、カーネルは未規定記号を受取ること
になる。解決法はカーネルの存在部分と連結している s
hmexit()に対するダミールーチンを設けることである。
このルーチンは適切なモジュールをロードしたり制御を
モジュールの目標ルーチンに移したりする仕方を知って
いる。このような存在ダミー機能をスタブという。スタ
ブは間接アドレス機能としてまはたPLT(手順連結
表)のエントリと類似しているが一層柔軟性が大きいも
のとして見ることができる。代わりに、PLTを修正し
てスタブ機能を発揮させることができる。たとえば、Su
nOs動作システムでは、制御をモジュールの目標ルーチ
ンに移すと、スタックフレームはスタブの呼出されたル
ーチンが間接に目標モジュールルーチンへの呼びを行う
ように見えるように配列される。したがって呼出し部の
引数が目標ルーチンに伝えられる。図6はスタブの処理
を図解する流れ図である。
ら移動してしまっている機能を参照することを必要とす
るときがある。たとえば、カーネルでのexit()ルーチン
は常に退出プロセスがUNIXシステムV共有記憶装置を使
用して場合に浄化するshmexit()を呼出す。しかし、shm
exit()は今はロード可能モジュールにあってカーネルの
存在部分と連結していない。それ故、 shmexit()が規定
されていなければ、カーネルは未規定記号を受取ること
になる。解決法はカーネルの存在部分と連結している s
hmexit()に対するダミールーチンを設けることである。
このルーチンは適切なモジュールをロードしたり制御を
モジュールの目標ルーチンに移したりする仕方を知って
いる。このような存在ダミー機能をスタブという。スタ
ブは間接アドレス機能としてまはたPLT(手順連結
表)のエントリと類似しているが一層柔軟性が大きいも
のとして見ることができる。代わりに、PLTを修正し
てスタブ機能を発揮させることができる。たとえば、Su
nOs動作システムでは、制御をモジュールの目標ルーチ
ンに移すと、スタックフレームはスタブの呼出されたル
ーチンが間接に目標モジュールルーチンへの呼びを行う
ように見えるように配列される。したがって呼出し部の
引数が目標ルーチンに伝えられる。図6はスタブの処理
を図解する流れ図である。
【0024】スタブはすべてファイルで規定されてい
る。スタブは現存する機能をカーネルからおよびモジュ
ール内に移動させるのに必要な機構を提供する。スタブ
には強および弱の二つの形式がある。強いスタブは必要
な場合モジュールをロードしようとし、弱いスタブはそ
うしない。上の例では、 shmexit()カーネル内で弱いス
タブとして規定されている。典型的には、弱いスタブは
得られる状態を単にカーネルにロードしないということ
により指示するモジュールについて利用される。たとえ
ば、共有記憶装置モジュールが既に存在していなけれ
ば、共有記憶装置区画は存在せず、したがってモジュー
ルをロードし、チェックを行って共有区画が存在しない
ことを見出す必要は全く無い。
る。スタブは現存する機能をカーネルからおよびモジュ
ール内に移動させるのに必要な機構を提供する。スタブ
には強および弱の二つの形式がある。強いスタブは必要
な場合モジュールをロードしようとし、弱いスタブはそ
うしない。上の例では、 shmexit()カーネル内で弱いス
タブとして規定されている。典型的には、弱いスタブは
得られる状態を単にカーネルにロードしないということ
により指示するモジュールについて利用される。たとえ
ば、共有記憶装置モジュールが既に存在していなけれ
ば、共有記憶装置区画は存在せず、したがってモジュー
ルをロードし、チェックを行って共有区画が存在しない
ことを見出す必要は全く無い。
【0025】図7を参照すると、二つのスタブデータ構
造が設けられている。一つはモジュールを記述するもの
であり他はそのスタブ機能を記述するものである。図
8、9は図7のデータ構造を作るのに使用されるスタブ
マイクロの図解を示している。
造が設けられている。一つはモジュールを記述するもの
であり他はそのスタブ機能を記述するものである。図
8、9は図7のデータ構造を作るのに使用されるスタブ
マイクロの図解を示している。
【0026】図5に戻って、モジュールがカーネル記憶
装置にロードされ、他のモジュールと連結されると、ス
テップ 145、設置プロセスが行われ、ロードされたモジ
ュールの構成表エントリがモジュールが今はカーネル記
憶装置に設置されていることを反映するように更新され
る。モジュールの対応する構成表に割当てられているエ
ントリが無い場合には、エントリが割当てられ、情報が
そのエントリに対するフィールドに入れられる。エント
リがモジュールに対してあらかじめ割当てられていれ
ば、モジュールがカーネルにロードされていないことを
示す特別のまたは空のエントリが現在入っているハンド
ルフィールドが、そのモジュールに対する正しいハンド
ルを備えるように更新される。こうしてから制御は阻止
されたプロセスに戻り、通常の処理が継続する。
装置にロードされ、他のモジュールと連結されると、ス
テップ 145、設置プロセスが行われ、ロードされたモジ
ュールの構成表エントリがモジュールが今はカーネル記
憶装置に設置されていることを反映するように更新され
る。モジュールの対応する構成表に割当てられているエ
ントリが無い場合には、エントリが割当てられ、情報が
そのエントリに対するフィールドに入れられる。エント
リがモジュールに対してあらかじめ割当てられていれ
ば、モジュールがカーネルにロードされていないことを
示す特別のまたは空のエントリが現在入っているハンド
ルフィールドが、そのモジュールに対する正しいハンド
ルを備えるように更新される。こうしてから制御は阻止
されたプロセスに戻り、通常の処理が継続する。
【0027】カーネルは、モジュールサブシステムを介
して、三つの機能、モジュールをロードして設置する機
能、モジュールをアンロードして取外す機能、およびモ
ジュールの状態に関する情報を要求する機能、を利用す
るのが望ましい。本発明のシステムにロードすることが
できるモジュールの形式に関する柔軟性を維持するに
は、カーネルが対応してモジュール特有機能を呼出して
所要機能を行うことが望ましい。それ故、好適実施例で
は、各モジュールはカーネルとモジュールとの間のイン
ターフェースとして働くラッパーを備えている。モジュ
ールラッパーはカーネルにより呼出すことができる三つ
の機能を規定する。「_init」ルーチンはモジュールが
ロードされ設置されると引数なしでカーネルから呼出さ
れる。このルーチンはモジュールをシステムに引掛ける
責務を有する。下に更に詳細に説明するように、「_fi
ni」ルーチンはモジュールをアンロードし取外す要求が
行われたときカーネルから呼出される。「_fini」ルー
チンはモジュールがアンロードおよび取外しに利用でき
るか否かを判定し、取外しおよびアンロードに利用でき
れば、モジュールをシステムから外す。「_info」ルー
チンはモジュール情報の要求が行われたときカーネルか
ら呼出される。
して、三つの機能、モジュールをロードして設置する機
能、モジュールをアンロードして取外す機能、およびモ
ジュールの状態に関する情報を要求する機能、を利用す
るのが望ましい。本発明のシステムにロードすることが
できるモジュールの形式に関する柔軟性を維持するに
は、カーネルが対応してモジュール特有機能を呼出して
所要機能を行うことが望ましい。それ故、好適実施例で
は、各モジュールはカーネルとモジュールとの間のイン
ターフェースとして働くラッパーを備えている。モジュ
ールラッパーはカーネルにより呼出すことができる三つ
の機能を規定する。「_init」ルーチンはモジュールが
ロードされ設置されると引数なしでカーネルから呼出さ
れる。このルーチンはモジュールをシステムに引掛ける
責務を有する。下に更に詳細に説明するように、「_fi
ni」ルーチンはモジュールをアンロードし取外す要求が
行われたときカーネルから呼出される。「_fini」ルー
チンはモジュールがアンロードおよび取外しに利用でき
るか否かを判定し、取外しおよびアンロードに利用でき
れば、モジュールをシステムから外す。「_info」ルー
チンはモジュール情報の要求が行われたときカーネルか
ら呼出される。
【0028】連結構造、modlinkage、はモジュールで規
定されている連結構造を好適に識別する。連結構造には
モジュールに関するモジュール特有情報が入っている。
説明の目的で、モジュールあたり一つだけ連結構造を規
定してある。しかし、当業者にはモジュールあたり複数
の連結構造を規定し得ることが明らかであろう。構造の
図解を図10に示す。変数「 ml−rev」はシステムの改
訂を表す。ラッパーの規定が変われば、改訂が変わる。
これにより現存するモジュールの支持が簡単になる。変
数「ml−linkage[4]」は連結構造を指すポインタのヌ
ル終端列である。連結構造にはモジュールを設置したり
取外したりするのに使用される情報が入っている。異な
る形式の連結構造の好適実施例を図11に示す。連結構
造の最初の二つの要素にはすべてのモジュールに関する
同じ形式の情報が入っている。構造の残りはモジュール
特有である。図11はモジュールをUNIXシステムのカー
ネルに見られるもののような例として引用したものであ
る。
定されている連結構造を好適に識別する。連結構造には
モジュールに関するモジュール特有情報が入っている。
説明の目的で、モジュールあたり一つだけ連結構造を規
定してある。しかし、当業者にはモジュールあたり複数
の連結構造を規定し得ることが明らかであろう。構造の
図解を図10に示す。変数「 ml−rev」はシステムの改
訂を表す。ラッパーの規定が変われば、改訂が変わる。
これにより現存するモジュールの支持が簡単になる。変
数「ml−linkage[4]」は連結構造を指すポインタのヌ
ル終端列である。連結構造にはモジュールを設置したり
取外したりするのに使用される情報が入っている。異な
る形式の連結構造の好適実施例を図11に示す。連結構
造の最初の二つの要素にはすべてのモジュールに関する
同じ形式の情報が入っている。構造の残りはモジュール
特有である。図11はモジュールをUNIXシステムのカー
ネルに見られるもののような例として引用したものであ
る。
【0029】モジュールは連結する前に、ELFフォー
マット(拡張可能リンカーフォーマット)のような目的
コードフォーマットにコンパイルされる。コンパイルさ
れたモジュールは記憶部または他の記憶装置の所定の部
分に設置される。各モジュールは、ファイルシステムの
名称またはシステムコールのような、特定のモジュール
と一義的に関連している。名称またはハンドルにより識
別される。コール番号で識別されるモジュールもある。
たとえば、システムコールまたは装置ドライバは番号で
識別することができる。これらの番号はモジュールの異
なる形式を横断しては一義的でないのでこれら数値識別
子に対して独特の識別子を設けることが必要である。そ
れ故、特定の形式のモジュールに対する数値識別子をモ
ジュールを表すコンパイル済みファイルを識別する独特
のモジュール名称に翻訳する表を設けることが望まし
い。しかし、ファイルシステムのような独特の名称によ
って既に識別されているモジュールは翻訳する必要はな
く、システムで採用されている名称がモジュールのファ
イルにアクセスするのに使用される。
マット(拡張可能リンカーフォーマット)のような目的
コードフォーマットにコンパイルされる。コンパイルさ
れたモジュールは記憶部または他の記憶装置の所定の部
分に設置される。各モジュールは、ファイルシステムの
名称またはシステムコールのような、特定のモジュール
と一義的に関連している。名称またはハンドルにより識
別される。コール番号で識別されるモジュールもある。
たとえば、システムコールまたは装置ドライバは番号で
識別することができる。これらの番号はモジュールの異
なる形式を横断しては一義的でないのでこれら数値識別
子に対して独特の識別子を設けることが必要である。そ
れ故、特定の形式のモジュールに対する数値識別子をモ
ジュールを表すコンパイル済みファイルを識別する独特
のモジュール名称に翻訳する表を設けることが望まし
い。しかし、ファイルシステムのような独特の名称によ
って既に識別されているモジュールは翻訳する必要はな
く、システムで採用されている名称がモジュールのファ
イルにアクセスするのに使用される。
【0030】「ラッパー」と言われる見出し情報が各フ
ァイルに設けられていてファイルおよびモジュールに関
する一定の情報を提供する。ファイルシステムに対する
模範的ラッパーを図12に示す。ラッパーはファイルが
ロード可能なモジュールであること、モジュールの形
式、およびモジュールの形式に対する適切な設置コード
を指すポインタを識別する。カーネル内の設置コードは
適切な構成表内のモジュールの設置に関する特定の指令
を示す。ラッパーはコードをモジュールのソースコード
に挿入してラッパー情報を発生することにより形成され
る。
ァイルに設けられていてファイルおよびモジュールに関
する一定の情報を提供する。ファイルシステムに対する
模範的ラッパーを図12に示す。ラッパーはファイルが
ロード可能なモジュールであること、モジュールの形
式、およびモジュールの形式に対する適切な設置コード
を指すポインタを識別する。カーネル内の設置コードは
適切な構成表内のモジュールの設置に関する特定の指令
を示す。ラッパーはコードをモジュールのソースコード
に挿入してラッパー情報を発生することにより形成され
る。
【0031】たとえば、図12は「device filesyste
m」と名付けられているファイルシステムのラッパーを
示す。この形式のファイルシステムの内部名称は「 dev
fs」であり、vfssw構造はinitルーチン、devfsinit、を
規定するが、これはモジュールが最初にロードされたと
き行われる機能を備えている。_init、_fini、および
_infoの各ルーチンは各モジュールに特有である。好適
に、図12に示すように、_init、_fini、または_in
foの各ルーチンは、パラメータとして伝えられたモジュ
ールのmodlinkage構造を用いて、モジュールサブシステ
ムルーチン、それぞれmod_install、mod_remove、お
よびmod_info、を呼出す。
m」と名付けられているファイルシステムのラッパーを
示す。この形式のファイルシステムの内部名称は「 dev
fs」であり、vfssw構造はinitルーチン、devfsinit、を
規定するが、これはモジュールが最初にロードされたと
き行われる機能を備えている。_init、_fini、および
_infoの各ルーチンは各モジュールに特有である。好適
に、図12に示すように、_init、_fini、または_in
foの各ルーチンは、パラメータとして伝えられたモジュ
ールのmodlinkage構造を用いて、モジュールサブシステ
ムルーチン、それぞれmod_install、mod_remove、お
よびmod_info、を呼出す。
【0032】構造modlfsはこのモジュールに対して規定
された連結構造である。構造modlfsはファイルシステム
に対するmod−ops、「modfsops」、を規定するが、これは
モジュールに対する_init、_fini、および_infoの各
ルーチンを指すポインタを備えている。modlfsの次の要
素は、モジュールに関する情報に応答して表示されるフ
ァイルシステムの名称を指すポインタである。第3の要
素「 vfw」はモジュールがカーネルに伝えるハンドルを
介してvfssw 構造を識別する。
された連結構造である。構造modlfsはファイルシステム
に対するmod−ops、「modfsops」、を規定するが、これは
モジュールに対する_init、_fini、および_infoの各
ルーチンを指すポインタを備えている。modlfsの次の要
素は、モジュールに関する情報に応答して表示されるフ
ァイルシステムの名称を指すポインタである。第3の要
素「 vfw」はモジュールがカーネルに伝えるハンドルを
介してvfssw 構造を識別する。
【0033】ラッパーの次の二行はモジュールの連結構
造を規定するもので、システムの改訂、「mod−rev_
1」および単一連結構造「modlfs」を識別する。ラッパ
ーの残りの要素にはモジュール特有のinit、fini、およ
びinfoの各ルーチンを指すポインタがある。
造を規定するもので、システムの改訂、「mod−rev_
1」および単一連結構造「modlfs」を識別する。ラッパ
ーの残りの要素にはモジュール特有のinit、fini、およ
びinfoの各ルーチンを指すポインタがある。
【0034】図13−15は、Sun MicrosystemのUNIX
動作システムのもとで動作するSun Microsystems, Inc.
のSPARCstationワークステーションで動作するように
構成されている模範的文字ドライバである(SPARCstati
on はSPARC Internationalの登録商標である)。それ
故、本発明のシステムにより、モジュールが必要に応じ
てロードされ且つ設置される。これによりシステムに、
特に、小さい一般的組合わせのモジュールを利用するユ
ーザに必要なカーネル記憶装置の量が少なくなる。別モ
ジュールを使用するユーザに対しては、必要なものだけ
がロードされる。カーネル記憶装置の消費が減るのに加
えて、カーネルを再ブーツすることなく構成することが
でき、カーネルの再構成が非常に簡単になる。
動作システムのもとで動作するSun Microsystems, Inc.
のSPARCstationワークステーションで動作するように
構成されている模範的文字ドライバである(SPARCstati
on はSPARC Internationalの登録商標である)。それ
故、本発明のシステムにより、モジュールが必要に応じ
てロードされ且つ設置される。これによりシステムに、
特に、小さい一般的組合わせのモジュールを利用するユ
ーザに必要なカーネル記憶装置の量が少なくなる。別モ
ジュールを使用するユーザに対しては、必要なものだけ
がロードされる。カーネル記憶装置の消費が減るのに加
えて、カーネルを再ブーツすることなく構成することが
でき、カーネルの再構成が非常に簡単になる。
【0035】モジュールを設置すると、モジュールはそ
れが行うサービスにハンドルを伝える。モジュールが設
置されないと、モジュールはハンドルを伝えない。ドラ
イバモジュール要素がそれ自身を設置するとき伝えるハ
ンドルはそのdev_ops構造を指すポインタである。好適
にも一般的ドライバルーチン、mod_installdrv() およ
びmod_removedrv()、が設けられていてドライバ特有の
設置および取外し(「uninstall」で)動作を実行しや
すくしている。
れが行うサービスにハンドルを伝える。モジュールが設
置されないと、モジュールはハンドルを伝えない。ドラ
イバモジュール要素がそれ自身を設置するとき伝えるハ
ンドルはそのdev_ops構造を指すポインタである。好適
にも一般的ドライバルーチン、mod_installdrv() およ
びmod_removedrv()、が設けられていてドライバ特有の
設置および取外し(「uninstall」で)動作を実行しや
すくしている。
【0036】mod_installdrv() の機能はドライバモジ
ュールの要素をシステムに設置することである。これは
ドライバの主要番号に対応するdevopsp エントリをセッ
トしてドライバのdev_ops構造を指すことにより行われ
る。ドライバの主要番号はドライバを備えているモジュ
ールが記憶媒体(すなわち、ハードディスク)に設置さ
れると割当てられる。mod_removedrv()の機能はドライ
バモジュールの要素をシステムから取外すことである。
これはドライバの主要番号に対するdevopspエントリを
セットしてmov_nodev_ops構造(モジュールが設置さ
れていないことを示すのに使用される特殊アドレス)を
指し、dev_info 構造のようなカーネルデータ構造から
ドライバへの参照を取除くことにより行われる。ドライ
バが取外し可能でなければ、mod_removedry()はEBUSY
に戻る。
ュールの要素をシステムに設置することである。これは
ドライバの主要番号に対応するdevopsp エントリをセッ
トしてドライバのdev_ops構造を指すことにより行われ
る。ドライバの主要番号はドライバを備えているモジュ
ールが記憶媒体(すなわち、ハードディスク)に設置さ
れると割当てられる。mod_removedrv()の機能はドライ
バモジュールの要素をシステムから取外すことである。
これはドライバの主要番号に対するdevopspエントリを
セットしてmov_nodev_ops構造(モジュールが設置さ
れていないことを示すのに使用される特殊アドレス)を
指し、dev_info 構造のようなカーネルデータ構造から
ドライバへの参照を取除くことにより行われる。ドライ
バが取外し可能でなければ、mod_removedry()はEBUSY
に戻る。
【0037】ドライバの取外しルーチンがドライバに所
有されている dev_infoノードに対して呼出されるとき
またはそのdev_opsがシステムにより使用されるため保
持されているとき失敗すれば、ドライバは取外し不能で
ある。ドライバの取外しルーチンはDDI_SUCCESSが戻す
責任がある値以外の値を戻す責任があり、ドライバは、
たとえば、それが開いている、またはドライバに対する
顕著な呼戻しが存在するという或る他の理由で多忙であ
る。
有されている dev_infoノードに対して呼出されるとき
またはそのdev_opsがシステムにより使用されるため保
持されているとき失敗すれば、ドライバは取外し不能で
ある。ドライバの取外しルーチンはDDI_SUCCESSが戻す
責任がある値以外の値を戻す責任があり、ドライバは、
たとえば、それが開いている、またはドライバに対する
顕著な呼戻しが存在するという或る他の理由で多忙であ
る。
【0038】実行システムモジュールがそれ自身を伝え
るハンドルはそのマジックナンバー、その実行機能を指
すポインタ、およびその中心機能(すなわち、execsw構
造の最初の三つのフィールド)を指すポインタである。
好適にも一般的実行ルーチン、 mod_installexec()お
よびmod_removeexec()、が設けられていて実行特有の
設置および取外しの動作を行いやすくしている。mod_i
nstallexec()の機能は実行モジュール要素をシステムに
設置することである。これはexecsw表に利用可能なエン
トリを割り当て、そのエントリのexec_magic、exec_f
unc、およびexec_coreの各フィールドをモジュール要
素のmodlexec 構造内で指示されるexecsw構造に入って
いるものにセットすることにより行われる。mod_remov
eexec()の機能は実行モジュール要素をシステムから取
外すことである。これは割当てられたエントリのexec_
magic、exec_func、およびexec_coreの各フィールド
をヌルにセットすることにより行われる。
るハンドルはそのマジックナンバー、その実行機能を指
すポインタ、およびその中心機能(すなわち、execsw構
造の最初の三つのフィールド)を指すポインタである。
好適にも一般的実行ルーチン、 mod_installexec()お
よびmod_removeexec()、が設けられていて実行特有の
設置および取外しの動作を行いやすくしている。mod_i
nstallexec()の機能は実行モジュール要素をシステムに
設置することである。これはexecsw表に利用可能なエン
トリを割り当て、そのエントリのexec_magic、exec_f
unc、およびexec_coreの各フィールドをモジュール要
素のmodlexec 構造内で指示されるexecsw構造に入って
いるものにセットすることにより行われる。mod_remov
eexec()の機能は実行モジュール要素をシステムから取
外すことである。これは割当てられたエントリのexec_
magic、exec_func、およびexec_coreの各フィールド
をヌルにセットすることにより行われる。
【0039】execの伝えられたハンドルへのアクセス
は、モジュール要素がそれが設置されるとき割当てるex
ecswエントリに読み書きをロックすることにより保護さ
れている。書込みロックはハンドルが伝えられていると
きまたは伝えられていないとき得られ、読取りロックは
モジュール要素のexec_func()エントリおよびexec_co
re()エントリに対する呼出し期間中保持される。それ故
execは対応するexecswエントリに入っているread_writ
e ロックを書込みのため入れることができなければ取外
し不能である。
は、モジュール要素がそれが設置されるとき割当てるex
ecswエントリに読み書きをロックすることにより保護さ
れている。書込みロックはハンドルが伝えられていると
きまたは伝えられていないとき得られ、読取りロックは
モジュール要素のexec_func()エントリおよびexec_co
re()エントリに対する呼出し期間中保持される。それ故
execは対応するexecswエントリに入っているread_writ
e ロックを書込みのため入れることができなければ取外
し不能である。
【0040】ファイルシステムのシステムモジュールが
伝えるハンドルはその名称、vsw_init()機能、vsw_fl
ag、およびvfsops (すなわち、vfssw構造のフィール
ド)である。好適にも一般的ファイルシステムルーチ
ン、mod_installfs()およびmod_removefs()、が設け
られていてファイルシステム特有の設置および取外しの
動作を行いやすくしている。mod_installfs()の機能は
ファイルシステムモジュール要素をシステムに設置する
ことである。これは骨組により割当てられているvfssw
表のエントリを探し、そのエントリの vsw_init、vsw
_vfsops、およびvsw_flagの各フィールドをモジュー
ル要素の modlfs構造内で指示されているvfssw構造に入
っているものにセットすることによって行われる。 mod
_removefs()の機能はファイルシステムモジュール要素
をシステムから取外すことである。これは割当てられた
vfsswエントリのvsw_initおよびvsw_vfsopsの各フィ
ールドをヌルにセットし、vsw_flagフィールドを0に
セットすることにより行われる。
伝えるハンドルはその名称、vsw_init()機能、vsw_fl
ag、およびvfsops (すなわち、vfssw構造のフィール
ド)である。好適にも一般的ファイルシステムルーチ
ン、mod_installfs()およびmod_removefs()、が設け
られていてファイルシステム特有の設置および取外しの
動作を行いやすくしている。mod_installfs()の機能は
ファイルシステムモジュール要素をシステムに設置する
ことである。これは骨組により割当てられているvfssw
表のエントリを探し、そのエントリの vsw_init、vsw
_vfsops、およびvsw_flagの各フィールドをモジュー
ル要素の modlfs構造内で指示されているvfssw構造に入
っているものにセットすることによって行われる。 mod
_removefs()の機能はファイルシステムモジュール要素
をシステムから取外すことである。これは割当てられた
vfsswエントリのvsw_initおよびvsw_vfsopsの各フィ
ールドをヌルにセットし、vsw_flagフィールドを0に
セットすることにより行われる。
【0041】すべてのファイルシステムの伝えられたハ
ンドルへのアクセスは一つの読み書きロックにより保護
されている。書込みロックはvfsswエントリを割当てる
間、vfsswエントリに書込む間、および mod_removef
s()で取付けられたファイルシステムのリストをチェッ
クしてファイルシステムがアンロード可能か否かを判定
する間保持されている。読取りロックはvfsswおよびフ
ァイルシステムのvsw_init()機能、vfs_mount()機
能、vfs_sysnc()機能、およびvfs_unmount()機能の相
互呼出を探している間保持されている。それ故骨組は、
vsw_init()機能、vfs_mount()機能、vfs_sync()機
能、およびvfs_unmount()機能に活性の実行スレッドが
存在するときファイルシステムが取外されないように
し、ファイルシステムは、その他の場合使用中であると
きそれ自身が取外されないようにする。
ンドルへのアクセスは一つの読み書きロックにより保護
されている。書込みロックはvfsswエントリを割当てる
間、vfsswエントリに書込む間、および mod_removef
s()で取付けられたファイルシステムのリストをチェッ
クしてファイルシステムがアンロード可能か否かを判定
する間保持されている。読取りロックはvfsswおよびフ
ァイルシステムのvsw_init()機能、vfs_mount()機
能、vfs_sysnc()機能、およびvfs_unmount()機能の相
互呼出を探している間保持されている。それ故骨組は、
vsw_init()機能、vfs_mount()機能、vfs_sync()機
能、およびvfs_unmount()機能に活性の実行スレッドが
存在するときファイルシステムが取外されないように
し、ファイルシステムは、その他の場合使用中であると
きそれ自身が取外されないようにする。
【0042】スケジューラモジュール要素が伝えるハン
ドルはそのクラス名、クラス初期設定機能、およびその
クラス機能(すなわち、クラス構造の最初の三つのフィ
ールド)である。好適にも一般的ルーチン、mod_insta
llsched()およびmod_removesched()が設けられてスケ
ジューラ特有の設置および取外しの動作を行いやすくし
ている。mod_installsched() の機能はスケジューラモ
ジュール要素をシステムに設置することである。これは
エントリをスケジューラに対応するクラス表に設置し
(必要なら一つを割当てる)、cl_init フィールドお
よびcl_funcsフィールドをモジュール要素のmoldsched
構造により指されているクラス構造に入っているもの
にセットし、次いでdispinit()を呼出してクラスを初期
設定することにより行われる。cl_nameおよびcl_lock
の各フィールドはクラスエントリが割当てられると初期
設定される。mod_removesched()の機能はスケジューラ
モジュール要素をシステムから取外すことである。これ
は割当てられたエントリのcl_initフィールドおよびcl
_funcs フィールドをヌルにセットすることにより行わ
れる。
ドルはそのクラス名、クラス初期設定機能、およびその
クラス機能(すなわち、クラス構造の最初の三つのフィ
ールド)である。好適にも一般的ルーチン、mod_insta
llsched()およびmod_removesched()が設けられてスケ
ジューラ特有の設置および取外しの動作を行いやすくし
ている。mod_installsched() の機能はスケジューラモ
ジュール要素をシステムに設置することである。これは
エントリをスケジューラに対応するクラス表に設置し
(必要なら一つを割当てる)、cl_init フィールドお
よびcl_funcsフィールドをモジュール要素のmoldsched
構造により指されているクラス構造に入っているもの
にセットし、次いでdispinit()を呼出してクラスを初期
設定することにより行われる。cl_nameおよびcl_lock
の各フィールドはクラスエントリが割当てられると初期
設定される。mod_removesched()の機能はスケジューラ
モジュール要素をシステムから取外すことである。これ
は割当てられたエントリのcl_initフィールドおよびcl
_funcs フィールドをヌルにセットすることにより行わ
れる。
【0043】スケジューラの伝えられたハンドルへのア
クセスはスケジューラクラスについて割当てられた読み
書きロックにより保護されている。ロックはクラスエン
トリが割当てられるとき割当てられ、初期設定される。
ロックはmod_installsched()およびmod_removesche
d() によりクラスエントリを書込む間保持される。ロッ
クは読取り中も保持される。ストリームモジュール要素
が伝えるハンドルはそのストリームタブを指すポインタ
である。好適にも一般的ルーチンmod_installstrmod()
およびmod_removestrmod()が設けられていてストリー
ム特有の設置および取外しの動作を行いやすくしてい
る。
クセスはスケジューラクラスについて割当てられた読み
書きロックにより保護されている。ロックはクラスエン
トリが割当てられるとき割当てられ、初期設定される。
ロックはmod_installsched()およびmod_removesche
d() によりクラスエントリを書込む間保持される。ロッ
クは読取り中も保持される。ストリームモジュール要素
が伝えるハンドルはそのストリームタブを指すポインタ
である。好適にも一般的ルーチンmod_installstrmod()
およびmod_removestrmod()が設けられていてストリー
ム特有の設置および取外しの動作を行いやすくしてい
る。
【0044】mod_installstrmod()の機能はストリーム
モジュール要素をシステムに設置することである。これ
はエントリをfmodsw表に割当てるかまたは既に割当てら
れているエントリをストリームモジュールに設置し、f
_strフィールドおよびf_flag フィールドをモジュー
ルのmodlstrmod構造により指されているfmodsw構造に入
っている値を用いて初期設定することにより行われる。
f_nameおよびf_lockの各フィールドはfmodswエントリ
が割当てられると初期設定される。mod_removestrmo
d() の機能はストリームモジュール要素をシステムから
取外すことである。これは割当てられたfmodswエントリ
のf_strフィールドをヌルにセットし、f_flagフィー
ルドを0にセットすることにより行われる。
モジュール要素をシステムに設置することである。これ
はエントリをfmodsw表に割当てるかまたは既に割当てら
れているエントリをストリームモジュールに設置し、f
_strフィールドおよびf_flag フィールドをモジュー
ルのmodlstrmod構造により指されているfmodsw構造に入
っている値を用いて初期設定することにより行われる。
f_nameおよびf_lockの各フィールドはfmodswエントリ
が割当てられると初期設定される。mod_removestrmo
d() の機能はストリームモジュール要素をシステムから
取外すことである。これは割当てられたfmodswエントリ
のf_strフィールドをヌルにセットし、f_flagフィー
ルドを0にセットすることにより行われる。
【0045】ストリームの伝えられたハンドルへのアク
セスはfmodsw表エントリを読み書きロックすることによ
り保護されている。書込みロックはmod_installstrmod
()およびmod_removestrmod() によるエントリへの書込
み中保護される。読取りロックはストリームのqi_open
() およびqi_close()に対する呼出し期間中保持され
る。システムコールモジュール要素が伝えるハンドルは
機能を指すポインタである。好適にも一般的ルーチンmo
d_installsys() およびmod_removesys()がシステムコ
ールモジュール特有の設置および取外しの動作を行いや
すくするのに利用できる。
セスはfmodsw表エントリを読み書きロックすることによ
り保護されている。書込みロックはmod_installstrmod
()およびmod_removestrmod() によるエントリへの書込
み中保護される。読取りロックはストリームのqi_open
() およびqi_close()に対する呼出し期間中保持され
る。システムコールモジュール要素が伝えるハンドルは
機能を指すポインタである。好適にも一般的ルーチンmo
d_installsys() およびmod_removesys()がシステムコ
ールモジュール特有の設置および取外しの動作を行いや
すくするのに利用できる。
【0046】mod_installsys() の機能はシステムコー
ルモジュール要素をシステムに設置することである。こ
れはこのシステムコールに割当てられたsysentエントリ
を設置し、エントリのsy_narg フィールドおよびsy_c
allフィールドをそのmodlsys構造により指されたsysent
構造に入っているものに等しくセットすることにより行
われる。sysentエントリはブーツ時にシステムコールに
割当てられる。mod_removesysの機能はシステムコール
モジュール要素をシステムから取外すことである。これ
は割当てられたシステムエントリのsy_callフィールド
をnosys機能のアドレスに、sy_nargフィールドの値を
0にセットすることにより行われる。
ルモジュール要素をシステムに設置することである。こ
れはこのシステムコールに割当てられたsysentエントリ
を設置し、エントリのsy_narg フィールドおよびsy_c
allフィールドをそのmodlsys構造により指されたsysent
構造に入っているものに等しくセットすることにより行
われる。sysentエントリはブーツ時にシステムコールに
割当てられる。mod_removesysの機能はシステムコール
モジュール要素をシステムから取外すことである。これ
は割当てられたシステムエントリのsy_callフィールド
をnosys機能のアドレスに、sy_nargフィールドの値を
0にセットすることにより行われる。
【0047】システムコールの伝えられたハンドルへの
アクセスはシステムエントリの読み書きロックにより保
護されている。書込みロックはmod_installsys()およ
びmod_removesys() によるsysent構造への書込み期間
中保持され、読取りロックはsy_call機能の呼出しの間
保持される。システムにこみ入った機能を設ける間カー
ネル記憶装置の使用を更に最適にするには、システムに
モジュールをアンロードするプロセスを設けるのが望ま
しい。モジュールを手操作でアンロードするような他の
方法を使用することができるが、下に説明するモジュー
ルを自動的にアンロードするという革新的システムを利
用するのが望ましい。
アクセスはシステムエントリの読み書きロックにより保
護されている。書込みロックはmod_installsys()およ
びmod_removesys() によるsysent構造への書込み期間
中保持され、読取りロックはsy_call機能の呼出しの間
保持される。システムにこみ入った機能を設ける間カー
ネル記憶装置の使用を更に最適にするには、システムに
モジュールをアンロードするプロセスを設けるのが望ま
しい。モジュールを手操作でアンロードするような他の
方法を使用することができるが、下に説明するモジュー
ルを自動的にアンロードするという革新的システムを利
用するのが望ましい。
【0048】更に多数のカーネル記憶装置を得たいとき
は、モジュールサブシステムを呼出してモジュールをア
ンロードする。多数の異なるルールを適用してカーネル
記憶装置を解放するのが所要に応じて必要になるときを
判定することができるが、別のモジュールをロードする
のに存在する記憶装置が不充分であるときはモジュール
をアンロードするのが望ましい。好適に、これは従来技
術に見られるカーネルページング機構(「スワッパ」と
言われる)を一部修正してモジュールサブシステムに現
在利用されていないモジュールを取外し、アンロードす
ることを知らせることにより行われる。モジュールサブ
システムの自動アンロードモジュールはロードされてい
る各モジュールにモジュールを取外してアンロードする
ことができるか否かを示すよう要求する。モジュールは
各モジュールのラッパーに設置されている機能、fini、
を呼出す。fini機能はその形式のモジュールに対する判
定基準を使用してモジュールの状態をチェックする。
は、モジュールサブシステムを呼出してモジュールをア
ンロードする。多数の異なるルールを適用してカーネル
記憶装置を解放するのが所要に応じて必要になるときを
判定することができるが、別のモジュールをロードする
のに存在する記憶装置が不充分であるときはモジュール
をアンロードするのが望ましい。好適に、これは従来技
術に見られるカーネルページング機構(「スワッパ」と
言われる)を一部修正してモジュールサブシステムに現
在利用されていないモジュールを取外し、アンロードす
ることを知らせることにより行われる。モジュールサブ
システムの自動アンロードモジュールはロードされてい
る各モジュールにモジュールを取外してアンロードする
ことができるか否かを示すよう要求する。モジュールは
各モジュールのラッパーに設置されている機能、fini、
を呼出す。fini機能はその形式のモジュールに対する判
定基準を使用してモジュールの状態をチェックする。
【0049】モジュールおよびシステム、すなわち、カ
ーネル、は共にモジュールをアンロードして取外すこと
ができるか否かを判定する。一般に、モジュールは使用
中でなければ取外し可能且つアンロード可能と言われ
る。特に、モジュールを設置すると、モジュールはそれ
が行うサービスにハンドルを伝える。モジュールを取外
すと、モジュールはハンドルを取戻す。したがって、シ
ステムはモジュールの動作にアクセスするため各モジュ
ールのハンドルにアクセスする。ハンドルがシステムに
よりアクセスされていれば、そのモジュールは使用中で
あって取外すことができない。他の判定基準がモジュー
ルの形式に応じて存在し得る。他に、腕木式信号機のよ
うなロック機構を採用してモジュールの使用の状態を特
に識別することができる。したがって、システムはロッ
クを発生するルーチン、ロックを解除するルーチン、お
よびロックの状態をチェックしてロックを解除すること
ができるか判定するルーチンを備えることになる。
ーネル、は共にモジュールをアンロードして取外すこと
ができるか否かを判定する。一般に、モジュールは使用
中でなければ取外し可能且つアンロード可能と言われ
る。特に、モジュールを設置すると、モジュールはそれ
が行うサービスにハンドルを伝える。モジュールを取外
すと、モジュールはハンドルを取戻す。したがって、シ
ステムはモジュールの動作にアクセスするため各モジュ
ールのハンドルにアクセスする。ハンドルがシステムに
よりアクセスされていれば、そのモジュールは使用中で
あって取外すことができない。他の判定基準がモジュー
ルの形式に応じて存在し得る。他に、腕木式信号機のよ
うなロック機構を採用してモジュールの使用の状態を特
に識別することができる。したがって、システムはロッ
クを発生するルーチン、ロックを解除するルーチン、お
よびロックの状態をチェックしてロックを解除すること
ができるか判定するルーチンを備えることになる。
【0050】たとえば、モジュールがドライバであれ
ば、システムはどのドライバが開いているかのトラック
を確保している。ドライバが開いていれば、ドライバを
取外すことはできない。ドライバが開いていなければ、
ドライバをそれが取付けられている装置から取外すこと
ができるか判定するチェックが行われる。取外しルーチ
ンはUNIX動作システムで現在利用できる取付けルーチン
と反対の機能を行う。取外しルーチンを次にドライバが
現在取付けられているすべての装置に関して実行する。
装置がドライバを現在利用している場合に生ずることで
あるが、取外しルーチンのどれかが失敗すれば、そのド
ライバに対するすべての装置が取付けられたままにな
り、ドライバは取外し可能ではないとして区別される。
ば、システムはどのドライバが開いているかのトラック
を確保している。ドライバが開いていれば、ドライバを
取外すことはできない。ドライバが開いていなければ、
ドライバをそれが取付けられている装置から取外すこと
ができるか判定するチェックが行われる。取外しルーチ
ンはUNIX動作システムで現在利用できる取付けルーチン
と反対の機能を行う。取外しルーチンを次にドライバが
現在取付けられているすべての装置に関して実行する。
装置がドライバを現在利用している場合に生ずることで
あるが、取外しルーチンのどれかが失敗すれば、そのド
ライバに対するすべての装置が取付けられたままにな
り、ドライバは取外し可能ではないとして区別される。
【0051】モジュール表がカーネルに設けられるのが
好ましい。モジュール表は各モジュール、各モジュール
に関するロックの状態(すなわち、ロックされている、
ロックされていない)、およびモジュールの状態(たと
えば、ロードされている/アンロードされている/ロー
ディング中である、など)を区別する。このときモジュ
ール表に情報を保持したり、その情報にアクセスしたり
するサービスルーチンが設けられることになる。モジュ
ールが自動アンロードモジュールにモジュールを取外す
ことができることを示せば、自動アンロードモジュール
は適切な構造表エントリを無効にする。好適に、これは
モジュールの状態を決定するモジュールサブシステムに
より参照されるハンドルにヌル値または特別の値を入れ
ることにより行われる。次にアンロード機能が行われ、
これによりモジュールにより占有されている記憶装置が
再割当てされ、カーネル内の記憶空間が解放される。
好ましい。モジュール表は各モジュール、各モジュール
に関するロックの状態(すなわち、ロックされている、
ロックされていない)、およびモジュールの状態(たと
えば、ロードされている/アンロードされている/ロー
ディング中である、など)を区別する。このときモジュ
ール表に情報を保持したり、その情報にアクセスしたり
するサービスルーチンが設けられることになる。モジュ
ールが自動アンロードモジュールにモジュールを取外す
ことができることを示せば、自動アンロードモジュール
は適切な構造表エントリを無効にする。好適に、これは
モジュールの状態を決定するモジュールサブシステムに
より参照されるハンドルにヌル値または特別の値を入れ
ることにより行われる。次にアンロード機能が行われ、
これによりモジュールにより占有されている記憶装置が
再割当てされ、カーネル内の記憶空間が解放される。
【0052】好ましくは構成表の対応するエントリはモ
ジュールがその取外し状態にある間割当てられたままに
なすることである。構成表に必要な記憶装置の量は比較
的極少であり、エントリの維持は表のエントリを割当て
から外したり割当てし直したりするステップを除くこと
によって可能な限り少なくなる。代わりの実施例では、
モジュールをロードしたりアンロードしたりする頻度を
可能な限り少なくするために2ステップ取外しプロセス
を採用している。取外してアンロードするのに利用でき
ると判定されているモジュールを最初に取外す。カーネ
ル記憶装置がそれに続いて必要なときは、なおロードさ
れてはいるが設置されていないモジュールをアンロード
してカーネルの空間を解放する。同様に、続いて、他の
モジュールを取外すが、カーネル記憶装置が必要な次回
のため、ロードしたままにしておく。モジュールを取外
すがロードしてあり、且つモジュールへのアクセスが必
要である場合には、設置プロセスを単に行うだけでモジ
ュールへのアクセスを行わせる。
ジュールがその取外し状態にある間割当てられたままに
なすることである。構成表に必要な記憶装置の量は比較
的極少であり、エントリの維持は表のエントリを割当て
から外したり割当てし直したりするステップを除くこと
によって可能な限り少なくなる。代わりの実施例では、
モジュールをロードしたりアンロードしたりする頻度を
可能な限り少なくするために2ステップ取外しプロセス
を採用している。取外してアンロードするのに利用でき
ると判定されているモジュールを最初に取外す。カーネ
ル記憶装置がそれに続いて必要なときは、なおロードさ
れてはいるが設置されていないモジュールをアンロード
してカーネルの空間を解放する。同様に、続いて、他の
モジュールを取外すが、カーネル記憶装置が必要な次回
のため、ロードしたままにしておく。モジュールを取外
すがロードしてあり、且つモジュールへのアクセスが必
要である場合には、設置プロセスを単に行うだけでモジ
ュールへのアクセスを行わせる。
【0053】
【発明の効果】このプロセスで多数の長所が実現され
る。スラッシングは極少である。モジュールにアクセス
するのに必要な時間は、アンロード動作を必要なときだ
け行うので、極少になり、これにより時間を消費するロ
ード動作を行う頻度が極少になる。更に、2ステッププ
ロセスを、最少最近使用(LRU)アルゴリズムのよう
な記憶装置取換えアルゴリズムを用いて採用し、ロード
/設置プロセスおよび取外し/アンロードプロセスの利
用を更に最適にすることができる。本発明を好適実施例
に関して説明してきたが、これまでの説明に照らして多
数の代案、修正案、変形、および使用法が当業者には明
らかであることが明白である。特に、モジュールを自動
ロードするシステムをここに説明したモジュールを自動
アンロードするシステムと共に、またはそれと無関係に
使用して、なおカーネル記憶装置使用法の利益を実現し
得ることが明らかである。
る。スラッシングは極少である。モジュールにアクセス
するのに必要な時間は、アンロード動作を必要なときだ
け行うので、極少になり、これにより時間を消費するロ
ード動作を行う頻度が極少になる。更に、2ステッププ
ロセスを、最少最近使用(LRU)アルゴリズムのよう
な記憶装置取換えアルゴリズムを用いて採用し、ロード
/設置プロセスおよび取外し/アンロードプロセスの利
用を更に最適にすることができる。本発明を好適実施例
に関して説明してきたが、これまでの説明に照らして多
数の代案、修正案、変形、および使用法が当業者には明
らかであることが明白である。特に、モジュールを自動
ロードするシステムをここに説明したモジュールを自動
アンロードするシステムと共に、またはそれと無関係に
使用して、なおカーネル記憶装置使用法の利益を実現し
得ることが明らかである。
【図1】本発明の好適実施例におけるモジュールの状態
を示す図である。
を示す図である。
【図2】カーネルを用いる本発明のモジュールサブシス
テムの相互作用を示すブロック図である。
テムの相互作用を示すブロック図である。
【図3】モジュールサブシステムの構成要素を示すブロ
ック図である。
ック図である。
【図4】模範的なモジュール構成表の図である。
【図5】モジュールを動的にロードする本発明のプロセ
スを示す流れ図である。
スを示す流れ図である。
【図6】スタブに対するプロセスの流れを示す。
【図7】スタブのデータ構造を示す。
【図8】データ構造を作るのに使用されるマクロを示
す。
す。
【図9】データ構造を作るのに使用されるマクロを示
す。
す。
【図10】模範的連結構造を示す。
【図11】異なる形式の連結構造を示す。
【図12】ファイルシステムモジュールの模範的ラッパ
ーを示す。
ーを示す。
【図13】本発明のシステムに従って動作するよう構成
した模範的文字ドライバを示す。
した模範的文字ドライバを示す。
【図14】本発明のシステムに従って動作するよう構成
した模範的文字ドライバを示す。
した模範的文字ドライバを示す。
【図15】本発明のシステムに従って動作するよう構成
した模範的文字ドライバを示す。
した模範的文字ドライバを示す。
10 システムコールモジュール、 20 モジュール
サブシステム、30 システムコール構成表システム、
33 フィルムサブシステム、35 プロセス制御シ
ステム、 70 制御モジュール、72 実行時リンカ
ー、 74 設置モジュール。
サブシステム、30 システムコール構成表システム、
33 フィルムサブシステム、35 プロセス制御シ
ステム、 70 制御モジュール、72 実行時リンカ
ー、 74 設置モジュール。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョセフ・イー・プロヴィノ アメリカ合衆国 02138 マサチューセッ ツ州・ケンブリッジ・ウェンデル ストリ ート・29 (72)発明者 ウィリアム・エフ・ピットア アメリカ合衆国 02173 マサチューセッ ツ州・レキシントン・ブロジェット ロー ド・6
Claims (3)
- 【請求項1】 中央処理装置 (CPU)、記憶装置、および
入出力装置のような資源から成るコンピュータシステム
で、動的に構成された動作システムを動作させるシステ
ムにおいて、 モジュールを動作システムの記憶装置にロードして設置
するモジュールサブシステムを備えており、このモジュ
ールサブシステムは、 モジュールにアクセスする要求を阻止し、モジュールが
ロードされて設置されているか確認する制御モジュー
ル、 モジュールがロードされ且つ設置されていなければ、 コンパイル済みモジュールコードのファイルを動作シス
テムの記憶装置に複写する手段、 ロードされたモジュールと動作システムの記憶装置にロ
ードされた他の手段との間の参照を行えるようにする連
結手段、およびモジュールがロードされ且つ設置されて
いることを示す設置手段、 を備えており、モジュールがアクセス用動作システムに
ロードされ且つ設置され、制御が要求プロセスに戻され
て正常処理を継続することを特徴とするシステム。 - 【請求項2】 中央処理装置 (CPU)、記憶装置、および
入出力装置等の資源から成るコンピュータシステムの、
複数のモジュールからなり、処理を実行し且つ資源を利
用する動作システムであって、モジュールを必要に応じ
て動作システムの記憶装置にロードすることによりその
動作システムを動的に構成する方法において、 モジュールにアクセスしようとするとき、 モジュールへのアクセスを阻止するステップと、 モジュールが動作システムに設置されているか判定する
ステップとを有し、 モジュールが動作システムの記憶装置に設置されていな
いとき、モジュールをロードするプロセスが、 モジュールコードを動作システムの記憶装置に複写する
ステップと、 モジュールと動作システムの記憶装置にロードされてい
るモジュールとの間のすべての参照を行えるようにする
ステップと、 モジュールがロードされ設置されていることを示すモジ
ュールを設置するステップとを有し、 ロードされたモジュールにアクセスすることができ、処
理が継続することを特徴とする方法。 - 【請求項3】 中央処理装置 (CPU)、記憶装置、および
入出力装置のような資源から成るコンピュータシステム
の、処理を実行し且つ資源を利用する複数のモジュール
から成るカーネル記憶装置を備えている動作システム
で、モジュールを必要に応じてカーネル記憶装置にロー
ドする方法において、 各モジュールを目的コードフォーマットにコンパイルす
るステップ、 モジュールを表すコンパイル済みファイルを格納するス
テップ、 動作システムのモジュールを識別する少なくとも一つの
モジュール構成表を設けるステップ、 アクセス要求がモジュールに対して行われ、モジュール
構成表のエントリがアクセスされたとき、 モジュール構成表へのアクセスを阻止するステップ、 モジュール構成表のエントリを審査してモジュールがカ
ーネルにロードされているか確認するステップ、 モジュール構成表がモジュールがカーネルにロードされ
ていず設置されていないことを示せば、 モジュールを示すコンパイル済みファイルを読取るステ
ップ、 ファイルの大きさを判定するステップ、 カーネル記憶装置のスペースをファイルに割当てるステ
ップ、 ファイルをカーネル記憶装置に複写するステップ、 モジュールと先にカーネル記憶装置に設置されているモ
ジュールとの間のすべての参照を行えるようにするステ
ップ、 モジュールがカーネルに設置されていることを示すモジ
ュール構成表を更新することによりモジュールを設置す
るステップ、 とから構成され、処理を継続し、モジュールへのアクセ
スを可能とすることを特徴とする方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US89333792A | 1992-06-03 | 1992-06-03 | |
US893337 | 1992-06-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06295237A true JPH06295237A (ja) | 1994-10-21 |
Family
ID=25401397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5156393A Pending JPH06295237A (ja) | 1992-06-03 | 1993-06-03 | 動作システムを動作させるシステム及び方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5634058A (ja) |
EP (1) | EP0573190B1 (ja) |
JP (1) | JPH06295237A (ja) |
DE (1) | DE69330691T2 (ja) |
Families Citing this family (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6357000B1 (en) * | 1993-01-29 | 2002-03-12 | Microsoft Corporation | Method and system for specified loading of an operating system |
EP0695991B1 (de) * | 1994-06-30 | 2001-08-22 | Siemens Aktiengesellschaft | Programmierverfahren für einen Remanentspeicher einer speicherprogrammierbaren Steuerung |
US5915265A (en) * | 1995-12-22 | 1999-06-22 | Intel Corporation | Method and apparatus for dynamically allocating and resizing the dedicated memory in a shared memory buffer architecture system |
US5838972A (en) * | 1996-02-09 | 1998-11-17 | Sun Microsystems, Inc. | Method and apparatus for dynamically loading an input run-time module and an output run-time module |
US6112025A (en) * | 1996-03-25 | 2000-08-29 | Sun Microsystems, Inc. | System and method for dynamic program linking |
US5721824A (en) * | 1996-04-19 | 1998-02-24 | Sun Microsystems, Inc. | Multiple-package installation with package dependencies |
US5857106A (en) * | 1996-05-31 | 1999-01-05 | Hewlett-Packard Company | Runtime processor detection and installation of highly tuned processor specific routines |
US6408329B1 (en) * | 1996-08-08 | 2002-06-18 | Unisys Corporation | Remote login |
JPH10111792A (ja) * | 1996-10-03 | 1998-04-28 | Nec Corp | 画像処理装置 |
US6112020A (en) * | 1996-10-31 | 2000-08-29 | Altera Corporation | Apparatus and method for generating configuration and test files for programmable logic devices |
US6363436B1 (en) * | 1997-01-27 | 2002-03-26 | International Business Machines Corporation | Method and system for loading libraries into embedded systems |
US5938766A (en) * | 1997-03-21 | 1999-08-17 | Apple Computer, Inc. | System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables |
JPH11110194A (ja) * | 1997-10-06 | 1999-04-23 | Toshiba Corp | 外部ライブラリ関数との結合方法ならびに同方法がプログラムされ記録される記録媒体 |
US6845508B2 (en) | 1997-12-19 | 2005-01-18 | Microsoft Corporation | Stream class driver for computer operating system |
US5953534A (en) * | 1997-12-23 | 1999-09-14 | University Of Washington | Environment manipulation for executing modified executable and dynamically-loaded library files |
US6330597B2 (en) | 1998-03-04 | 2001-12-11 | Conexant Systems, Inc. | Method and apparatus for monitoring, controlling, and configuring remote communication devices |
US6314475B1 (en) | 1998-03-04 | 2001-11-06 | Conexant Systems, Inc. | Method and apparatus for monitoring, controlling and configuring local communication devices |
US6427178B2 (en) * | 1998-03-04 | 2002-07-30 | Conexant Systems, Inc. | Software modem having a multi-task plug-in architecture |
FR2777673B1 (fr) * | 1998-04-15 | 2001-09-21 | Bull Cp8 | Dispositif de traitement de l'information comprenant des moyens pour gerer une memoire virtuelle, et procede de stockage d'informations associe |
US6226627B1 (en) * | 1998-04-17 | 2001-05-01 | Fuji Xerox Co., Ltd. | Method and system for constructing adaptive and resilient software |
US6694366B1 (en) | 1998-04-29 | 2004-02-17 | Symbol Technologies, Inc. | Data reconciliation between a computer and a mobile data collection terminal |
US6237053B1 (en) | 1998-06-30 | 2001-05-22 | Symbol Technologies, Inc. | Configurable operating system having multiple data conversion applications for I/O connectivity |
US6826756B1 (en) | 1998-06-30 | 2004-11-30 | Symbol Technologies, Inc. | Automatic transfer of data from an input device to a software application |
US6430569B1 (en) | 1998-08-14 | 2002-08-06 | Sun Microsystems, Inc. | Methods and apparatus for type safe, lazy, user-defined class loading |
US6490628B2 (en) * | 1998-09-25 | 2002-12-03 | Intel Corporation | Modem using a digital signal processor and a signal based command set |
US6502138B2 (en) * | 1998-09-25 | 2002-12-31 | Intel Corporation | Modem with code execution adapted to symbol rate |
US6711206B1 (en) | 1998-09-25 | 2004-03-23 | Intel Corporation | Modem using a digital signal processor and separate transmit and receive sequencers |
US6661848B1 (en) | 1998-09-25 | 2003-12-09 | Intel Corporation | Integrated audio and modem device |
US6711205B1 (en) | 1998-09-25 | 2004-03-23 | Intel Corporation | Tone detector for use in a modem |
US6374312B1 (en) * | 1998-09-25 | 2002-04-16 | Intel Corporation | System for dedicating a host processor to running one of a plurality of modem programs and dedicating a DSP to running another one of the modem programs |
US6351781B1 (en) * | 1998-09-25 | 2002-02-26 | Intel Corporation | Code swapping techniques for a modem implemented on a digital signal processor |
US6625208B2 (en) * | 1998-09-25 | 2003-09-23 | Intel Corporation | Modem using batch processing of signal samples |
US6675203B1 (en) | 1998-10-05 | 2004-01-06 | Symbol Technologies, Inc. | Collecting data in a batch mode in a wireless communications network with impeded communication |
US7206849B1 (en) | 1998-10-05 | 2007-04-17 | Symbol Technologies, Inc. | Communication in a wireless communications network when a mobile computer terminal may be unreachable |
US6262726B1 (en) | 1998-10-09 | 2001-07-17 | Dell U.S.A., L.P. | Factory installing desktop components for an active desktop |
US6442682B1 (en) * | 1999-02-18 | 2002-08-27 | Auspex Systems, Inc. | Characterization of data access using file system |
DE19919674A1 (de) * | 1999-04-30 | 2000-11-16 | Motorola Inc | Simulator für elektronische Systeme, sowie Verfahren |
US6618769B1 (en) * | 1999-05-27 | 2003-09-09 | Sun Microsystems, Inc. | Module-by-module verification |
US6601114B1 (en) * | 1999-05-27 | 2003-07-29 | Sun Microsystems, Inc. | Fully lazy linking with module-by-module verification |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
US6530077B1 (en) * | 1999-09-15 | 2003-03-04 | Powerquest Corporation | Device and method for releasing an in-memory executable image from its dependence on a backing store |
US6763034B1 (en) * | 1999-10-01 | 2004-07-13 | Stmicroelectronics, Ltd. | Connection ports for interconnecting modules in an integrated circuit |
US6983315B1 (en) | 2000-01-18 | 2006-01-03 | Wrq, Inc. | Applet embedded cross-platform caching |
CA2402389A1 (en) * | 2000-03-08 | 2002-09-19 | Shuffle Master, Inc. | Computerized gaming system, method and apparatus |
US7988559B2 (en) * | 2001-03-08 | 2011-08-02 | Igt | Computerized gaming system, method and apparatus |
US7043641B1 (en) | 2000-03-08 | 2006-05-09 | Igt | Encryption in a secure computerized gaming system |
WO2001093021A2 (en) * | 2000-06-01 | 2001-12-06 | Aduva Inc. | A virtual system configurator for client systems |
US7076647B2 (en) * | 2000-06-09 | 2006-07-11 | Hewlett-Packard Development Company, L.P. | Dynamic kernel tunables |
US6983464B1 (en) * | 2000-07-31 | 2006-01-03 | Microsoft Corporation | Dynamic reconfiguration of multimedia stream processing modules |
US7203841B2 (en) * | 2001-03-08 | 2007-04-10 | Igt | Encryption in a secure computerized gaming system |
AU2002258516A1 (en) * | 2001-03-12 | 2004-02-16 | Mercury Computer Systems, Inc. | Digital data processing apparatus, framework, and methods for dynamically configurable application execution on accelerated resources |
EP1433078A4 (en) * | 2001-09-10 | 2006-11-15 | Igt Reno Nev | DEVELOPING GAME PROGRAMS COMPATIBLE WITH A SYSTEM AND DEVICE FOR OPERATING ELECTRONIC GAMES |
US6902481B2 (en) | 2001-09-28 | 2005-06-07 | Igt | Decoupling of the graphical presentation of a game from the presentation logic |
US7931533B2 (en) * | 2001-09-28 | 2011-04-26 | Igt | Game development architecture that decouples the game logic from the graphics logics |
US8708828B2 (en) | 2001-09-28 | 2014-04-29 | Igt | Pluggable modular gaming modifiers and configuration templates for gaming environments |
US20030074487A1 (en) * | 2001-10-17 | 2003-04-17 | Tankut Akgul | Dynamic operating system |
US6811085B2 (en) * | 2001-10-26 | 2004-11-02 | Symbol Technologies, Inc. | Miniature imager |
CA2469839A1 (en) * | 2001-11-26 | 2003-06-05 | Igt | Pass-through live validation device and method |
US20030203755A1 (en) * | 2002-04-25 | 2003-10-30 | Shuffle Master, Inc. | Encryption in a secure computerized gaming system |
US7509485B2 (en) * | 2002-09-04 | 2009-03-24 | Chou Hui-Ling | Method for loading a program module in an operating system |
US20040093359A1 (en) * | 2002-11-12 | 2004-05-13 | Sharpe Edward J. | Methods and apparatus for updating file systems |
US7954086B2 (en) | 2003-05-19 | 2011-05-31 | Hewlett-Packard Development Company, L.P. | Self-describing kernel modules |
US7167974B2 (en) | 2003-05-19 | 2007-01-23 | Hewlett-Packard Development Company, L.P. | Multiple saved kernel configurations |
US7634770B2 (en) * | 2003-05-19 | 2009-12-15 | Hewlett-Packard Development Company, L.P. | Kernel module interface dependencies |
US7171550B1 (en) * | 2003-06-18 | 2007-01-30 | Hewlett-Packard Development Company, Lp, | Data structure and method for managing modules associated with a kernel |
US20050071856A1 (en) * | 2003-09-26 | 2005-03-31 | Kumar C.P. Vijay | Dynamically loadable stub modules |
KR100544674B1 (ko) * | 2003-11-11 | 2006-01-23 | 한국전자통신연구원 | 커널 기반의 침입탐지시스템에서의 침입탐지규칙 동적변경 방법 |
US7900194B1 (en) * | 2004-03-25 | 2011-03-01 | Verizon Corporate Services Group Inc. | Kernel-based intrusion detection using bloom filters |
US8117607B2 (en) * | 2004-08-18 | 2012-02-14 | International Business Machines Corporation | Administration of kernel extensions |
US20060070089A1 (en) * | 2004-08-20 | 2006-03-30 | Shahid Shoaib | Method and apparatus for dynamic replacement of device drivers in the operating system (OS) kernel |
US20060048128A1 (en) * | 2004-09-01 | 2006-03-02 | Roth Steven T | Module preparation scripts |
US7853927B2 (en) * | 2005-02-03 | 2010-12-14 | Hewlett-Packard Development Company, L.P. | Methods and tools for executing and tracing user-specified kernel instructions |
US8490082B2 (en) * | 2005-11-03 | 2013-07-16 | International Business Machines Corporation | System and method for representing user processes as software packages in a software package management system |
US7756893B2 (en) | 2005-11-09 | 2010-07-13 | Microsoft Corporation | Independent computation environment and data protection |
US8112798B2 (en) * | 2005-11-09 | 2012-02-07 | Microsoft Corporation | Hardware-aided software code measurement |
US8595747B2 (en) * | 2005-12-29 | 2013-11-26 | Sony Computer Entertainment Inc. | Efficient task scheduling by assigning fixed registers to scheduler |
US7996848B1 (en) * | 2006-01-03 | 2011-08-09 | Emc Corporation | Systems and methods for suspending and resuming threads |
US7987512B2 (en) * | 2006-05-19 | 2011-07-26 | Microsoft Corporation | BIOS based secure execution environment |
US20080005560A1 (en) * | 2006-06-29 | 2008-01-03 | Microsoft Corporation | Independent Computation Environment and Provisioning of Computing Device Functionality |
KR100916301B1 (ko) * | 2007-10-01 | 2009-09-10 | 한국전자통신연구원 | 커널 api 대화식 실행 장치 및 방법 |
CN101546260B (zh) | 2008-03-28 | 2012-07-11 | 国际商业机器公司 | 用于重构面向服务的应用的方法及其设备 |
US8627306B2 (en) * | 2008-08-06 | 2014-01-07 | Caterpillar Inc. | Method and system for updating an information management system configuration |
US9111036B2 (en) * | 2010-04-30 | 2015-08-18 | Red Hat, Inc. | Preloading unwind data for non-intrusive backtracing |
US8495601B2 (en) * | 2010-06-09 | 2013-07-23 | Lear Corporation | Shared memory architecture |
US8397245B2 (en) * | 2010-07-12 | 2013-03-12 | International Business Machines Corporation | Managing loading and unloading of shared kernel extensions in isolated virtual space |
KR101895453B1 (ko) * | 2011-11-09 | 2018-10-25 | 삼성전자주식회사 | 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치 |
US9436791B1 (en) | 2015-03-24 | 2016-09-06 | International Business Machines Corporation | Optimizing placement of circuit resources using a globally accessible placement memory |
US20170353476A1 (en) * | 2016-06-06 | 2017-12-07 | Google Inc. | Disabling Malicious Browser Extensions |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4445190A (en) * | 1981-06-16 | 1984-04-24 | International Business Machines Corporation | Program identification encoding |
US4787034A (en) * | 1984-11-14 | 1988-11-22 | Pal Szoke | Program access system |
JPS6378231A (ja) * | 1986-09-22 | 1988-04-08 | Nec Corp | 部分的プログラム結合方式 |
US5175828A (en) * | 1989-02-13 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison |
US5291601A (en) * | 1989-06-01 | 1994-03-01 | Hewlett-Packard Company | Shared libraries implemented with linking program loader |
US5226160A (en) * | 1989-07-18 | 1993-07-06 | Visage | Method of and system for interactive video-audio-computer open architecture operation |
US5247678A (en) * | 1989-10-12 | 1993-09-21 | Texas Instruments Incorporated | Load time linker for software used with a multiprocessor system |
US5303392A (en) * | 1992-02-27 | 1994-04-12 | Sun Microsystems, Inc. | Accessing current symbol definitions in a dynamically configurable operating system |
-
1993
- 1993-05-21 EP EP93303987A patent/EP0573190B1/en not_active Expired - Lifetime
- 1993-05-21 DE DE69330691T patent/DE69330691T2/de not_active Expired - Fee Related
- 1993-06-03 JP JP5156393A patent/JPH06295237A/ja active Pending
-
1995
- 1995-10-11 US US08/540,875 patent/US5634058A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69330691T2 (de) | 2002-07-04 |
EP0573190A3 (en) | 1994-02-02 |
DE69330691D1 (de) | 2001-10-11 |
EP0573190A2 (en) | 1993-12-08 |
EP0573190B1 (en) | 2001-09-05 |
US5634058A (en) | 1997-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH06295237A (ja) | 動作システムを動作させるシステム及び方法 | |
US10210017B1 (en) | System and method for application isolation | |
US6154878A (en) | System and method for on-line replacement of software | |
CA2178581C (en) | Automatic booting framework | |
US5671413A (en) | Method and apparatus for providing basic input/output services in a computer | |
US9769261B1 (en) | System and method for application isolation | |
JP3593241B2 (ja) | 計算機の再起動方法 | |
US8032740B2 (en) | Update in-use flash memory without external interfaces | |
US5574915A (en) | Object-oriented booting framework | |
US6917963B1 (en) | Snapshot image for the application state of unshareable and shareable data | |
US6199203B1 (en) | Memory management techniques for on-line replaceable software | |
US6959441B2 (en) | Intercepting system API calls | |
US7415709B2 (en) | Virtual resource ID mapping | |
US7065761B2 (en) | Nonvolatile logical partition system data management | |
US6976037B1 (en) | Method and systems for DLL/COM redirection | |
US20140351804A1 (en) | Generating and applying patches to computer program code concurrently with its execution | |
US20060095483A1 (en) | Modified computer architecture with finalization of objects | |
KR19990036566A (ko) | 컴퓨터기억장치의논리적드라이브의파티션맵핑갱신시스템 및 방법 | |
US5825649A (en) | Kernel substitution method in multi-processor system and multi-processor system having kernel substitution function | |
US20050071856A1 (en) | Dynamically loadable stub modules | |
US20090187911A1 (en) | Computer device with reserved memory for priority applications | |
KR20060023956A (ko) | 운영체제 | |
Bernabéu-Aubán et al. | The architecture of Ra: a kernel for Clouds | |
US11520597B2 (en) | Operating system architecture for microkernel generations support | |
JPH09146772A (ja) | 手続き呼出し方法 |