JPH09507319A - 自動ブーティング・フレームワーク - Google Patents

自動ブーティング・フレームワーク

Info

Publication number
JPH09507319A
JPH09507319A JP7517403A JP51740395A JPH09507319A JP H09507319 A JPH09507319 A JP H09507319A JP 7517403 A JP7517403 A JP 7517403A JP 51740395 A JP51740395 A JP 51740395A JP H09507319 A JPH09507319 A JP H09507319A
Authority
JP
Japan
Prior art keywords
boot
booting
storage
operating system
files
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.)
Ceased
Application number
JP7517403A
Other languages
English (en)
Inventor
レモン,スティーヴン.ピー
ロス,パトリック,ディー.
Original Assignee
オブジェクト テクノロジー ライセンシング コーポレイション
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22624125&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JPH09507319(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by オブジェクト テクノロジー ライセンシング コーポレイション filed Critical オブジェクト テクノロジー ライセンシング コーポレイション
Publication of JPH09507319A publication Critical patent/JPH09507319A/ja
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 自動ブート・フレームワークが開示され、具体的には、ストレージ(記憶装置)および接続された周辺デバイスを備えたプロセッサをブートするとき使用されるシステムが開示されている。システムは、ストレージおよび1つまたは2つ以上の周辺デバイスをリセットすることによりコンピュータを初期化する手法を利用している。そのあと、システムは性能低下した環境を初期化して、オペレーティング・システムをアクチベートするとき使用されるようにする。性能低下したオペレーティング環境は、ファイル共有と他の重要な基本タスクを動作可能にして、入出力デバイス、システム・プリファレンスおよびハードウェア構成をロードし、その環境自体を入出力ファイル・システムに置き換えてオペレーティング・システムにより使用されるようにする。

Description

【発明の詳細な説明】 自動ブーティング・フレームワーク 発明の背景 発明の分野 本発明は、一般的にはコンピュータ・システムの入出力アーキテクチャを目的 とし、より具体的にはコンピュータ・システムのオブジェクト指向入出力アーキ テクチャを目的としている。 関連技術 代表的なコンピュータは、コンピュータに接続された周辺デバイスとのインタ フェースとなる入出力(I/O)システムを含んでいる。この入出力システムは 、コンピュータ・システムの資源と周辺デバイスとの間のインタフェースとして 働いている。また、この入出力システムは、コンピュータ・システムで実行され るプログラムと周辺デバイスとの間のインタフェースともなっている。 入出力システムは、従来の「手続き指向(procedure-oriented)」ソフトウェア ・プログラミング技法(オブジェクト指向またはルール・ベースのソフトウェア ・プログラミング技法と対比されている)を用いてインプリメント(実装)され ているのが代表的である。理解されるように、手続き指向ソフトウェア・プログ ラミング技法を使用して作られたソフトウェア・プログラムは拡張が容易でない ことがよくある。また、この種のソフトウェア・プログラムは再利用が容易でな いこともよくある。従って、従来の入出力システムは拡張が容易でないことがよ くあり、また、かかる入出力システムに関連するソフトウェアは再利用が容易で ないことがよくある。 代表例として、入出力システムは、単一のオペレーティング・システムに特定 した形でインプリメントされている。この入出力システムは、オペレーティング ・システムに関連する入出力関数コール(function call)に応答してそれを正し く処理しているが、この入出力システムは他のどのオペレーティング・システム でもサポートできる能力は備えていない。複数のオペレーティング・システムを サポートするコンピュータに対する要求が高まっている。明らかなように、従来 の入出力システムを使用するコンピュータは、その入出力システムがサポートす るオペレーション・システム(operation system)のみサポートできるので、現在 のマーケットでは不利になっている。 以上のように、要求されていることは、拡張が容易であり、再利用が容易であ るソフトウェアを具体化しており、しかも、複数のオペレーティング・システム をサポートしているコンピュータの入出力システムである。 発明の概要 本発明は、劣化した(degradated)ファイル共用メカニズム(file sharing mech anism)を完全に定義したオペレーションで最初に初期化して、オペレーティング ・システムのより高度化した側面を動作可能にするとき使用されるようにするブ ーティング・プロシージャを目的としている。ストレージ(記憶装置)および接 続された周辺デバイスを備えたプロセッサをブートするのに使用するシステムが 開示されている。このシステムはオブジェクト指向技法(object-oriented techn iques)を利用して、ストレージと1つまたは2つ以上の周辺デバイスをリセット することによりコンピュータ・システムを初期化するようにしている。そのあと 、システムは劣化した環境を初期化し、オペレーティング・システムをアクチベ ートするとき使用されるようにする。劣化したオペレーティング環境(operating environment)は、ファイル共用と他の重要な基本タスクを動作可能にして、入 出力デバイス、システム優先(system preferences)、およびハードウェア構成に ロードさせて、その環境自体を入出力システム・フレームワークに置き換えてオ ペレーティング・システムで使用されるようにする。 本発明のその他の特徴と利点は、本発明の種々の実施例の構造とオペレーショ ンと共に、添付図面を参照して以下で詳しく説明する。 図面の簡単な説明 図1は、好適実施例の好適実施例による入出力サービス・フレームワークを示 す図である。 図2は、好適実施例の入出力システムの全体構成を示すブロック 図である。 図3は、デバイス・アクセス・マネージャと割込みハンドラを抽象化した図で あり、好適実施例のこれらのエレメント間のデータの流れを示している。 図4は、好適実施例によるハードウェア階層の例を示す図である。 図5は図4のハードウェア階層に対応するのもので、好適実施例によるソフト ウェア階層を示す図である。 図6は、好適実施例による親子関係を示す図である。 図7は、好適実施例によるSCSIバス構成の例を示すブロック図である。 図8は、好適実施例の特徴を説明するときに使用される、別のハードウェア階 層の例を示す図である。 図9は図8のハードウェア階層に対応するもので、好適実施例によるソフトウ ェア階層を示す図である。 図10は、好適実施例の入出力システムがその上で動作するコンピュータ・プ ラットフォームを示すブロック図である。 図11は、好適実施例によるブーティング・フレームワークのコンポーネント を示すブロック図である。 図12は、ブート・オペレーションのときの制御の流れを示すフローチャート である。 図13は、好適実施例によるブート・フレームワーク処理のタイムライン(tim eline)を示す図である。 図14は、好適実施例によるブート処理を示すブロック図である。 図15は、好適実施例によるBootImage目次(table of contents)を示すブロッ ク図である。 図16は、好適実施例においてブーティングのために使用される処理を、ブー ティング・タイムラインで再現して(recap)示す図である。 好適実施例の詳細な説明 概要 好適実施例は、コンピュータの入出力(I/O)システムを目的としている。 好適実施例の入出力システムは拡張が容易であり、再利用が容易であるソフトウ ェアを具体化し、複数のオペレーティング・システムをサポートしている。好適 実施例のその他の利点については、以下で説明する。 オブジェクト・テクノロジは好適実施例の入出力システムをインプリメント( 実装)するために使用されている。従って、好適実施例はオブジェクト指向入出 力システムを表している。オブジェクト・テクノロジの使用は普及しており、割 込み処理のように現在までプロセッサ固有であり、性質上手続き向きであった多 数のローレベル・サービスの抽象化をサポートしている。これらの一般化された オブジェト・ベースの抽象化は、マイクロカーネル・テクノロジの使用と共に、 デバイス・インタフェーシング(device interfacing)となる新モデルの生成を可 能にしている。 好適実施例の入出力システムは、サービス・プロバイダとそのクライアントと を関連づけたものである。意義のあるサービスをそのクライアントに提供するた めに、入出力システムは他のいくつかのサービス・プロバイダのクライアントと なる。 図10は、好適実施例によるオブジェクト指向入出力システムがそこに置かれ ているコンピュータ・プラットフォーム1002を示すブロック図である。なお 、別の好適実施例では、入出力システムはコンピュータ・プラットフォーム10 02と一緒に包含されていることに留意すべきである。 コンピュータ・プラットフォーム1002は、ランダム・アクセス・メモリ( RAM)1008および中央処理ユニット(CPU)1006などのハード ウェア・コンポーネント1003を含んでいる。なお、CPU1006はシング ル・プロセッサを表すことができるが、好ましくは並列に動作するマルチプロセ ッサを表している。 コンピュータ・プラットフォーム1002は、ハードウェア・コンポーネント 1003に接続された周辺デバイスも含んでいる。これらの周辺デバイスとして は、1つまたは複数の入力デバイス(キーボード、マウス、ライトペンなど)1 018、データ記憶デバイス1020(ハードディスクやフロッピディスクなど )、ディスプレイ1024、プリンタ1026、およびネットワーク・アダプタ 1022などがある。コンピュータ・プラットフォーム1002は他の周辺デバ イスに接続することもできる。 コンピュータ・プラットフォーム1002は、オペレーティング・システム1 014も含んでおり、マイクロ命令コード1010(ファームウェアとも呼ばれ る)を含むことも可能である。オペレーティング・システム1014は、ディス ク・オペレーティング・システム(DOS)やUNIXオペレーティング・シス テムのように、実質的に全機能オペレーティング・システムを表すことができる 。しかし、オペレーティング・システム1014は、他のタイプのオペレーティ ング・システムを表すことも可能である。好ましくは、オペレーティング・シス テム1014は、IBM社開発のMachマイクロカーネルのような限定機能のオペ レーティング・システムを表しているが、これはこの分野では周知である。十分 な特色を有する(full featured)オペレーティング・システムは、コンピュータ ・プラットフォーム1002上でアプリケーション・プログラム1030として 動作することが可能である。 好適実施例では、コンピュータ・プラットフォーム1002は、インターナシ ョナル・ビジネス・マシンズ(IBM)社のコンピュータまたはIBMコンパチ ブル・コンピュータになっている。別の実施例では、コンピュータ・プラットフ ォーム1002はアップル社のコンピュータになっている。 1つまたは2つ以上のアプリケーション・プログラム1030はコンピュータ ・プラットフォーム1002上で並列に動作する。また、1つまたは2つ以上の デバイス・アンサンブル(device ensemble)1032はコンピュータ・プラッ トフォーム1002上で動作する。 デバイス・アンサンブル1032とは、好適実施例のオブジェクト指向入出力 システムを総称的に表す。デバイス・アンサンブル1032は相互に作用し合っ て、入出力サービスをエンド・ユーザ(アプリケーション1030など)に提供 する。デバイス・アンサンブル1032は、以下でより詳細に説明される。 上述したように、アプリケーション1030はIBM OS/2などのオペレーティン グ・システムを表すことができる。これらのアプリケーション1030はデバイ ス・アンサンブルのクライアントであるので、好適実施例の入出力システムは複 数のオペレーティング・システムをサポートしている。 コンピュータ・プラットフォーム1002のエレメントは図10に別の表し方 で示すことも可能である。例えば、デバイス・アンサンブル1032はオペレー ティング・システム1014の一部であるように示すことができる(その場合は 、デバイス・アンサンブル1032とオペレーティング・システム1014はコ ンピュータ・プラットフォーム1002の同じ層に置かれることになる)。 選択されたオブジェクト指向テクノロジ概念の概要 オブジェクト指向テクノロジとコンピュータ・プログラミング技法は一般に周 知であり、多くの公表された利用可能な文献で説明されている。そのような文献 として、例えば、Grady Booch著「オブジェクト指向設計(Object-Oriented Desi gn)」(Benjamin Cummings 1991)およびDonald Firesmith著「オブジェクト指向 の要求分析と論理設計(Object-Oriented Requirements Analysis and Logical D esign)」(Wiley 1993)がある。このセクションでは、オブジェクト指向テクノ ロジの選択された特徴のうち、本発明と係わりのある特徴について説明する。 オブジェクト オブジェクト・プログラミングの2つの見方が、オブジェクト指向(object- oriented -OO)業界の主流になっている。セルフ・サポーティング・スタンド ・アロン・オブジェクト(self-supporting stand-alone object)と協調ライトウ ェイト・オブジェクト(collaborative lightweight object)である。以下では、 これらの見方について説明する。 一方の見方であるオブジェクト・テクノロジは、「ヘビーウェイト」オブジェ クトの思想に移行している。このオブジェクト設計は、できるかぎり多くを単一 のスタンド・アロン・エンティティにカプセル化するのに役立っている。例を挙 げると、データベース・オブジェクトがあり、これはディスク・ベースのリレー ショナル・ファイリング・システムのすべての巧妙なもの(subtleties)を1つの オブジェクトにカプセル化している。このようなオブジェクトは、フィールド、 タプル(tuple)、テーブル、リレーション、インデックス、そしておそらくは、 照会の抽象が具体化され、実装されることになる。 この方法は、粒度の大きいオブジェクトを作り出し、具体化される抽象の柔軟 性を制限する。フィールド抽象をリファイン(改善)または適応することは、デ ータベース・オブジェクトの内部構造の熟知を当然に要求される。 これに対して、オブジェクトのライトウェイトな見方は、個々のオブジェクト のスコープ(有効範囲)を、他のオブジェクト(おそらく多数の)と協調して目 標を達成するように設計された、機能的に、意味的に整合性のあるパズル・ピー ス(puzzle piece)に制限するのに役立っている。これらは柔軟度の高いオブジェ クトであり、もっと大きなスケールで使用(および再使用)されている。 オブジェクトのこの見方では、単純なデータベースはタプル・オブジェクトで 関連づけられたフィールド・オブジェクトが協調する集合といってもよく、タプ ル・オブジェクトの方は、テーブル(表)オブジェクトによって含まれている。 インデックス、リレーション、または照会は別々のエンティティとなり、フィー ルド、タプル、およびテーブルと近似的に協調することになる。これらの抽象の 各々は整合性のあるインタフェースを提供でき、各々は新しい動作(behavior)を 採用するために容易にサブクラス化することができる。 以上を要約すれば、オブジェクトに対するこれらの2つの異なる手法を調べる と、ソフトウェア・ライブラリと個々のサブルーチンとの間に類似性を引出すこ とができる。どちらの手法も、カプセル化と再使用の自立的な(self-contained) 単位を提供している。好適実施例では、ライトウェイトで、細粒度の協調オブジ ェクトを幅広く利用している。 フレームワーク 種々のサブシステムにとって必要な構造を提供するために、ライトウェイト・ オブジェクトは設計フレームワークの枠組みに組み立てられ、そこではパブリッ ク・インタフェースおよび相互関係が明確に定義されている。オブジェクトがコ ード再使用の単位であるときは、フレームワークは設計再使用の単位である。フ レームワークは一般に周知である。フレームワークはクラス階層全体をスパンし て、それと同時に包絡的アーキテチャ(enveloping architecture)を提供し、設 計の系統的編成を表すことができる。フレームワークはサブフレームワークに分 解することもでき、いくつかのフレームワークが大きなフレームワークにより包 含されることも可能である。 フレームワークが設計を具体化したものであれば、フレームワークをインプリ メント(実装)するオブジェクトの集合を呼ぶための用語(term)がなければなら ない。例えば、C++では、クラスとオブジェクトは、クラスが仕様(specificati on)であり、オブジェクトがクラスのインスタンスであると言うことによりこれ らの2つを別々に区別するものとよく言われている。好適実施例によれば、フレ ームワークの実装「インスタンス」はアンサンブル(ensemble)と呼ばれている。 この「アンサンブル」という用語は、フレームワークを集合的に実装するクラス を意味している。例えば、従来「デバイス・ドライバ」と呼ばれていたプロダク トはデバイス・アンサンブルとなっている。 フレームワークによると、アンサンブルの種々の部品間の協調と継承を通して 共通性(commonalty)が管理されることができる。明確に定義されたクラス階層の 使用を通して、共通性は追求され、それが設計全体の中で意味をもつ個所だけで 徐々にあらわれる。各フレームワークは、すべてのフレームワークにわたって適 用される「1サイズがすべてにフィットする(one-size-fits-all)」というパラ ダイムに拘束されることなく、適当な、望ましいインタフェースをそのクライア ントに提供することができる。 好適実施例の特徴と利点 好適実施例のオブジェクト指向入出力システムの特徴と利点のいくつかは、上 述した通りである。その他の特徴と利点は以下のセクションで説明する。 開発能力の付与 オブジェクトとフレームワークを幅広く使用することは、ハードウェア・デバ イス・インタフェース・ソフトウェアの分野では新しいことであり、アンサンブ ル作成者(ensemble author)をいくつかの面で支援するのに役立っている。第一 に、フレームワークは、秩序正しいスタートアップ(起動)、割込み通知の受信 、デバイス・ハードウェアのサービス(保守)、および秩序正しいシャットダウ ン(遮断)といった設計上の問題を通して作成者のガイドとなる働きをする。第 二に、類似の特性と目的をもつアンサンブル・オブジェクトを再使用すると、作 成者は必然的に異なる動作(behaviors)だけに集中することができる。 例えば、新しいディスク・コントローラ・カードのアンサンブルの作成者は、 既存のアンサンブルから受け継ぐようにすると、実際のハードウェア・アクセス を行う関数だけをオーバライドできる場合がある。これとは対照的に、まったく 新しいハードウェア部分のアンサンブルの作成者には、それから受け継ぐべきア ンサンブルが標準規格品として豊富に提供されていない場合がある。そのような 場合には、好適実施例によって定義された下位レベル入出力フレームワークの多 くは、設計上およびアーキテクチャ上のガイドを作成者に提供することによりこ の努力を支援する。 ハードウェアおよびソフトウェア革新の奨励 従来のハードウェアおよびソフトウェア革新は、相互の知識が熟知しすぎてい るという欠点がある。オペレーティング・システムとアプリケーション・ソフト ウェアはその基礎となるハードウェア・プラットフォームを「知りすぎている」 ために、これらはこの知識を活用して最大限の値を得ている。この情報を使用す ると、ハードウェア・ベンダは、アプリケーションを分解しないと変更を行うこ とが非常に困難になるようなモードに拘束されることになる。さらに、この知識 は、ソフトウェアが最小公分母(least common denominator)シンドロームから逃 れることを困難にしている。 オブジェクト抽象化を下位レベル・サブシステム全体に使用すると、このデッ ドロックを解決することができる。フレームワーク・インタフェースはハードウ ェア詳細をアプリケーションから見えないようにするだけでなく、アプリケーシ ョン詳細をハードウェアからも見えないようにする。システム全体のハードウェ ア依存部分とハードウェア独立部分との間のこの明確に定義されたインタフェー スは、ハードウェアだけでなくオブジェクト・ベースのソフトウェアがその影響 がシステム全体に波及することがなく変更できるので、ハードウェアとソフトウ ェアの両方の革新を奨励する。 ロケーション独立のデバイス抽象化 論理的ソフトウェア階層を実装し、共通の抽象化を提供し、共用ライブラリ・ システムを利用することにより、入出力アーキテクチャは、ハードウェアが現わ れる物理的ロケーションとその数に関係なく、同じデバイス・アンサンブルを使 用することを可能にしている。つまり、特定のUARTチップのアンサンブルはアン サンブル作成者が余計な作業を行わなくても、マザーボード・プレーナ(motherb oard planar)上のポートおよび、サードパーティ拡張カード上のポートにサービ スすることが可能になっている。 資源にユーザを見つけさせる 既存システムの、もう1つの基本的問題は、含まれている構成データベースの 見方である。現在のトップダウン資源ハンティングの見方では、インストールさ れているデバイスや見るための場所に関して明示的にシステムに知らせる必要が ある。ある場合には、これらのデータベースは入力として使用され、ドライバを 統計的にリンクしてカーネルに入れている。ある場合には、これらのデータベー スは入力として使用され、ドライバを統計的にリンクしてカーネルに入れている 。構成ファイルはシステムの各所に分散化され、新しいシステム・サービスがオ ンラインにされるように増加している。その結果はかなり統一されているが、新 しいデバイスを追加するには、不明瞭で、整っていない、通常は整合性のないス テップが大量に要求される。 改良されたパラダイムでは、現行の見方を逆転して新しいデバイスを追加する ようにしている。好適実施例によれば、この考え方は「資源にユーザを見つけさ せる(let resorces find you)」と呼ばれている。この「資源にユーザを見つけ させる」パラダイムでは、SCSIアンサンブルはドライブを大容量記憶サブシステ ムに報告し、次にサブシステムの方はマウント可能な論理ドライブ(ボリューム または区画(partition))をファイル・システムに報告することになる。この方 法によると、ユーザは、どのボリュームをマウントするかをファイル・システム に指示するように一部のデータベースを構成する責任がなくなり、ファイル・シ ステムは、ドライブとボリュームの起こり得る、すべてのハード・ドライブ・イ ンタフェースを検証する負担を軽くすることになる。 デバイスには、上例のように直接的で、直観的なクライアントが常にいるとは 限らない場合がある。そのような場合には、デバイスは中央の「パーツ・ビン(p arts bin)」に非特定資源として登録されることになる。例えば、RS232Cポート は自身をパーツ・ビンに登録することができ、そのあとでなんらかのユーザ・ア クションでビンから抜き出して、モデムまたはプリンタ・ポートを構成するため に使用することができる。この場合、使用可能であって、未割当てのデバイスだ けがパーツ・ビンへの道をみつけるので、提示されたオプションが有効である ことがユーザに保証されることになる。 「プラグ・アンド・プレイ」ユーザ・モデル 「資源にユーザを見つけさせる」の頂点にあるのが、「プラグ・アンド・プレ イ(Plug & Play)」ユーザ・モデルである。「プラグ・アンド・プレイ」オペレ ーションは、入出力ハードウェアを追加または除去するために構成ファイルを扱 わなくても済むようにユーザを解放する。 動的インストールと構成 ハードウェアとソフトウェアの動的構成は、好適実施例の「プラグ・アンド・ プレイ」モデルをサポートするためには必須のフィーチャ(機能または特徴)で ある。この目標を達成するために、デバイス・ソフトウェアの構成には、デバイ ス特定のソフトウェア(インタフェース・アンサンブル)の動的インストールが 必要である。例えば、「ホスト・プラギング(host-plugging)」が可能なSCS Iインタフェースでは、デバイスがバスに追加されたり、バスから除去されたと き、そのインタフェースから提供されるデバイスとサービスを再構成する必要が 起こる。 この機能は、割込み処理カーネル・コードを控えめにアンインジェクション(u n-injection)または除去することを含めて、アンサンブルの個々のインスタンス を随意に作成し、破壊できるようにする、もっと動的なシナリオに拡張すること ができる。 非集中化ポリシを有する柔軟性のある抽象化 柔軟性のある抽象化を入出力アーキテクチャ全体にわたって使用すると、ベー ス・アーキテクチャに縛られることなく、多くの設計上の決定をフレームワーク 開発者に委ねることが可能になる。このようにすると、設計者が選択できるオプ ションが増加するので、設計者は問題領域に対して最良のトレードオフのセット を得ることができる。このトレードオフのセットは、パフォーマンス、セキュリ ティ、デバイス・アロケーション、およびデバイス・アクセスのポリシ問題にス パンすることができる。 このようにすると得られる柔軟性の例として、各デバイス抽象化は、デバイス を共用にできるか、一度に1つのクライアントに制限できるかを定義することに なる。このデバイス・アロケーション・ポリシ決定を非集中化すると、特定デバ イスのスコープ(有効範囲)を越えて影響を及ぼすことなく、かかるポリシをの ちに変更することが可能になる。 クライアント/デバイス・アクセス・ポリシを定義することのほかに、デバイ ス抽象化は、入出力アドレス空間や割込みソース(interrupt source - IRQ) などの必要資源をアロケートしなければならない。これらの下位レベル資源は、 各入出力フレームワークごとに割込みサービス・フレームワークによって管理さ れる。これらの資源の調整は、衝突が起こらなければ、個々の入出力フレームワ ークに対しては見えないようになっている。 非集中化ポリシの効果は、デバイス抽象化が取り扱う必要のある依存関係の数 を減少し、個々のフレームワーク設計者が正しいポリシを適当なレベルに設定す る機会を増加することである。非集中化ポリシの価値は、初期実装の基準(refer ence)のフレームから逸脱する新しいハードウェア・システムを受け入れるよう にソフトウェアを移植するときに明らかになる。 システム信頼性の向上 今日の共通デスクトップ・オペレーティング・システム・テクノロジによって 達成されるシステム信頼性の現行レベルは、新しいシステムには受け入れられな い。保護アドレス空間やユーザ・モード・ドライバのような特徴をもつこの分野 では、進歩していることは明らかである。このような進歩があっても、入出力ア ーキテクチャはシステム安定性の目的に重要な貢献をしていない。好適実施例で は、この欠点に取り組んでいる。 割込みハンドラ内のプロセッサ例外からの回復 大部分のシステムは、システムが割込みコードの実行中に発生した割込みに対 して非常に厳格になっている。その結果起こるシステム・クラッシュはほとんど システム信頼性のモデルになっていないので、一見、不可解であることがよくあ る。これを改善するために、好適実施例の入出力アーキテクチャは、割込みドメ インに対してデフォルトとカスタムの両方の例外ハンドラをサポートしている。 エラー・ロギング 入出力エラー・ロギング(error logging)は問題を追跡し、重要でないエラー が発生したとき診断フィードバックを得る有効な手段である。好適実施例では、 このロギングに対して柔軟性のあるサービスをサポートしている。 資源の自動再利用 好適実施例は、資源を正しく再利用(reclamation)することを達成している。 具体的には、好適実施例は異常終了を検出し、そのあとでクリーンアップ(clean up)する。 異種ハードウェアのサポート 好適実施例は、デバイス、プロセッサおよびバスを広範囲にわたってサポート している。積極的にサポートされるデバイスは、単純な非割込み駆動型デバイス (例えば、アップルSWIMフロッピ・コントローラ・チップ)からDMAまたはチャ ネル・ベースのディスク・コントローラまでの範囲にわたっている。入出力バス の全範囲はサポートされ、この場合も、単純な(ISA)から高度の(マイクロ チャネルまたはNuBus)までの範囲にわたっている。この入出力アーキテクチャ はプロセッサ独立であり、マルチプロセシングを含む、すべての公知プロセッサ 構成をサポートしている。 オブジェクト指向入出力システムの構造 入出力サービス・フレームワーク エンド・ユーザがある機器部分を注文するとき、ハードウェアを入手するだけ ということはめったにない。むしろ、ユーザはあるレベルのサービスを得ようと する。例えば、モデム・メーカはあるレベルの通信サービスを達成する手段を提 供している。モデムを販売することは、実際の取引の1部分にすぎない。 従って、デバイスをアクセス可能にするだけでは、最早不十分である。焦点を 必要とされるサービスに移さなければならない。この目的を達成するために、好 適実施例の入出力システムはサービス指向になっている。システムはディスク・ ドライバを提供するのではなく、大容量記憶サービス(Mass Storage Services) を提供する。従来のディスク・ドライバの概念は、ソフトウェアがドライブをア クセスする手段にすぎない。大容量記憶サービスは、ファイル・システムに使用 可能な区画(partition)を提供し、ドライブ区画化とフォーマッティングを行う 技術的およびユーザ・インタフェース・タスクを準備するといった、追加の責任 を含んでいる。ここで認識すべき重要なことは、好適実施例は、提供されるサー ビスのレベルを上げることによって従来のデバイス・インタフェースの役割を拡 張していることである。 好適実施例の入出力システムによって提供される入出力サービスのいくつかを 挙げると、(a)大容量記憶入出力サービス、(b)キーボード処理サービス、(c)マ ウス/ポインティング・デバイス処理サービス、(d)SCSIサービス、(e)シリ アル通信ポートサービス、(f)拡張バス管理サービス、(g)デスクトップ・バス入 出力サービス、および(h)電源管理サービスがある。 好適実施例によれば、入出力サービス・フレームワークは、エンド・ユーザ( 人間のオペレータ、オペレーティング・システムの機能、アプリケーション・ プログラムなど)が上記およびその他のサービスを実行できるようにするために 用意されたものである。具体的には、エンド・ユーザはこれらの入出力サービス ・フレームワークと相互作用して、サポートされる入出力オペレーションを実行 することができる。 主要な入出力サービス・フレームワーク102は、フレームワークから提供さ れる特定のサービスとフレームワークがアクセスするデバイスの一部と共に図1 に示されている(サービスとデバイスは楕円で示されている)。これらの入出力 サービス・フレームワーク102には、(1)マウス・ポート、デスクトップ・バ スおよびシリアル・マウスに関係するサービスを提供するマウス/ポインティン グ・デバイス・フレームワーク102A、(2)アクセス・バスに関係するサービ スを提供するデスクトップ・バス・フレームワーク102B、(3)シリアル・ポ ートを経由するデータの同期および非同期転送に関係するサービスを提供するシ リアル・ポート・フレームワーク102C、(4)電源検知およびスクリーン管理 に関係するサービスを提供する電源管理フレームワーク102D、(5)パラレル ・タイプ・デバイス(プリンタ、ポータブル・ディスク、ネットワーク・インタ フェースなど)との相互作用に関係するサービスを提供するパラレル・ポート・ フレームワーク102E、(6)拡張バスとの相互作用に関係するサービスを提供 する拡張バス管理フレームワーク102F、(7)大容量記憶デバイスに関係する サービスを提供する大容量記憶デバイス・フレームワーク、(8)キーボード入力 デバイスに関係するサービスを提供するキーボード・フレームワーク102H、 (9)SCSIバスとそのバスに接続されたデバイスに関係するサービスを提供す るSCSIバス・フレームワーク102Iがある。 これらのサービスの一部が他のサービスのクライアントとなって所期の目標を 達成することが起こり得る(場合によっては、そうする必要がある)。例えば、 ある構成では、大容量記憶フレームワーク102Gは、SCSIフレームワーク 102Iのクライアントになっている。SCSIフレームワーク102Iの方は 、拡張バス・フレームワーク102Fのクライアントになることが可能である。 ポインティング・デバイス・フレームワーク102Aは、シリアル・ポート・マ ウスを使用するためには、シリアル・ポート・サービス・フレームワーク 102Cのクライアントになる必要がある。入出力フレームワーク102はデバ イス・インタフェーシングと関係がない、他の多数のオペレーティング・システ ム・サービスのクライアントにもなっている。 基礎となる入出力フレームワーク 上述した入出力サービス・フレームワーク102は、好適実施例の入出力シス テムとエンド・ユーザとの間のインタフェースを表わしている。入出力サービス ・フレームワーク102は、以下に示す下位レベル・フレームワークと一緒に動 作してそれぞれのタスクを実行する。割込みサービス・フレームワーク206と 、割込みハンドラ・フレームワーク208と、アクセス・マネージャ・フレーム ワーク210である。これらのフレームワークは、入出力システムの基本的ビル ディング・ブロックを表わしている。 図2は、これらのフレームワークがどのように通信し、相互作用して複数のサ ービスを提供するかを示している(上述したように、これらのフレームワークの インスタンシエーションはアンサンブルと呼ばれ、図10にエレメント1032 で示されている)。図2は、好適実施例の入出力システムの全体構造を基本的に 示す図である。 入出力サービス・フレームワーク102では、各フレームワークはプラットフ ォーム相互間で整合性のあるインタフェースを、そのクライアント214に提示 する。従って、特定のフレームワーク、例えば、大容量記憶フレームワークの場 合のインタフェースはPowerPCを実装したものと同じであり、これはインテルPen tiumまたはモトローラMC68040を以前実装したものと同じである。 割込みサービス・フレームワーク206は、複数の割込みハンドラ208を管 理するためのカーネル・ベースのサービスを提供して、第1レベル割込みデコー ドと適当な割込みハンドラ208へのディスパッチを実行する。このフレームワ ークは多数の管理タスクにも責任がある。 割込みハンドラ208(割込みハンドラ・フレームワーク208のインスタン シエーションを表わしている割込みハンドラ)は、デバイス割込みを処理するデ バイス特定の抽象化である。これはオプションのビルディング・ブロックであり 、これが必要になるのは、管理されるデバイスが割込みを引き起こしたときだけ である。割込みハンドラはカーネル・モードで実行されるので、カーネル特権命 令とオペレーションをアクセスすることができる。 デバイス・アクセス・マネージャ210(アクセス・マネージャ・フレームワ ーク210のインスタンシエーション)はユーザ・モードの抽象化であり、カー ネルの外で実行され、ハードウェア・アクセスと関連があるすべてのタスクを担 当している。 図2に示すハードウェア・デバイス212は、好適実施例の入出力システムに よって管理されているハードウェア・デバイスを表している。アクセス・マネー ジャ210と割込みハンドラ208はハードウェア・デバイス212と通信して いることに留意してほしい。 割込みデバイス206はカーネル204と通信しているが、これは、好ましく は、IBM社開発のMachマイクロカーネルになっており、これはこの分野では公 知である。 オブジェクト指向入出力システムのオペレーション 好適実施例の入出力システムは好ましくは次のように動作する。クライアント 214はサービス要求を、そのクライアントに関連する特定の入出力サービス・ フレームワーク102へ送信する。入出力サービス・フレームワーク102はそ の関連アクセス・マネージャ210を使用して、「バイト書込み」、「ブロック をバッファとする」または適当なアクションとなるもの、などの適当なコマンド を適当なデバイス・レジスタにロードする。 割込みは図2において下から上へ向かって進んでいく。カーネル・ベースの割 込みサービス・フレームワーク206はプロセッサ割込みをとらえて、特定の割 込みレベルまたはIRQ用に登録しておいた割込みハンドラ208をコールする 。割込みハンドラ208はハードウェアを照会し、適当なメッセージをその関連 デバイス・アクセス・マネージャ210へ送信する。デバイス・アクセス・マネ ージャ210はバッファ読取りといった、ハードウェア・インタフェース・オペ レーションを実行し、メソッド・コールかIPC(プロセス間通信)のどちらか 適当なものを通して、適当な入出力サービス・フレームワーク102に通知する 。最後に、入出力サービス・フレームワーク102は、データを送ることによっ てクライアント・スレッドをアンブロッキングするといった、適当なアクション をとる。 どのデバイス・アクセス・マネージャ210も、およびその関連する割込みハ ンドラ208も、図3に示すように、従来のデバイス・ドライバに見られる関数 を実行することが可能である。デバイス・アクセス・マネージャ210と割込み ハンドラ208は、どちらも、それぞれのハードウェア・デバイス212へ直接 アクセスすることができる。そのために開発者は、実装別の、設計目標全体を達 成するように、デバイス・アクセス・マネージャ210と割込みハンドラ208 との間で機能をバランスよく調和することができる。ある程度進んだ入出力ハー ドウェアでは、機能性(およびコード量)は主としてデバイス・アクセス・マネ ージャ208に持たせ、割込みハンドラ208のサイズと複雑性は、最小限にす ることが可能である。 フィーチャまたは関数をどこに置くかは、設計者に任されている。フィーチャ をどの程度までデバイス・アクセス・マネージャ210または割込みハンドラ2 08に常駐させておくかは、設計者の要求条件と次の条件に従って決めるべきで ある。コードを割込みハンドラ208に実装する目的が圧倒的に明確化されてい なければ、コードはデバイス・アクセス・マネージャ210に置いておくべきで ある。このルールは、割込みハンドラ208をできる限り小さくし、単純化して (実用上の考慮から)パフォーマンスを向上させるという意図に基づいている。 割込みハンドラ208は、それぞれのデバイス・アクセス・マネージャ210 の要求でインストールされ、削除される。通常、デバイス・アクセス・マネージ ャ210と割込みハンドラ208は1対1に対応づけられている。すなわち、各 デバイス・アクセス・マネージャ210は、割込みハンドラ208を1つだけイ ンストールするのが通常である。この1対1対応の例外も認められ、許容される 。そのような例外のいくつかを示すと、次の通りである。(1)割込みを発生しな いポーリングされたデバイスに対するデバイス・アクセス・マネージャは、どの 割込みハンドラもインストールしないで済む。(2)ある種のハードウェアは、多 数の別個の割込みを発生する能力がある同種デバイスの複数のインスタンスをも つことができる(例えば、複数のUARTをもつISAシリアル・ポート・カー ド)。この場合には、設計者は共通のデバイス・アクセス・マネージャを使用す ることを選ぶことができるが、その場合は、複数の割込みハンドラがインストー ルされることになる。 図3に戻って説明すると、デバイス・アクセス・マネージャと割込みハンドラ は、2つの標準インタフェースを使用して通信する。第一に、デバイス・アクセ ル・マネージャは、コントロール・メカニズムを使用して双方向通信トランザク ションを開始することができる。第二に、割込みハンドラは、割込み通知サービ スを通して一定量のデータを任意のタスクへ送信することができる。このインタ フェースの目的は、一定のステート情報をデバイス・アクセス・マネージャに通 信する割込み通知を可能にすることである。どの標準および適当な通信インタフ ェースを使用しても、コントロール・メカニズムと割込み通知サービスを実装 することが可能である。 以下、好適実施例のオペレーションについて詳しく説明する。入出力サービス ・フレームワーク102はそのデバイス・アクセス・マネージャ210と相互作 用する。デバイス・アクセス・マネージャ210は、仮想アドレス範囲を入出力 の準備状態にするようにメモリ管理サービスに要求することにより、バッファを 準備状態にする。次に、デバイス・アクセス・マネージャ210はハードウェア ・デバイス212と直接に相互作用するか、あるいはコントロール・メソッドを 通してデバイス割込みハンドラ208と相互作用する。 ハードウェア・デバイス212は要求データを受け取るか、あるいは供給する 。ある時点で、ハードウェア・デバイス212が割込みを発生すると、これは割 込みサービス・フレームワーク206によって受信され、正しい割込みハンドラ 208へディスパッチされる。 割込みハンドラ208はハードウェア・デバイス212をアクセスし、ハード ウェア・デバイス212のステート(状態)を調べることができる。そのあと、 割込み通知サービスを通してデバイス・アクセス・マネージャ210に通知し、 可能ならば、その通知と一緒に必要なステート情報を送信する。 次に、デバイス・アクセス・マネージャ208はクライアントの常駐入出力バ ッファをアンロック(ロック解除)する。最後に、デバイス・アクセス・マネー ジャ208は要求されたアクションが完了したことを、入出力サービス・フレー ムワーク102の1つを通してクライアント214に通知する。 デバイス・アクセス・マネージャ 従来のドライバではなく、なぜデバイス・アクセス・マネージャ208である のか?その答えは、好適実施例の入出力アンサンブルに要求される、拡張された 役割にある。デバイスは各タイプごとに、アクセス・ルールとプロトコルに差異 がある。この多様性を「1サイズがすべてにフィットする」インタフェース抽象 化に圧縮することは、現行のOSアーキテクチャ間で共通に行われている。革新 を可能にする目標を受け入れるには、これらのアクセス・プロトコルの任意の与 えられたセットが多様化していることを認識しなければならない。従って、デバ イスの各カテゴリは、独自の抽象インタフェースを定義できるようになっていな ければならない。例えば、プリンタとタップ・ドライブは複数のクライアント間 で共用される可能性はほとんどない。しかし、異なるプロセス・ポリシを使用す ると、プリンタ・ポートは、スプーリング・キュー(待ち行列)を管理すること により共用されるという錯覚を与えるおそれがある。従って、デバイス・アクセ ス・マネージャ210は、そのアクセス・ポリシをカプセル化し、隠蔽して、そ の制御を行うことができる。 デバイス・アクセス・ポリシは、現在と将来のすべてのデバイスについてグロ ーバルに、明確に、あるいは正確に予測することはできない。これを行おうとす ると、新しいハードウェア革新に適合できない、圧縮された入出力モデルをもた らすことになる。好適実施例は、グローバル入出力アクセス・ポリシをセットし ない。現在適用されているグローバル・デバイス・アクセス・ポリシが、将来正 しくなくなるか、不適切になる可能性がある。好適実施例の入出力システムは、 多くのポリシ決定を可能な限りデバイス・アクセス・マネージャ210に委ねる ことによってこの問題に取り組んでいる。従って、デバイスのアクセス・ポリシ を定義することは、デバイス・アクセス・マネージャ210の機能上の役割にな っている。 ユーザ・モード・アクセス・マネージャ210に対する、もう1つの理由は、 デバイス・サービス機能をカーネル・スペースの外に置くことができるようにす ることである。このようにすると、カーネルの増長(bloat)が低減し、システム 安定性が向上するという利点が得られる。 割込みハンドラ 割込みハンドラ208は割込みソース(発生源)特定の抽象化であり、割込み を処理し、カーネルのアドレス空間で実行される。割込みハンドラ208がデバ イス特定であるのは、そのコードがターゲット・デバイス212の詳細知識をも っているからである。しかし、割込みハンドラ208は、異なる物理ロケー ションに置かれたデバイスの複数のインスタンスを処理する機能をもつという意 味で、汎用的でもある。(つまり、割込みハンドラはUARTとSCSIインタ フェース・チップの両方に対しては、割込み通知を処理する(field)ことはでき ないが、複数のUARTチップに対しては割込みを処理することができる。) すべての割込みハンドラは抽象基底クラス(abstract base class)TInterrupt Ha ndlerからサブクラス化される。TInterrupt Handlerクラスは、デバイス特定の 割込みハンドラとカーネルの割込みサービス・フレームワークとの間の必要とさ れるインタフェースを定義している。デバイス特定サブクラスのオブジェクトは 、割込みハンドラによって使用される他のオブジェクトと共に、処理されて共用 ライブラリに入れられる。 割込みハンドラ208がデバイス・アクセス・マネージャ210によってイン ストールされると、「デス・ウォッチ(death watch)」が開始されるので、デバ イス・アクセス・マネージャ210が壊されると割込みハンドラ208が自動的 に削除されるようになっている。このようすると、システムは、割込みハンドラ 208によって使用された資源が、デバイス・アクセス・マネージャ210が削 除されたとき再利用されることを保証することができる。このデス・ウォッチは 、割込みサービス・フレームワーク206によって目立たないように管理される 。 割込みサービス・フレームワーク 割込みサービス・フレームワーク206は、割込みハンドラ208によって使 用されるカーネル・レベル・サービスをカプセル化すると共に、割込みデコーテ ィングを提供し、適当な割込みハンドラ208へディスパッチする。割込みサー ビス・フレームワーク206から提供されるサービスには、次のものがある。 (1) 割込みハンドラのインストール。カーネル常駐割込みハンドラはすべてこ のフレームワークによってインストールされる。 (2) 入出力資源の管理。このタスクは、割当て済みで、要求された入出力アド レス範囲と割込みスペースを追跡して、衝突が調停されることを含む。これらの 資源の調停は、最初に到着したものが最初にサービスを受ける(first-come,fir st-served)という性格のものであるが、ハードウェア・アーキテクチャと割込み サービス・フレームワーク206の特定の実装に依存して、このモデルと異なる こともあり得る。 (3) 割込みハンドラ例外の管理。割込み時に起こるプロセッサ例外を最終的に 処理するのは、割込みサービス・フレームワーク206の仕事である。この責任 には例外をロギングし、例外ハンドラを呼び出すことが含まれる。オフェンディ ング(offending)割込みハンドラ208がカスタム例外ハンドラを指定していれ ば、それが呼び出される。そうでなければ、システムのデフォルト例外ハンドラ が使用される。 (4) デバイス・アクセス・マネージャのデス・ウォッチ。アクセス・マネージ ャ210が壊されたかどうかをウォッチし、まだインストールされている関連の 割込みハンドラ208を削除するのは、このフレームワークである。 (5) 割込みハンドラの削除。割込みハンドラ208を削除する要求が受信され たとき、要求側が適当な権利をもっていることを前提として、その作業を行うの はこのフレームワークの責任である。通常、割込みハンドラ208をインストー ルしたデバイス・アクセス・マネージャ210だけが、そのハンドラを削除する 権利をもっている。 さらに、割込みサービス・フレームワークは割込み階層を構築し、それをサポ ートしていなければならない。割込み階層は、ロケーション独立のデバイス抽象 化のサポートに不可欠な革新であるので、以下で説明する。 ハードウェア階層と構成 入出力ハードウェア・デバイスは多種類のハードウェア・パスを経由してシス テムに接続することができる。一部のデバイスはマザーボード上に組み込まれて おり、一部のデバイスはバス(例えば、マイクロチャネル、NuBus、SCS I、IS)に接続されており、他のデバイスはいくつかの手段の組合わせ を使用して接続されている。例えば、SCSIドライブは、SCSIチップがそ こに置かれているNuBusカードに接続することが可能である。単純化した抽 象化では、異種のハードウェア構成はハードウェア階層の集まりとして見えるよ うになっている。図4は、そのようなハードウェア階層の例を示したものである 。 図4の階層を要約して示すと、次のようになる。 マザーボード・ハードウェア 拡張バス・カード 単純デバイスA 単純デバイスB このハードウェア階層をソフトウェア・ドメインに投影することによって、好 適実施例はかなりの程度の柔軟性を達成し、専門化されたデバイス知識を適当な レベルでカプセル化している。これについては下述する。 ソフトウェア階層 ハードウェアを階層と見る見方は、これらのデバイスのソフトウェアも階層で あるとの見方に通じる。ソフトウェアを階層と見る見方は、知識の範囲を階層の 適当な層に限定することになる。この知識の範囲を制限することにより、入出力 ポリシ問題を階層の最下位レベルに押し付けることが可能である。割込みが発生 すると、正しい割込みハンドラ208がこの割込みを処理するまで、コントロー ル(制御権)は階層を下って行くことになる。これを示したのが図5である。 このソフトウェア階層は割込み処理に限定されず、自動システム構成という関 心事にもスパンしている。ハードウェア階層の「ルート(root)」が見つかると、 ソフトウェア階層のルート(root - 根)が生成される。このソフトウェア・ルー トのタスクは、新しいハードウェア・ノードを見つけると、ソフトウェア階層の 各ノードを見つけて、インスタンシエイトすることである。好適実施例のこの側 面の詳しい説明は、構成アクセス・マネージャに関するセクションで下述されて いる。 親子関係 好適実施例の入出力アーキテクチャを階層として見る見方では、単純な親子関 係を使用してソフトウェア階層のすべてのノードを管理している。各割込みハン ドラ208とデバイス・アクセス・マネージャ210は親関係をもち、子関係は もつ場合と、もたない場合とがある。これらの親子関係はこのような階層抽象化 を管理するためのモデルを形成する。これらの関連づけのすべてのセットは、ソ フトウェア階層のトポロジを自然に、かつ動的に定義している。この定義は2つ の重要な目標を達成している。(a)これは、ソフトウェア階層がどのように(ど の順序で)構築されているかを定義している。(b)これは、割込み発生時のコン トロールの流れを記述している。 階層内のノードを定義することは、大部分の入出力ハードウェアでは単純なタ スクである。しかし、少数の場合には、親子関係を区別するジョブは明確になっ ていない。例として、Zilog Z8530 SCCチップがある。このチップは2種類の別 個のシリアル・ポート(AとB)と共通の割込みレジスタをもっている。明らか な初期設計は、2つのシリアル・ポートを定義し、各々が割込みハンドラを持つ ことである。しかし、ポートAの割込みハンドラが割込みレジスタを読み取ると 、これは両ポートの割込みステータス(状況)を取得し、このアクションによっ てレジスタをクリアしている。独立の割込みハンドラの概念はこのケースでは有 効でないことは明らかである。 解決方法は、抽象化をチップとポートの2レベルで定義することである。これ は図6に示されている。そこでは、チップ抽象化は親であり、2つのソフトウェ ア独立のシリアル・ポートをエクスポートしている。あるクライアント・アプリ ケーション(例えば、MIDI)がその割当てポートを使用する必要が起こった 場合には、まず、正しい親の割込みハンドラ・オブジェクト(チップ割込みハン ドラ)を獲得し、MIDI割込みハンドラをその親の子としてインストールする ように要求する。 親子関係がどのように使用されて、ソフトウェア階層が構築されるかは上述し た通りである。次に、割込みの場合におけるコントロールの流れについて説明す る。 上例(図6)において、SCCポートBが割込みを主張したとする。マザーボ ードは、割込み信号をプロセッサへルート(route)し、プログラム・カウンタは ベクトル化されて割込みサービス・フレームワークに入力される。割込みサービ ス・フレームワークはプロセッサ割込みをデコード(解読)し、SCC割込みハ ンドラをディスパッチする。 SCC割込みハンドラは割込みレジスタを読み取り(この結果、割込みステー タス・ビットがクリアされる)、そこで見つけた値をデコードし、ポートBが割 込みを発生したことを決定する。次に、割込みサービス・フレームワークのサー ビスInvokeChildをコールしてポートB割込みハンドラをディスパッチし、割込 みレジスタのコピーを「親オブジェクト」に引き渡す。 注意すべき重要なことは、SCC割込みハンドラは、ポートBでどのハンドラ が現在アクティブな子であるかを知らなくてもよいことである。子が割込みを処 理すべきことを知っているだけで充分である。 割込みレジスタがポートAの割込みも示していたときは、SCC割込みハンド ラは、ポートBの割込みサービスが完了すると、同じようにポートA割込みハン ドラをディスパッチすることになる。このようにして、個別ポート割込みハンド ラは共用割込みレジスタの破壊読取りをしないで済むことになる。 構成アクセス・マネージャ 構成アクセス・マネージャはデバイスのコレクションを構成することを付加的 に担当するデバイス・アクセス・マネージャ210であり、これらは好適実施例 のプラグ・アンド・プレイ目的の中心的エレメントとなっている。構成アクセス ・マネージャには2種類ある。最初のものは構成するための一定セットのデバイ スを有するので、単刀直入な構成タスクを持っている。二番目のものは任意数の 「タイプのない」デバイスを構成しなければならない。構成アクセス・マネージ ャの二番目の形は、なんらかのプロトコルを利用して、その構成タスクを完了す る前に存在するデバイスの数とタイプを決定する。 いずれかの構成アクセス・マネージャが始動されたとき、それが担当するすべ てのデバイスを見つける必要がある。すべてのデバイスが見つかり、識別される と、構成アクセス・マネージャはポリシ決定を行う。つまり、適当なデバイス・ アクセス・マネージャ210をインスタンシエイトするか、あるいはデバイスが 見つかったが、デバイス・アクセス・マネージャ210とリンクされていないこ とを記録するだけである。 次に、図7について説明する。そこでは、SCSIバス構成アクセス・マネー ジャは標準SCSIプロトコルに従って、どのデバイスが現在SCSIバス70 4に接続されているかを識別する必要がある。デバイスが見つかると、構成アク セス・マネージャは、どのデバイス特定デバイス・アクセス・マネージャをイン スタンシエイトすべきかを決定する。 構成するための一定セットのデバイスの例は、いくつかのデバイスを有する拡 張カード上に見出される。このタイプの構成アクセス・マネージャでは、ポリシ 決定はハード・コード(hard-coded)になっている。2つのSCSIコントローラ を含む拡張カードでは、SCSIチップはカードの構成アクセス・マネージャに 知らされる。これらのSCSIバスの各々のデバイスは、SCSIバス構成アク セス・マネージャによって構成する必要がある。 この例が示すように、構成アクセス・マネージャのモデルはリカーシブ(再帰 的)に適用することができる。ソフトウェア階層を使用して任意のハードウェア 階層を管理するようにすると、入出力システムは任意のハードウェア・プラット フォームまたは構成を動的に構成することができる。 データ転送とデバイス・アクセス・マネージャ データはプロセッサ(プログラム入出力)またはハードウェア(ダイレクト・ メモリ・アクセス、DMA)によってハードウェア・デバイスとの間で転送する ことができる。チャネル処理、つまり、専用入出力プロセッサをDMAと一緒に 使用することは、これらの転送オプションの組合せを表している。 プログラム入出力(programmed IO)が好適実施例によってサポートされること は、デバイス・アクセス・マネージャの上例を見れば明らかである。 DMA関連サービス群が、デバイス・インタフェース・アンサンブルに使用可 能である。これらのサービスとしては、次のものがある。(a)DMAチャネルの クライアントへの動的割当て、(b)分散読取り(scatterd-read)、集合書出し(gat hered-write)(分散−集合(scatter-gather)とも呼ばれる)のサポート、(c)ハ ードウェア制限のカプセル化(ISAバス・ハードウェアの24ビット・アドレ シング制限など)。DMAサービスを使用すると、物理メモリの好ましくは下位 16Mbに中間バッファを用意することにより、DMAデバイスがシステム上に 許されることになる。この機能はデータ転送を低速にするので、オプションにな っている。(d)DMAサービス・クラスはサードパーティ・バス・マスタをサポ ートするようにサブクラス化することが可能である。 これらのDMAサービスは、ISAシステムで見られるものよりも、ハードウ ェア・サポートを向上することを目標としている。ハードウェア・ベースの進歩 と共に、DMAモデルは、ISAバスの遺物をサポートするために必要であった 、ある種の機能を削除することが可能である。MCA、EISAおよび他のワイ ド・バス・アーキテクチャでは、そのような機能は必要ではなくなるべきである 。 アーキテクチャの例 上述したように、好適実施例によれば、オブジェクト・テクノロジの再使用と 抽象化の使用によって入出力ソフトウェアを進歩させることができる。このセク ションでは、好適実施例のこれらの利点を示す例について説明する。 サード・パーティ開発者が単純な付加価値カードを製造して、市場で販売する ことを決定したとする。マーケット・リサーチの結果、SCSIバスといくつか のシリアル・ポートを有する拡張カードの需要があることが明らかになった(図 8参照)。開発者は、ターゲットOEMが使用しているものと同じ入出力チップ を使用することを選択した。 ハードウェア・カードを製造することは単純であるが、このサード・パーティ 開発者はどれだけのソフトウェアを書く必要があるか?好適実施例によれば、開 発者が書く必要のあるソフトウェア量は非常に少なくなる。その理由は、カード を制御するソフトウェアの大部分は既存のアンサンブルから得られるからである 。 ハードウェア・レベルとソフトウェア・レベルの両方をてこにしたので、サー ド・パーティ開発者は、ソフトウェア・ソリューションのわずかな部分を開発す るだけで済んだ。図9に示すように、開発者が貢献したのは、サード・パーティ ・カードの割込みハンドラとカード特定の構成アクセス・マネージャである(図 9には示していない)。アンサンブルの残り部分は他から提供されたものである 。 複数プロセッサのサポート 好適実施例の入出力システムは、好ましくは、基礎となるカーネルのマルチプ ロセッシング(MP)機能を追跡する。MPサポートは、好ましくは、公知のユ ニフォーム・メモリ・アクセス(Uniform Memory Access - UMA)モデルを利 用する対称マルチプロセッシング(Symmetric Multi-Processing - SMP)に集 中している。 どのMP構成に対するデバイス・アンサンブルをサポートする能力は、サポー トされる適当なカーネルと実装特定の同期プリミティブに依存する。割込みハン ドラ(カーネル内(in-kernel)同期)の場合は、TInterruptMutex同期メカニズム が必要である。デバイス・アクセス・マネージャと他のユーザ・モード抽象化の 場合は、システムの標準ユーザ・モード同期サービス・セット(モニタ、セマフ ォアなど)があれば、充分である。 OOブーティング・フレームワーク システムをブートする根本のオペレーションは、システム・ソフトウェアを立 ち上げて、実行状態にするプリミティブ手段(vehicle)を提供することである。 このオペレーションをサポートするために、ブーティング・フレームワークはブ ーティングを準備し、制御する機能を用意している。 ブーティング・フレームワークは3つの論理部分に分かれている。1)直接クラ イアント・インタフェース定義、2)フレームワーク定義、および3)サービス定義 (内部ステップと実装)である。 ブーティング・フレームワークの目標と要求のいくつかを示すと、次のとおり である。 ・ システム・ソフトウェアを立ち上げて、実行状態にするプリミティブ手段を 提供する。 ・ システムの相互依存性の一部を管理し、隠蔽する。 ・ ブート時実行可能(boot time executable)の制約を最小限にする。 ・ サード・パーティ・アクセスと共に単純性と拡張性を提供する。 ・ すべてのPinkプロセッサと入出力プラットフォームのポータブル・ソリ ューション。 ・ ハードウェアとシステム・ソフトウェアのマーケッティング時間を短縮化す る。 ・ 複数のブート・データ・ソースからのブーティングをサポートする。 ・ ユーザ・エラーとハードウェア・エラー発生に対し強くする。 ブーティング・フレームワークはベース・システム関数群を用意していなけれ ばならない。ポライト(polite)で、見立たない(unobtrusive)とは、ブーティン グ・フレームワークは、それがアクチベートするソフトウェアに余計な負担をか けてはならないことを意味する。オープンで拡張可能なブーティング・モデルを 使用すると、それをガイドとしてブート設計の多くを行うことができる。このモ デルは単一のバウンド・ファイル(bound file)ではなく、ファイルの集まりをブ ート可能単位として使用する。ブート・イメージ・メンバをファイルで解決する ことは、オープン・モデルをサポートする重要な設計方針である。ブーティング 時にアクティブになるオブジェクト群は、個別ファイルのコンテキストで存在す るので、ファイルは単純で直観的方法で追加し、削除することができる。この結 果、システム・ソフトウェアの更新機能と拡張機能が強化されることにな る。 オブジェクト指向フレームワークとコード再使用をローレベルPinkオペレ ーティング・システムで使用すると、システム初期化時にオブジェクトを使用で きるようにする要件を作成するのに役立つ。この問題は好適実施例では、メモリ ・ベースのブート・イメージ(memory based boot image)を利用することによっ て取り組まれている。メモリ・ベースのブート・イメージは、必要な相互依存性 がすべて解決されている自立型(self contained)オブジェクトの集合である。こ の集合は、バッキング・ストア・デバイスをマウントし、それによってブート・ イメージに含まれていないソフトウェアの残り部分をアクセスできるようにする 、十分なシステム・ソフトウェアを含んでいる。従って、システムは、システム の低レベル部分をこのブート・イメージからブリング・アップ(bring up)し、ブ ート・イメージの外側に出してシステムの残り部分をブリング・アップすること によりブートすることができる。 好適実施例は、ファイル・システムと入出力システムが使用可能になるのに先 立ち、ブーティング期間にカーネル・ページング要求を満足させるメカニズムも 備えていなければならない。ブート・コンテント・サーバ(boot content server )はこの問題を解決するために採用されている。ブート・コンテント・サーバは 、ページング・アーキテクチャに基づくデータ・ソース独立コンテント・サーバ ・ベースを利用している。コンテント・サーバはカーネル・メモリ・マネージャ をファイル・システムから切り離し、バッキング・ストア・ベースのファイル・ システムの有無に関係なく、メモリ・マネージャ要求が整合性のある方法でサー ビスを受けることを可能にする。カーネル・メモリ・マネージャへのアクセスと 、ブート・イメージ内の種々ファイルへのアクセスを提供する。ファイル・シス テムが立ち上がって、実行状態になる前に、ページング要求はこのブート・コン テント・サーバによって処理される。ブート・コンテント・サーバに知らされる ファイルとデータ構造の集合全体はメモリ・ベースになっている。ブート・コン テント・サーバとバッキング・ストア・デバイスとの相互作用は行われない。ブ ート・コンテント・サーバは一時的なものであり、できるかぎり早い時期に本来 のファイル・システムに道を譲る。 ブート・フレームワークはブーティング作業をカプセル化し、モジュール化す るための、いくつかの重要なインタフェースを定義している。ブーティング・フ レームワークを使用すると、新しいOEMプラットフォームと新しいブート・ソ ース・デバイスにブート・ソースとして移植する際に必要になる作業が容易化さ れる。モジュール性は、CPUプラットフォームとブート・ソース・デバイスの 独立性を提供する。従って、ブーティングの土台は特定のROMにも、スタート ・コードの断片にも束縛されていない。ブーティング設計は、キー・サービスの 一部を含んでいる最小限のシステムをブート時に具体化し、ブート時に実行され るソフトウェアの多くがフィーチャ(機能)を整合性のある方法で使用できるよ うにする。例えば、ブーティング・フレームワークはファイル・システムのプロ パティ(property)とプリファレンス(preference)を、ブート・プロセス期間に使 用することをサポートしている。ブート・コントロールは明示にではなく黙示に ドライブされる。ハンド・クラフトの構成スクリプトは使用されない。ブート・ イメージに存在するファイルの集合、システムに存在するハードウェアの集合、 およびブート・イメージ・ファイル上のプロパティの集合は一緒に働いて、ブー ト時の実行の順序と選択をガイドする。ハードウェアとデバイス・ドライバとの バインディング(結び付き)は、抽象化可能な多相的(polymorphic)構成内でブ ーティング・コントロール・ソフトウェアによって取り扱われる。 ブーティング・フレームワーク・アーキテクチャ ブーティング・フレームワークのアーキテクチャは相互に依存するいくつかの コンポーネントを含み、これらはブート・イメージの周囲に包み込まれている。 ブート・イメージは、バッキング・ストア、ネーティブ入出力、ファイル・シス テムと共にカーネルをサポートし、必要なバッキング・ストア・デバイスをマウ ントする個所までシステムをブリング・アップする(bring up)とき必要になる論 理ファイルの集合である。これらのサービスが所定位置に置かれると、システム は独立に実行することができ、ファイル・システムとアクセス・マネージャを使 用して、ハイレベル・ツールボックス・ピースのような、システム・ソフトウェ ア・サービスの残り部分をバッキング・ストアからブリング・アップすることが 可能になる。ブート・イメージ・モデルは、必要な部品の集合全体を1つの集合 に集約し、システムのブート時にシステムがそれを使用できるようにすることに より、ブーティング・フレームワークが循環依存性問題(circular dependency p roblem)を解決するのを支援する。ブーティングの中心的作用は非常に単純化さ れている。つまり、このブート・イメージのプリミティブなフェッチを行ってR AMに入れ、RAMベースのブート・イメージからコードを取り出して実行し、 システムの残り部分へ間をおかずに移っていく。 図11は、好適実施例によるブーティング・フレームワークのコンポーネント を示すブロック図である。基本はブート・デバイスに関するものである。このこ とは、ローカル・ディスク・ブートの場合には、ディスク・ドライバ・ソフトウ ェア、ローカル・ファイル・システム、およびこれらに依存する共用ライブラリ が基本であることを意味する。これに対して、ネットワークとリモート・ファイ リング・ソフトウェアはローカル・ディスク・ブートに対して基本になっていな い。バッキング・ストア・サポートを含まないが、むしろ、単純なユーティリテ ィのように、ある種のメモリ・ベース・システムが実行されるケースがいくつか ある。また、カーネル・デバッガが必要でないために、それがブート・イメージ に含まれていないケースもある。ブート・イメージは、以下に示すベーシックな 基本ビルディング・ブロックに依存する。つまり、オブジェクト、共用ライブラ リ、ライブラリ・サーチャ、クライアント/サーバ・プロトコル、ファイル・シ ステム・インタフェースのサブセット、プリファレンス、タイム・サービス、ト ークン・サービス、ハードウェア構成サービスなどである。RAM常駐ブート・ イメージに存在するファイルと、ブート・ソース・デバイスに存在するファイル との間には直接的対応関係がある。ブーティング・サービスは、ブート・デバイ ス上のブート・イメージ内のファイル、ブート・デバイス上のブート・イメージ 記述子、およびRAMに置かれたブート・イメージ内のファイル相互間の整合性 を保証しなければならない。 ブート・イメージに組み入れるべきサービスを選択することは、非常に重要で ある。ブート・イメージ内のソフトウェアの量はメモリ・フットプリント (memory footprint)を小さくするために最小限にしなければならない。しかし、 ブート・イメージから取り出されて実行されるコードがそのジョブを可能な限り 効率的に完了できるようにするためには、十分なサービスがブート・イメージに 存在していなければならない。標準システム・ソフトウェアは、すべてのブート ・イメージに存在していなければならない。そのほかに、ブート・イメージは、 オプションとして、その意図するユーザのために特殊化機能を提供することも可 能である。ファイルがブート・イメージに追加されて、特定のシナリオ用にカス トマイズしたブーティング解決手法を提供することができる。例えば、クラスル ームにおいて複数のシステムがローカル・ネットワークからブートアップされる シナリオでは、ファイルを追加して、セキュリティとネットワーク・ファイリン グ機能を提供し、各学習者のために、ファイル・サーバ・ベースの個別デスクト ップ環境をサポートすることが可能になる。 ブーティング・フレームワーク フレームワークは、関連問題群の解決手法の抽象設計を具体化するクラスの集 まりであり、クラスよりも大きな粒度での再使用をサポートする。特定のブーテ ィング・システムを実装したものは、ブート・システム構成特定のコンポーネン トに結合されたブーティング・フレームワークから構成されることになる。ブー ティング・フレームワークは4つのコンポーネントから構成されている。BootPr eparation、BootDelivery、BootSetup、およびBootExecutionである。図12はブ ート・オペレーションにおけるコントロールの流れを示すフローチャートである 。これらのコンポーネントの各々はブーティング世界の一部をカプセル化してい る。ブート・イメージはこのフレームワークの中心となるもので、コンポーネン トの各々に種々の形で存在している。 ブート・フレームワークのコンポーネント BootPreparationコンポーネント BootPreparationは、BootFileSetを特定のブート・デバイスでブーティングす る準備状態に置くことに責任がある。このコンポーネントは純粋部分とOEMブ ート・デバイス特定の部分を含んでいる。 BootDeliveryコンポーネント BootDeliveryは、システム診断と構成、ブート・デバイス選択、およびブート ・イメージのフェッチに貴任がある。このコンポーネントはCPUプラットフォ ームおよびブート・デバイスに特定している。 BootSetupコンポーネント BootSetupは、低レベル・ブート・ローディングおよび環境セットアップに責 任がある。このコンポーネントは純粋部分とCPUプラットフォーム特定の部分 の両方を含んでいる。 BootExecutionコンポーネント BootExecutionは実際のシステム・ソフトウェアを始動する。このコンポーネ ントはCPUプラットフォームおよびブート・デバイス依存である。 ブーティング・タイムライン 図13は、好適実施例によるブート・フレームワーク処理のタイムラインを示 す図である。以下は、ブート・フレームワーク・インタフェースを示したもので ある。 BootFileSetインタフェース BootFileSetインタフェース・クラスは、ブーティングのターゲットとなる ファイルの集合を提示する。ブーティングのマークが付けられるほかに、これら のブート・ファイルは、ブーティング・フレームワークが要求する一部の追加ブ ート特定の特性を、個別ファイルのファイル・システム・プロパティの形で含ん でいる。 BootableDeviceインタフェース BootableDeviceインタフェースは、ブーティングの準備が完了したデバイスを 表している。このことは、有効なブート・イメージ、このブート・イメージの適 当なブート・イメージ記述子、ブート・イメージ記述子へのパスウェイ(pathway )を提供するブート・アンカ(boot anchor)、およびこの情報を使用してブート・ イメージを得るためのコードを含んでいることを意味している。 BootableRAMインタフェース BootableRAMインタフェースは、そこでブーティングを行うことができる土台 を提供する。ブート・イメージはメモリ(RAMまたはROM)に入って使用可 能である。この中には、ブートしようとするシステムのステートに関する合意、 および提供される、ある種のデータの指定が含まれている。データはハードウェ ア記述子情報とブート・イメージ・メモリ情報を含んでいる。 UniversalStartPointインタフェース UniversalStartPointインタフェースは、共通CPUプラットフォームとブー ト・デバイスから独立した、カーネルへの入口インタフェースを提供する。Univ ersalStartPointの中心となる考え方では、この時点の以前には、かなりのプラ ットフォームおよびデバイス特定のアクティビティがあり、この時点のあとは、 すべてのアクティビティが純粋アクティビティになるようにしている。このイン タフェースはBootableRAMインタフェースに用意されているシステム・ステート 合意を継承する。さらに、UniversalStartPointインタフェースはカーネルに与 えられる、ある種のデータを指定している。 Personalityインタフェース Personalityインタフェースは、システム・ソフトウェアの1次ベース(primar y base)がブーティングによってアクチベートされたあと、マシンのコントロー ルをブーティングから受け取るソフトウェアのある種の自律部分(autonomous pi ece)の、ゆるやかに定義された抽象化である。このクラスは適当なベース・エン ド・システム(based end system)を始動し、必要に応じて追加システム・ソフト ウェアをアクチベートする。 ブーティング・フレームワークの詳細 システムのブーティングは順次プロセスである。従って、ブート・モデルは、 各プロセスが複数のステップを含んでいる順次プロセスのコンテキストで説明す ると好都合である。その意味で、ブーティング・フレームワークのコンポーネン トの各々はこのプロセスの1ステージを構成している。 ブート準備 BootPreparationコンポーネントのソフトウェアは環境内で実行される。ブー ティング準備は、ンストレーション・モデルを通してインストールされたファイ ルに作用する。インストレーション・モデルは一般的インストレーションのファ イルとブート・インストレーションのファイルとを区別する。ブート・インスト レーションのファイルはブート・ファイルと呼ばれ、BootFileSetとして互いに 集められる。ブート・ファイルはブートを行うためにインストールされたファイ ルであり、オプションとしてある種の特殊なブート・プロパティを含んでいる。 BootFileSetはインストールされたbootfilesの集合であり、BootPreparationコ ンポーネントに渡される。ブーティング・フレームワークはBootFileSetに作用 する。集合内のファイルは、データをアクセスするとき、どの特殊なカスタム・ コンテント・サーバも、解読器(decrypter)も、伸長器(decompressor)も必要と しない。 特殊なブート・プロパティ BootFileSet内のファイルは、ブーティングに特定するある種の特性であって ブーティング・フレームワーク内でフィルタおよびカストマイジング・エージェ ントとして使用するものを識別する、ある種の追加のオプションの情報をもつこ とができる。この追加ブーティング情報は、ファイル・システム・プロパティ内 にTBootCommand(s)で表される。これらのプロパティはBootExecution期間にブー ト・コンダクタ(boot conductor)によって照会される。これらのプロパティは開 発システム上、デスクトップ上またはその双方で構築時にファイルに付けること ができる。実際には、もっとプリミティブな特性の一部は構築時にだけセットさ れ、もっとユーザ・カスマイズ可能な特性の一部はワークスペース内にセットさ れる。ここで説明しているファイル・プロパティの使用は、ブート・ファイルの 集合を互いに集めるために必要とされるファイル・プロパティの使用とは区別さ れる。 ブート準備クラス BootPreparationはブート・ファイルの集合を処理して、ブート可能なファイ ルの集まりにする責任がある。TBootImageクラスは、ブート・ファイルの集合を デバイスでブート可能にする責任がある 。TBootImageインタフェースのクライア ントはファイルの集合を用意しなければならない。これらのファイルはTCollect ion& theBootFiles)として渡される。最終的で、有効なファイルの集合が分かっ た時点で、ブート・イメージ記述子とブート・アンカは生成され、ブート・デバ イスに付けなければならない。TBootImageは抽象基底クラスである。サブクラス は特定のハードウェア・プラットフォームとブート・デバイスに特定している。 TBootCommandクラスは、所望の実行特性を個別のブート・ファイルに渡すときの インタフェースとなる。これらの特性はブート・コンダクタをインスタンシエイ トする。このクラスはインストール時とBootPreparation時にブート・ファイル に付けることができる。このクラスはBootExecution時に使用され る。 TBootImageメソッド: TBootImage(TColl1ection& theBootFiles) protected このパラメータ化構築子はオブジェクト・ステートを、TCollection入力によ って指定されたブート・ファイルを含んでいる無効なブート・イメージに初期化 する。 TBootImage() protected TBootImage(const TBootImage&) protected 〜TBootImage() 消滅子は内部オブジェクト・ステートを保持しているストレージを解放する。 void AddFiles(TCollection& theBootFiles) 指定されたファイルを、このブート・イメージに含まれているファイルの集合 に追加する。 void GetFiles(TCollection& theBootFiles) 含まれているブート・ファイルを検索する。 void RemoveFiles(TCollection& theBootFiles) 指定されたファイルを、このブート・イメージに含まれているファイルの集合 から削除する。 virtual ValidateFileSet() ブート・ファイルの含まれている集合が完全であるかどうかを検査する。集合 が有効でなければ、記述例外(descriptive exception)を引き起こす。例外でな い完全さは、ブート・イメージのファイルの集合が、プログラム・メソッドが決 定できるかぎり完全であることを示している。 virtual Boolean ValidateDescriptor() = 0 ブート・イメージ記述子が存在するかどうか、それがこのファイルの集合で有 効かどうかをチェックする。集合が有効でなければ、記述例外を引き起こす。例 外でない完全さは、ブート・イメージのファイルの集合がデバイスで有効な記述 子を持っていることを示している。 virtual Boolean IsDescriptorBound() = 0 有効なブート・イメージ記述子がこのブート・イメージでバインドされている かどうかをチェックする。 virtual TStream& operator>>=(TStream& towhere) const=0 virtual TStream& operator<<=(TStream& towhere) =0 virtual TStream& operator=(const TBootImage) =0 virtual void BuildDescritor() = 0 ターゲットのブート・デバイスに適当なBootImageDescriptorを生成する。記 述子には次のものがある。 (i) ブート・イメージの各ファイルのファイル・システムのファイル識別子 - B ootExecutionコンポーネントのブート・イメージ再利用ステップの間に使用され る。 (ii) ブート・イメージ部分のブート・デバイス特定記述子−BootDeliveryコン ポーネントのフェッチ・ステップのときに使用される。これらの記述子を作成す るには、ファイル・システムおよび/またはデバイス・マネージャからのある種 の機能が必要になる場合がある。 BuildDescriptor()はこのBootImageDescriptorをブート・デバイスにストア し、このTBootImageをフラット化してブート・イメージ記述子に付加する。これ は、ブート・イメージ記述子からTBootImageへ戻るのに使われる。このメソッド は、ここではイメージがブーティングで使用できるようにするが、必ずしも選択 したものとは限らない(複数のイメージが使用可能である場合があり、その1つ は、明示の選択メカニズムがないとき使用される、デフォルトに選択していると してフラグが付いているものとみなされる)。このメソッドは、ブート・イメー ジ・コンテントがまだ有効であるとされていなければ例外を引き起こす。 virtual void BindDesriptor() = 0 BootImageDescriptorをこのブート・デバイスでブート時に見つけるためのパ スウェイ(通路)となるBootAnchorを生成する。このパスウェイはブート・デバ イスに書き出され、BootDelivery期間に、システム内のスタート・コードからBo otImageDescriptorまでの間のインタフェースの働きする。このパスウェイは論 理的パスウェイである。これは単純にブート・デバイスのアドレスである場合と 、ブート・イメージを見つけるために実行されるある種のコードである場合とが ある。このメソッドは、このイメージをこのデバイスでブートするときのデフォ ルトの選択したものにする。このメソッドは、ブート・イメージ・コンテントが まだ有効であるとされていないか、または記述子が作られていないならば例外を 引き起こす。 virtual Boolean MakeBootable() ValidateFileSet()、BuildDescriptor()、およびBindDescriptor()メソッドを 続けて呼び出す。 TBootCommandメソッド: TBootCommand () ヌル構築子。 TBootCommand (TText& className,TText& libraryName) パラメータ化構築子は、指定されたクラスとライブラリ情報でTBootCommandを 初期化する。 〜TBootCommand () 消滅子は、内部オブジェクト・ステートを保持しているストレージを解放する 。 void Run() BootStartEntity情報をセットしてプロパティ・コンテナに入れる。このメソ ッドは作成時またはワークスペースで使用される。 モデルとして使用でき、ブート時に事物をスタートする方法は、ほかにもいく つかある。 (i) オブジェクトをコンダクタのアドレス空間に生成する。このオブジェクトは (クラス、ライブラリ)のペアで指定する。このオブジェクトが行なえることは ほとんどないが、先へ進んで出てから、追加のオブジェクトを新しいチームでス タートすることもできる。これは、デフォルトの動作(behavior)として基底クラ スで提供されるモデルである。 (ii) (クラス、ライブラリ)ペアのTClassTaskProgramを生成する。 TClassTaskProgramを構築子引数として使用してTTeam[6]を生成する。このよう にして、所望のオブジェクトを新チームで立ち上げて、実行状態にする。 (iii) ストリームを復活するためのTFileStreamTaskProgramを生成する。 TFileStreamTaskProgramを構築子引数として使用してTTeamを生成する。このよ うにして、所望のオブジェクトを新チームで立ち上げて、実行状態にし、オブジ ェクトは、フラット化したオブジェクトを通してあらかじめ初期化する。 TBootCommand基底クラスは、上記の基本モデル(i)をサポートする。ブーティ ング・フレームワークは、モデル(ii)と(ii)をサポートするためにTBootCommand サブクラスを提供することができる。 使い方のシナリオ ターゲット・ハードウェアとブート・デバイス・プラットフォームでブートを 行う特定の実装では、TBootImageのサブクラスが存在していなければならない。 例えば、ブート/フープ(hoop)のターゲットは、HPSベースのローカル・ディ スクからブートするマッキントッシュ・プラットフォームである。TMacDiskBoot Imageサブクラスが存在することになる。ワークスペースは、ブート・ファイル のインストールが完了すると、TMacDiskBootImageをインスタンシエイトして、 インストールされたブート・ファイルの集合を提供することができる。そのあと 、ワークスペースはこのTBootImageでMakeBootable()メソッドを呼び出して、フ ート・ファイル集合の有効性を検査し、そのブート・ファイル集合をこのハード ウェア・プラットフォームとブート・デバイスでブートする準備状態に置くこと ができる。MakeBootable()の方は、ValidateFileSet()、BuildDescriptor()、お よびBindDescriptor()メソッドを呼び出すことになる。図14は、好適実施例に よるブート処理を示すブロック図である。 ブート・デリバリ ブート・デリバリ(boot delivery)カテゴリは、ある種のまさしくハードウェ ア・プラットフォートとブート・デバイス特定のアクションを実行することに責 任がある。この中には、低レベル・システム診断、低レベル構成グロベリング(g roveling)、ブート・デバイス選択、およびブート・イメージ・フェッチングが 含まれる。ブート・デリバリ・カテゴリよりなるコードは、ブート・イメージの 外に常駐する。このコードはアセンブリ言語で書かれたプリミティブROMコー ドにすることも、C++で書かれたリッチ・コード(rich code)にすることもでき る。コードはスタティック・データ、スタティック・オブジェクト、およびヒー プを使用することもできる。重要なことは、ユーザが必要とする言語のサポート とランタイム(実行時)サポートを行うのは、この断片のOEM実装の義務であ ることである。しかし、もっと一般的には、共用ライブラリはNubLibary サーバが始動されたあと使用可能になるが、これはBootExecutionフェーズ期間 に行われる。このソフトウェアはROMにも、ブート・デバイス上のプリミティ ブ・ロケーションにも、ほかのロケーションにも、これらのロケーションを組み 合わせたものにも、常駐させておくことができる。デリバリ・フェーズ内のステ ップの順序は厳格でない。実際には、実装によっては、最初にデバイスを選択し 、そのあとで、一部の追加スタート・コードをそのデバイスから持ち込むことが できる。ブーティング・フレームワークはこのレベルではポリシを指図しない。 BootDeliveryコンポーネントは2つの機能部分を提供する。ブート・スタート (boot start)とブート・フェッチである。ブート・スタートは従来の低レベル低 質(grunge)コードであり、ハードウェア構成を決定し、マシン上で低レベル診断 を実行するためのものである。ハードウェア構成の決定はマザーボード・レベル で行われる。例えば、マッキントッシュのブート・デリバリはROMに存在する 。ボトム・ライン(bottom line)はそれが終了して、スタート・コード・ステッ プが完了したとき、構成が分かっていて、健全なものでなければならない。スタ ート・コードは、オプションのブート時デバイスとBootProfile選択を提供する こともできる。BootProfileは、ブート処理の間使用するパラメータの(オプシ ョン)の識別子である。これらのパラメータは、ある種の動作のとき許可または 禁止する働きを提供する。BootProfileはブート・プロセスに渡されていき、Boo tExecutionコンポーネントで使用される。ほとんどの場合、このステップはユー ザ入力を要求しないが、PRAMなどの持続的ストレージからパラメータを取得して 、デバイスとプロフィールの選択をガイドする。ブーティング・フレームワーク は、特定の実装がデバイス選択をどのように扱うことができるかに関する、どの ようなポリシ・ステートメントも出さない。この選択ステップはブート・アンカ についていって、BootImageDescriptorを位置づけなければならない。このBootI mageDescriptorはBootFetch関数に手渡される。この選択ステップは、特定のハ ードウェア・プラットフォームに特定する可能性が大である。 bootfetchは、Boot Deliveryカテゴリの中心となる関数である。BootFetchへ のインタフェースは単一のパラメータである、BootImageDescriptorへの ハンドル(handle)をもつエントリ・ポイントである。BootFetchはBootImageDesc riptorを処理して、デバイスからのブート・イメージをメモリに入れる。ブート ・イメージをブート・デバイスからフェッチしている間に、ブート・マップが構 築される。このマップはメモリにあるブート・イメージの場所を記述している。 フェッチ・ステップは特定のブート・デバイスに特定している。BootDeliveryコ ンポーネントは、プリミティブ・フィードバック・メカニズムを提供するように も要求される。最低限必要なハードウェア構成を確立しなければならない。この ベースラインが与えられていれば、ある種の汎用的最小公分母ユーザ・フィード バックを定義することができる。例えば、ビープトーン(beep-tone)・ジェネレ ータは、ある場合には、適当であることもあり得る。このメカニズムは、低レベ ルのものが出現して、改良されたメカニズムがUniversalStartPointの反対側で 使用可能になるまで、ここで使用されるほかに、ブーティングの以後のステージ の間に使用される。このプリミティブ・メカニズムは、この関数を提供するスタ ンド・アロン・コードとして、指定されたエントリ・ポイントと一緒にエクスポ ートすべきである。このコードのメモリ・フットプリントはBootableRAMデータ の中で与えられる。 BootDelivery、BootSetup、およびBootExecutionステージの間に認識される小 さな、固定されたエラー条件の集合がある。ブーティング・フレームワークは、 これらの条件をヘッダ・ファイルにパブリッシュ(publish)された列挙型を通し て形式化する。このプリミティブ・フィードバック関数のセマンティックスは、 これらの条件の各々について、区別できるサウンドまたは他のしるし(indicia) を出力するように設計されている。この関数の特定のシンタックスはヘッダ・フ ァイルに形式化されている。BootDelivery関数は一緒に働いて、ハードウェア記 述子、ブート・イメージ・メモリ・マップおよびBootProfileをBootableRAMにパ ッケージ化する。いったん完了すると、コントロールはブート・イメージに渡さ れる。 ブート・セットアップ BootSetupコンポーネントのソフトウェアは環境の外で実行される。BootSetup コンポーネントのコードはブート・イメージに常駐されている。図15は好適実 施例によるBootImage目次(table of contents)を示すブロック図である。BootSe tupはブート・イメージに入るエントリ・ポイントである。このコンポーネント のコードは、ブート・イメージ内の公知のエントリ・ポイントに残っており、Bo otableRAMデータへのハンドルをパラメータとして受け取る。このコードは、Boo tableRAMに置かれているマッピングに基づいてブート・イメージ目次を修正(fix up)する責任がある(図8参照)。さらに、このコードはカーネルをロード(実 行時にという意味)する責任がある。カーネルのローディングは、カーネルの作 成時に作られたカーネルのロード・ファイル・フォーマットによってドライブさ れる。BootSetupは必要とされるプロセッサ特定リロケーションまたはフィック スアップ(fix-ups)をブート・イメージ内で実行することにも責任がある。新し いCPUプラットフォームのときは、新しいロードファイル・フォーマットを扱う ように特定のブート・ローダ機能を置き換えることが可能である。カーネルがロ ードされたあと、BootSetupはRAM記述子のテーブルに記入し、UniversalStar tPointの要求を満足する。いったんこれが完了すると、コントロールはカーネル に移って、カーネルのmain()エントリ・ポイントを呼び出し、UniversalStartPo intのデータのセットを渡す。 ブート実行 Bootl Executionコンポーネントは、OEMによってオーバライドされること を目的としていない。OEMがBootDeliveryとBootSetupエリアのフレームワー クを厳守しているときは、純粋Boot Executionコンポーネントをそのままで使用 することができる。BootExecutionコンポーネントはブート・プロセスのワーク ハウス(workhouse)である。システム・ソフトウェアはそこからブリング・アッ プ(bringup)される。このアクティビティは2ステップに分割されている。 システム生成(genesis)ステップとブート・コンダクタ・ステップである。シス テム生成ステップでは、カーネルを初期化し、共用ライブラリをサポートするよ うにランタイムをブリング・アップすることが行われる。システム生成時に実行 されるコードは、ベーシックなCをランタイム使用可能にしている。このことは 、少なくともスタックと初期化されたグローバル・データを意味する。システム 生成ステップ時のファイル・オペレーションは、ブート・イメージに含まれてい るファイルを管理するカーネル・タスクである、BootContentServerによって処 理される。カーネル自体は、このステップ時に自身の初期化を内部で取り扱う。 カーネルのmainは、カーネル・タスクを初期化するために必要なシステム構成情 報を記述したUniversalStartPointデータと一緒にコールされる。カーネルが初 期化されると、ページングを開始することができる。この時点では、ページング はメモリ・ベースのブート・イメージを管理するブート・コンテント・サーバを 通して行われる。カーネルにリンクされたシステム生成タスクもあり、これは共 用ライブラリのサポートに必要な基本的NubLibraryサーバを始動する。 NubLibraryは静的にリンクされたランタイム・サービス、ある種のサーバ、お よび低レベル・システム共用ライブラリの集合である。この集合は、共用ライブ ラリをサポートするためにランタイム・システムをアクチベートさせるために必 要な正確なソフトウェアを含んでいる。NubLibraryにバインドされたライブラリ とサーバの集合は、ランタイム・グループによって決定される。NubLibraryに置 かれていて、明示的に始動させる必要がある基本的サーバの集合は、プライベー ト・ファイル・ベースのリストを通してランタイム・グループによって指定され る。システム生成タスクの最終的行動はブート・コンダクタ・プログラムを始動 することである。 ブート・コンダクタ ブート・コンダクタ(boot conductor)は、必要なステージングを行って必要な ソフトウェアをブリング・アップし、存在する必須のハードウェアをサポートし 、システム・ソフトウェアを保持しているストレージ・デバイスでファイル・ アクセスを行うことをサポートすることを担当している。BootConductorはハー ドウェア・プラットフォームおよびブート・デバイスから独立している。 ブート・コンダクタ・クラスと抽象化 BootConductor BootConductorプログラムはBootExecutionコンポーネントの心臓である。ブー ティングの関心のある側面の大部分を制御するのがこのコードである。ブート・ プロセスにあるとき、なにが始動されるかはここで決定される。存在するハード ウェア・コンポーネントの集合、ブート・イメージに存在するソフトウェアの集 合、これらのコンポーネントのプロパティ、およびカスタム・ライブラリ・サー チャは一緒になってブート・コンダクタのアクションをドライブする。このプロ グラムは一度だけ実行され、共用ライブラリが使用可能になると、直ちにシステ ム生成タスクによって始動される。 BootFSServer BootFSServerは、ファイル・システム・インタフェースのサブセットを提供す る。ファイルをアクセスし、ファイル・プロパティをオープンし、クローズし、 これらのファイル内のデータをアクセスするためのサポートが行われる。このア クセスはブート・コンテント・サーバを通して行われる。BootFSServerに知らさ れるファイルの集合はブート・イメージに存在するファイルに制限されている。 TBootCommand 上述したように、ブートのこの部分の間、TBootCommand(s)はBootConductorの アクションをガイドするために使用される。 TBootLibrarySearcher TBootLibrarySearcherクラスは、ブート時に共用ライブラリに位置づける ためのカスタム・ライブラリ・サーチャを提供する。このクラスは、TLibrarySe archerからサブクラス化され、CreateContainerAndFindLibraryがオーバライド するキー・メソッドとなっている。ブート時に複数のサーチャがアクティブにな ることができる。オプションのBootProfileは、ブート期間にTBootLibrarySearc her(s)のセットを使用することを指図するのを助ける。さらに、特殊なTBootLib rarySearcherが、ブート・イメージ、例えば、NuBusデバイスのROMベースの ドライバにではなく、デバイスにストアされたある種のドライバ共用ライブラリ を見つけるためにある。これらは、主として、タリジェント社ブーティング・コ ードから得られるが、OEMから得ることも可能である。 ブート・コンダクタの考え方 TMachine、ブート・イメージ内のファイルのプロパティ、およびブート・ライ ブラリ・サーチャは、ブート時になにを実行するかを選択するときのキー・プロ セスとなっている。BootProfileは、ブート・ライブラリ・サーチャが使用する ためのガイダンスと、特定のブート・セッション時にどのファミリのブート・フ ァイル・プロパティを適応させるかについてのガイダンスをブート・コンダクタ に与えることができる。コンダクタはカスタム・ライブラリ・サーチャを使用し て、種々のオブジェクトを探し出して、オブジェクトへのアクセスを見えないよ うにするが、これはなにを、いつ始動させるかを制御する間接的方法である。一 般的には、アクションは明示にではなく黙示に行われる。 1次オブジェクトと2次オブジェクト 1次オブジェクトは、BootConductorがインスタンシエイトするブート・イメ ージ・ベースのオブジェクトである。これらのオブジェクトは、システムを立ち 上げてOPDをマウントするBootConductorの中心ジョブの基本となるものであ る。1次オブジェクトの例として、TMachineがある。2次オブジェクトは、1次 オブジェクトでないが、ブート時に実行させたいブート・イメージ・ベースの オブジェクトである。これらの2次オブジェクトは必須にすることも、オプショ ンにすることもできる。オプションの2次オブジェクトの例としては、ある種の バックグランド・プリンタ・ステータス・サーバがある。ブート・コンダクタは 、実行機会を何回か2次オブジェクトに与える。 オブジェクトとチーム ブート・コンダクタによる1次オブジェクトと2次オブジェクトのスタートア ップは、オブジェクト実行モデルに従って行われる。ブート・コンダクタはオブ ジェクトをインスタンシエイトする。オブジェクトの方は、オブジェクトの目的 に応じてアクティブ・サーバを生成し、チームを送り出し(launch)、他のオブジ ェクトをインスタンシエイトすることに貴任がある。パッシブ・サーバは、クラ イアント/サーバ・プロトコルを使用して暗黙に始動される。ブート実行可能は TBootCommandによって指定される。 ブート・コンダクタ・シーケンス BootConductorプログラムは、一定シーケンスに並んだオペレーションからな り、各オペレーションはプログラムのルーチンにカプセル化されている。このセ クションでは、オペレーションのシーケンスをリストする。 BootFSServerをブリング・アップする BootFSServerは最初に始動される。BootFSServerが立ち上がると、これはファ イル・システム・リソース・マネージャに登録され、そのサーバを始動させる。 TMachineとデバイス・ドライバを構成する タリジェント・デバイス・ドライバは、入出力デバイスを取り扱って、システ ム・ソフトウェアに統合化するために必要なオブジェクトの集まりと考えること ができる。入出力デバイスをこれらのソフトウェア・オブジェクトにバインドす ることは、TMachineと構成アクセス・マネージャの抽象化で処理される。ブート ・コンダクタはTMachine抽象化を通してデバイス・ドライバを始動する。TMachi neは、種々のルート・ハードウェア・コンポーネントをその制御に必要なソフト ウェアにマップ(対応づけ)するために必要とされるデバイス依存知識について 責任をもっている。TMachineは、ブート・コンダクタが始動して、このデバイス 依存ソフトウェアを開始するためのメソッドを提供する。ハードウェア構成サー バに登録する責任は、TMachineにより処理される。 単純フィードバック・メカニズムの置換 この時点までのブート・プロセスは、BootDeliveryコンポーネントによりBoot ableRAMを通して提供されるプリミティブ・フィードバック・メカニズムを採用 している。デバイス・ドライバとランタイムは使用可能になっている現時点では 、ブート・コンダクタは、もっと進んだ、しかしまだリッチでないユーザ・フィ ードバック・メカニズムである、TSimpleOutputDeviceを使用する。この目標は 、ブート・プロセスのこの時点で異なるプラットフォームで使用可能になってい る機能の範囲からグレースに性能低下させること(graceful degradation)である (例えば、この範囲は完全グラフィックス・システムからprintf()スタイルのラ イン・モードまでにわたっている)。インタフェースは、グラフィックスと文字 ベースの両世界で達成可能になっている必要がある。 ファイル・システムをブリング・アップする この時点で、FSサーバをブリング・アップすることが可能である。これはロ ーカルまたはリモートにすることができる。FSサーバをブリング・アップする モデルはファイル・システム・オブジェクトをインスタンシエイトするモデルで ある。このファイル・システム・オブジェクトは、必要なチーム、サーバ、また はFSサーバが必要とするものをブリング・アップすることに責任があることに なる。このFSServerはファイル・システム・リソース・マネージャに登録される ことになるが、これは以前にBootFSServerによって暗黙に始動されていたもので ある。FSサーバが立ち上がって、バッキング・ストア・デバイスがマウントさ れると、カーネルのデフォルト・ルート・コンテント・サーバのノーション(not ion)は、ブート・コンテント・サーバからFSコンテント・サーバへ転送される 。新しいファイル・アクセス・コールはFSサーバのサービスを受けるが、Boot FSServerと共にオープンされたファイルは、ブート・イメージ再利用が完了する までBootFSServerによるサービスを受け続ける。これについては、以下で説明す る。 ブート・イメージ再利用を実行する ファイル・システムが使用可能になると、ブート・コンダクタはブート・イメ ージRAMフットプリントの一部を再利用することができる。これは、BootFSSe rverと共にオープンされたファイルの集合を繰り返し、各ファイルごとに、特殊 なオペレーションのセットを実行することにより達成される。このオペレーショ ンのセットでは、ファイル・システムが、あるファイル・システム・ハンドルを 取り戻してファイルをオープンし、このハンドルをブート・イメージ上の旧ハン ドルと交換するようにメモリ・マネージャに指示し、最後に、メモリ・エクステ ントを解放するようにメモリ・マネージャにプロンプトすることが行われる。こ れは、メモリ・マネージャに、これらのファイルのRAMブート・イメージにで はなく、バッキング・ストアに移る能力を与える。 TMachineとデバイス・ドライバを構成する−再度 全ファイル・システムが使用可能になったことが分かったので、BootConducto rは、階層を再び開始するようにTMachineに要求する。階層をたどっていく間に 、より多くの必要なオブジェクトが使用可能であることが予想されるので、より 多くのデバイス・ドライバがアクティブにされることになる。 フェード・ツーする フェード・ツー(fade to)ステップでは、パーソナリティ・オブジェクトが始 動される。このオブジェクトは、前述のブート実行可能の個所で説明したように 、TBootCommandメカニズムを通してブート・コンダクタによって見つけられる。 これは本来のオブジェクトである場合と、実オブジェクトを見つけて、始動する 方法を知っているライトウェイト代理(lightweight proxy)である場合とがある 。これはシングル・エンティティにするべきであり、これはコンダクタがその送 出方法を知っているスタートアップ・アプリケーション群をもたなくても、スタ ートアップ・プログラム・プロトコルの独自のバージョンをもつことができる。 この時点で、意図するシステムは立ち上がり、実行状態になるが、これはそれで 終わる場合と、もっと大きなものへのステッピング・ストーンである場合とがあ る。これで、ブーティングは完了する。 ブート・コンダクタのステップ ブーティング進行マーカ・ポイントのセットが存在する。このセットはブート ・フィードバック情報をドライブする。これらのポイントのサブセットはBootSt artEntitiesの挿入ポイントをドライブする。ブート・プロセスは図16にブー ティング・タイムラインで再現されている。このタイムラインは、ブート可能デ バイスがスターティング・ポイントとして存在することを想定している。 ウォーム・ブーティング ウォーム・ブーティング(warm booting)とはチェックポイント・システムのス テートの使用に関し、システムのリスタート(再始動)に必要なオーバヘッドを 大幅に軽減するものである。これは興味があり、見込みのある概念であり、基本 レベルにあり、ブーティング・レベルにあるだけでないシステムを含む。ブーテ ィング設計はこのトピックを扱っていない。 ソフト・ブーティング(または拡張可能リスタート) ブート/フープ実装のデフォルト・ケースはハード・ブート(hard boot)にな っている。このことは、システム・ブート・プロセスがハードウェア・リセット で開始されることを意味する。ソフトウェア・リセットでブート・プロセスを開 始する考え方はブーティング設計によってサポートされている。ソフト・ブート では、ROMとの依存関係の一部とハードウェア・プラットフォームのスタート ・コードが削除される。ソフト・ブートは、ある種の追加システム・サービスが 達成可能であることを要求する。ソースを選択し、ソフト・ブートを呼び出すと きに含まれるヒューマン・インタフェース上の問題がいくつかある。また、シャ ットダウンの完了時のシステムの保証されたステートを含む、シャットダウンの 完了時にコントロールをどこに渡すかという、システム・シャットダウン上の問 題もある。 以上、好適実施例の種々実施形態を説明してきたが、これらは単なる例示であ り、これらに限定されるものでないことは勿論である。従って、好適実施例の広 さや範囲は上述した実施例に限定されるものではなく、請求の範囲に記載されて いる事項および等価事項に従ってのみ判断されるものである。
【手続補正書】特許法第184条の8 【提出日】1996年2月9日 【補正内容】 (原文明細書第1頁) 明細書 自動ブーティング・フレームワーク 発明の背景 発明の分野 本発明は、一般的にはコンピュータ・システムの入出力アーキテクチャを目的 とし、より具体的にはコンピュータ・システムのオブジェクト指向入出力アーキ テクチャを目的としている。 関連技術 代表的なコンピュータは、コンピュータに接続された周辺デバイスとのインタ フェースとなる入出力(I/O)システムを含んでいる。この入出力システムは 、コンピュータ・システムの資源と周辺デバイスとの間のインタフェースとして 働いている。また、この入出力システムは、コンピュータ・システムで実行され るプログラムと周辺デバイスとの間のインタフェースともなっている。 入出力システムは、従来の「手続き指向(procedure-oriented)」のソフトウェ ア・プログラミング技法(オブジェクト指向またはルール・ベースのソフトウェ ア・プログラミング技法と対比されている)を用いてインプリメント(実装)さ れているのが代表的である。理解されるように、手続き指向ソフトウェア・プロ グラミング技法を使用して作られたソフトウェア・プログラムは拡張が容易でな いことがよくある。また、この種のソフトウェア・プログラムは再利用が容易で ないこともよくある。従って、従来の入出力システムは拡張が容易でないことが よくあり、また、かかる入出力システムに関連するソフトウェアは再利用が容易 でないことがよくある。 代表例として、入出力システムは、単一のオペレーティング・システムに特定 した形でインプリメントされている。この入出力システムは、オペレーティング ・システムに関連する入出力関数コール(function call)に応答してそれを正し く処理しているが、この入出力システムは他のどのオペレーティング・システム でもサポートできる能力は備えていない。複数のオペレーティング・システムを サポートするコンピュータに対する要求が高まっている。明らかなように、従来 の入出力システムを使用するコンピュータは、その入出力システムがサポートす るオペレーション・システム(operation system)のみサポートできるので、現在 のマーケットでは不利になっている。 EP-A2-0-565-875は、基本入出力システム(BIOS)とアドバンスド基本入 出力システム(ABIOS)の欠陥を、ペン・ベースのポータブル・コンピュー タと関連づけて取組むための方法と手法のセットを開示しており、他方では、ハ ードウェアとオペレーティング・システムとの間に絶縁層を設けることによって 、その長所の多くをそのまま残して、同じオペレーティング・システム・コード 本体が種々のハードウェア・プラットフォームで実行されるようにしている。具 体的には、次のような欠陥が取り上げられている。(a)ユーザがセットアップ・ プロシージャを通して、従来の(DOSスタイル)ブーティング・プロシージャ またはペンポイント・スタイルのブーティング・プロシージャのどちらかを選択 できるようにするデュアル・ブート能力、(b)オペレーティング・システムから ある種のデバイス特性をマスクする能力(コールバック・メカニズムと定義され ている)、および(c)コンピュータの操作期間に切離しまたは再接続ができるデ バイスのデバイス・ステート情報を収集し、維持する方法。 以上のように、要求されていることは、拡張が容易であり、再利用が容易であ るソフトウェアを具体化しており、しかも、複数のオペレーティング・システム をサポートしているコンピュータの入出力システムである。 発明の概要 本発明は、劣化した(degradated)ファイル共用メカニズム(file sharing mech anism)を完全に定義したオペレーションで最初に初期化して、オペレーティング ・システムのより高度化した側面を動作可能にするとき使用されるようにするブ ーティング・プロシージャを目的としている。 (原文明細書第38頁) ある。これはシングル・エンティティにするべきであり、これはコンダクタがそ の送出方法を知っているスタートアップ・アプリケーション群をもたなくても、 スタートアップ・プログラム・プロトコルの独自のバージョンをもつことができ る。この時点で、意図するシステムは立ち上がり、実行状態になるが、これはそ れで終わる場合と、もっと大きなものへのステッピング・ストーンである場合と がある。これで、ブーティングは完了する。 ブート・コンダクタのステップ ブーティング進行マーカ・ポイントのセットが存在する。このセットはブート ・フィードバック情報をドライブする。これらのポイントのサブセットはBootSt artEntitiesの挿入ポイントをドライブする。ブート・プロセスは図16にブー ティング・タイムラインで再現されている。このタイムラインは、ブート可能デ バイスがスターティング・ポイントとして存在することを想定している。 ウォーム・ブーティング ウォーム・ブーティング(warm booting)とはチェックポイント・システムのス テートの使用に関し、システムのリスタート(再始動)に必要なオーバヘッドを 大幅に軽減するものである。これは興味があり、見込みのある概念であり、基本 レベルにあり、ブーティング・レベルにあるだけでないシステムを含む。ブーテ ィング設計はこのトピックを扱っていない。 ソフト・ブーティング(または拡張可能リスタート) ブート/フープ実装のデフォルト・ケースはハード・ブート(hard boot)に なっている。このことは、システム・ブート・プロセスがハードウェア・リセッ トで開始されることを意味する。ソフトウェア・リセットでブート・プロセスを 開始する考え方はブーティング設計によってサポートされている。ソフト・ブー トでは、ROMとの依存関係の一部とハードウェア・プラットフォームのスター ト・コードが削除される。ソフト・ブートは、ある種の追加システム・サービス が達成可能であることを要求する。ソースを選択し、ソフト・ブートを呼び出す ときに含まれるヒューマン・インタフェース上の問題がいくつかある。また、シ ャットダウンの完了時のシステムの保証されたステートを含む、シャットダウン の完了時にコントロールをどこに渡すかという、システム・シャットダウン上の 問題もある。 請求の範囲 1.ブート・コマンドに応答してコンピュータ・システムを初期化する装置であ って、プロセッサと、揮発性メイン・ストレージと、該ストレージに接続され、 その制御下に置かれている不揮発性ストレージとを含んでいるものにおいて、 (a)前記外部ストレージは、システム・ソフトウェア、特定のシナリオ用に カストマイズされたブーティング解決手法、およびブーティング・プログラムの コピーを含んでいるブート・イメージを収容していて(図12)、 (b)前記ブート・コマンドに応答して、前記ブーティング・プログラムを前 記外部ストレージから前記揮発性メイン・ストレージにロードする手段と(図1 3)、 (c)前記ブーティング・プログラムが前記揮発性メイン・ストレージにロー ドされると動作して、該ブーティング・プログラムを始動する手段であって、そ れと同時に該ブーティング・プログラムは前記プロセッサを制御するものと(図 14)、 (d)前記ブーティング・プログラムによって制御され、前記システム・ソフ トウェアおよび前記カストマイズされたブーティング解決手法を利用して該コン ピュータ・システムを構成し、オペレーティング・システムを前記揮発性メイン ・ストレージにローディングする手段と(図15)、 (e)該コンピュータ・システムがブートされると動作して、複数のブート・ ファイルを生成する手段と、前記複数のブート・ファイルの生成に応答して、該 複数のブート・ファイル内のすべてのシステム相互依存性を解決する手段と、上 記で生成された該複数のブート・ファイルを、以後に行われるプーティング・プ ロセスのカストマイズされたブーティング解決手法として前記外部ストレージに ストアする手段と(図16)を備えていることを特徴とする装置。 2.前記コンピュータ・システム(1002)は複数の周辺デバイス(1018 ,1020,1022,1024,1026)を備えており、前記構 成およびオペレーティング・システム・ローディング手段は前記複数の周辺デバ イスの各々をブーティング・プロセス間に初期化するための情報をストアする第 1データ構造手段を備えたこと(図15)を特徴とする請求項1に記載の装置。 3.前記構成およびオペレーティング・システム・ローディング手段は前記オペ レーティング・システムをブーティング・プロセス間に初期化するための情報を ストアする第2データ構造手段を備えたこと(図11)を特徴とする請求項1に 記載の装置。 4.前記構成およびオペレーティング・システム・ローディング手段は複数の共 用ライブラリおよび、該複数の共用ライブラリの各々をブーティング・プロセス 間に使用可能にする手段とを備えたこと(図16)を特徴とする請求項1に記載 の装置。 5.複数のブート・ファイルは前記外部ストレージにストアされていて、該装置 は前記ブート・コマンドに応答して、前記複数のブート・ファイルの各々を該外 部ストレージから前記揮発性メイン・ストレージにローディングする手段と前記 ブーティング・プログラムによって制御されて該複数のブート・ファイルを使用 して前記コンピュータ・システムを初期化する手段とをさらに備えたこと(図1 5)を特徴とする請求項1に記載の装置。 6.前記ブーティング・プログラムによって制御されて、前記複数のブート・フ ァイルを使用して前記揮発性メイン・ストレージを初期化する手段を備えたこと (図15)を特徴とする請求項1に記載の装置。 7.追加のシステム・ファイルは前記外部ストレージにストアされていて、前記 ブーティング・プログラムは該追加のシステム・ファイルをブーティング・プロ セス間にアクセスすること(図16)を特徴とする請求項6に記載の装置。 8.前記追加のシステム・ファイルは共用ライブラリを備え、前記ブーティング ・プログラムは該共有ライブラリを前記ブーティング・プロセス間に前記外部ス トレージから前記揮発性メイン・ストレージにロードすること(図16)を特徴 とする請求項7に記載の装置。 9.ブート・コマンドに応答してコンピュータ・システムを初期化する方法であ って、プロセッサと、揮発性メイン・ストレージと、該ストレージに接続され、 その制御下に置かれている不揮発性ストレージとを含んでいるものにおいて、 (a)システム・ソフトウェア、特定のシナリオ用にカストマイズされたブー ティング解決手法、およびブーティング・プログラムのコピーを含んでいるブー ト・イメージを前記外部ストレージにストアするステップと(図12)、 (b)前記ブーティング・プログラムを該外部ストレージから前記揮発性メイ ン・ストレージにロードするステップと(図13)、 (c)該ブーティング・プログラムを始動するステップであって、それと同時 に該ブーティング・プログラムは前記プロセッサを制御するものと(図14)、 (d)前記システム・ソフトウェアおよび前記カストマイズされたブーティン グ解決手法を利用して前記コンピュータ・システムを構成し、オペレーティング ・システムを該揮発性メイン・ストレージにローディングするステップと(図1 5)、 (e)複数のブート・ファイルを生成するステップと、該複数のブート・ファ イルの作成に応答して該複数のブート・ファイル内のすべてのシステム相互依存 性を解決する手段と、上記で作成された該複数のブート・ファイルを、以後に行 われるプーティング・プロセスのカストマイズされたブーティング解決手法とし て前記外部ストレージにストアする手段とを含むこと(図16)を特徴とする方 法。 10.前記コンピュータ・システム(1002)は複数の周辺デバイス(101 8,1020,1022,1024,1026)を備えており、前記複 数の周辺デバイスの各々をブーティング・プロセス間に初期化するステップを含 むこと(図15)を特徴とする請求項9に記載の方法。 11.前記オペレーティング・システムをブーティング・プロセス間に初期化す るための情報をストアするステップを含むこと(図11)を特徴とする請求項9 に記載の方法。 12.前記複数の共用ライブラリの各々をブーティング・プロセス間に使用可能 にするステップを含むこと(図16)を特徴とする請求項9に記載の方法。 13.前記複数のブート・ファイルの各々を前記外部ストレージから前記揮発性 メイン・ストレージにローディングするステップと、前記ブーティング・プログ ラムによって制御されて該複数のブート・ファイルを使用して前記コンピュータ ・システムを初期化する手段とを含むこと(図15)を特徴とする請求項9に記 載の方法。 14.前記複数のブート・ファイルを使用して、前記揮発性メイン・ストレージ を初期化するステップを含むこと(図15)を特徴とする請求項9に記載の方法 。 15.前記追加のシステム・ファイルをブーティング・プロセス間にアクセスす るステップを含むこと(図16)を特徴とする請求項14に記載の方法。 16.共用ライブラリを前記ブーティング・プロセス間に前記外部ストレージか ら前記揮発性メイン・ストレージにローディングするステップを含むこと(図1 6)を特徴とする請求項15に記載の方法。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CN,CZ,DE,DK,ES,FI,G B,HU,JP,KP,KR,KZ,LK,LU,LV ,MG,MN,MW,NL,NO,NZ,PL,PT, RO,RU,SD,SE,SK,UA,UZ,VN (72)発明者 ロス,パトリック,ディー. アメリカ合衆国 94087 カリフォルニア 州 サニーヴェイル カナリー ドライブ 1626

