JP2011258242A - 共通オペレーティングシステムのためのプログラム - Google Patents

共通オペレーティングシステムのためのプログラム Download PDF

Info

Publication number
JP2011258242A
JP2011258242A JP2011209350A JP2011209350A JP2011258242A JP 2011258242 A JP2011258242 A JP 2011258242A JP 2011209350 A JP2011209350 A JP 2011209350A JP 2011209350 A JP2011209350 A JP 2011209350A JP 2011258242 A JP2011258242 A JP 2011258242A
Authority
JP
Japan
Prior art keywords
operating system
program according
layer
kernel
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011209350A
Other languages
English (en)
Inventor
J D'souza David
ジェイ.デスーザ デビッド
Ryul Chang Myung
リュル チャン ミュン
M Willison Peter
エム.ウィルソン ピーター
A Pletcher Richard
エー.プレッチャー リチャード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011258242A publication Critical patent/JP2011258242A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02GINSTALLATION OF ELECTRIC CABLES OR LINES, OR OF COMBINED OPTICAL AND ELECTRIC CABLES OR LINES
    • H02G7/00Overhead installations of electric lines or cables
    • H02G7/05Suspension arrangements or devices for electric cables or lines
    • H02G7/053Suspension clamps and clips for electric overhead lines not suspended to a supporting wire
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02GINSTALLATION OF ELECTRIC CABLES OR LINES, OR OF COMBINED OPTICAL AND ELECTRIC CABLES OR LINES
    • H02G7/00Overhead installations of electric lines or cables
    • H02G7/02Devices for adjusting or maintaining mechanical tension, e.g. take-up device

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】 限られた数の依存するコンポーネントを有する共通オペレーティングシステムを確立する。
【解決手段】 カーネル、オペレーティングシステムダイナミックリンクライブラリ、サブシステムダイナミックリンクライブラリレイヤ、およびネットワーキングレイヤは、オペレーティングシステムコンポーネント間の依存関係の数を最小限にするように構成される。
【選択図】 図2

Description

