(57)【要約】【課題】選択されたソースＯＳのフィーチャーをターゲットＯＳ中でサポートするためにソースＯＳのどのコンポーネントをターゲットＯＳに含める必要があるかを決定するシステムと方法の提供。【解決手段】ソースＯＳの各コンポーネントおよびフィーチャーを表す各データオブジェクトは、それが表すコンポーネントまたはフィーチャーに関するエクスポートおよび参照を識別する。依存性モデルが、各コンポーネントについて、そのコンポーネントを有するターゲットＯＳ中に含めなければならない他のコンポーネントを識別する。ターゲットＯＳビルダプログラムが、ターゲットＯＳに含めたいとユーザが思うフィーチャーについての入力をユーザから受け取る。依存性モデルを利用して、選択されたフィーチャーをサポートするのに必要なソースＯＳからのコンポーネントを識別して選択する。次いで、選択されたコンポーネントをリンクしてターゲットＯＳを生み出す。【選択図】図３
2007080293.tif 000002
【特許請求の範囲】
【請求項１】
ソースオペレーティングシステムからターゲットオペレーティングシステムを構築するためにコンピュータで実行される方法であって、
前記ソースオペレーティングシステムの複数のコンポーネントそれぞれについて、コンポーネントからの出力を識別するためのデータを記憶するエクスポートフィールド、前記ターゲットオペレーティングシステムの動作に必要なコンポーネントへの入力を識別するためのデータを記憶するハード参照フィールド、および前記ターゲットオペレーティングシステムの動作に必要でないコンポーネントへの入力を識別するためのデータを記憶するソフト参照フィールドを含むデータオブジェクトを生み出すこと、
前記データオブジェクトを使用して依存性モデルを生成すること、
前記ターゲットオペレーティングシステムに含めるべき前記ソースオペレーティングシステム中のフィーチャーを識別すること、
前記依存性モデルに従って依存性をトレースすることにより、前記識別したフィーチャーをサポートするのに必要なコンポーネントを選択すること、および、
前記選択したコンポーネントをリンクして前記ターゲットオペレーティングシステムを構築すること
を含むことを特徴とする方法。
【請求項２】
前記データオブジェクトはさらに、テーブルエントリとの間のエクスポート、ハード参照、およびソフト参照を識別するためのデータを記憶する独立リンクフィールドを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記データオブジェクトはさらに、名前およびタイプを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記データオブジェクトはさらに、「選択」として指定されるタイプを含み、前記選択データオブジェクトは少なくとも２つの独立リンクを含み、各独立リンクは構成の代替選択肢であることを特徴とする請求項３に記載の方法。
【請求項５】
前記依存性モデルを生成することはさらに、未解決の参照をそれ以上解決できなくなるまで未解決の各参照データオブジェクトを解決するエクスポートに前記参照を接続することにより、モデルを生成することを含むことを特徴とする請求項１に記載の方法。
【請求項６】
ハード参照だけが解決されることを特徴とする請求項５に記載の方法。
【請求項７】
前記ソースオペレーティングシステムの複数のフィーチャーそれぞれについてデータオブジェクトを生み出すこと、および、
前記依存性モデル中に前記フィーチャーについての前記データオブジェクトを含めること
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
ソースオペレーティングシステムからターゲットオペレーティングシステムを構築するためにコンピュータで実行される方法であって、
前記ソースオペレーティングシステムの複数のコンポーネントそれぞれについて、データオブジェクトを生み出すこと、
前記データオブジェクトを使用して依存性モデルを生成すること、
前記ターゲットオペレーティングシステムに含めるべき前記ソースオペレーティングシステム中のフィーチャーを識別すること、
前記依存性モデルに従って依存性をトレースすることにより、前記識別したフィーチャーをサポートするのに必要なコンポーネントを選択すること、および、
前記選択したコンポーネントをリンクして前記ターゲットオペレーティングシステムを構築することを含み、
前記コンポーネントを選択することはさらに、
前記ターゲットオペレーティングシステムに含めるべきフィーチャーをサポートするのに必要な１つ以上のコンポーネントのセットを選択すること、
前記コンポーネントのセットを表すデータオブジェクトのセットを識別すること、
前記データオブジェクトのセット中の各データオブジェクト中にある未解決の各参照について、前記参照を解決するデータオブジェクトのエクスポートまで前記未解決の参照をトレースすること、および、
前記エクスポートを含む前記データオブジェクトに対応する前記コンポーネントを選択することを含むことを特徴とする方法。
【請求項９】
前記トレースすることおよび選択することは、ハード参照である参照に対してのみ実施されることを特徴とする請求項８に記載の方法。
【請求項１０】
ソースオペレーティングシステムからターゲットオペレーティングシステムを構築するためにコンピュータで実行される方法であって、
前記ターゲットオペレーティングシステムに含めるべき前記ソースオペレーティングシステム中のフィーチャーを識別すること、
オペレーティングシステムのフィーチャーをオペレーティングシステムコンポーネントにマッピングする依存性モデルを利用して、前記識別したフィーチャーをサポートするコンポーネントを前記ソースオペレーティングシステムから選択すること、および、
前記選択したコンポーネントをリンクして前記ターゲットオペレーティングシステムを生み出すことを含み、
前記依存性モデルは前記ソースオペレーティングシステム中の各コンポーネントについてのデータオブジェクトを含み、各データオブジェクトが、少なくとも１つの他のコンポーネントにデータを提供する１つ以上のエクスポートと、少なくとも１つの他のコンポーネントからのデータを使用する１つ以上のハード参照とを有する可能性があり、
前記依存性モデルを利用して前記ソースオペレーティングシステムからコンポーネントを選択することはさらに、
オペレーティングシステムのフィーチャーの選択を識別すること、
前記選択されたフィーチャーからマッピングされる第１のオペレーティングシステムコンポーネントを１つ以上識別すること、
識別した第１のオペレーティングシステムコンポーネントそれぞれについて、前記識別したコンポーネントからの各ハード参照を、当該ハード参照を解決する第２のオペレーティングシステムコンポーネントからのエクスポートコンポーネントまでトレースし、前記第２のオペレーティングシステムコンポーネントを選択すること、
前記第２のオペレーティングシステムコンポーネントが１つ以上のハード参照を含む場合は、各ハード参照について、前記第２のオペレーティングシステムコンポーネントからの前記ハード参照を、当該ハード参照を解決する第３のオペレーティングシステムコンポーネントからのエクスポートコンポーネントまでトレースし、前記第３のオペレーティングシステムコンポーネントを選択すること、および、
すべてのコンポーネントからのすべてのハード参照が解決されて、前記ハード参照およびそれらを解決するエクスポートを含むコンポーネントが選択されるまで、同様にして繰り返しハード参照をトレースして前記コンポーネントを選択することを含むことを特徴とする方法。
【請求項１１】
前記ハード参照は、該ハード参照が含まれる前記データオブジェクトで表されるコンポーネントの機能（function）にとってクリティカルな、少なくとも１つの他のコンポーネントからのデータを参照する参照であり、
各データオブジェクトは、当該ソフト参照がふくまれる前記データオブジェクトで表されるコンポーネントの機能にとってクリティカルでないデータを参照する参照である、１つ以上のソフト参照を有する可能性があることを特徴とする請求項１０に記載の方法。
【請求項１２】
コンピュータ実行可能命令を含む１つ以上のコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、
ターゲットオペレーティングシステム中に含めるべき選択されたソースオペレーティングシステムのフィーチャーを識別すること、
前記選択されたフィーチャーに関連する１つ以上の第１のソースオペレーティングシステムコンポーネントであって、前記選択されたフィーチャーが正しく機能するのに必要な前記１つ以上の第１のソースオペレーティングシステムコンポーネントを識別すること、
前記１つ以上の第１のソースオペレーティングシステムコンポーネントを選択すること、
前記１つ以上の第１のソースオペレーティングシステムコンポーネントが正しく機能するのに必要な１つ以上の第２のソースオペレーティングシステムコンポーネントを識別すること、
前記１つ以上の第２のソースオペレーティングシステムコンポーネントを選択すること、および、
前記選択したソースオペレーティングシステムコンポーネントをリンクして、ターゲットオペレーティングシステムを形成すること
をコンピュータに実行させ、
各ソースオペレーティングシステムコンポーネントはデータオブジェクトで表され、
データオブジェクトはさらに、
名前と、
タイプと、
前記データオブジェクトで表される前記ソースオペレーティングシステムコンポーネントからのデータを必要とするソースオペレーティングシステムコンポーネントを識別する１つ以上のエクスポートと、
前記データオブジェクトで表される前記ソースオペレーティングシステムコンポーネントにとってクリティカルなデータを提供するソースオペレーティングシステムコンポーネントを識別する１つ以上のハード参照とを含み、
第１および第２のソースオペレーティングシステムコンポーネントを識別することはさらに、依存性モデルを使用して、第１のソースオペレーティングシステムコンポーネントを表す第１のデータオブジェクトからの各ハード参照を、第２のソースオペレーティングシステムコンポーネントを表す第２のデータオブジェクトからのエクスポートまでトレースし、前記第２のオペレーティングシステムコンポーネントを識別することを含むことを特徴とするコンピュータ可読媒体。
【請求項１３】
前記データオブジェクトは１つ以上のソフト参照をさらに含み、各ソフト参照は前記データオブジェクトにデータを提供するソースオペレーティングシステムコンポーネントを識別し、前記データオブジェクトに提供される前記データは前記データオブジェクトで表されるソースオペレーティングシステムコンポーネントの機能にとってクリティカルでないことを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記データオブジェクトは１つ以上の独立リンクをさらに含み、各独立リンクは、複数の参照および／またはエクスポートを含むデータ構造に含まれる参照および／またはエクスポートを識別することを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１５】
前記依存性モデルは前記ソースオペレーティングシステムコンポーネントを表すすべてのデータオブジェクトを含み、各データオブジェクトの各ハード参照は、前記ハード参照を解決するデータオブジェクトのエクスポートに論理的に接続されることを特徴とする請求項１２に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で述べるシステムおよび方法は、一般にターゲットコンピュータオペレーティングシステムの構築に関する。より詳細には、本明細書で述べるシステムおよび方法は、ソースオペレーティングシステムコンポーネントのセットからターゲットオペレーティングシステムを構築することに関する。
【背景技術】
【０００２】
組込みコンピューティングデバイスまたは家電コンピューティングデバイスは、通常、汎用コンピュータに比べて小さいフィーチャーセットを提供する。このようなデバイスの場合、汎用オペレーティングシステムを使用するのではなく、限定されたフィーチャーセットに合わせたよりコンパクトなオペレーティングシステムを使用することが望ましい。従来の総合的なオペレーティングシステムを使用してこのような組込み／家電デバイスを駆動することはできるが、このようなオペレーティングシステムのためのメモリおよび処理能力を備えることは、デバイス製造業者にとって自社の製品に不要な高価な諸経費がかかる。理想的な解決法は、専用電子デバイスの製造業者が、総合的なソースオペレーティングシステムからターゲットオペレーティングシステムに含めるために所望のフィーチャーを選択してから、選択したそれらのフィーチャーだけを提供するターゲットオペレーティングシステムを構築することができるようにすることであろう。こうすることにより、デバイスをより小さくより安価にすることができ、したがって、消費者にとってより魅力あるものにすることができる。
【０００３】
しかし、このような解決法に伴う問題は、オペレーティングシステムが多数のコンポーネントからなる複雑なプログラムだということである。コンポーネントの中には、データまたは機能（functionality）を他のコンポーネントにエクスポートするものもある。コンポーネントの中には、それらにデータまたは機能を提供するための他のコンポーネントが存在しない限り正しく機能することができないものもある。加えて、オペレーティングシステムのフィーチャーは通常、オペレーティングシステムの様々なコンポーネントに直接にマッピングしない。オペレーティングシステムのコンポーネント間におけるこれらの相互依存性、およびオペレーティングシステムのフィーチャーがオペレーティングシステムのコンポーネントに直接にマッピングしないことは、ソースオペレーティングシステムからフィーチャーをまず選択した後でそれらの選択したフィーチャーに基づいてソースオペレーティングシステムからターゲットオペレーティングシステムを構築することによって単純にターゲットオペレーティングシステムを構築することに対して障害をもたらす。通常、オペレーティングシステムの特定のフィーチャーを実装することは、オペレーティングシステムの複数のコンポーネントに依存する。さらに、１つのコンポーネントが複数のフィーチャーに必要とされる場合もある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、ソースオペレーティングシステムのすべてのフィーチャーのサブセットがある場合に、所望のフィーチャーサブセットをターゲットオペレーティングシステム中に実装するのに必要な適切なオペレーティングシステムコンポーネントのセットをどのように選択するかという問題がある。
【課題を解決するための手段】
【０００５】
ターゲットオペレーティングシステムによって提供すべき、ソースオペレーティングシステムからの特定のフィーチャーのサブセットに従って、ソースオペレーティングシステムから適切なコンポーネントのセットを選択してターゲットオペレーティングシステムを構築することを可能にする方法およびシステムについて述べる。ソースオペレーティングシステムからターゲットオペレーティングシステムを構築する際、まず適切なコンポーネントのセットをソースオペレーティングシステムから選択し、次いでそれらを正しくリンクしてターゲットオペレーティングシステムを提供する。
【０００６】
より具体的には、本明細書で述べる一実施では、ソースオペレーティングシステムの各オブジェクトを、以下の属性を有するデータオブジェクトとして表す（本明細書では、オブジェクトとは、オペレーティングシステムの特定のフィーチャーを提供するように動作する（１）オペレーティングシステムのコンポーネント、または（２）オペレーティングシステムのコンポーネントのセットを指す）。
【０００７】
１）名前（Ｎａｍｅ）
２）タイプ（Ｔｙｐｅ）
３）エクスポート（Ｅｘｐｏｒｔ）
４）ハード参照（Ｈａｒｄ  Ｒｅｆｅｒｅｎｃｅ）
５）ソフト参照（Ｓｏｆｔ  Ｒｅｆｅｒｅｎｃｅ）
６）独立リンク（Ｉｎｄｅｐｅｎｄｅｎｔ  Ｌｉｎｋ）
名前およびタイプは、データオブジェクトを一意に識別するために使用される。エクスポートは、このデータオブジェクトから他のデータオブジェクトに提供されるデータである。１つのデータオブジェクトは、０から数百個までのエクスポートを有する場合がある。
【０００８】
参照は、さらにハード参照またはソフト参照として識別される。ハード参照は、このデータオブジェクトによって提供されるフィーチャーが正しく機能するために解決しなければならないクリティカルな参照（限定はしないが例えば、このデータオブジェクトが別のデータオブジェクトから受け取るべきデータ）である。反対に、ソフト参照は、このデータオブジェクトによって提供されるフィーチャーが正しく機能するために解決する必要のない、クリティカルでない参照である。ソフト参照の識別を使用して、ターゲットオペレーティングシステム構築時に省略できるソースオペレーティングシステムからのコンポーネントが識別される。
【０００９】
独立リンクは、これを含んでいるデータオブジェクトのエクスポートおよび参照にマージされないエクスポートおよび参照のセットである。例えば、ＡＰＩ（アプリケーションプログラミングインタフェース）セットの関数テーブルが、ＡＰＩセット中で利用可能なあらゆる関数をリストする。テーブル自体は１つのコンポーネント中に含まれるが、他の多くのオブジェクトを参照する。これを含んでいるデータオブジェクトのエクスポートおよび参照の属性だけを使用すると、テーブル中で参照されるあらゆるコンポーネントが選択されることになる。この場合に、独立リンクを使用して、これを含んでいるデータオブジェクト中でテーブルエントリを独立したエクスポートおよび参照として識別する。独立リンクを使用すると、テーブルエントリを相互から独立してエクスポートすることまたは参照することができる。
【００１０】
独立リンクはまた、ターゲットオペレーティングシステム中で使用される所望のフィーチャーを選択するときに行う必要のある選択をモデリングするのにも使用される。これについては後でより詳細に述べる。
【００１１】
ソースオペレーティングシステムのコンポーネントを表すデータオブジェクトを生み出した後、各参照を、その参照を解決するエクスポートに結びつけることにより、マスタ依存性グラフを構築する。次いで、ターゲットオペレーティングシステムに必要なフィーチャーを選択する。選択したフィーチャーから依存性グラフ中のリンクをトレースし、遭遇したコンポーネントに、ターゲットオペレーティングシステム中に含めるようマークを付ける。リンクを横断した後、マークを付けたコンポーネントを組み合わせてターゲットオペレーティングシステムを生み出す。
【００１２】
以上の概要は、これ自体で本特許の範囲を限定するものではない。本発明をよりよく理解するために、後続の詳細な説明および添付の特許請求の範囲を、添付の図面と共に参照されたい。本発明の範囲は、添付の特許請求の範囲に示す。
【発明を実施するための最良の形態】
【００１３】
各図面を通して、同じ要素および特徴を参照する場合は同じ番号を使用する。
【００１４】
以下の記述では、依存性モデリングを利用してソースオペレーティングシステムからターゲットオペレーティングシステムを構築する方式を提供するシステムおよび方法の、１つ以上の具体的な実施形態について述べる。このシステムおよび方法は、頭記の特許請求の範囲に列挙した要素を組み込んでいる。これらの実施について、法定の書面記述、実施可能性、および最良モードの要件を満たすために限定的に記述する。ただし、この記述自体は本特許の範囲を限定するものではない。
【００１５】
本明細書ではまた、依存性モデリングを利用してソースオペレーティングシステムからターゲットオペレーティングシステムを構築する方式を提供するシステムおよび方法の、１つ以上の例示的な実施についても述べる。本出願人は、これらの例示的な実施を単に例として意図している。本出願人は、これらの例示的な実施が、請求する本発明の範囲を限定するものとは意図していない。逆に本出願人は、請求する本発明が現在または将来の技術と共に他の方式でも実施および実装できると考える。
【００１６】
序論
本明細書で論じる依存性モデリングは、いくつかのスタティックライブラリとして構築されるオペレーティングシステムに関して述べる。より具体的には、この考察では例としてＭＩＣＲＯＳＯＦＴ（登録商標）  ＣＯＲＰ．製のＷＩＮＤＯＷＳ（登録商標）ＣＥ（登録商標）オペレーティングシステムを焦点とし、これを使用する。他のオペレーティングシステムがＷＩＮＤＯＷＳ（登録商標）ＣＥ（登録商標）オペレーティングシステムと同じか類似のフィーチャー、特性、または挙動を呈する場合もそうでない場合もあるが、本明細書で述べる依存性モデリングを他のオペレーティングシステムに適用して依存性をモデリングし、その結果、ソースオペレーティングシステムのコンポーネントのサブセットであるターゲットオペレーティングシステムを構築することができることは、当業者には明らかであろう。ＷＩＮＤＯＷＳ（登録商標）ＣＥ（登録商標）オペレーティングシステムを例に使用して本発明を記述することは、頭記の特許請求の範囲を特定のオペレーティングシステムに限定するものではない。
【００１７】
前述のように、ＷＩＮＤＯＷＳ（登録商標）ＣＥ（登録商標）オペレーティングシステムは、いくつかのスタティックライブラリとして構築される。各スタティックライブラリは、１つ以上のソースコードファイルをオブジェクトファイルにコンパイルし、次いでオブジェクトファイルをリンクしてスタティックライブラリを形成することによって構築される。各ソースファイルは、コンパイルされてコンピュータ中で動作するとき、１つ以上の関数を提供し、各関数は０から数個までの他の関数を参照する。
【００１８】
図１は、スタティックライブラリ１００と、スタティックライブラリ１００が構築される際に利用されるコンポーネントとを簡略化したブロック図である。ソースコードファイル１０２は、関数１  １０４および関数２  １０６を含む。関数１  １０４は、関数Ａ１０８および関数Ｂ１１０を参照する。関数２  １０６は、関数Ｙ１１２および関数Ｚ１１４を参照する。ソースコードファイル１１６は、関数３  １１８および関数４  １２０を含む。関数３  １１８は、関数Ａ１０８および関数Ｂ１１０を参照する。関数４  １２０は、関数Ｊ１２２および関数Ｋ１２４を参照する。
【００１９】
ソースコードファイル１０２およびソースコードファイル１１６は、コンパイラ１２６によってコンパイルされて、それぞれオブジェクトファイル１２８およびオブジェクトファイル１３０を形成する。オブジェクトファイル１２８は、関数１  １０４および関数２  １０６に関する符号化済み情報を含む。オブジェクトファイル１３０は、関数３  １１８および関数４  １２０に関する符号化済み情報を含む。オブジェクトファイル１２８とオブジェクトファイル１３０は、リンカ１３２によってリンクされて、スタティックライブラリ１００を形成する。したがってスタティックライブラリ１００は、オブジェクトファイル１２８およびオブジェクトファイル１３０からの符号化済み情報を含む。このスタティックライブラリ１００が、ソースオペレーティングシステム（図示せず）中で使用される。
【００２０】
個々のソースファイル１０２、１１６からのエクスポートおよび参照の情報が、スタティックライブラリ１００にマージされるのがわかる。これは、リンカ１３２がスタティックライブラリ１００中の情報をどのように構成するかということと同様である。依存性モデリングでは、ソースオペレーティングシステム中のいくつかのスタティックライブラリそれぞれに、対応するエクスポート／参照データオブジェクトが関連する。データオブジェクトに含まれる情報を使用して、オペレーティングシステムの特定のフィーチャーをサポートするのに必要な他のデータオブジェクトを識別することができる。
【００２１】
ソースオペレーティングシステムの特定のフィーチャーを有するターゲットオペレーティングシステムを構築するのにどのソースオペレーティングシステムコンポーネントが必要かを決定することは、３つの基本ステップ、すなわち構築、接続、選択で達成される。
【００２２】
まず、コンポーネントに関するエクスポートおよび／または参照の情報を記述するデータオブジェクトを、ソースオペレーティングシステムの各コンポーネントについて構築する。この考察ではスタティックライブラリとしてのコンポーネントに焦点を合わせるが、一般にコンポーネントは、過度の負担なしに他のコードから分離させることのできる任意のコードセクションまたは「コンテナ」とすることができることに留意されたい。データオブジェクトはまた、オペレーティングシステムの各フィーチャーについても構築される。
【００２３】
次に、各参照を、その参照を解決するエクスポートに接続することにより、マスタ依存性グラフまたはモデルを構築する。最後に、ユーザに必要とされる所望のコンポーネント、機能（functions）、または所望のコンポーネントおよび機能の組合せから依存性モデルをトレースして、ソースオペレーティングシステムのフィーチャーのサブセットを含む所望のターゲットオペレーティングシステムの構築に必要なコンポーネント（例えばＷｉｎｄｏｗｓ（登録商標）ＣＥ（登録商標）の場合はスタティックライブラリ）を選択する。
【００２４】
上に提示した単純なモデルに伴う問題は、ほぼ常にソースオペレーティングシステムからのコンポーネントすべてが選択されることになることである。これは、１つのスタティックライブラリが選択されると、より多くのスタティックライブラリを選択しなければ解決できない参照が識別され、結局すべてのライブラリが選択されるからである。この問題を、ソフト参照および「選択（Ｃｈｏｉｃｅ）」データオブジェクトを導入することで解決する。ソフト参照は、クリティカルでない参照、すなわち機能は縮小しても動くシステムにするためには解決する必要のない参照である。後でより詳細に述べるが、ソフト参照は、ソースオペレーティングシステムのコンポーネントをターゲットオペレーティングシステムから省くことができるようにするための基本機構である。必要なとき、参照はハード参照とソフト参照のどちらかとして記述される。
【００２５】
依存性グラフを構築するときに生じる問題の一つは、あるフィーチャーに対していくつかの代替オプションが提供されるときである。例えば、いくつかのデバイスはマウスを有し、他のデバイスはタッチスクリーンを有する場合がある。ソースオペレーティングシステムはマウスカーソルおよびタッチスクリーンカーソルを含むが、各ターゲットオペレーティングシステムはその一方または他方を必要とする。マウスを有するデバイスに対しては、マウスカーソルが選択されてターゲットオペレーティングシステムが構成されることになる。タッチスクリーンを有するデバイスに対しては、タッチスクリーンカーソルが使用されることになる。どのオプションがターゲットオペレーティングシステムに必要かわかるまで、依存性グラフを完成させることができない。
【００２６】
このような場合のために、「選択」タイプのデータオブジェクト中で代替を参照することによって代替オプションに備える。「選択」データオブジェクトは、システムを構成する前に代替構成をモデリングできるようにし、それにより、特定の構成に対して１つ以上の代替選択を行わなければならなくなる前に完全な依存性モデルを構築できるようにする。
【００２７】
これを達成するには、代替オプションを「選択」データオブジェクト中の独立リンクにする。このような実施では、それぞれの選択のエクスポートは、「選択」データオブジェクトのエクスポートになる（参照は各代替で同じになる）。選択を明示的にモデリングすることにより、ユーザが選択するフィーチャーに関係なくシステム全体の依存性モデルを構築することができる。
【００２８】
ソフト参照をより完全に説明するために、この例で、関数Ｋ１２４も関数Ｚ１１４もスタティックライブラリ１００の機能（functionality）にとってクリティカルな要件ではないと仮定する。このような状況では、関数Ｋ１２４および関数Ｚ１１４は、構築段階および／または接続段階でクリティカルでないコンポーネントとして識別され、これらの関数は、選択段階でターゲットオペレーティングシステムに含まれるように選択されることはない。
【００２９】
より具体的な例が、ＷＩＮＤＯＷＳ（登録商標）ＣＥ（登録商標）オペレーティングシステムに見られる。このオペレーティングシステムをソースオペレーティングシステムに使用してターゲットオペレーティングシステムを構築することができるが、このオペレーティングシステムでは、システムオブジェクト（「ウィンドウ」と呼ばれる）が二重の目的を果たす。これらは、コンピュータモニタ上に外的にグラフィックスを表示するための機構を提供し、かつ、オペレーティングシステム上で動作させるプログラムを書くとき、送るメッセージの宛先を提供する。製品の中にはオペレーティングシステムのグラフィックス能力を必要としないものもあり、デバイス製造業者は、使用されないのでこれをターゲットオペレーティングシステムから省くことを好む場合がある。具体的には、ウィンドウを立ち上げるためのソースコードは、グラフィックスサブシステムへの特有の呼出しＧｗｅＮｅｗＧｄｉＷｉｎｄｏｗを行って、ウィンドウが立ち上げられるときをグラフィックスサブシステムに知らせる。この呼出しがハード参照である場合、グラフィックスサブシステムは、常にターゲットオペレーティングシステムの最終的な構成の中に引き入れられることになる。この呼出しをソフト参照として指定することにより、グラフィックスサブシステムに対するコードは、単にウィンドウズ（登録商標）コードがターゲットオペレーティングシステム中で使用されるからといってターゲットオペレーティングシステムの最終的な構成の中に引き入れられることはない。
【００３０】
この解決法は、ターゲットオペレーティングシステムから省くコンポーネントをどのように識別するかという問題を解決するが、テーブルを本質的に名前変更するものを含むいくつかの場所がオペレーティングシステム中にあることで、別の問題が生じる。例えば、ＡＰＩ（アプリケーションプログラミングインタフェース）セットの関数テーブルが、ＡＰＩセット中で利用可能なあらゆる関数をリストする。このテーブル自体は１つのコンポーネントに含まれるが、他の多くのコンポーネント中のオブジェクトを参照する。前述の単純な方式を用いて参照をマージすることは問題を生じる。関数参照をハード参照のままにすれば、あらゆるコンポーネントがターゲットオペレーティングシステム中に引き入れられることになり、これは望ましい挙動ではない。他方、これらの関数は必要な場合にはターゲットオペレーティングシステム中になければならないので、これらの参照をソフト参照として指定することは適切ではない。
【００３１】
この特定の問題を、前述の独立リンクの概念を用いて解決する。この問題に対する解決法は、テーブル中の情報をデータオブジェクトの残りのエクスポートおよび参照にマージするのをやめることである。テーブル中のエクスポート／参照リンクは独立したままとなる。
【００３２】
図２は、図１からのソースコードファイル１０２およびそのコンポーネントと、ソースコードファイル１１６およびそのコンポーネントのブロック図である。図２にはさらに、いくつかのエントリ（関数Ｍ２０２、関数Ｎ２０４、関数Ｏ２０６、関数Ｐ２０８、関数Ｑ２１０、関数Ｒ２１２、関数Ｓ２１４）を有するテーブル２００も示してある。ソースコードファイル１０２は、テーブル２００の関数Ｍ２０２エントリへの呼出し２１６を含む関数Ｍ２０２を有する。ソースコードファイル１１６は、テーブル２００の関数Ｎ２０４への呼出し２１８を含む関数Ｎ２０４を有する。ソースコードファイル１０２およびソースコードファイル１１６は、コンパイルおよびリンクされて、スタティックライブラリ２２０を生み出す。
【００３３】
本発明によれば、テーブルからすべての関数（２０２〜２１４）を選択するのではなく、特定のエントリ（関数Ｍ２０２および関数Ｎ２０４）だけを選択する。これにより、ターゲットオペレーティングシステムのサイズが大幅に縮小される。以下、残りの図を引き続き参照しながら、独立リンクの使用についてより詳細に述べる。
【００３４】
例示的なデータ構造
図３は、ソースオペレーティングシステムのコンポーネントを表すために使用できるデータ構造を示すブロック図である。図３には、名前フィールド３０２およびタイプフィールド３０４を有するデータオブジェクト３００が示してある。データオブジェクト３００はまた、エクスポートフィールド３０６、ハード参照フィールド３０８、およびソフト参照フィールド３１０も含む。エクスポートフィールド３０６は、データオブジェクト３００で表されるソースオペレーティングシステムコンポーネントから出力されるデータを示すための０から数百個までのメンバを含む場合がある。同様に、ハード参照フィールド３０８およびソフト参照フィールドも、データオブジェクト３００で表されるソースオペレーティングシステムコンポーネントによって参照されるデータを示すための０から数百個までのメンバを含む場合がある。
【００３５】
図示のデータオブジェクト３００は、第１の独立リンク３１２を含み、この第１の独立リンク３１２は、エクスポートフィールド３１４、ハード参照フィールド３１６、およびソフト参照フィールド３１８を有する。データオブジェクト３００はまた、第２の独立リンク３２０も含み、この第２の独立リンク３２０は、エクスポートフィールド３２２、ハード参照フィールド３２４、およびソフト参照フィールド３２６を有する。
【００３６】
再び図２を参照すると、スタティックライブラリ２００を表すために構築されるデータオブジェクトは、データオブジェクト３００に従えば次のように表されることになる。
【００３７】
名前（３０２）：コンポーネント
タイプ（３０４）：スタティックライブラリ
エクスポート（３０６）：
関数１
関数２
関数３
関数４
ハード参照（３０８）
関数Ａ
関数Ｂ
関数Ｙ
関数Ｊ
ソフト参照（３１０）
関数Ｋ
関数Ｚ
独立リンク（３１２）
エクスポート（３１４）
ＡＰＩエントリＭ
ハード参照（３１６）
関数Ｍ
独立リンク（３２０）
エクスポート（３２２）
ＡＰＩエントリＮ
ソフト参照（３２４）
関数Ｎ
（例示のためにすぎないが、関数Ｍはハード参照であり関数Ｎはソフト参照であることに留意されたい。）
【００３８】
ソースオペレーティングシステムのコンポーネントおよびフィーチャーを表すデータオブジェクトは、手作業でデータオブジェクトを生み出すことや、ソフトウェアツールから導き出された既存の情報を使用して自動でデータオブジェクトを生み出すことなどを含めて（これらに限定しない）、どんな実際的方法で構築してもよい。どのようにしてデータオブジェクトが生み出されるかは本出願の焦点ではなく、焦点となるのは、データオブジェクトがソースオペレーティングシステムのフィーチャーおよびコンポーネントを表すように生み出されることだけである。
【００３９】
例示的なターゲットオペレーティングシステム構築システム
図４に、ソースオペレーティングシステムから組込み／家電デバイス用のターゲットオペレーティングシステムを構築するための例示的なターゲットオペレーティング構築システム４００を示す。ホストコンピュータ４０２は、プロセッサ４０４、通信モジュール４０６、入出力（Ｉ／Ｏ）モジュール４０８、およびメモリ４１０を備える。メモリ４１０は、オペレーティングシステム４１２、ターゲットオペレーティングシステムビルダプログラム４１４、およびソースオペレーティングシステム４１６を記憶する。オペレーティングシステム４１２は、ホストコンピュータ４０２を操作するのに使用され、ソースオペレーティングシステム４１６は、ターゲットオペレーティングシステム４１８をそれから構築することのできる可能なすべてのコンポーネントを含むオペレーティングシステムである。ターゲットオペレーティングシステム４１８は、構築されるとメモリ４１０に記憶される。メモリ４１０はまた、ターゲットオペレーティングシステム４１８の構築に使用される依存性モデル４２０も記憶する。ターゲットオペレーティングシステムビルダプログラム４１４は、フィーチャー選択モジュール４２２、トレーサ４２４、およびリンカ４２６を含む。
【００４０】
図４には、オペレーティングシステム（Ｏ／Ｓ）製造業者４２８も示されている。Ｏ／Ｓ製造業者４２８はメモリ４３０を備え、メモリ４３０は、ソースオペレーティングシステム４３２、オブジェクトクリエータ４３４、モデリングモジュール４３６、および依存性モデル４３８を記憶する。オブジェクトクリエータ４３４は、ソースオペレーティングシステム４３２中の各コンポーネントについてデータオブジェクトを生み出すように構成される。モデリングモジュール４３６は、データオブジェクトを利用して依存性モデル４３８を構築する。次いで、ソースオペレーティングシステム４３２および依存性モデル４３８は、ホストコンピュータ４０２に転送される（ソースオペレーティングシステム４１６および依存性モデル４２０として）。
【００４１】
ターゲットオペレーティングシステム４１８は、ホストコンピュータ４０２上で生み出された後、家電デバイス４４０にロードされる。家電デバイス４４０は、メモリ４４２、入出力モジュール４４４、およびプロセッサ４４６を備える。
【００４２】
ターゲットオペレーティングシステム構築システム４００の方法の実施についての考察を進めるなかで、図４の機構および参照番号を引き続き参照する。
【００４３】
図５に、図４に示したターゲットオペレーティングシステム構築システム４００の方法の実施を示す。この方法の実施は、ソフトウェア、ハードウェア、またはそれらの組合せにおいて実施することができる。図５についての考察でも引き続き、図４の機構および参照番号を参照する。
【００４４】
図５に示す方法の実施は、Ｏ／Ｓ製造業者４２８およびホストコンピュータ４０２で行われる動作を表すブロックで示してある。図示のブロック５００〜５０６は、Ｏ／Ｓ製造業者４２８で実施される。図示のブロック５０８〜５１６は、ホストコンピュータ４０２で実施される。ただし、ホストコンピュータ４０２とＯ／Ｓ製造業者４２８のどちらかで、または別のユニットで、必要なタスクを描写し分散させることもできることに留意されたい。図５は、使用できる実施の１つを表すものにすぎない。
【００４５】
ブロック５００で、オブジェクトクリエータ４３４が、前述のエクスポート、ハード参照、ソフト参照、および独立リンクに従って、ソースオペレーティングシステム４３２中の各コンポーネントについてデータオブジェクトを生み出す。データオブジェクトはまた、ソースオペレーティングシステム４３２のフィーチャーおよび選択肢に対しても生み出す（ブロック５０２）。オペレーティングシステムのフィーチャーに対して生み出されるデータオブジェクトは、単にオペレーティングシステムの１つのコンポーネントを表すだけの場合もあり、コンポーネントのセットを表す場合もある。最初にフィーチャーをコンポーネントにマッピングすることは、様々な方式で達成することができ、当業者なら個々の実施の利点と欠点を理解するであろう。
【００４６】
ブロック５０４で、モデリングモジュール４３６が、ブロック５００およびブロック５０２で生み出されたデータオブジェクトを使用して依存性モデル４３８を生み出す。ブロック５０６で、ソースオペレーティングシステム４３２および依存性モデル４３８をホストコンピュータ４０２に送達する。これは、インターネット、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスケットなど周知のどんな方法で達成してもよい。さらに、ホストコンピュータ４０２がソースオペレーティングシステム４３２および依存性モデル４３８にアクセスできる限り、ソースオペレーティングシステム４３２および依存性モデル４３８は、必ずしもホストコンピュータ４０２に送達しなければならないとは限らない。
【００４７】
ブロック５０８で、ホストコンピュータ４０２は、Ｏ／Ｓ製造業者４２８からソースオペレーティングシステム４３２および依存性モデル４３８を受け取る。ターゲットオペレーティングシステムビルダプログラム４１４が、フィーチャー選択モジュール４２２を介してユーザインタフェース（図示せず）を提供し、ユーザがターゲットオペレーティングシステム用の所望のフィーチャーを選択できるようにする（ステップ５１０）。フィーチャーには、基本的なオペレーティングシステムカーネル、ファイルシステム、ファイルシステムアドオン、デバイスドライバ、ウィンドウズ（登録商標）マネージャ、グラフィックス、通信プロトコルスタックなどを含めることができるが、これらに限定しない。一実施では、ユーザが所望のフィーチャーを選択できるメニューがユーザに提供される。
【００４８】
ブロック５１２で、トレーサ４２４が、選択されたフィーチャーを識別し、依存性モデル４２０をトレースして必要なデータオブジェクトを選択する。選択データオブジェクトに遭遇したとき、トレーサは、どの選択代替が選択されているか決定する必要がある。この決定は、代替を入力するようユーザにプロンプトで促すことや、前に選択された代替を検索することを含めて（これらに限定しない）、いくつかの方式で行うことができる。グラフトレース／選択アルゴリズムは、当技術分野で周知であり、知られている任意の方法を使用して、ハード参照を解決するエクスポートまでハード参照をトレースし、そのエクスポートを含むデータオブジェクトを選択することができる。データオブジェクトを選択した後、ブロック５１４で、リンカ４２６が、選択されたデータオブジェクトで表されるコンポーネントをリンクして、ターゲットオペレーティングシステム４１８を生み出す。ブロック５１６で、ターゲットオペレーティングシステム４１８を家電デバイス４４０のメモリ４４２にインストールする。
【００４９】
例示的なコンピューティングシステムおよび環境
図６に、本明細書で述べる例示的なターゲットオペレーティングシステム構築システムを（完全にまたは部分的に）実装することのできる、適したコンピューティング環境６００の例を示す。このコンピューティング環境６００を、本明細書で述べるコンピュータおよびネットワークアーキテクチャにおいて利用することができる。
【００５０】
この例示的なコンピューティング環境６００は、コンピューティング環境の例にすぎず、コンピュータおよびネットワークアーキテクチャの使用または機能の範囲についてどんな限定も示すものではない。また、コンピューティング環境６００は、例示的なコンピューティング環境６００に示すコンポーネントのうちの１つまたは組合せに関してどんな依存性または要件を有するとも解釈すべきではない。
【００５１】
例示的なターゲットオペレーティングシステム構築システムは、その他多くの汎用または専用コンピューティングシステム環境または構成で実装することができる。使用に適する場合のある周知のコンピューティングシステム、環境、および／または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルドまたはノート型デバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な消費者電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、以上のシステムおよびデバイスのいずれかを含む分散コンピューティング環境などが挙げられるが、これらに限定しない。
【００５２】
例示的なオーディオ認識装置は、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令の一般的なコンテキストで述べることができる。一般にプログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。例示的なオーディオ認識装置はまた、分散コンピューティング環境でも実行することができ、その場合、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実施される。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ記憶媒体中にあるものとすることができる。
【００５３】
コンピューティング環境６００は、コンピュータ６０２の形をとる汎用コンピューティングデバイスを含む。コンピュータ６０２のコンポーネントには、１つ以上のプロセッサまたはプロセッシングユニット６０４と、システムメモリ６０６と、プロセッサ６０４を含む様々なシステムコンポーネントをシステムメモリ６０６に結合するシステムバス６０８とを含めることができるが、これらに限定しない。
【００５４】
システムバス６０８は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バス、ＡＧＰ（ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）、プロセッサバスまたはローカルバスを含む、いくつかのタイプのバス構造のいずれか１つ以上を表す。例としてこのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、  ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとも呼ばれるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バスを含めることができる。
【００５５】
コンピュータ６０２は通常、様々なコンピュータ可読媒体を備える。このような媒体は、コンピュータ６０２からアクセス可能であって、揮発性媒体と不揮発性媒体、取外し可能媒体と取外し不可能媒体の両方を含めた、利用可能な任意の媒体とすることができる。
【００５６】
システムメモリ６０６は、ランダムアクセスメモリ（ＲＡＭ）６１０などの揮発性メモリ、および／または読出し専用メモリ（ＲＯＭ）６１２などの不揮発性メモリの形をとるコンピュータ可読媒体を含む。ＲＯＭ６１２には、起動中などにコンピュータ６０２内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）６１４が記憶されている。ＲＡＭ６１０は通常、プロセッシングユニット６０４からすぐにアクセス可能な、かつ／またはプロセッシングユニット６０４が現在作用しているデータおよび／またはプログラムモジュールを含む。
【００５７】
コンピュータ６０２はまた、その他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体を備えることもできる。例として図６には、取外し不可能かつ不揮発性の磁気媒体（図示せず）に対して読み書きを行うためのハードディスクドライブ６１６と、取外し可能かつ不揮発性の磁気ディスク６２０（例えば「フロッピー（登録商標）ディスク」）に対して読み書きを行うための磁気ディスクドライブ６１８と、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭやその他の光学媒体など取外し可能かつ不揮発性の光ディスク６２４に対して読み書きを行うための光ディスクドライブ６２２も備える。ハードディスクドライブ６１６、磁気ディスクドライブ６１８、および光ディスクドライブ６２２はそれぞれ、１つ以上のデータ媒体インタフェース６２５でシステムバス６０８に接続される。別法として、ハードディスクドライブ６１６、磁気ディスクドライブ６１８、および光ディスクドライブ６２２は、１つ以上のインタフェース（図示せず）でシステムバス６０８に接続することもできる。
【００５８】
ディスクドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性記憶域をコンピュータ６０２に提供する。この例では、ハードディスク６１６、取外し可能磁気ディスク６２０、および取外し可能光ディスク６２４を示しているが、磁気カセットや他の磁気記憶デバイス、フラッシュメモリカード、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）や他の光学記憶装置、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、ＥＥＰＲＯＭ（電気的消去可能プログラム可能ＲＯＭ）など、コンピュータからアクセス可能なデータを記憶できる他のタイプのコンピュータ可読媒体を利用してこの例示的なコンピューティングシステムおよび環境を実装することもできることを理解されたい。
【００５９】
ハードディスク６１６、磁気ディスク６２０、光ディスク６２４、ＲＯＭ６１２、および／またはＲＡＭ６１０には、例としてオペレーティングシステム６２６、１つ以上のアプリケーションプログラム６２８、その他のプログラムモジュール６３０、プログラムデータ６３２を含めて、任意の数のプログラムモジュールを記憶することができる。このようなオペレーティングシステム６２６、１つ以上のアプリケーションプログラム６２８、その他のプログラムモジュール６３０、プログラムデータ６３２（またはこれらの何らかの組合せ）はそれぞれ、ディジタルオーディオ信号ハッシングユニット、透かしエンコーダ、トランスフォーマ、統計推定器、適応量子化器、誤り訂正デコーダ、およびハッシャの一実施形態を含むことができる。
【００６０】
ユーザは、キーボード６３４やポインティングデバイス６３６（例えばマウス）などの入力デバイスを介してコンピュータ６０２にコマンドおよび情報を入力することができる。その他の入力デバイス６３８（具体的には示さず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、シリアルポート、スキャナおよび／またはその他を含めることができる。これらおよび他の入力デバイスは、システムバス６０８に結合された入出力インタフェース６４０を介してプロセッシングユニット６０４に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインタフェースおよびバス構造で接続することもできる。
【００６１】
モニタ６４２または他のタイプの表示装置もまた、ビデオアダプタ６４４などのインタフェースを介してシステムバス６０８に接続することができる。モニタ６４２に加え、その他の周辺出力デバイスとして、スピーカ（図示せず）やプリンタ６４６などのコンポーネントを含めることもでき、これらは入出力インタフェース６４０を介してコンピュータ６０２に接続することができる。
【００６２】
コンピュータ６０２は、リモートコンピューティングデバイス６４８など１つ以上のリモートコンピュータとの論理接続を用いて、ネットワーク化された環境で動作することができる。例として、リモートコンピューティングデバイス６４８は、パーソナルコンピュータ、携帯型コンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、またはその他の一般的なネットワークノードとすることができる。リモートコンピューティングデバイス６４８は、コンピュータ６０２に関して本明細書に述べた要素およびフィーチャーの多くまたはすべてを含むことのできる携帯型コンピュータとして示す。
【００６３】
コンピュータ６０２とリモートコンピュータ６４８との間の論理接続は、ローカルエリアネットワーク（ＬＡＮ）６５０およびワイドエリアネットワーク（ＷＡＮ）６５２として示す。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットによくあるものである。
【００６４】
ＬＡＮネットワーキング環境で実装されるときは、コンピュータ６０２は、ネットワークインタフェースまたはアダプタ６９４を介してローカルネットワーク６５０に接続される。ＷＡＮネットワーキング環境で実装されるときは、コンピュータ６０２は通常、ワイドネットワーク６５２を介した通信を確立するためのモデム６５６または他の手段を備える。モデム６５６は、コンピュータ６０２に内蔵でも外付けされていてもよく、入出力インタフェース６４０または他の適した機構を介してシステムバス６０８に接続することができる。図示のネットワーク接続は例示的なものであり、コンピュータ６０２と６４８の間で通信リンクを確立する他の手段を使用することもできることを理解されたい。
【００６５】
コンピューティング環境６００で示すようなネットワーク化された環境では、コンピュータ６０２に関して示したプログラムモジュールまたはそれらの一部を、リモートのメモリ記憶デバイスに記憶することもできる。例として、リモートアプリケーションプログラム６５８が、リモートコンピュータ６４８のメモリデバイス上にある。アプリケーションプログラム、およびオペレーティングシステムなど他の実行可能プログラムコンポーネントは、様々なときにコンピューティングデバイス６０２の異なる記憶コンポーネントにあり、コンピュータのデータプロセッサによって実行されることが理解されるが、例示のために、このようなプログラムおよびコンポーネントは、ここでは別個のブロックとして示してある。
【００６６】
コンピュータ実行可能命令
ソースオペレーティングシステムからターゲットオペレーティングシステムを構築するためのシステムおよび方法の一実施については、プログラムモジュールなど、１つ以上のコンピュータまたは他のデバイスによって実行されるコンピュータ実行可能命令の一般的なコンテキストで述べることができる。一般にプログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通常、プログラムモジュールの機能は、様々な実施形態で望まれるように結合または分散させることができる。
【００６７】
例示的な動作環境
図６は、ソースオペレーティングシステムからターゲットオペレーティングシステムを構築するシステムおよび／または方法を実装することのできる、適した動作環境６００の例を示している。具体的には、本明細書に述べるシステムおよび方法は、図６のプログラムモジュール６２８〜６３０および／またはオペレーティングシステム６２６あるいはその一部によって、（完全にまたは部分的に）実装することができる。
【００６８】
この動作環境は、適した動作環境の例にすぎず、本明細書で述べるシステムおよび方法の範囲および使用する機能についてどんな限定も示すものではない。使用に適したその他の周知のコンピューティングシステム、環境、および／または構成には、パーソナルコンピュータ（ＰＣ）、サーバコンピュータ、ハンドヘルドまたはノート型デバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な消費者電子機器、無線電話機および装置、汎用および専用家電、特定用途向け集積回路（ＡＳＩＣ）、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、以上のシステムおよびデバイスのいずれかを含む分散コンピューティング環境などが挙げられるが、これらに限定しない。
【００６９】
コンピュータ可読媒体
ソースオペレーティングシステムからターゲットオペレーティングシステムを構築するためのシステムおよび／または方法の一実施は、何らかの形のコンピュータ可読媒体に記憶すること、またはそれを介して送信することができる。コンピュータ可読媒体は、コンピュータからアクセスできる利用可能な任意の媒体とすることができる。限定ではなく例として、コンピュータ可読媒体には「コンピュータ記憶媒体」および「通信媒体」を含めることができる。
【００７０】
「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶する任意の方法または技術で実装される、揮発性および不揮発性かつ取外し可能および取外し不可能な媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、その他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）や他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置や他の磁気記憶デバイス、または、所望の情報を記憶するのに使用できてコンピュータからアクセスできる他の任意の媒体が含まれるが、これらに限定しない。
【００７１】
「通信媒体」は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波や他のトランスポート機構など変調されたデータ信号に組み入れる。通信媒体にはまた、どんな情報送達媒体も含まれる。
【００７２】
「変調されたデータ信号」という言葉は、情報が信号に符号化されるような形でその１つ以上の特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体には、配線式ネットワークや直接配線式接続などの配線式媒体と、音響、ＲＦ、赤外線などの無線媒体およびその他の無線媒体が含まれる。以上のいずれかの組合せもまた、コンピュータ可読媒体の範囲内に含まれる。
【００７３】
結び
本発明を構造上の特徴および／または方法ステップに特定した言葉で述べたが、頭記の特許請求の範囲に定義する本発明は、述べた特定の特徴およびステップに必ずしも限定されないことを理解されたい。そうではなく、これらの特定の特徴およびステップは、請求する本発明を実施する好ましい形として開示するものである。
【図面の簡単な説明】
【００７４】
【図１】スタティックライブラリおよびそのコンポーネントのブロック図である。
【図２】本発明によって示されるデータオブジェクトを示す図である。
【図３】スタティックライブラリと、参照テーブルを含めたそのコンポーネントのブロック図である。
【図４】本発明を実施することのできるシステムのブロック図である。
【図５】図４のシステムの方法の実施を示す流れ図である。
【図６】本明細書で請求する本発明を実施することのできるコンピューティング動作環境の例を示す図である。
【符号の説明】
【００７５】
１００  スタティックライブラリ
１０２  ソースコードファイル
１０４  関数１
１０６  関数２
１０８  関数Ａ
１１０  関数Ｂ
１１２  関数Ｙ
１１４  関数Ｚ
１１６  ソースコードファイル
１１８  関数３
１２０  関数４
１２２  関数Ｊ
１２４  関数Ｋ
１２６  コンパイラ
１２８  オブジェクトファイル
１３０  オブジェクトファイル
１３２  リンカ
２００  テーブル
２０２  関数Ｍ
２０４  関数Ｎ
２０６  関数Ｏ
２０８  関数Ｐ
２１０  関数Ｑ
２１２  関数Ｒ
２１４  関数Ｓ
２１６  関数Ｍの呼出し
２１８  関数Ｎの呼出し
２００  テーブル
２２０  スタティックライブラリ
３００  データオブジェクト
３０２  名前
３０４  タイプ
３０６  エクスポート
３０８  ハード参照
３１０  ソフト参照
３１２  独立リンク
３１４  エクスポート
３１６  ハード参照
３１８  ソフト参照
３２０  独立リンク
３２２  エクスポート
３２４  ハード参照
３２６  ソフト参照
４００  ターゲットオペレーティングシステム構築システム
４０２  ホストコンピュータ
４０４  プロセッサ
４０６  通信モジュール
４０８  入出力モジュール
４１０  メモリ
４１２  オペレーティングシステム
４１４  ターゲットオペレーティングシステムビルダプログラム
４１６  ソースオペレーティングシステム
４１８  ターゲットオペレーティングシステム
４２０  依存性モデル
４２２  フィーチャー選択モジュール
４２４  トレーサ
４２６  リンカ
４２８  オペレーティングシステム製造業者
４３０  メモリ
４３２  ソースオペレーティングシステム
４３４  オブジェクトクリエータ
４３６  モデリングモジュール
４３８  依存性モデル
４４０  家電デバイス
４４２  メモリ
４４４  入出力モジュール
４４６  プロセッサ
４４８  プラットフォームオペレーティングシステム
６００  コンピューティング環境
６０２  コンピュータ
６０４  プロセッシングユニット
６０６  システムメモリ
６０８  システムバス
６１０  ＲＡＭ
６１２  ＲＯＭ
６１４  ＢＩＯＳ
６１６  ハードディスクドライブ
６１８  磁気ディスクドライブ
６２０  磁気ディスク
６２２  光ディスクドライブ
６２４  光ディスク
６２５  データ媒体インタフェース
６２６  オペレーティングシステム
６２８  アプリケーションプログラム
６３０  その他のプログラムモジュール
６３２  プログラムデータ
６３４  キーボード
６３６  マウス
６３８  その他の入力デバイス
６４０  Ｉ／Ｏインタフェース
６４２  モニタ
６４４  ビデオアダプタ
６４６  プリンタ
６４８  リモートコンピューティングデバイス
６５０  ＬＡＮ
６５２  ＷＡＮ
６５６  モデム
６５８  リモートアプリケーションプログラム
６９４  ネットワークインタフェースまたはアダプタ
【図１】
2007080293.tif 000003
【図２】
2007080293.tif 000004
【図３】
2007080293.tif 000005
【図４】
2007080293.tif 000006
【図５】
2007080293.tif 000007
【図６】
2007080293.tif 000008