Claims (1)

  1. 【特許請求の範囲】 1.ブート・コマンドに応答してコンピュータ・システムを初期化する装置であ って、 (a)プロセッサと、 (b)前記プロセッサに接続され、該プロセッサの制御下に置かれている揮発 性メイン・ストレージと、 (c)前記プロセッサに接続され、該プロセッサの制御下に置かれている不揮 発性外部ストレージであって、該外部ストレージはオペレーティング・システム のコピーとブーティング・プログラムのコピーを含んでいるものと、 (d)前記ブート・コマンドに応答して前記ブーティング・プログラムを該外 部ストレージから該揮発性メイン・ストレージにローディングする手段と、 (e)前記ブーティング・プログラムが前記揮発性メイン・ストレージにロー ドされると動作して該ブーティング・プログラムを始動する手段であって、その あと該ブーティング・プログラムは該プロセッサを制御するものと、 (f)前記ブーティング・プログラムによって制御されて、前記コンピュータ ・システムを構成し、前記オペレーティング・システムを前記揮発性メイン・ス トレージにロードする手段とを備えたことを特徴とする装置。 2.前記コンピュータ・システムは複数の周辺デバイスを備えていて、前記構成 およびオペレーティグ・システム・ローディング手段はブーティング・プロセス 間に前記複数の周辺デバイスの各々を初期化するための情報をストアしている第 1データ構造手段を備えたことを特徴とする請求項1に記載の装置。 3.前記構成およびオペレーティング・システム・ローディング手段はブーティ ング・プロセス間に前記オペレーティング・システムを初期化するための情報を ストアしている第2データ構造手段を備えたことを特徴とする請求項1に記載の 装置。 4.前記構成およびオペレーティング・システム・ローディング手段は複数の共 用ライブラリおよび、ブーティング・プロセス期間に前記複数の共用ライブラリ の各々を使用可能にする手段を備えたことを特徴とする請求項1に記載の装置。 5.複数のブート・ファイルが前記外部ストレージにストアされていて、該装置 は、さらに、前記ブート・コマンドに応答して前記複数のブート・ファイルの各 々を該外部ストレージから前記揮発性メイン・ストレージにローディングする手 段と、前記ブーティング・プログラムに制御されて該複数のブート・ファイルを 使用して前記コンピュータ・システムを初期化する手段を備えたことを特徴とす る請求項1に記載の装置。 6.前記コンピュータ・システムがブートされたあと動作して、複数のブート・ ファイルを生成する手段と、前記複数のブート・ファイルの生成に応答して、該 複数のブート・ファイルにおいてすべてのシステム相互依存性を解決する手段と 、かくして生成された該複数のブート・ファイルを以後のブーティング・プロセ スに備えて前記外部ストレージにストアしておく手段とを、さらに備えたことを 特徴とする請求項5に記載の装置。 7.前記ブーティング・プログラムによって制御されて、前記複数のブート・フ ァイルを使用して前記揮発性メイン・ストレージを初期化する手段を備えたこと を特徴とする請求項6に記載の装置。 8.追加のシステム・ファイルが前記外部ストレージにストアされていて、前記 ブーティング・プログラムはプーティング・プロセス間に前記追加システム・フ ァイルをアクセスすることを特徴とする請求項7に記載の装置。 9.前記追加システム・ファイルは共用ライブラリを備え、前記ブーティング・ プログラムは前記ブーティング・プロセス間に前記共有ライブラリを前記外部ス トレージから前記揮発性メイン・ストレージにロードすることを特徴とする請求 項8に記載の装置。 11.前記オペレーティング・システムは、アップル・システム7オペレーティ ング・システム、OS/2オペレーティング・システム、DOSオペレーティン グ・システムおよびUNIXオペレーティング・システムからなるグループから 選択されることを特徴とする請求項1に記載の装置。 12.ブート・コマンドに応答してコンピュータ・システムを初期化する方法で あって、該コンピュータ・システムはプロセッサと、該プロセッサに接続され該 プロセッサの制御下に置かれた揮発性メイン・ストレージと、該プロセッサに接 続され該プロセッサの制御下に置かれた不揮発性外部ストレージとを有し、前記 外部ストレージはオペレーティング・システムのコピーおよびブーティング・プ ログラムのコピーを含んでいて、該方法は、 (a)前記ブート・コマンドに応答して、前記ブーティング・プログラムを前 記外部ストレージから前記揮発性メイン・ストレージにローディングするステッ プと、 (b)該揮発性メイン・ストレージで前記ブーティング・プログラムを始動し 、そのうえに、該ブーティング・プログラムは前記プロセッサを制御するステッ プと、 (c)前記ブーティング・プログラムを利用して前記コンピュータ・システム を構成し、前記オペレーティング・システムを前記揮発性メイン・ストレージに ロードするステップとを備えたことを特徴とする方法。 13.前記コンピュータ・システムは複数の周辺デバイスを備えていて、該方法 は、前記複数の周辺デバイスの各々を初期化するための情報を前記外部ストレー ジに置かれた第1データ構造にストアするステップをさらに備えたことを特徴と する請求項12に記載の方法。 14.前記方法は、前記オペレーティング・システムを初期化するための情報を ストアし、該オペレーティング・システムを初期化するための前記情報をプーテ ィング・プロセス間にアクセスするステップをさらに備えたことを特徴とする請 求項12に記載の方法。 15.複数の共用ライブラリが前記外部ストレージにストアされていて、該方法 は、前記複数の共用ライブラリを前記揮発性メイン・ストレージにローディング し、該複数の共用ライブラリを該揮発性メイン・ストレージで使用可能にするス テップをさらに備えたことを特徴とする請求項12に記載の方法。 16.複数のブート・ファイルが前記外部ストレージにストアされていて、該方 法は、前記ブート・コマンドに応答して前記複数のブート・ファイルの各々を該 外部ストレージから前記揮発性メイン・ストレージにローディングし、該複数の ブート・ファイルを使用して前記コンピュータ・システムを初期化するステップ をさらに備えたことを特徴とする請求項12に記載の方法。 17.前記コンピュータ・システムがブートされたあと複数のブート・ファイル を生成するステップと、前記複数のブート・ファイルにおいてすべてのシステム 相互依存性を解決するステップと、かくして生成された該複数のブート・ファイ ルを以後のブーティング・プロセスに備えて前記外部ストレージにストアしてお くステップとをさらに備えたことを特徴とする請求項16に記載の方法。 18.前記ブーティング・プログラムおよび前記複数のブート・ファイルを使用 して前記揮発性メイン・ストレージを初期化するステップをさらに備えたことを 特徴とする請求項17に記載の方法。 19.追加のシステム・ファイルが前記外部ストレージにストアされていて、該 方法は、前記追加システム・ファイルをブーティング・プロセス間にアクセスす るステップをさらに備えたことを特徴とする請求項18に記載の方法。 20.前記追加ファイルは共用ライブラリを備えて、該方法は、前記共用ライブ ラリを前記ブーティング・プロセス間に前記外部ストレージから前記揮発性メイ ン・ストレージにローディングするステップをさらに備えたことを特徴とする請 求項19に記載の方法。 22.前記オペレーティング・システムは、アップル・システム7オペレーティ ング・システム、OS/2オペレーティング・システム、DOSオペレーティン グ・システムおよびUNIXオペレーティング・システムからなるグループから 選択されることを特徴とする請求項12に記載の方法。 23.ブート・コマンドに応答してコンピュータ・システムをブートする装置で あって、該コンピュータ・システムはプロセッサと、該プロセッサを制御するプ ログラムをストアしておくための揮発性メイン・ストレージと、該プロセッサに 接続され、該プロセッサの制御下に置かれている不揮発性外部ストレージとを有 しており、該外部ストレージはオブジェクト指向オペレーティング・システムの コピーおよびブート・イメージ・オブジェクトのコピーを含んでいて、該装置は 、 (a)前記ブート・コマンドに応答して、前記ブート・イメージ・オブジェク トを前記外部ストレージから前記揮発性メイン・ストレージにローディングする 手段であって、該ブート・イメージ・オブジェクトはブーティング・プログラム および複数のブート・ファイルを備えているものと、 (b)前記ブーティング・プログラムが前記揮発性メイン・ストレージにロー ドされたあと動作して該ブーティング・プログラムを始動する手段であって、そ のうえに該ブーティング・プログラムは該プロセッサを制御するものと、 (c)前記ブーティング・プログラムによって制御されて前記コンピュータ・ システムを構成し、前記オブジェクト指向オペレーティング・システムを前記揮 発性メイン・ストレージにローディング手段とを備えていることを特徴とするコ ンピュータ・システムをブートする装置。 24.前記ブーティング・プログラムは前記ブート・ファイルを使用して前記揮 発性メイン・ストレージを構成する手段を備え、前記構成およびローディング手 段は該揮発性メイン・ストレージの構成に応答して前記オブジェクト指向オペレ ーティング・システムを構成された揮発性メイン・ストレージにローディングす る手段を備えたことを特徴とする請求項23に記載のコンピュータ・システムを ブートする装置。 25.前記構成およびローディング手段は前記ブート・ファイルを使用して前記 コンピュータ・システムおよび前記オブジェクト指向オペレーティング・システ ムを前記揮発性メイン・ストレージに構成する手段を備えたことを特徴とする請 求項24に記載のコンピュータ・システムをブートする装置。 26.前記ブート・イメージ・オブジェクトをローディングする前記手段は不揮 発性スタートアップ・ストレージおよび該スタートアップ・ストレージにストア されたスタートアップ・プログラムを備えたことを特徴とする請求項23に記載 のコンピュータ・システムをブートする装置。 27.以前にブートされたコンピュータ・システム上で動作して前記ブート・イ メージ・オブジェクトを生成し、該ブート・イメージ・オブジェクトを以後のブ ーティング・プロセスに備えて前記外部ストレージにストアしておく手段をさら に備えたことを特徴とする請求項23に記載のコンピュータ・システムをブート する装置。 28.前記生成手段は前記ブート・ファイルを生成する手段および該ブート・フ ァイルをチェックしてシステム相互依存性を解決する手段を備えたことを特徴と する請求項27に記載のコンピュータ・システムをブートする装置。