本発明は、共通オペレーティングシステムを提供するためのプログラムに関する。
コンピュータオペレーティングシステムは、モノリシック(monolithic)であり、コンポーネントおよびモジュールの間で多数の複雑な依存関係(dependencies)を含む。オペレーティングシステムコンポーネントは、階層関係に基づいて互いに依存する。階層のより上位のレイヤにおけるコンポーネントは、より下位のレイヤにおけるコンポーネントより多数のコンポーネントに依存する。階層のより下位のレイヤに属するコンポーネントは、より上位のレイヤにおけるコンポーネントに依存しない。この結果、オペレーティングシステム内のより下位のレイヤにおけるコンポーネントは、アクセスできる利用可能なオペレーティングシステムサービスの数がより少なくなる。
オペレーティングシステムのサイズが大きくなるにつれ、試験は、より費用がかかるようになる。あるコンポーネントを除去する、または変更することの効果は、オペレーティングシステムが多数の複雑な依存するコンポーネントを含む場合、理解するのが困難である。試験の有効性は、コンポーネント間の依存関係の数が減少した場合、向上する。
多数の複雑な依存関係は、オペレーティングシステム開発サイクル中に依存関係管理が欠如していたことの結果である。必要とされているのは、限られた数の依存するコンポーネントを有する共通オペレーティングシステムを確立する仕方である。
様々なオペレーティングシステム構成をサポートするための共通オペレーティングシステム機能セットを提供するための方法およびシステムを説明する。共通オペレーティングシステム機能セットは、いくつかの配置(deployment)デバイスおよび配置方法に適用可能な最小限のメモリフットプリント(footprint)を提供するように編成される。共通オペレーティングシステムは、信頼性が検証された一揃いの統合されたコンポーネントを提供するオペレーティングシステムコンポーネント間の依存関係を含む。共通オペレーティングシステムは、様々なオペレーティングシステムシナリオのための機能を提供するアプリケーションプログラミングインターフェース(API)セットを含む。
方法は、オペレーティングシステムコンポーネントを定義すること、オペレーティングシステムコンポーネントの依存関係を識別すること、グループ内のコンポーネントが共通の依存関係を共有するようにコンポーネントグループを作成すること、コンポーネントグループ間で依存関係規則を確立すること、および依存関係規則を実施することを含む。
共通オペレーティングシステムを提供するための典型的なシステムは、ハードウェア抽象化レイヤ、カーネル、オペレーティングシステムダイナミックリンクライブラリレイヤ、サブシステムダイナミックリンクライブラリ、およびネットワーキングレイヤを含む。ハードウェア抽象化レイヤは、ハードウェアデバイス群との対話を提供する。カーネルは、ハードウェア抽象化レイヤに依存し、オペレーティングシステムコンポーネントに基本的なサービスを提供する。オペレーティングシステムダイナミックリンクライブラリ、サブシステムダイナミックリンクライブラリ、およびネットワーキングレイヤはすべて、カーネルに依存する。オペレーティングシステムダイナミックリンクライブラリレイヤは、オペレーティングシステムアプリケーション群を実行するための関数のライブラリを含む。サブシステムダイナミックリンクライブラリレイヤは、アプリケーションプログラミングインターフェース群が基本的なオペレーティングシステムコンポーネントに制限されるように、アプリケーションプログラミングインターフェース群をサポートする。ネットワーキングレイヤは、オペレーティングシステムアプリケーション群のネットワーク通信機能をサポートする。
本発明を実施することができる典型的なコンピューティング環境を示す図である。 本発明による共通オペレーティングシステムを示す典型的な機能ブロック図である。 本発明によるモノリシックオペレーティングシステムを共通オペレーティングシステムに変換するためのプロセスを示す動作上の流れ図である。
簡単に述べると、本発明は、様々なオペレーティングシステム構成をサポートするための共通オペレーティングシステム機能セットを提供するための方法およびシステムを対象とする。共通オペレーティングシステム機能セットは、いくつかの配置デバイスおよび配置方法に適用可能な最小限のメモリフットプリントを提供するように編成される。共通オペレーティングシステムは、信頼性が検証された一揃いの統合されたコンポーネントを提供するオペレーティングシステムコンポーネント間の依存関係を含む。共通オペレーティングシステムは、様々なオペレーティングシステムシナリオのための機能を提供するアプリケーションプログラミングインターフェース(API)セットを含む。
(例示的なオペレーティング環境)
図1を参照すると、本発明を実施するための1つの典型的なシステムが、コンピューティングデバイス100のようなコンピューティングデバイスを含む。基本構成は、破線102内のコンポーネントを含む。基本構成において、コンピューティングデバイス100は、通常、少なくとも1つの処理装置104、およびシステムメモリ106を含む。コンピューティングデバイスの正確な構成および種類に依存して、システムメモリ106は、揮発性(RAMなどの)、不揮発性(ROM、フラッシュメモリ、その他などの)、またはこの2つの何らかの組合せであることが可能である。システムメモリ106は、通常、オペレーティングシステム108、1つまたは複数のアプリケーション110を含み、プログラムデータ112を含むことが可能である。
コンピューティングデバイス100は、追加の機構または機能も含むことが可能である。例えば、コンピューティングデバイス100は、例えば、磁気ディスク、光ディスク、または着脱式のフラッシュメモリモジュールなどの追加のデータ記憶装置(着脱式の記憶装置および/または固定式の記憶装置)も含むことが可能である。そのような追加のストレージを図1に着脱式のストレージ114、および固定式のストレージ116で示す。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性媒体および不揮発性媒体、着脱式の媒体および固定式の媒体が含まれることが可能である。システムメモリ106、着脱式のストレージ114、および固定式のストレージ116はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピューティングデバイス100がアクセスすることができる他の任意の媒体が含まれるが、以上には限定されない。任意のそのようなコンピュータ記憶媒体はデバイス100の一部とすることができる。コンピューティングデバイス100は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス118も有することが可能である。ディスプレイ、スピーカ、プリンタなどの出力デバイス120も含まれることが可能である。以上のデバイス群は、当技術分野で周知であり、本明細書で詳述する必要はない。
コンピューティングデバイス100は、ネットワークなどを介して、デバイスが他のコンピューティングデバイス群124と通信することを可能にする通信接続122も含むことが可能である。通信接続122は、通信媒体の一例である。通信媒体は、通常、搬送波または他のトランスポート機構などの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって実現され、あらゆる情報配信媒体が含まれる。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響媒体、RF媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。本明細書で使用するコンピュータ可読媒体という用語には、記憶媒体と通信媒体がともに含まれる。
(共通オペレーティングシステム)
共通オペレーティングシステムは、すべてのオペレーティングシステム構成において使用される信頼できる基礎レイヤを提供する。共通オペレーティングシステムは、最小限の基礎アプリケーションプログラミングインターフェース(API)セットを表す。APIセットに対して書かれたあらゆるソフトウェアも、オペレーティングシステムのすべての構成に適合する。例えば、APIセットに対して書かれた試験コードは、すべてのオペレーティングシステム条件の下で実行可能である。試験手続きを適用して、オペレーティングシステムおよびその他の目標とするプラットフォームに関するパフォーマンスを検査すること、API適用範囲(coverage)を強調すること、および完成させることができる。オペレーティングシステムコンポーネントを試験するのに使用されるコードは、共通オペレーティングシステムに基づく試験プラットフォームに依存する。このため、試験コードを容易に開発することができ、オペレーティングシステムの信頼性を確実にすることができる。
共通オペレーティングシステムは、すべての組み込まれた構成にわたって共有される安定したプラットフォームの集中試験(focused testing)を介して、組み込まれたランタイムの一般的な信頼性を高める。試験手続きは、オペレーティングシステムコンポーネントのコアセットを試験することができるように、コンポーネントに分解することができる。試験は、さらなるコンポーネントを追加することによって拡大することができる。例えば、各オペレーティングシステムコンポーネントを個々に試験して、各コンポーネントがコアと一緒に動作できるかどうかを判定することができる。
共通オペレーティングシステムは、コンポーネントベースのエンジニアリングツールを提供する。例えば、共通オペレーティングシステムを使用して、コンポーネントマニフェストを検証する可能な限り最小の構成(すなわち、最小限のフットプリント)を構築することができる。共通オペレーティングシステムは、積極的なフットプリントの縮小をもたらし、組み込まれた相手先ブランド供給(OEM)の資材表(bill of materials)費用が低くなる。共通オペレーティングシステムの信頼性、および最小限の表面エリア(surface area)は、固定機能サーバ群を作成するのによく適している。固定機能サーバ群を作成することの主な利点は、顧客の総所有費用を低減することである。共通オペレーティングシステムのコンポーネントは、オペレーティングシステム構造においてより上位のレイヤの依存関係を有するコンポーネントによって保守されることが可能である(すなわち、バグ修正が行われる、より新しいバージョンで置き換えられるなど)。
共通オペレーティングシステムは、共通オペレーティングシステムを検証するために実行される様々な分析に基づき、コアオペレーティングシステム(メモリ、起動パフォーマンス、およびAPIセットを含む)に関するドキュメンテーションを向上させる。向上したドキュメンテーションは、OEMおよび独立のソフトウェアベンダによるオペレーティングシステム動作の理解を高める。
共通オペレーティングシステムは、プレブート(pre−boot)オペレーティングシステムとして動作する。共通オペレーティングシステムは、オペレーティングシステムのあらかじめ構築済みのカスタマイズされたイメージを対象ハードウェア上に重ね合わせることによってインストールされる。共通オペレーティングシステムがコンピューティングデバイスにインストールされると、次に、共通オペレーティングシステムアプリケーション群が、共通オペレーティングシステムの上に層を成すオペレーティングシステムの残りの部分をインストールすることができ、あるいは、異なるバージョンのオペレーティングシステムをインストールすることができる。
共通オペレーティングシステムは、デジタルコンパクトディスク(CD)などの読み取り専用媒体から起動されることが可能であることにより、システム回復を助ける。オペレーティングシステム全体をCD上にインストールすることができる。ハードディスク上にインストールされたシステムがクラッシュした場合、オペレーティングシステムは、CDからのオペレーティングシステムでマシンを再起動させることにより、回復することができる。ただし、システムは、CD上にインストールされたオペレーティングシステムの最小限のサブセットを再起動することによって、より迅速に回復させることもできる。共通オペレーティングシステムは、ハードディスク上にインストールされたオペレーティングシステムを回復させるプラットフォームを提供する。一実施形態では、共通オペレーティングシステムは、ユニバーサルシリアルバスポートにプラグ接続された着脱式のフラッシュメモリモジュールから起動することができる。
図2は、本発明による共通オペレーティングシステムの機能ブロック図を示す。共通オペレーティングシステム200は、すべてのオペレーティングシステム構成に要求されるコアオペレーティングシステム機能を含むビルディングブロックである。ただし、共通オペレーティングシステム200は、オペレーティングシステムのハードウェアアーキテクチャ固有の機能をまったく含まない。共通オペレーティングシステム200は、基礎レイヤであり、このレイヤの上に、オペレーティングシステムの将来のバージョンを構築することができる。共通オペレーティングシステム200は、他のオペレーティングシステム製品を開発するための標準のビルディングブロックも提供する。
共通オペレーティングシステム200のコア機能は、ハードウェア抽象化レイヤ(HAL)202およびカーネル204によって提供される。HAL202は、共通オペレーティングシステム200が、一般レベルまたは抽象レベルでハードウェアデバイスと対話することを可能にするプログラミングのレイヤである。HAL202は、カーネル204またはデバイスドライバから呼び出すことができる。
カーネル204は、共通オペレーティングシステム200の中心的なモジュールである。共通オペレーティングシステム200が起動されると、カーネル204がロードされる最初のコンポーネントである。ロードされた後、カーネル204は、メインメモリの中に留まる。カーネル204は、共通オペレーティングシステム200内の他のコンポーネントによって要求される基本的なサービスを提供する。カーネル204は、HAL202に依存する。カーネルは、デバイスドライバ群206およびファイルシステム208を含み、それらに依存する。ファイルシステム208は、他のオペレーティングシステムコンポーネントおよびアプリケーション群が、ファイルの集合としてストレージファイル群と対話することを可能にする抽象化を提供する。カーネル204の諸部分、およびその他のデバイスドライバ群は、ファイルシステム208からロードされる。
デバイスドライバ群206は、プリンタ、ディスクドライバ、またはキーボードなどのデバイス群を制御するプログラム群を含む。一実施形態では、デバイスドライバ群206は、共通オペレーティングシステム200を含む起動可能なシステムを作成するのに必要である。一部のクラスのデバイスドライバ群を使用して、共通オペレーティングシステム200の起動可能なイメージを作成することができる。そのようなクラスは、システムデバイス群、ストレージデバイス群、ユーザインターフェースデバイス群、およびネットワーキングデバイス群のためのデバイスドライバ群を含む。ただし、これらのクラスのデバイスドライバ群は、共通オペレーティングシステムビルディングブロックの一部ではない。デバイスドライバクラスは、構築プロセスを介して後に追加されて、インストール可能な共通オペレーティングシステムを作成する。
カーネル204より上のプログラミングレイヤ群には、オペレーティングシステムダイナミックリンクライブラリ(DLL)210、サブシステムDLL212、およびネットワーキングレイヤ214が含まれる。オペレーティングシステムDLL210は、オペレーティングシステムによってサポートされるアプリケーションが使用することができる実行可能な関数のライブラリを含む。例えば、Windows(登録商標)NT DLLは、Windows(登録商標)NTアプリケーション群によって使用される実行可能な関数のライブラリである。DLLは、いくつかのアプリケーションによって同時に使用されることが可能である。一部のDLLは、オペレーティングシステムを備え、あらゆるアプリケーションに利用可能である。他のDLLは、特定のアプリケーション用に書かれ、そのアプリケーションと一緒にロードされる。
サブシステムDLL群212は、アプリケーション群に機能を提供するAPI群のサポートを提供する。一実施形態では、APIは、WIN32である。共通オペレーティングシステム200は、API群を基本的なコンポーネントに制限する。共通オペレーティングシステム200によってサポートされる基本的なAPIセットには、メモリ管理のためのDLL群(KERNEL)216、グラフィカルデバイスインターフェース(GDI)218、ユーザインターフェース要素群(USER)220、およびセキュリティ−暗号化アプリケーション群(ADVAPI)222が含まれる。
KERNEL216は、アトム関数、通信ポートサポート、コンソールサポート、デバッグサポート、デバイスI/O、DLL関数、エラー処理、ファイルI/O、ファイルマッピング、ファイルシステム関数、ハンドル−オブジェクト関数、メールスロット、メモリ管理、各国語サポート、名前付きパイプ、プロセスおよびスレッド、リソース読み込み、ストリング、構造化例外処理、同期、システム情報、時刻関数、ツールヘルプ関数、ユニコードおよび文字セットを含む、多数の異なるメモリ管理関数をサポートする。
GDI218によってサポートされる関数には、次のオペレーティングシステム機能が含まれる。すなわち、ビットマップ、ブラシ、クリッピング、カラー、デバイスコンテキスト、塗りつぶされた図形、フォントおよびテキスト、線および曲線、メタファイル、パス、ペン、印刷、および領域である。
USER220は、次のオペレーティングシステム機能をサポートする。すなわち、ボタン関数およびメッセージ、キャレット(caret)管理、クリップボードサポート、コンボボックス関数、座標空間−変換関数、カーソル管理、ダイアログボックスメッセージ、動的データ交換、動的データ交換管理、編集コントロール、フック、アイコン読み込み、キーボードアクセラレータ、キーボード入力、リストボックスコントロール、メニューコントロール、ウインドウズメッセージおよびメッセージキュー、マウス入力、マルチディスプレイモニタサポート、マルチドキュメントインターフェース、ペインティングおよびドローイング、未加工(raw)の入力、四角形関数、リソース読み込み(アイコンなどの)、スクロールバー、文字列関数、システム情報関数、ログアウト、タイマ関数、ウインドウ管理、ウインドウクラス登録、およびウインドウプロパティ関数である。
次の関数が、ADVAPI222によってサポートされる。すなわち、アクセス検査、セキュリティ記述子関連関数、プロセス管理関数、レジストリ関数、サービス管理関数、システムシャットダウン関数、およびイベント追跡関数である。
ネットワーキングレイヤ214は、サブシステムDLL群212の中のアプリケーション群がネットワークと通信することができるようにネットワーク機能を提供する。ネットワーキングレイヤ214は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)スタック224、動的ホスト構成プロトコル(DHCP)クライアント226、自動プライベートIPアドレス指定(AutoIP)228、ドメインネームシステム(DNS)クライアント230、およびNetBT(ネットワーク基本入出力オペレーティングシステムオーバTCP/IP :network basic input output operating system over TCP/IP)232を含む。共通オペレーティングシステム200は、ネットワーキングレイヤ214を使用して、コアコンポーネントのネットワークプロパティを試験する。
TCP/IPスタック224は、インターネット上のホスト群を接続するための通信プロトコルを含む通常のTCP/IP動作をサポートする。TCP/IPは、ネットワークを介してデータを伝送することに関する標準である。TCP/IPスタック224は、現在のバージョンのIP(IPv4)、およびIPv6などの将来のIP世代を実装する。IPセキュリティ(IPSec)が、TCP/IPスタック224に組み込まれる。IPSecは、IPレイヤにおけるセキュリティで保護されたパケット交換をサポートするプロトコルのセットである。
TCP/IPスタック224は、ユーザデータグラムプロトコル(UDP)、インターネット制御メッセージプロトコル(ICMP)、およびアドレス解決プロトコル(ARP)を含む、いくつかのプロトコルを実装する。UDPは、IPネットワークを介してデータグラムを送受信する直接的なやり方を提供する。ICMPは、エラーメッセージ、制御メッセージ、および情報メッセージを含むパケットをサポートする。ARPは、IPアドレスを物理アドレスに変換する。TCP/IPスタック224は、IPマルチキャストもサポートする。
DHCPクライアント226は、DHCPサーバからネットワーク上のデバイス群に動的IPアドレスを割り当てるためのプロトコルを提供する。DHCPクライアント226は、マルチキャストグループアドレス割り当てを獲得するためのマルチキャストアドレス動的クライアントアプリケーションプロトコルを含む。AutoIP228は、DHCPサーバが利用可能でない場合に、DHCPクライアント226がIPアドレスを自動的に自己構成することができるように機能を提供する。DNSクライアント230は、ドメイン名をIPアドレスに変換する。
NetBT232は、ローカルエリアネットワーク(LAN)のための特別な関数を追加するAPIである。DNSサーバがネットワーク上で利用可能でない場合、他のコンピュータ群は、NetBT232を介するブロードキャスト名解決を介して探し出される。NetBT232は、NetBTインターフェースおよび名前解決を要するレガシアプリケーション群のサポートも可能にする。
DLL210、212、およびネットワーキングレイヤ214より上の共通オペレーティングシステム200のレイヤ群には、Winsock234、ログオンクライアント236、ローカルセキュリティ認証サーバ(LSASS)238、コンポーネントオブジェクトモデル(COM)240、ランタイムライブラリ(RTL)242、サービス制御マネージャ(SCM)モジュール244、セッション管理サーバ(SMSS)246、プラグアンドプレイ(PnP)マネージャ248、およびリモートプロシージャコール(RPC)250が含まれる。シェル252が、共通オペレーティングシステム200の最も外側のレイヤである。シェル252は、シェル252の代わりにアプリケーションを代用することができるため、オプションである。
Winsock234は、TCP/IPプロトコルを介して他のコンピューティングデバイスと通信することができるプログラム群を開発するためのAPIである。Winsock機能は、ほとんどすべてのコンピューティングデバイスがネットワークインターフェースを有するため、共通オペレーティングシステム200の中に含められる。
ログオンクライアント236は、ローカルユーザまたはネットワークユーザが、共通オペレーティングシステム200にログオンすることができるように機能を提供する。ログオンクライアント236は、ローカルセキュリティアカウントマネージャ(SAM)に対してユーザを認証した後、ユーザの身元を確定するのに必要とされる最小限の機能を含む。ログオンクライアント236は、ユーザがログオンすることをすべてのデバイスが要求するわけではないため、共通オペレーティングシステム200のオプションのコンポーネントである。
LSASS238は、暗号化やデジタル証明などのセキュリティアプリケーション群のための基本的機能を提供する。LSASS238は、SAMに対して認証を行い、ローカルログオン機能をサポートする。LSASS238は、ログオンクライアント236から認証要求を受け取り、適切な認証パッケージを呼び出して、アカウントの確認および検証を実行する。ログオンクライアント236に関連するユーザインターフェース(UI)が、ログオンクライアント/LSASSプロセスと対話して、ユーザをログインさせる。共通オペレーティングシステム200は、ローカルログオンに必要とされる最小限の数のセキュリティパッケージを使用して起動することができる。
COM240は、コンポーネントベースのアプリケーション群を構築するためのソフトウェアアーキテクチャである。COMオブジェクト群は、アプリケーション群、およびその他のコンポーネントがCOMオブジェクトの機能にアクセスすることを可能にするインターフェース群を公開する、それぞれが固有IDを有する別々のコンポーネントである。RLT242は、実行中にプログラムにバインドされるルーチンのライブラリを含む。SCMモジュール244は、サービスの開始と停止を制御する。SCMモジュール244は、DHCP226およびDNS230がサービスとして動作するため、必要である。
SMSS246は、複数のサブシステムセッションおよびユーザセッションを管理するためのセッションマネージャである。PnPマネージャ248が、検出されたハードウェアを制御するのに必要とされるドライバ群のプラグアンドプレイインストールをサポートする。PnPマネージャ248は、ハードウェア関連機能であるが、アーキテクチャ固有ではない。PnPマネージャ248は、一部のデバイスがPnP対応ではないため、オプションのコンポーネントである。
RPC250は、1つのコンピュータ上のプログラムが、サーバコンピュータ上のコード、または同一のコンピュータ上の異なるプロセス内のコードを実行することを可能にするプロトコルである。RPC250を使用すると、システム開発者は、サーバのための特別な手続きを開発する必要がない。クライアントプログラムは、適切な引数を有するメッセージをサーバに送信し、サーバは、実行されたコードの結果を含むメッセージを戻す。
共通オペレーティングシステム200は、コンポーネント化試験、およびコンポーネントベースのユニット試験のための開発ツールとして使用することができる。コンポーネント化は、コンポーネント間の依存関係を理解し、減少させて、オペレーティングシステムをそれほどモノリシックではなくすることに関わる。コンポーネントグループ化は、オペレーティングシステムをモノリシックシステムからコンポーネント化されたシステムに変換するのに役立つフレームワークを提供することにより、オペレーティングシステムの保守のしやすさ(serviciability)を向上させる。共通オペレーティングシステム200は、コンポーネント化されたシステムの非常に信頼できる基礎オペレーティングシステムレイヤを提供する。
共通オペレーティングシステム200は、コンポーネントグループが上に置かれる基礎オペレーティングシステムレイヤを定義することにより、コンポーネントグループを作成する。コンポーネントのグループ化が、慣用のオペレーティングシステムのモノリシック構造を解消する。オペレーティングシステムのどのレイヤ上にコンポーネントが置かれているかに依存して、そのコンポーネントがより上位のレイヤのコンポーネントに依存しないように、ヘッダの適切なサブセットを提供することができる。
共通オペレーティングシステムを作成するためのプロセスを、図3を参照して説明する。共通オペレーティングシステムは、オペレーティングシステムコンポーネント間の依存関係を管理することによって作成される。プロセスは、ブロック300で始まり、標準のオペレーティングシステムが、多数の互いに依存するコンポーネントを有する。ブロック310で、各コンポーネントの機能を特定することにより、コンポーネント定義が提供される。処理は、ブロック320に進む。
ブロック320で、オペレーティングシステムのモノリシック構造内における各コンポーネントの位置を特定することにより、コンポーネント間の依存関係が明らかにされる。処理は、ブロック330に進む。
ブロック330で、目標シナリオを可能にするための意味のあるビルディングブロックを表すコンポーネントグループが、識別される。各グループのコンポーネントは、共通の依存関係を共有する。コンポーネントグループの作成は、コンポーネント間の依存関係を解消する。例えば、USER、GDI、およびKERNEL DLLのそれぞれの中のコンポーネントがすべて、シェルの中の別のコンポーネントに依存することが可能である。この例では、シェルの中でコンポーネントグループ(例えば、新たなDLL)を作成することにより、3つの依存関係が解消される。新たなDLLは、3つのコンポーネントを実行するのに要求される最小限の数のAPIを含む。このため、各コンポーネントは、新たなDLLの中のAPIのサブセットを使用して実行される。別の実施形態では、より上のレベルの依存関係がもはや存在しないようにソースコードを変更することにより、コンポーネント間の依存関係が解消される。処理は、ブロック340に進む。
ブロック340で、コンポーネントグループ間の依存関係規則が確立される。依存関係規則は、各コンポーネント、および各コンポーネントグループにいずれの依存関係が適切であるかを判断する。依存関係規則は、オペレーティングシステムコンポーネント間に存在する依存関係の数を最小限に抑える。処理は、ブロック350に進む。
ブロック350で、コンポーネントグループ間の依存関係規則が実施される。依存関係規則実施は、コンポーネントが望ましくない依存関係を有することを防止する。依存関係規則実施は、DLL群の効率的な使用を確実にする。処理は、ブロック360で終了する。
以上の明細書、例、およびデータが、本発明の構成の製造および用法の完全な説明を提供する。本発明の趣旨および範囲を逸脱することなく、本発明の多数の実施形態を実施することができるので、本発明は、本明細書に添付した特許請求の範囲に存する。
100 コンピューティングデバイス
104 処理装置
106 システムメモリ
108 オペレーティングシステム
110 アプリケーション
112 プログラムデータ
114 着脱式のストレージ
116 固定式のストレージ
118 入力デバイス
120 出力デバイス
122 通信接続
124 他のコンピューティングデバイス
204 カーネル
206 デバイスドライバ
208 ファイルシステム
212 サブシステムDLL
214 ネットワーキング
236 ログオン
252 シェル