JP7517403A 1993-12-21 1994-09-15 自動ブーティング・フレームワーク Ceased JPH09507319A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/171,541 US5379431A (en) 1993-12-21 1993-12-21 Boot framework architecture for dynamic staged initial program load
US08/171,541 1993-12-21
PCT/US1994/010549 WO1995017717A1 (en) 1993-12-21 1994-09-15 Automatic booting framework

Publications (1)

Publication Number Publication Date
JPH09507319A true JPH09507319A (ja) 1997-07-22

Family

ID=22624125

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7517403A Ceased JPH09507319A (ja) 1993-12-21 1994-09-15 自動ブーティング・フレームワーク

Country Status (7)

Country Link
US (1) US5379431A (ja)
EP (1) EP0728332B1 (ja)
JP (1) JPH09507319A (ja)
AU (1) AU1287695A (ja)
CA (1) CA2178581C (ja)
DE (1) DE69404166T2 (ja)
WO (1) WO1995017717A1 (ja)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5896531A (en) * 1993-02-26 1999-04-20 International Business Machines Corporation Method and system for managing environments with a data processing system
US5459865A (en) * 1993-04-05 1995-10-17 Taligent Inc. Runtime loader
EP0689698B1 (en) * 1993-06-03 1997-10-15 Taligent, Inc. Place object system
CA2141930A1 (en) * 1993-06-03 1994-12-22 Robert David Dickinson Place object display system
AU6018294A (en) * 1993-12-02 1995-06-19 Taligent, Inc. Method and apparatus for displaying hardware dependent graphics in an object-oriented operating system
US5680624A (en) * 1993-12-21 1997-10-21 Object Licensing Corporation Object oriented interrupt system
US5517646A (en) * 1994-04-25 1996-05-14 Compaq Computer Corp. Expansion device configuration system having two configuration modes which uses automatic expansion configuration sequence during first mode and configures the device individually during second mode
GB9408405D0 (en) * 1994-04-28 1994-06-22 Int Computers Ltd High availibilty computer system
US5572631A (en) * 1994-05-13 1996-11-05 Hewlett-Packard Company Common font rasterizer available to multiple printer personalities
US5504905A (en) * 1994-05-17 1996-04-02 International Business Machines Corporation Apparatus for communicating a change in system configuration in an information handling network
US5748980A (en) * 1994-05-27 1998-05-05 Microsoft Corporation System for configuring a computer system
US5655148A (en) * 1994-05-27 1997-08-05 Microsoft Corporation Method for automatically configuring devices including a network adapter without manual intervention and without prior configuration information
US6763454B2 (en) * 1994-05-27 2004-07-13 Microsoft Corp. System for allocating resources in a computer system
US5787246A (en) * 1994-05-27 1998-07-28 Microsoft Corporation System for configuring devices for a computer system
JP2580536B2 (ja) * 1994-06-02 1997-02-12 工業技術院長 オブジェクト指向言語における動的オブジェクトの管理方式
US5701420A (en) * 1994-07-20 1997-12-23 Intel Corporation Method for initializing an array of configurable components
US5836013A (en) * 1994-08-11 1998-11-10 Phoenix Technologies Ltd. Method and apparatus for compressing system read only memory in a computing system
US5732266A (en) * 1994-09-02 1998-03-24 Compaq Computer Corporation Storage medium storing application programs and application initialization files and automatic launching of computer applications stored on the storage medium
US5671413A (en) * 1994-10-31 1997-09-23 Intel Corporation Method and apparatus for providing basic input/output services in a computer
US5857102A (en) * 1995-03-14 1999-01-05 Sun Microsystems, Inc. System and method for determining and manipulating configuration information of servers in a distributed object environment
US6260075B1 (en) 1995-06-19 2001-07-10 International Business Machines Corporation System and method for providing shared global offset table for common shared library in a computer system
US6449660B1 (en) * 1995-07-31 2002-09-10 International Business Machines Corporation Object-oriented I/O device interface framework mechanism
US5696968A (en) * 1995-09-21 1997-12-09 Dell U.S.A., L.P. Method and apparatus for effecting drive ordering via adapter preference
US5832280A (en) * 1995-10-05 1998-11-03 International Business Machines Corporation Method and system in a data processing system for interfacing an operating system with a power management controller.
US5812850A (en) * 1995-11-13 1998-09-22 Object Technology Licensing Corp. Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution
US5768585A (en) * 1995-11-21 1998-06-16 Intel Corporation System and method for synchronizing multiple processors during power-on self testing
US6678712B1 (en) 1996-01-19 2004-01-13 International Business Machines Corporation Method and system for executing a program under one of a plurality of mutually exclusive operating environments
DE59708134D1 (de) * 1996-04-19 2002-10-10 Daimler Chrysler Ag Verfahren zur automatischen diagnose technischer systeme unter berücksichtigung eines effizienten wissenserwerbs und einer effizienten bearbeitung zur laufzeit
US6424991B1 (en) 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US5848246A (en) * 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US6038590A (en) * 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US5999972A (en) * 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US5987245A (en) * 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US6434598B1 (en) 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US5832213A (en) * 1996-07-03 1998-11-03 Sun Microsystems, Inc. Flexible mounting and unmounting of user removable media
DE29616817U1 (de) * 1996-09-26 1997-10-23 Siemens Ag Prozessorbaugruppe sowie Einrichtung mit einer derartigen Prozessorbaugruppe
US6526457B1 (en) 1996-10-30 2003-02-25 Computer Associates Think, Inc. Systems utility object interface for facilitating software portability
US5764593A (en) * 1996-12-04 1998-06-09 Keylabs, Inc. Method and system for the interception and control of the computer boot process
US5933631A (en) * 1997-03-17 1999-08-03 International Business Machines Corporation Dynamic boot filesystem selection
US5878377A (en) * 1997-04-10 1999-03-02 International Business Machines Corporation Environmental and power error handling extension and analysis
US6038572A (en) * 1997-04-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for localizing nodes in a garbage collected carded heap
US6014714A (en) * 1997-06-16 2000-01-11 International Business Machines Corporation Adapter card system including for supporting multiple configurations using mapping bit
US6772419B1 (en) * 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US6275888B1 (en) 1997-11-19 2001-08-14 Micron Technology, Inc. Method for configuring peer-to-peer bus bridges in a computer system using shadow configuration registers
US6161151A (en) * 1998-01-30 2000-12-12 Object Technology Licensing Corporation Object-oriented global resource conflict resolver formatting resource requirements into a predetermined standard format and iteratively computing a resource assignment for each I/O function
US6052739A (en) * 1998-03-26 2000-04-18 Sun Microsystems, Inc. Method and apparatus for object-oriented interrupt system
US6473824B1 (en) 1998-10-14 2002-10-29 International Business Machines Corporation Dynamic association of input/output device with application programs
US6715043B1 (en) 1999-03-19 2004-03-30 Phoenix Technologies Ltd. Method and system for providing memory-based device emulation
JP2000276359A (ja) * 1999-03-23 2000-10-06 Sony Corp 情報処理装置、プログラム初期化方法及びプログラム提供媒体
US7213061B1 (en) * 1999-04-29 2007-05-01 Amx Llc Internet control system and method
US6519659B1 (en) 1999-06-18 2003-02-11 Phoenix Technologies Ltd. Method and system for transferring an application program from system firmware to a storage device
US6477642B1 (en) 1999-06-18 2002-11-05 Phoenix Technologies Ltd. Method and apparatus for extending BIOS control of screen display beyond operating system boot process
US6457122B1 (en) 1999-06-18 2002-09-24 Phoenix Technologies Ltd. Fault tolerant process for the delivery of programs to writeable storage device utilizing pre-operating system software/firmware
US6453469B1 (en) 1999-06-18 2002-09-17 Phoenix Technologies Ltd. Method and apparatus to automatically deinstall an application module when not functioning
US6405309B1 (en) 1999-06-18 2002-06-11 Phoenix Technologies Ltd. Method and apparatus for creating and deploying smaller Microsoft Windows applications for automatic configuration of a computing device
US6542160B1 (en) 1999-06-18 2003-04-01 Phoenix Technologies Ltd. Re-generating a displayed image
US6373498B1 (en) 1999-06-18 2002-04-16 Phoenix Technologies Ltd. Displaying images during boot-up and shutdown
US6473855B1 (en) 1999-06-18 2002-10-29 Phoenix Technologies Ltd. Method and apparatus for providing content on a computer system based on usage profile
US6449682B1 (en) 1999-06-18 2002-09-10 Phoenix Technologies Ltd. System and method for inserting one or more files onto mass storage
US6438750B1 (en) 1999-06-18 2002-08-20 Phoenix Technologies Ltd. Determining loading time of an operating system
US6578142B1 (en) 1999-06-18 2003-06-10 Phoenix Technologies, Ltd. Method and apparatus for automatically installing and configuring software on a computer
US6401202B1 (en) 1999-06-18 2002-06-04 Phoenix Technologies Ltd. Multitasking during BIOS boot-up
US6486883B1 (en) 1999-06-18 2002-11-26 Phoenix Technologies, Ltd. Apparatus and method for updating images stored in non-volatile memory
US6460136B1 (en) * 1999-07-12 2002-10-01 Hewlett-Packard Co., Method and apparatus for loading an operating system kernel from a shared disk memory
US6336174B1 (en) * 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
US6473857B1 (en) * 1999-12-06 2002-10-29 Dell Products, L.P. Centralized boot
US6487656B1 (en) 1999-12-10 2002-11-26 Phoenix Technologies Ltd. System and method for providing functionalities to system BIOS
US6601167B1 (en) * 2000-01-14 2003-07-29 Advanced Micro Devices, Inc. Computer system initialization with boot program stored in sequential access memory, controlled by a boot loader to control and execute the boot program
US7043641B1 (en) * 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
US7988559B2 (en) 2001-03-08 2011-08-02 Igt Computerized gaming system, method and apparatus
CA2402389A1 (en) * 2000-03-08 2002-09-19 Shuffle Master, Inc. Computerized gaming system, method and apparatus
US6567912B1 (en) * 2000-03-31 2003-05-20 Motorola, Inc. Method and apparatus for robust initialization of devices
US8370843B1 (en) * 2000-07-31 2013-02-05 International Business Machines Corporation Method, program product and computer system for progressive improvement of an environment pool
DE10052570A1 (de) * 2000-10-23 2002-04-25 Bosch Gmbh Robert System zur Steuerung von Betriebsabläufen
KR100387059B1 (ko) * 2001-02-06 2003-06-12 삼성전자주식회사 이동통신 시스템에서 보드별 식별자를 이용하는 프로그램공용화 방법
US7062501B1 (en) * 2001-08-08 2006-06-13 Adaptec, Inc. Structure and method for linking scatter/gather list segments for host adapters
WO2003023647A1 (en) * 2001-09-10 2003-03-20 Igt Method for developing gaming programs compatible with a computerized gaming operating system and apparatus
US8708828B2 (en) * 2001-09-28 2014-04-29 Igt Pluggable modular gaming modifiers and configuration templates for gaming environments
US7931533B2 (en) * 2001-09-28 2011-04-26 Igt Game development architecture that decouples the game logic from the graphics logics
US6902481B2 (en) * 2001-09-28 2005-06-07 Igt Decoupling of the graphical presentation of a game from the presentation logic
US20030203755A1 (en) * 2002-04-25 2003-10-30 Shuffle Master, Inc. Encryption in a secure computerized gaming system
US7739693B2 (en) * 2002-11-25 2010-06-15 Sap Ag Generic application program interface for native drivers
JP2004334486A (ja) * 2003-05-07 2004-11-25 Internatl Business Mach Corp <Ibm> ブートコードを用いた起動システム、及び起動方法
KR100621095B1 (ko) * 2004-04-07 2006-09-08 삼성전자주식회사 주변 장치 초기화를 위한 부팅 시스템 및 부팅 방법
US7334117B2 (en) 2004-08-04 2008-02-19 National Instruments Corporation Device boot loader for processing one or more requests from a host computer system concurrently with loading or updating the firmware of the device
US20060277340A1 (en) * 2005-06-03 2006-12-07 Mar David B System and method for providing layered profiles
EP1934720B1 (en) * 2005-09-07 2018-02-14 Open Invention Network LLC Method and computer program for device configuration
US20070118658A1 (en) * 2005-11-23 2007-05-24 Broyles Paul J User selectable management alert format
US20090144538A1 (en) * 2007-11-05 2009-06-04 Duda Kenneth J Patch installation at boot time for dynamically installable, piecemeal revertible patches
US7945771B1 (en) * 2008-07-10 2011-05-17 Cms Products, Inc. System and method for a software application to determine if the storage device and the operating system is an internal drive or an external drive
US8996851B2 (en) * 2010-08-10 2015-03-31 Sandisk Il Ltd. Host device and method for securely booting the host device with operating system code loaded from a storage device
US8782389B2 (en) 2011-07-19 2014-07-15 Sandisk Technologies Inc. Storage device and method for updating a shadow master boot record
US9367335B2 (en) 2013-07-12 2016-06-14 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. State dependent optimization for sequential booting of heterogeneous systems
US20160196145A1 (en) * 2013-08-08 2016-07-07 Hewlett-Packard Development Company, L.P. Boot from modified factory image
US11059435B2 (en) * 2018-09-17 2021-07-13 Drimaes, Inc. Vehicle software control device
CN112256347A (zh) * 2020-10-22 2021-01-22 西安超越申泰信息科技有限公司 一种减少嵌入式Linux系统启动时间的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4979106A (en) * 1988-08-29 1990-12-18 Amdahl Corporation Customization of a system control program in response to initialization of a computer system
US5210875A (en) * 1989-08-25 1993-05-11 International Business Machines Corporation Initial bios load for a personal computer system
JP2986299B2 (ja) 1992-04-15 1999-12-06 インターナショナル・ビジネス・マシーンズ・コーポレイション 周辺装置接続検出システム

Also Published As

Publication number Publication date
EP0728332B1 (en) 1997-07-09
CA2178581C (en) 1999-09-07
EP0728332A1 (en) 1996-08-28
DE69404166D1 (de) 1997-08-14
DE69404166T2 (de) 1998-02-12
US5379431A (en) 1995-01-03
AU1287695A (en) 1995-07-10
CA2178581A1 (en) 1995-06-29
WO1995017717A1 (en) 1995-06-29

Similar Documents

Publication Publication Date Title
JPH09507319A (ja) 自動ブーティング・フレームワーク
US5574915A (en) Object-oriented booting framework
US8543641B2 (en) Method and system of application delivery through application template to client device
US5566346A (en) System for constructing hardware device interface software systems independent of operating systems including capability of installing and removing interrupt handlers
US6490723B1 (en) Method and system for installing files in a computing system
US6775728B2 (en) Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework
JP4199923B2 (ja) モバイル・デバイスのアプリケーション・インストール方法
US8074231B2 (en) Configuration of isolated extensions and device drivers
KR100729793B1 (ko) 다중 아키텍처를 위한 구성 요소 소프트웨어용 smm로더 및 실행 매커니즘
CN101329636B (zh) 虚拟化窗口信息的方法和设备
US6938250B2 (en) Image-based software installation
US8346854B2 (en) Method and system of operating system independence
JPH09500466A (ja) オブジェクト指向ホスト・システム
US7162626B2 (en) Use of common language infrastructure for sharing drivers and executable content across execution environments
JPH09503875A (ja) オブジェクト指向オペレーティング・システム
US7219341B2 (en) Code analysis for selective runtime data processing
US7383551B2 (en) Method and system for integrating non-compliant providers of dynamic services into a resource management infrastructure
Halvorsen et al. OS X and iOS Kernel programming
US11520597B2 (en) Operating system architecture for microkernel generations support
Holt et al. Overview of GNU/Linux
WO1995017713A1 (en) Object-oriented input/output framework
JPH09179728A (ja) 異パーソナリティ・アプリケーションの起動方法およびコンピュータ・システム
Solomon Windows 2000
Golomshtok Using the System. Management Namespace
Javaid UNDERSTANDING OPERATING SYSTEMS

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041005

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050105

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050221

A313 Final decision of rejection without a dissenting response from the applicant

Free format text: JAPANESE INTERMEDIATE CODE: A313

Effective date: 20050523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050628