Claims (13)

  1. 共通オペレーティングシステムのためのプログラムであって、
    オペレーティングシステムコンポーネントとハードウェアデバイスの間でインターフェースを提供するハードウェア抽象化レイヤと、
    前記ハードウェア抽象化レイヤに依存し、前記オペレーティングシステムコンポーネントにサービスを提供するカーネルと、
    前記カーネルに依存し、オペレーティングシステムアプリケーションを実行するための関数のライブラリを含むオペレーティングシステムダイナミックリンクライブラリと、
    前記カーネルに依存し、アプリケーションプログラミングインターフェースが基本オペレーティングシステムコンポーネントに制限されるように、該アプリケーションプログラミングインターフェースをサポートするサブシステムダイナミックリンクライブラリレイヤと、
    前記カーネルに依存し、オペレーティングシステムアプリケーションのネットワーク通信機能をサポートするネットワーキングレイヤとを含み、
    前記カーネル、前記オペレーティングシステムダイナミックリンクライブラリ、前記サブシステムダイナミックリンクライブラリレイヤ、および前記ネットワーキングレイヤは、前記オペレーティングシステムコンポーネント間の依存関係の数を最小限にするように構成されることを特徴とするプログラム
  2. 前記カーネルは、
    記憶媒体からデータを読み込むファイルシステムと、
    前記ハードウェアデバイスを制御するためのデバイスドライバと
    を含むことを特徴とする請求項に記載のプログラム
  3. 前記アプリケーションプログラミングインターフェースは、
    メモリ管理のためのダイナミックリンクライブラリと、
    グラフィカルデバイスインターフェースと、
    ユーザインターフェース要素と、
    通信プログラムと、
    セキュリティ−暗号化アプリケーションと
    を含むことを特徴とする請求項に記載のプログラム
  4. 前記ネットワーキングレイヤは、
    伝送制御プロトコル/インターネットプロトコル(TCP/IP)スタックと、
    動的ホスト構成プロトコルクライアントと、
    自動プライベートインターネットプロトコルアドレス指定と、
    ドメインネームシステムクライアントと、
    ネットワークベーシック入出力オペレーティングシステムオーバTCP/IPとを含むことを特徴とする請求項に記載のプログラム
  5. ネットワーキングレイヤは、前記オペレーティングシステムコンポーネントのネットワークプロパティを試験することを特徴とする請求項に記載のプログラム
  6. ユーザが共通オペレーティングシステムにログオンすることを可能にするための機能を提供するログオンクライアントをさらに含むことを特徴とする請求項に記載のプログラム
  7. セキュリティアプリケーションの基本機能を提供するローカルセキュリティ認証サーバをさらに含むことを特徴とする請求項に記載のプログラム
  8. コンポーネントベースのアプリケーションを構築するためのソフトウェアアーキテクチャを提供するコンポーネントオブジェクトモジュールをさらに含むことを特徴とする請求項に記載のプログラム
  9. 実行中にプログラムにバインドされるルーチンのライブラリを含むランタイムライブラリをさらに含むことを特徴とする請求項に記載のプログラム
  10. オペレーティングシステムサービスの管理を提供するサービス制御マネージャモジュールをさらに含むことを特徴とする請求項に記載のプログラム
  11. 複数のユーザセッションを管理するセッション管理サーバをさらに含むことを特徴とする請求項に記載のプログラム
  12. デバイスドライバのプラグアンドプレイインストールをサポートするプラグアンドプレイマネージャをさらに含むことを特徴とする請求項に記載のプログラム
  13. プロセスが別個のプロセス内のコードを呼び出し可能なリモートプロシージャコールインフラストラクチャをさらに含むことを特徴とする請求項に記載のプログラム
JP2011209350A 2004-02-20 2011-09-26 共通オペレーティングシステムのためのプログラム Pending JP2011258242A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/783,781 US7444621B2 (en) 2004-02-20 2004-02-20 Method and system for providing a common operating system
US10/783,781 2004-02-20

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2005042392A Division JP2005235221A (ja) 2004-02-20 2005-02-18 共通オペレーティングシステムを提供するための方法およびシステム

Publications (1)

Publication Number Publication Date
JP2011258242A true JP2011258242A (ja) 2011-12-22

Family

ID=34861332

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2005042392A Pending JP2005235221A (ja) 2004-02-20 2005-02-18 共通オペレーティングシステムを提供するための方法およびシステム
JP2011209350A Pending JP2011258242A (ja) 2004-02-20 2011-09-26 共通オペレーティングシステムのためのプログラム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2005042392A Pending JP2005235221A (ja) 2004-02-20 2005-02-18 共通オペレーティングシステムを提供するための方法およびシステム

Country Status (5)

Country Link
US (1) US7444621B2 (ja)
EP (1) EP1669858A3 (ja)
JP (2) JP2005235221A (ja)
KR (1) KR101130370B1 (ja)
CN (1) CN1673957B (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8121338B2 (en) * 2004-07-07 2012-02-21 Directsmile Gmbh Process for generating images with realistic text insertion
US7739660B2 (en) * 2006-03-31 2010-06-15 Sap Ag Code management in a distributed software development environment
US8972532B2 (en) * 2006-06-30 2015-03-03 Ca, Inc. Providing hardware configuration management for heterogeneous computers
US7890724B2 (en) 2006-12-29 2011-02-15 Sandisk Corporation System for code execution
US7890723B2 (en) 2006-12-29 2011-02-15 Sandisk Corporation Method for code execution
US8578332B2 (en) * 2007-04-30 2013-11-05 Mark Murray Universal microcode image
US9454384B2 (en) * 2007-07-05 2016-09-27 Microsoft Technology Licensing, Llc Custom operating system via a web-service
KR100961451B1 (ko) * 2008-01-04 2010-06-09 (주)가민정보시스템 휴대용 저장장치 및 상기 휴대용 저장장치를 이용하는 응용프로그램 구동 방법
US20090217259A1 (en) * 2008-02-26 2009-08-27 Microsoft Corporation Building Operating System Images Based on Applications
US8191075B2 (en) 2008-03-06 2012-05-29 Microsoft Corporation State management of operating system and applications
US8468366B2 (en) 2008-03-24 2013-06-18 Qualcomm Incorporated Method for securely storing a programmable identifier in a communication station
US8171276B2 (en) * 2008-06-10 2012-05-01 International Business Machines Corporation Minimal startup mode for performing multiple-reboot configuration
JP5343489B2 (ja) * 2008-09-29 2013-11-13 日本電気株式会社 コンピュータシステム、およびレガシーアプリケーション実行方法、およびプログラム
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US10089119B2 (en) * 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8806190B1 (en) 2010-04-19 2014-08-12 Amaani Munshi Method of transmission of encrypted documents from an email application
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8903705B2 (en) 2010-12-17 2014-12-02 Microsoft Corporation Application compatibility shims for minimal client computers
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
EP2821918A4 (en) * 2012-03-01 2015-12-16 Nec Corp SYSTEM CONSTRUCTION PROCEDURE CREATING DEVICE, SYSTEM CONSTRUCTION PROCEDURE CREATING METHOD, AND PROGRAM
CN102662670B (zh) * 2012-04-05 2014-12-03 林添孝 一种场景式无核嵌入式实时操作系统的实现方法
CN103440337B (zh) * 2013-09-09 2017-01-11 百度在线网络技术(北京)有限公司 Api兼容性扫描方法和api兼容性扫描装置
US9148775B2 (en) 2013-09-27 2015-09-29 Microsoft Technology Licensing, Llc Multivariant mobile operating system configuration
US9185136B2 (en) 2013-11-28 2015-11-10 Cyber-Ark Software Ltd. Correlation based security risk identification
US20150186377A1 (en) * 2013-12-27 2015-07-02 Google Inc. Dynamically Sharing Intents
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
CN105657562A (zh) * 2014-11-10 2016-06-08 乐视致新电子科技(天津)有限公司 一种实现卡拉ok应用的系统和方法
US9948760B2 (en) 2015-06-26 2018-04-17 Honda Motor Co., Ltd. System and method for controlling vehicle network functions with version control
CN105610952A (zh) * 2015-12-31 2016-05-25 西安航天动力研究所 一种基于通用组件的远程应用程序调用系统及方法
US10637864B2 (en) * 2016-05-05 2020-04-28 Ca, Inc. Creation of fictitious identities to obfuscate hacking of internal networks
US10515187B2 (en) 2016-06-29 2019-12-24 Symantec Corporation Artificial intelligence (AI) techniques for learning and modeling internal networks
CN106250113A (zh) * 2016-07-18 2016-12-21 百富计算机技术(深圳)有限公司 一种应用开发平台
US20200356885A1 (en) 2019-05-10 2020-11-12 International Business Machines Corporation Service management in a dbms
CN112083959A (zh) * 2019-06-13 2020-12-15 中兴通讯股份有限公司 服务配置管理方法、装置、终端和计算机可读存储介质
CN111240752B (zh) * 2019-12-31 2021-08-17 北京元心科技有限公司 操作系统自适配方法及系统
US11093221B1 (en) * 2020-02-14 2021-08-17 Red Hat, Inc. Automatic containerization of operating system distributions
US11816451B2 (en) 2021-02-16 2023-11-14 Hcl Technologies Limited Method and system for identifying common requirements from applications

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2131406C (en) * 1993-09-21 2002-11-12 David D'souza Preemptive multi-tasking with cooperative groups of tasks
US5854932A (en) * 1995-08-17 1998-12-29 Microsoft Corporation Compiler and method for avoiding unnecessary recompilation
US5867710A (en) * 1995-09-05 1999-02-02 Motorola, Inc. Portable microkernel operating system verification and testing
US6075939A (en) * 1997-09-27 2000-06-13 Lynx Real-Trime Systems, Inc. Tightly coupled, scalable module based micro-kernel operating system architecture
DE69908121T2 (de) * 1998-03-23 2004-04-01 Microsoft Corp., Redmond Anwendungsprogrammierungsschnittstelle in einem betriebssystem
US6275893B1 (en) * 1998-09-14 2001-08-14 Compaq Computer Corporation Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system
US7140015B1 (en) * 1999-09-29 2006-11-21 Network Appliance, Inc. Microkernel for real time applications
TW498228B (en) * 1999-11-24 2002-08-11 Elegent Technologies Inc Self-contained network browser with diagnostic abilities
AU2001237703A1 (en) * 2000-06-01 2001-12-11 Aduva Inc. Virtual system configurator server for linux
US20020087734A1 (en) * 2000-12-29 2002-07-04 Marshall Donald Brent System and method for managing dependencies in a component-based system
US6993642B2 (en) * 2001-07-24 2006-01-31 Microsoft Corporation Method and system for creating and employing an operating system having selected functionality
US7133874B2 (en) 2001-12-13 2006-11-07 Microsoft Corporation Prototyping model for components of a software program
US6993746B2 (en) 2002-04-19 2006-01-31 Wind River Systems, Inc. Configuration tool for building a user application for multiple operating systems
US7111279B2 (en) * 2002-10-30 2006-09-19 Hewlett-Packard Development Company, L.P. Intercepting calls to common dialog functions

Also Published As

Publication number Publication date
CN1673957B (zh) 2010-05-12
US7444621B2 (en) 2008-10-28
KR101130370B1 (ko) 2012-03-27
EP1669858A2 (en) 2006-06-14
EP1669858A3 (en) 2007-08-29
KR20060042093A (ko) 2006-05-12
US20050187894A1 (en) 2005-08-25
JP2005235221A (ja) 2005-09-02
CN1673957A (zh) 2005-09-28

Similar Documents

Publication Publication Date Title
KR101130370B1 (ko) 공용 오퍼레이팅 시스템을 제공하기 위한 방법 및 시스템
US6871221B1 (en) Method and apparatus to manage network client logon scripts using a graphical management and administration tool
US8417796B2 (en) System and method for transferring a computing environment between computers of dissimilar configurations
EP2697714B1 (en) Deployment system for multi-node applications
KR100855853B1 (ko) 이미지-기반 소프트웨어 설치
US7774762B2 (en) System including run-time software to enable a software application to execute on an incompatible computer platform
US8775577B1 (en) System and method for configuration management service
US7814308B2 (en) Debugging applications under different permissions
US7992143B2 (en) Systems and methods of creating and accessing software simulated computers
KR100860447B1 (ko) 선택된 기능성을 갖는 오퍼레이팅 시스템 생성 및 이용을위한 방법 및 시스템
US20090328030A1 (en) Installing a management agent with a virtual machine
US20100058328A1 (en) Systems and methods for differential software provisioning on virtual machines having different configurations
US8429717B2 (en) Method for activating virtual machine, apparatus for simulating computing device and supervising device
JP2008112433A (ja) ディスクレス・コンピューティングプラットフォームにオペレーションシステムをインストールするシステム及び方法
KR20020035570A (ko) 자동적인 장치 드라이버 구성을 위한 방법, 시스템 및컴퓨터 판독 가능 저장 매체
JP2005149495A (ja) 非プラットフォーム固有の一意の識別子の生成
JP6469028B2 (ja) オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法
US8656384B2 (en) Standardized software application configuration
BRPI0618027A2 (pt) configuração de extensões isoladas e acionadores de dispositivo
JP2007535761A (ja) 抗タンパーコードを生成するシステム及び方法
TWI515658B (zh) 用於創建虛擬裝置之方法及系統
CN1696910B (zh) 用于对软件打补丁的方法和系统
US6842891B2 (en) Dynamic attributes for distributed test framework
WO2014188780A1 (ja) 情報処理装置及び特定方法
US20090249346A1 (en) Image forming apparatus, information processing apparatus and information processing method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121204

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130423