JP2006202290A - オペレーティングシステムのプリミティブとしてのアプリケーションオブジェクト - Google Patents

オペレーティングシステムのプリミティブとしてのアプリケーションオブジェクト Download PDF

Info

Publication number
JP2006202290A
JP2006202290A JP2006010195A JP2006010195A JP2006202290A JP 2006202290 A JP2006202290 A JP 2006202290A JP 2006010195 A JP2006010195 A JP 2006010195A JP 2006010195 A JP2006010195 A JP 2006010195A JP 2006202290 A JP2006202290 A JP 2006202290A
Authority
JP
Japan
Prior art keywords
application
operating system
state
identified
property
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
JP2006010195A
Other languages
English (en)
Inventor
Souren Aghajanyan
アガジャンヤン サーレン
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 JP2006202290A publication Critical patent/JP2006202290A/ja
Pending legal-status Critical Current

Links

Images

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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】アプリケーションを分析し、監視する方法を提供する。
【解決手段】アプリケーションオブジェクトを、オペレーティングシステムのプリミティブとして定義する。アプリケーションオブジェクトのIDプロパティが、オペレーティングシステムに関連する少なくとも1つのアプリケーションを識別し、アプリケーションオブジェクトのメタデータプロパティが、識別されたアプリケーションの挙動特性を宣言する。識別されたアプリケーションの動的状態を表すアプリケーション状態が、アプリケーションオブジェクトとアプリケーション状態の間の相互作用に関するセマンティクスを定義する。
【選択図】図1

Description

本発明の諸実施形態は、アプリケーション管理の分野に関する。本発明の諸実施形態は、詳細には、アプリケーションオブジェクトをオペレーティングシステムの第一級プリミティブ(first class primitive)として定義して、アプリケーションを管理しサービスするためのインフラストラクチャを提供することに関する。
従来のオペレーティングシステムは、ハードウェアを抽象化し、リソースを管理するための1組のサービスを提供する。たとえば、オペレーティングシステムは、基本的なアプリケーションプログラミングインターフェイスの指示に従って、メモリ、ファイル、ネットワーキングなどを露出させる。オペレーティングシステムは、それらのAPIに共通して使用される抽象概念(abstraction)を一般化することによって、他者が興味深いソフトウェア製品を作成することを可能にする。
しかし、オペレーティングシステムは、関連するアプリケーションの「制御」は行わない。言い換えれば、オペレーティングシステムは一般に、ユーザセキュリティおよびシステムポリシーの限界内で、アプリケーションが望むことを何でもできるようにさせ、そのアプリケーションは、それ自体の境界をどんな点についても(たとえば、物理的な点でも挙動の点でも)オペレーティングシステムに示さない。残念なことに、制御されていない欠陥のあるアプリケーションは、オペレーティングシステムを「破壊」し、システムを非常に不安定にすることもある。そのため、ユーザが、安定した使用可能なシステムを回復させるために、オペレーティングシステムを再インストールせざるを得なくなることもある。
アプリケーションがオペレーティングシステムの規則に従わないことも、システムの不安定さを招く。規則は自由に破ることができるので、アプリケーションが、オペレーティングシステムと混在してしまうこともある。同様に、アプリケーションとオペレーティングシステムの間で設定が共用され、相互に依存しているのが一般的である。したがって、それらの設定は、バイナリファイルよりも遥かに入り組んでいることもある。言い換えれば、従来のオペレーティングシステムは、アプリケーションに多くのことをさせすぎ、オペレーティングシステムと、相対的に監視がされず制限も課されていないアプリケーションとの間の定義されていない境界を、アプリケーション単位で効果的に守らせることができない。
残念ながら、システムアプリケーションを分析して、あるバイナリがオペレーティングシステムに属するのか、それとも特定のアプリケーションに属するのかを識別する決定論的な手法はない。同様に、オペレーティングシステムとアプリケーションの状態を分離する決定論的な手法もない。これらの問題は、従来のオペレーティングシステムに意味論的分離が欠落しているために複雑となり、その結果、オペレーティングシステムまたは他のアプリケーションに影響を及ぼすこともあるアプリケーションの変化などを効果的に追跡できないことになる。これらのすべての要因が、オペレーティングシステムを管理する際の極端な複雑さを生み、したがってアップグレード、マイグレーション、バックアップ、およびローミングを妨げ、システムが不安定になる可能性を高める。
さらに、状態を分離しようと試みるソリューションは、非常に複雑で、非決定論的であり、またいくつかの様々なヒューリスティックに基づいている。従来のオペレーティングシステムのコンテキストでは、インストールされたすべてのアプリケーションを正確に識別し、それらに一意の識別子を割り当てるのは、ほぼ不可能である。同様に、オペレーティングシステムの全体を通じてAPIをフックする(hook)ことによって、アプリケーションの互換性を確保しようとする試みは、煩雑で非効果的である。これらの問題を解決しようとする事後的な試みの1つとしては、ある種のオペレーティングシステムファイルを重要なファイルと指定し、次いでそれらの「重要な」ファイルが偶然にあるいはその他の原因で修正された場合には、その変更されたバイナリを復元しようと試みることが挙げられる。
上記に照らせば、アップグレード、マイグレーション、ローミングなどに対する消費者の不安を低減させる、システムアプリケーションを決定論的に分析し、監視する上での改善が望まれている。
本発明の諸実施形態は、アプリケーションをオペレーティングシステムに関連する論理オブジェクトとして定義することによって、従来技術における1つまたは複数の欠点を克服する。有利には、アプリケーションオブジェクト設計を第一級プリミティブとして確立することによって、セキュリティ、管理性、所有の総コストなどを改善するシナリオを可能にするインフラストラクチャを提供する。
たとえば、本発明の諸実施形態は、アプリケーションの状態(たとえば、その設定)を維持しながら、コンピュータ間でのアプリケーションのマイグレーションを実施する。本発明の諸態様は、異なるアプリケーションが同様の機能を有する場合に、ライセンスおよびバージョンに依存しないアプリケーションのマイグレーションを可能にし、さらには同じクラスからのアプリケーション間でのマイグレーションをも可能にする。さらに、本発明の諸実施形態は、モバイルコンピューティングおよびローミングを簡略化し、アプリケーション用の適応型セキュリティを提供する。
一実施形態では、オペレーティングシステムに関連する1つまたは複数のアプリケーションを管理する方法は、アプリケーションオブジェクトをオペレーティングシステムのプリミティブとして定義するステップを含む。この方法はまた、アプリケーションオブジェクトのIDプロパティを用いて、そのアプリケーションのうちの少なくとも1つを識別するステップと、アプリケーションオブジェクトのメタデータプロパティを用いて、識別されたアプリケーションの挙動特性(behavioral characteristics)を宣言するステップとを含む。
本発明の諸態様を実施するコンピュータ可読媒体は、オペレーティングシステムのプリミティブであるアプリケーションオブジェクトのIDプロパティと、そのアプリケーションオブジェクトのメタデータプロパティとを含む。IDプロパティは、オペレーティングシステムに関連する少なくとも1つのアプリケーションを識別し、メタデータプロパティは、識別されたアプリケーションの挙動特性を宣言する。コンピュータ可読媒体はまた、識別されたアプリケーションの動的状態を表す、アプリケーション状態(application state)を含む。
他の実施形態では、オペレーティングシステムに関連する1つまたは複数のアプリケーションを管理する方法は、アプリケーションオブジェクトをオペレーティングシステムのプリミティブとして定義するステップと、そのアプリケーションオブジェクトのIDプロパティを用いて、そのアプリケーションのうちの少なくとも1つを識別するステップとを含む。この方法はまた、識別されたアプリケーションの動的状態を表すアプリケーション状態を定義するステップを含む。この例では、アプリケーション状態は、アプリケーションオブジェクトとアプリケーション状態の間の相互作用に関するセマンティクスを定義する。
アプリケーションを管理する方法を実施するためのコンピュータ実行可能な命令を含むコンピュータ可読媒体が、本発明の他の態様を実施する。
代替として、本発明の諸実施形態は、他の様々な方法および装置を含んでいてもよい。
以下では、他の特徴の一部を指摘し、明らかにする。
添付の図面の全体を通じて、対応する参照符号が、対応する部分を示している。
ここで添付の図面を参照すると、図1には、本発明の諸実施形態による例示的なアプリケーションの抽象概念が示されている。図示したように、アプリケーションオブジェクト100は、4つのアイテムを、すなわちIDプロパティ102と、実行可能ファイル(executable)/データプロパティ104と、メタデータプロパティ106と、アプリケーション状態108とを備える。一実施形態では、アプリケーションオブジェクト100は、オペレーティングシステムの第一級プリミティブである(図3参照)。言い換えれば、オペレーティングシステムに関連する各アプリケーションは、論理オブジェクトとして扱われる。それによって、セキュリティ、管理性、所有の総コストなどを改善するシナリオを可能にするインフラストラクチャが提供される。
上述の通り、このオペレーティングシステムは、ハードウェアを抽象化し、リソースを管理するための1組のサービスを提供することができる。たとえば、オペレーティングシステムは、基本的なアプリケーションプログラミングインターフェイスの指示に従って、メモリ、ファイル、ネットワーキングなどを露出させる。この点に関して、オペレーティングシステムは、より複雑で厳格に構造化された抽象概念が構築される対象であるツールキットの働きをする。本発明の諸態様では、オペレーティングシステムを、アプリケーションが所在しそこで変換される環境とみなしている。すなわち、オペレーティングシステム設計は、アプリケーションのライフサイクルに焦点を当てたものである。この点から見ると、オペレーティングシステムは、単に制御されていないサービスを提供するのではなく、サービスの管理を行う。本発明の諸態様を利用するオペレーティングシステムは、引き続き一般性を提供するだけでなく、管理性や、互換性、セキュリティなどについて発生した問題を解決するための管理プロトコルも提供する。
本発明の諸実施形態に従ってオペレーティングシステムを再設定(re−orient)すると、オペレーティングシステムのベースレベルでの比較的複雑な抽象概念がサポートされる。ここでは、基本的なオペレーティングシステムオブジェクトに関する従来の水平的な表現から、任意の階層構成を有するオペレーティングシステムの抽象概念への偏向を想定している。したがって、従来のオペレーティングシステム設計では、アプリケーションを別々の明確な実体(essence)として定義しない。従来のオペレーティングシステム設計では、それ自体の境界を定めることすらしない。また、従来のオペレーティングシステムのコアは、システムに対する多くの制御を有しているが、アプリケーション単位の制御は有していない。本発明は有利には、オペレーティングシステムの複雑さを低減し制御するための自然な方法を提供する。
図1では、IDプロパティ102が、たとえばグローバルアプリケーション名前空間においてアプリケーションを一意に識別する。IDプロパティ102は、アプリケーションオブジェクト100に関して、たとえばグローバル一意識別子(GUID)がCOMオブジェクト空間に関して果たす役割と同じ役割を果たす。アプリケーションのIDプロパティ102は、比較的基本的な概念かもしれないが、それなしにはアプリケーションおよび状態ベースのシナリオの大部分(たとえばマイグレーション、ローミング、およびバックアップ)が実現可能にならないので、非常に重要である。IDプロパティ102は、アプリケーションの抽象概念すなわちアプリケーションオブジェクト100の様々な部分を接合する接着剤(glue)の働きをする。言い換えれば、IDプロパティ102は、特定の状態にどのアプリケーションオブジェクト100が関連しているのかを識別し、それによって新しい技術およびシナリオが可能になる。
この実施形態では、メタデータプロパティ106は、識別されたアプリケーションに関連する静的情報を含んでおり、そのアプリケーションの様々な挙動上の側面に関する宣言を提示する。たとえば、メタデータプロパティ106は、アプリケーションの意図の宣言、オペレーティングシステムの最小要件および最大要件、オペレーティングシステムの実際のサービスなどに関するマニフェストを提示する。同様に、実行可能ファイル/データプロパティ104は、静的情報を含む。この例では、実行可能ファイル/データプロパティ104は、識別されたアプリケーションの極めて重要な要素を、すなわちそのアプリケーションのバイナリを表す物理的な静的データを含む。一実施形態では、バイナリのサブセットが、アプリケーション実行のためのエントリポイントである。
引き続き図1について述べると、本発明の諸実施形態では、識別されたアプリケーションの動的状態(または設定)を表すアプリケーション状態108を定義する。この例では、アプリケーション状態108は、アプリケーションオブジェクト100とアプリケーション状態108の間の相互作用に関するセマンティクスを定義する。もちろんこの状態または設定は、アプリケーションオブジェクト100の存続期間中に変化することもある。アプリケーション状態100は、状態分離(state separation)、状態オブジェクトモデル、状態の一貫性、およびオブジェクトモデル変換の概念を定義し、それによってマイグレーションや、ローミング、バックアップなどの完全なシナリオが可能になる。
さらにアプリケーションオブジェクト100のメタデータプロパティ106について述べると、本発明の諸実施形態では、アプリケーションオブジェクト100に付随する極めて重要な静的情報を、メタデータプロパティ106内で維持する。メタデータプロパティ106は、アプリケーションオブジェクト100の諸要素と、アプリケーションオブジェクト100の意味論的な意味(semantic meaning)に関するキャリアとの間の接続リンクであり、アプリケーションオブジェクト100のすべての機能的側面およびそれ自体の挙動の管理も行う。一実施形態では、メタデータプロパティ106の内容が、初期アプリケーション状態108のテンプレートとして、たとえばアプリケーションベースのセキュリティ区域、アプリケーションの挙動宣言区域、アプリケーションプロパティ区域、アプリケーション拡張可能区域として定義される。図1は、様々なデータの中でもとりわけ、IDプロパティ102、メタデータプロパティ106、アプリケーション状態108を含む、本発明の諸態様を実施するコンピュータ可読媒体を表している。
決定論的システムと他のシステムとの違いは、決定論的システムには、厳格な概念および法則があり、このシステムではすべての現象およびそれ自体の諸側面が、システムの能力によって制限され、そのシステムの用語で記述できるという点である。オペレーティングシステムは、決定論的システムであり、したがってそれ自体の概念および規則を有しており、そこではオペレーティングシステム内で発生するあらゆる現象を、オペレーティングシステムの能力によって制限することができ、オペレーティングシステムの用語で記述することができる。本明細書では、オペレーティングシステムの用語で記述することができるアプリケーションの挙動上の諸側面に注目している。これらの用語は、オペレーティングシステムのリソース、オペレーティングシステムのサービス(ファイル、ソケットなど)、あるいはオペレーティングシステムがネイティブでサポートする他の任意の抽象概念である。
アプリケーションは、オペレーティングシステムの法則に従う環境で相互作用する。アプリケーションの挙動上の側面は、当然ながらオペレーティングシステムの法則に従っていなければならないが、これはオペレーティングシステムの能力によって制限され、オペレーティングシステムの用語で記述することができる。オペレーティングシステムの規則および法則の詳細さのレベルは、識別されたアプリケーションにおける現在のニーズに依存する。たとえば、一般用語(generic term)に関する1つの可能な定義を、オペレーティングシステムに対する異なるタイプのオブジェクトについての最小要件および最大要件(たとえば、アプリケーションAが、10〜50MB RAMディスクの10〜50MB、およびCPUの10%を必要とする)としてもよい。
オペレーティングシステムの用語の範囲を絞り込むために、広範な側面を最小要件および最大要件によって記述することもでき、それでも識別されたアプリケーションは、何の問題もなく動作することができる。これらの用語は、概略的であるかもしれないが、依然として非常に重要である。最小要件の用語は、アプリケーションを配備しあるいは実行する際の決定を行うのに極めて重要なことがあり得る。上限の用語は、サービス拒否(Denial−of−Service)の状況を回避するのに重要である。オペレーティングシステムは、これらの用語を定義し遵守させ、それによって用語の定義および実現のための完全なインフラストラクチャが提供される。
反対に、オペレーティングシステムは、オペレーティングシステムのイベントとイベントシーケンスの検証との間の時間依存性など、非常に詳細な用語を定義してもよい。
オペレーティングシステムオブジェクトに関する挙動の用語は、たとえば大容量記憶装置(容量、最小帯域幅、最大帯域幅に関する割当て量)、ネットワーキング(ファイアウォール、QoS(サービス品質)、最大帯域幅MBps)、プロセス(スレッドの数、スレッドの優先順位範囲(priority range)、リモートスレッド)、スケジューリング(確保されたプロセッサ使用率のパーセンテージ、優先順位)、メモリ(ワーキングセット、連続ブロックの割付けサイズ)であり得る。
オペレーティングシステムの概略的な用語と詳細な用語は、相互に排他的なものではなく、むしろ互いに相補的なものであり、大部分のアプリケーションニーズを満たすことができる簡略化されたモデルをクライアントに提供する。挙動上の諸側面は、関心のレベルに応じて概略的な用語で、あるいは詳細な用語で定義することができる。
挙動宣言の概念は、独立しており、スケジューリングの最適化、分散型のアプリケーションスケジューリング、要件に関するインストール時の形式的検証(install time formal verification)、挙動宣言のランタイム実行(runtime enforcement)など複数のシナリオで使用することができる。
オペレーティングシステムによって定義され、アプリケーションの挙動宣言に使用される1組の用語が、アプリケーションポリシーの基準を形成する。用語を使用することによって、アプリケーション管理のための非常にフレキシブルな基盤が作り出される。また、アプリケーションのIDプロパティ102のサポートをアプリケーション管理に加えると、アプリケーション管理は、さらにフレキシブルなものとなる。たとえば、ユーザは、download.comから取得したアプリケーションAについて、それがスパイウェアであった場合に備えてそのアプリケーションのネットワーキングを無効化することも含めて、非常に厳格な規則を割り当ててもよい。別の例を挙げれば、A社が、アプリケーションBに欠陥があることを発見する。A社は、その欠陥の調査中にアプリケーションBのセキュリティポリシーを無効にし、あるいはそれを強化することもでき、それによってアプリケーションの欠陥が悪用されるのが回避されるはずであるが、その問題が解決でき、そのクライアントが修正版を入手するまでは、機能が制限されることになる。
アプリケーションオブジェクト108の宣言挙動によって、オペレーティングシステムが、リソースおよびサービスの衝突をそれが発生する前に予測し、アプリケーション実行における所与のどの時間での衝突も決定論的に解決することが可能になる。それによって、ネットワーキングプロトコルで使用されるサービス品質の概念を、アプリケーションオブジェクト100の抽象概念のレベルへと一般化することも可能になる。
アプリケーション状態108に関して、識別されたアプリケーションおよびオペレーティングシステムの状態は、併存する傾向がある。そこでは重複が生じることもあり、一方のアプリケーションの状態が他方のアプリケーションによって変更されることもある。本発明の諸態様は、アプリケーション状態108を、アプリケーションオブジェクト100およびオペレーティングシステムとは別の独立したものとして確立する。アプリケーション状態108は、アプリケーションオブジェクト100の外部に存在し、その存続期間は、オペレーティングシステムおよび識別されたアプリケーション自体の存続期間とは無関係である。一実施形態では、アプリケーション状態108へのアクセスは、それに関連するアプリケーションを介して行われる。
一方のアプリケーションの状態は、恐らくは物理的にも他方のアプリケーションから分離される。アプリケーションは、他のアプリケーションの状態にアクセスできないはずである。オブジェクト指向設計(object−oriented design)の場合と同様に、オブジェクトが、他のオブジェクトのメンバに直接アクセスするべきではない。アプリケーション自体は、それ自体の状態について責任を負う。アプリケーションオブジェクト100が何らかの理由でアプリケーション状態108にアクセスしようとする場合、アプリケーション状態108は、不可分な(non−dividing)一体のオブジェクトとして予め定義された1組の責任(responsibility)を有する不透明オブジェクトとして現れるはずである。特定の状態108を有するアプリケーションオブジェクト100だけが、状態108を変更できるようにすべきである。その理由は、状態の一貫性を維持するためである。
状態の一貫性は、アプリケーションロジックが決定してよい。アプリケーション状態108は、アプリケーションオブジェクト100が使用するが所有はしない分離したエンティティとして存在すべきである。アプリケーション状態108の存続期間は、アプリケーションオブジェクト100の存続期間に依存しないはずであり、したがってアプリケーション状態108の一貫性は、アプリケーションオブジェクト100によってではなく、アプリケーション状態108自体によって決まる。すなわち、アプリケーションオブジェクト100およびアプリケーション状態108は、アプリケーションオブジェクトの状態のセマンティクスにおける用語で定義された明確な相互作用コントラクトを有する。かかる技術としては、XSDにデータスキーマについての一貫性を検証するだけではなく、データ自体の一貫性をも検証する方法を加えた技術を挙げることができる。
状態の意味論的一貫性に関して、オブジェクト指向設計では、開発者は、オブジェクトを実装する場合、所与のどの時間でも確実にオブジェクトの状態が一貫しているようにし、また、かかる制御を行うために、オブジェクトの状態が、オブジェクト自体を除くいかなる物によっても変更されないようにする。オブジェクトの状態のあらゆる変化は、制御可能でなければならず、特定のオブジェクトについて予め定義された一貫性の概念に従っていなければならない。別の例では、多くのビジネスアプリケーションでは、クライアントは、データベースを直接は変更せず、むしろデータベースの整合性を制御し、アプリケーションとデータベースの間の意味論的リンクを体現するストアドプロシージャを作成し使用する。
同様に、アプリケーション状態108は、特定のアプリケーションオブジェクト100についてだけ意味をなし得る個別化された(personalized)データオブジェクトモデルを露出する。このオブジェクトモデルは、アプリケーションオブジェクト100とアプリケーション状態108の間の相互作用に関するセマンティクスおよびコントラクトを定義する。このオブジェクトモデルは、所与のどの時間でも状態の一貫性を保証する。状態108は、単なる記憶域ではなく、オブジェクトモデルの一貫性を保証するロジックを用いるアクティブデータベースである。
アプリケーションオブジェクト100とアプリケーション状態108の間の相互作用と、オペレーティングシステムとアプリケーション状態108の間の相互作用は、2つの異なる作用である。オペレーティングシステムは、レジストリの場合のように値のレベルで操作するのではなく、状態108を不透明で一体型のデータとして扱う。この実施形態では、オペレーティングシステムおよび他のすべてのアプリケーションが必ずしも特定の状態に関するセマンティクスを理解しているわけではなく、したがって、オペレーティングシステムおよび他のすべてのアプリケーションは、状態を変更する能力がなくても、かかる状態を不透明なものとして扱うはずなので、状態108は、不透明である。
状態108は、分離されており、予め定義されたアプリケーションを除くどのエンティティからも到達不可能である。予め定義されたアプリケーションオブジェクト100だけが、状態を変更することができるようにしてもよい。他のエンティティは、状態108を不透明で不可分な一体型のデータとして扱う。アプリケーションオブジェクト100とそのアプリケーション状態108の間の相互作用は、状態108自体が定義した、意味論的に正しく一貫したデータオブジェクトモデルに基づいて起こる。状態108は、それが定義した用語でそれ自体の一貫性を保証する。
アプリケーション状態108は、アプリケーションのIDプロパティ102と、したがって同じIDプロパティ102を有するアプリケーションオブジェクト100に関連する。というのも、特定のアプリケーション状態108は、他のアプリケーションにとって何ら意味論的な意味をもたないからである。
アプリケーションオブジェクト100だけがアプリケーション状態108のセマンティクスを理解しており、その特定のアプリケーション状態108に関連するアプリケーションオブジェクト100だけがアプリケーション状態108を変更することができるので、アプリケーションのIDプロパティ102とアプリケーション状態108との関連は、非常に重要である。他のどんなアプリケーションの状態の変化も、識別されたアプリケーションの状態108に影響を及ぼさない。
アプリケーション状態108の実装には、次のような問題がある。すなわち、アプリケーション状態スキーマのサポート、内容の一貫性検証ロジックのサポート、データオブジェクトモデルのサポート、および補助記憶装置のサポートについての問題である。
アプリケーション状態108を不透明オブジェクトとして扱うと、同じバージョンの同じアプリケーション同士のマイグレーションおよびローミングの実装を可能にする、多くのシナリオが可能となる。しかし、製品には多数の異なるバージョンが存在し、各バージョンには、アプリケーション状態108に関するそれ自体の定義がある。アプリケーション状態の点で同様の意味論的な意味をもちながらも、それらのアプリケーション状態のオブジェクトモデルは異なっている可能性が高い、文書処理アプリケーションなど同じタイプの製品に、複数のカテゴリが存在する。両方のアプリケーションが、同様の目的、および同一でないにせよ同様の特徴を有することもある。これは、各アプリケーションのアプリケーション状態108が同様の意味論的な意味をもち、重複することがあることを意味する。したがって、どちらのアプリケーション状態108でも同じ意味をもつ複数の設定(たとえば、デフォルトのフォント、デフォルトのページレイアウト、デフォルトの言語、デフォルトのカラー)が、存在することもある。しかし、ここでの問題は、それらのアプリケーションが異なるオブジェクトモデルをもち、アプリケーション状態の一貫性について異なる意味をもつ可能性が高いことである。本発明の諸実施形態は、有利には、あるバージョンから別のバージョンへの、さらには異なる製品間でのマイグレーションおよびローミングさえも可能にする。
あらゆるバージョンのアプリケーションオブジェクト100は、アプリケーション状態108の厳格に定義されたオブジェクトモデルを扱い、このオブジェクトモデルは、非常に様々なセマンティクスを有している。同じアプリケーションの異なる2つのバージョンに由来するアプリケーション状態108オブジェクトが、あるいは異なる製品に由来するアプリケーション状態108オブジェクトでさえ、意味論的に重複してもよい。これによって、2つのアプリケーション状態の間に意味論的な重複がある場合に、あるアプリケーション状態108から別のアプリケーション状態108への変換を定義することが可能になる。
同様に、本発明の諸態様は特に、モバイルコンピューティングに有益である。たとえば、ユーザが、アプリケーションをモバイルドライブにインストールする。翌日、そのユーザIが、そのアプリケーションを使用して遠隔地で文書を作成するのを望むとする。アプリケーション状態108を用いると、ユーザIが、ライセンスを有効化し、ショートカットを追加し、カスタマイズ設定を変更することなどが可能になる。ユーザIのアプリケーションがリモートマシン上に存在した痕跡がない場合でも、カスタマイズ設定は、次回の使用のために記憶されることになる。
さらに、アプリケーション状態108があれば、完全にモバイル型の記憶装置が、すなわち文書専用ではなく、アプリケーションがインストールされた全機能搭載型の(full functional)ドライブが可能になり、さらに良いことには、ホストオペレーティングシステム上で仮想化することができるアプリケーションを備える完全なオペレーティングシステムを含むことさえできる。
アプリケーション状態108の変換は、「データオブジェクトモデル」の変換を意味し、したがってここでの問題は、あるオブジェクトモデルから別のオブジェクトモデルへの変換を定義することができるかどうかである。
状態の変換、あるいはデータオブジェクトモデルの変換は、関連する2つのアプリケーション状態108のセマンティクスを深く理解することによって達成されるものであり、したがって一般的にオペレーティングシステムレベルで達成できるものではない。さらに、かかる部分的な意味論的マッピングは、アプリケーション状態108が、自己完結型であり、オブジェクトモデルにおける一貫性の制御についての定義とは無関係のオブジェクトエンティティである場合に実現可能である。アプリケーション状態108は、定義された1組の責任を有する一体のオブジェクトとして、異なるアプリケーション状態108の間での変換を記述することができる。アプリケーション状態108は、特定のアプリケーション状態108からの意味論的に正しく一貫した設定の変換を宣言することができる。変換は、非常に複雑なこともあるが、それでも、たとえばXMLの変換技術および/または制限付きの組込み型.NETコードによって、データの変換を行うことができる。
アプリケーション状態108の概念およびプロパティを完全に記述すれば、新たに多くの重要なシナリオが可能になる。アプリケーションオブジェクト100およびオペレーティングシステムから状態を分離することによって、アプリケーション状態108の破損が回避される。データオブジェクトモデルおよび一貫性の規則によって、識別されたアプリケーションに状態データを処理する際のバグがある場合にも、状態の一貫性が維持される。状態の変換を、アプリケーションオブジェクト100の基本的な時効消滅しない責任として追加し、そのための必要なインフラストラクチャを提供することによって、異なるバージョン間での、さらには異なる製品間でのマイグレーションやローミングなど、驚くべきシナリオが可能になる。オペレーティングシステムおよび各種ツールは、不透明オブジェクトの場合と同様にアプリケーション状態108を扱うことができる。状態のマイグレーションや状態のローミングなどのシナリオでは、状態を不透明オブジェクトとして扱うことができ、このことは、実装の点から見て非常に単純明快な実装方法(状態の結合と分離について、単純にコピー操作をするだけの非常に決定論的な小ロジック(minor logic))であることを意味する。
かかる手法により、それを実現するのに簡単で単純明快な方法を用いて、従来のマイグレーションにおける極端な複雑さ、不完全さ、および非決定論的な方法を克服することが可能になる。アプリケーション状態108のマイグレーションは、既存のスクリプトエンジンを使用して作成することが可能である。
アプリケーションベースのセキュリティの概念は、「アプリケーションがなぜ想定される以上のことをできるようにすべきなのか」という疑問から生まれた。アプリケーションベースのセキュリティの目標は、アプリケーションに対するオペレーティングシステムによる個別化されたアクセス制御および使用制御を提供することである。従来のオペレーティングシステムは、アプリケーション用のセキュリティコンテキストを、現在ログオンしている(current logged)ユーザに基づいて構築する。しかし、このセキュリティコンテキストは、細分性が悪いので、しばしばアプリケーションに関する権限が不必要に高くなる。ユーザは直観的に、あるアプリケーションがオペレーティングシステムおよび/または他のアプリケーションを害することはないと信用する。従来技術と比較すると、本発明のこの実施形態は、どのような副次的作用も防止し、あるいは少なくともそれを監視する。
個別化されたセキュリティコンテキストまたはアプリケーションベースのセキュリティコンテキストには、ユーザコンテキスト、アプリケーションセキュリティ宣言、およびアプリケーションポリシーからなる三本柱(triple alliance)がある。アプリケーションベースのセキュリティには、動的なセキュリティコンテキストのプロパティがあり、これは、単にログオンユーザごとに静的なセキュリティコンテキストではなく、各アプリケーションごとに変わり得る。アプリケーションベースのセキュリティには、セキュリティポリシーを変更することを求める動的な要求を処理し、アプリケーションの細分性に関する状況要件に適応する能力も関連する。デフォルトのアプリケーションポリシーによって、ユーザが「管理者」権限を有する場合でも、アプリケーションが何らかの形でオペレーティングシステムおよびシステム上のそれ以外の何かを害することが防止される。
セキュリティ制御の概念はその後、セキュリティコンテキストの概念およびセキュリティ宣言の概念に拡張される。セキュリティには、アクセス制御に加えて、使用制御も関連する。アクセス制御は、オペレーティングシステムオブジェクトへのアクセスを制御するシステムである。アクセス制御を用いると、オペレーティングシステムオブジェクトへのアクセスを許可し、拒否し、あるいは制限することも可能になる。しかしその一方で、アクセス制御を用いても、アプリケーションがどのようにオブジェクトを使用するのかを制御することが可能になるわけではない。
アクセス制御は、オペレーティングシステムの特定のオブジェクトにアクセスできる能力を識別されたアプリケーションに付与し、あるいは付与しない概念である。しかし、オブジェクトへのアクセスを許可した後、アクセス制御は、どのような形でもオペレーティングシステムオブジェクトの使用制御は行わない。アクセス制御は、3つの基本的なカテゴリに分けて区別することができ、現時点では大抵、ACLセキュリティの概念をその拠り所とすることができる。ACLセキュリティの概念には、たとえば、システム(権限、ユーザコンテキスト)、記憶装置へのアクセス(ファイルシステム、レジストリ、状態、WinFS)、およびネットワーキング(ソケット)がある。
多くのユーザは、自身が動作させているマシン上の管理者グループの一部であり、使用可能な管理者権限を用いてその作業の大部分を行う。カレントユーザに与えられたのと同じセキュリティ権限をサードパーティのアプリケーションに不必要に割り当てることは、避けるべきである。オペレーティングシステムは、アプリケーションにそれが必要とするよりも多くの自由を与えるべきではない。オペレーティングシステムのアプリケーションポリシーによって、不明なアプリケーションについてのセキュリティを制限することができる。アプリケーションオブジェクト100および/またはアプリケーションポリシーが、オペレーティングシステムにそれらがネットワーキングを必要としていないことを宣言によって知らせた場合、オペレーティングシステムは、アプリケーションがネットワークアクセスを行うことができないようにすべきである。
たとえば、オペレーティングシステムは、一般的ポリシーとして、アプリケーションオブジェクト100がそれ自体のバイナリを、あるいは他のどのアプリケーションのバイナリを変更することも許可すべきではない。システムは、ウイルスに感染した場合、アプリケーションのバイナリを変更する可能性が高い。アプリケーションは、ほとんど例外なく、実際にアプリケーションのバイナリへの書込みアクセス(write access)を有する必要がある。引き続き上記の例を挙げると、A社は、アプリケーションBに欠陥があることを発見する。A社は、その欠陥の調査中にアプリケーションBのセキュリティポリシーを無効にし、あるいはアプリケーションBのセキュリティコンテキストを強化することもでき、それによってアプリケーションの欠陥が悪用されるのが回避されるはずであるが、クライアントが修正版を入手するまでは、機能が制限されることになる。
使用制御は、オペレーティングシステムのオブジェクトの挙動に関する様々な側面の質的な制御を可能にし、オブジェクトに許可されるアクセスを追跡する概念である。アプリケーションの挙動宣言に関して上述したように、あらゆるアプリケーションは、それ自体の挙動をオペレーティングシステムが定義した用語で記述することができる。使用制御は、用語を、現セキュリティコンテキストに照らして、アプリケーションの挙動宣言に関して定義された通りに制御し検証する責任を負う。
たとえば、アプリケーションAは、ある大容量のファイルFに対する読取り専用のアクセス権を有する。ファイルへのアクセスが許可されると、アプリケーションAは、集中的に途切れなくファイルFから読取りを行い、ディスクの入出力帯域幅を著しく減少させ、CPUのパフォーマンスに影響を及ぼす。従来のオペレーティングシステムは、アプリケーションAが帯域幅の大部分を占有するのを制限することができない。小型のアプリケーションでも、膨大な入出力を伴えば、マシンが暫くの間応答不能になることもある。したがって、オペレーティングシステムの制御を新たな品質レベルへと高めるのに役立つ使用制御の概念を、導入することが望まれている。使用制御は、オペレーティングシステムオブジェクトの様々な挙動上の側面の使用を、そのオブジェクト自体が定義した用語で制御する技術である。従来の入出力オブジェクトについては、これを割当て量概念の一般化と見ることができる。
使用制限の概念は、ファイルオブジェクトの例を用いて明確にすることができる。簡略化のために、ファイルオブジェクトが「最小帯域幅」および「最大帯域幅」の挙動用語をサポートするものと仮定する。アプリケーションの現セキュリティコンテキストは、アプリケーションの挙動宣言、アプリケーションポリシー、およびユーザコンテキストの組合せである。アプリケーションAの現セキュリティコンテキストは、「最小帯域幅」および「最大帯域幅」の用語のいくつかの具体値minbおよびmaxbを有する。使用制御は、アプリケーションAには、ファイルFにアクセスするための「最小帯域幅」minbを保証し、オペレーティングシステムには、アプリケーションAが「最大帯域幅」maxbを超えることはないことを保証する。また、使用制御は、オペレーティングシステムが必要とする場合、「最大帯域幅」を「最小帯域幅」まで縮小することもできる。
別の例では、アプリケーションがCPU使用率の少なくとも10%を確保する必要がある(これはメタデータを使用してオペレーティングシステムに知らせることができる)場合、オペレーティングシステムは、そのアプリケーションが配備されるときは、それ自体のポリシーに照らしてその検証を行うことができ、そのアプリケーションが実行されるときは、現在のオペレーティングシステムの状態に照らしてその検証を行うことができる。管理者がCPUの95%をSQLサーバに割振り済みであり(5%はSQL管理用アプレットなど他のアプリケーションのために確保される)、したがってアプリケーションを配備することさえも無意味である場合、かかる検査は、非常に有益である。
本発明の別の態様は、形式的検証に関するものである。アプリケーションオブジェクト100には、可能な限り完全なさらなる意図の宣言があることが好ましい。オペレーティングシステムの責任は、特定のアプリケーションのマニフェスト(すなわち、1組の宣言)がそのオペレーティングシステムのアプリケーションポリシーに従っているかどうか形式的に検証することである。たとえば、アプリケーション「ABC」がユーザに関するデータを会社に報告する場合、アプリケーション「ABC」は、その特定の意図を宣言する必要があり、したがってアプリケーションポリシーに照らしてそれを形式的に検証することができ、そうでない場合はより厳格なデフォルトのポリシーが適用されることになる。
形式的検証は、本質的にオペレーティングシステムのための法則実施エンジン(law enforcement engine)であり、アプリケーションポリシーによって定義された法則が、アプリケーションオブジェクト100のインストール時、および/またはアプリケーションの実行中に、アプリケーションのメタデータプロパティ106に基づいて実施される。これによって、問題が実際に起こる前にそれを検出し解決することが可能になる。形式的検証は、アプリケーションオブジェクト100のインストール中に、またアプリケーションオブジェクト100の実行前、および実行中に行うことができる。
たとえば、あるアプリケーションがCPU使用率の少なくとも10%を確保する必要がある場合、オペレーティングシステムは、アプリケーションが配備されるときは、ポリシーに照らしてその検証を行うことができ、アプリケーションが実行されるときは、現セキュリティコンテキストに照らしてその検証を行うことができる。しかし、一方でSQLサーバがCPUの95%を割り振られて走っている場合、アプリケーションを実行し、あるいは配備することさえも、あまり意味がない。リソースの割振りの衝突を、実行の前に、さらにはインストールの前でさえ検出することができる。
次に、アプリケーションポリシーおよび管理について述べると、アプリケーションオブジェクト100のメタデータプロパティ106は、アプリケーションの異なる側面をオペレーティングシステムが定義した用語で記述する。かかる用語の1つのタイプを、オペレーティングシステムオブジェクトの特定の側面に対する最小要件および最大要件としてもよい。オペレーティングシステムは、オペレーティングシステムの様々な側面を定義し記述する、かかる複数の変数をもつことができる。オペレーティングシステムの性質を定義する1組の変数、概念、および規則をすべて調節しなければならない。これらの変数の値および範囲は、再計算するのが困難であり、またこれらに定数値(const value)を割り当てるも困難なので、調節しなければならない。したがって、これらの変数を監視し、調整し、これらに関する規則を定義する、オペレーティングシステムの用語および規則の管理概念を有することが望まれている。かかる概念が、「アプリケーションポリシー」である。
たとえば、1つの規則は、アプリケーションAがポートBへのアクセスを閉じることでよく、アプリケーションA内でのある問題をそれが修正されるまで緩和するために、この規則を、ユーザが作成し、あるいはサービスによって引き渡すこともできる。
これらのポリシーは、オペレーティングシステム上でインストールされ、あるいは実行されるアプリケーションに対する最小要件を記述することができる。これらのポリシーは、アプリケーションをインストールし、あるいは実行する前に、予め定義されたリストを検査することができる。これらのポリシーは、オペレーティングシステムおよび顧客の利益のために、非常に柔軟な規則を定義し実施することができる。アプリケーションポリシーは、オペレーティングシステムが何を追跡し、制御し、監査し、検証すべきかを定義する。
憲法が自然法則は変更せず、単に社会にさらなる恩恵をもたらす理由で、社会の極めて重要な機能に追加の規則を加えるのと同じように、アプリケーションポリシーは、オペレーティングシステムの概念および法則は変更せず、オペレーティングシステムの基本値(base values)を定義する。
たとえば、管理者は、アプリケーションを使用するためにポートを1つだけ開こうとする。異なるポートを必要とするどのアプリケーションも、実行が拒否され、あるいはインスールさえも拒否されることになる。さらに、管理者は、オペレーティングシステムに、アプリケーションABCがポートXにアクセスする度に、あるいはネットワーク/ディスクの帯域幅消費の閾値に近づく度に、その都度イベントのログをとらせようとする。
32ビットオペレーティングシステムの1つの大きな進歩は、処理レベルでのメモリの分離である。アプリケーションレベルでのバイナリ、状態、セキュリティ、およびポリシーの分離も、1つの重要な進歩である。オペレーティングシステムに定義および強制力が存在しないことは、従来のオペレーティングシステムにおける複雑で費用のかかる諸問題の直接の結果である。この点に関連して、本発明の諸態様は、オペレーティングシステムがアプリケーションの抽象概念を、すなわちアプリケーションオブジェクト100をその保護(cover)の下に置き、アプリケーションオブジェクトの抽象概念の定義およびその進歩の責任を負うことを可能にする。そのため、オペレーティングシステムが、アプリケーションの安全で制御可能な実行の責任を負うことが可能になる。
一般に、本発明の諸実施形態は、アプリケーションオブジェクト100の抽象概念を、中核概念としてオペレーティングシステムレベルで導入する。かかる抽象概念を導入すると、アプリケーションオブジェクト100の境界と、アプリケーション状態やセキュリティなどその主要な諸側面の概要が、明らかになる。アプリケーションセキュリティおよび状態は、従来技術における欠陥を克服するのに役立つ2つの主要なポイントである。アプリケーション状態108のモデルを用いると、マイグレーション、更新、ローミング、バックアップ、およびモバイルアプリケーションのシナリオのための決定論的で単純明快な方法が可能になる。柔軟なセキュリティモデルを導入すると、非常に柔軟なアプリケーション管理の基礎となる新たな概念、すなわち宣言挙動モデル、アプリケーションベースのセキュリティ、形式的検証、およびアプリケーションポリシー(すべて後述する)に基づく、安全で信用できる実行時環境が可能になる。
一体型のアプリケーションオブジェクト100の抽象概念を用いると、新しい支援技術(たとえば、ライセンス、サービス、およびエラーレポート)によって比較的簡単に拡張を行うことが可能になる。アプリケーションオブジェクト100の責任を拡大すると、識別されたアプリケーション自体がそれを認識していない場合でも、抽象概念の特徴が配備されるとすぐにアプリケーションに影響が及ぶ。たとえば、アプリケーションオブジェクト100の責任の一部として一般的ライセンスがサポートされると、当然すべてのアプリケーションに影響が及ぶことになる。たとえば、ソフトウェアのレンタル企業は、販売員が特定のアプリケーションを貸し出す際にライセンスの延長を手配することによって、アプリケーションの存続期間を制御することができる。
以下で詳細に説明するように、アプリケーションの概念を統一することによって、識別されたアプリケーションのモデルを、いくつかの概念(たとえば、データオブジェクトモデル、状態の一貫性、状態の分離、および状態の変換またはオブジェクトモデルの変換)に基づいて、別々の一体型のエンティティとして定義する、アプリケーション状態108を導入することが可能になる。さらに、本発明の諸実施形態による宣言挙動モデルは、識別されたアプリケーションの挙動上の諸側面に関する形式的宣言を提供する。アプリケーションベースのセキュリティは、識別されたアプリケーション用の個別化されたセキュリティコンテキストである。セキュリティ制御の諸側面としては、宣言挙動モデルのための制御エンジンであるアクセス制御および使用制御が挙げられる。形式的検証には、識別されたアプリケーションの様々な挙動上の側面を、インストール前、ならびに実行前および実行中に形式的に検証することが含まれる。一実施形態では、アプリケーションポリシーは、アプリケーションのためのオペレーティングシステム環境を決定する法則を作成し管理するエンジンである。
本発明の諸態様は、アプリケーションオブジェクト100の抽象概念を構築する次のような基本的な技術に関するものである。
・アプリケーション管理およびポリシー
・マイグレーション、ローミング、バックアップのサポート
・アプリケーションのパッケージ化および引渡し
・アプリケーションの配備
アプリケーションの配備を、オペレーティングシステムだけの特権としてもよい。アプリケーションの物理表現は一般に、実装の詳細であり、たとえばこれを、それ自体のファイル/状態の名前空間を提供し、オペレーティングシステムがアプリケーションのIDプロパティ102を再解析ポイントとしてあるいはアプリケーションリポジトリ/データベースでの配備として使用してその内部を見ることができる、単一のパッケージとしてもよい。
アプリケーションオブジェクト100の抽象概念の責任としては、以下のものがある。
・配備/除去
・発見可能性:これによって、配備されたアプリケーションを発見し、それらに関する詳細な情報を検索することが可能になる。
・サービス可能性:あらゆるアプリケーションは当然に、それを配備するには当然のことだが、自然な形でサービス可能でなければならない。
・実行:アプリケーションは、少なくとも1つまたは複数の実行可能なエントリを有していなければならない。
・コピー/移動:アプリケーションは、移動可能でなければならない。つまり、アプリケーションをコピーすることは、その状態も含めて単にアプリケーションの別のインスタンスを配備することにすぎない。
・状態のリセット/関連付け/分離:特定のアプリケーションとの状態の関連付けおよび分離を行う能力が、マイグレーション、ローミング、バックアップ、モバイルアプリケーション、分散型の状態(Distributive state)など次のシナリオのために非常に重要で決定的である。
・分散型の状態:この状態では、実状態の記憶域を、Webサービスとして提示することができ、またオペレーティングシステムが、かかる状態の記憶域をどのアプリケーションにも関連付けることができ、それによってグローバルローミングが可能になる。
あらゆるアプリケーションオブジェクト100は当然、上記の責任を継承する。これらの責任の実現は、アプリケーションの一部として与えられるメタデータプロパティ106によって大抵は管理される。
本発明の1つまたは複数の実施形態では、識別されたアプリケーションは、以下の特徴を有する。
・アプリケーションオブジェクト100の存続期間は、オペレーティングシステムの存続期間とは無関係である。(オペレーティングシステムのいかなる変更も、何らかの形でアプリケーションに影響を及ぼしてはならない。)
・アプリケーション状態108の存続期間は、オペレーティングシステムの存続期間およびアプリケーションオブジェクト100の存続期間とは無関係である。
・同じ物理マシンおよび同じオペレーティングシステム上で、同じアプリケーションを重複して配備する能力がある。
・あらゆる処理が、トランザクションベースでなければならない。
たとえば、本発明の諸実施形態は、アプリケーションの状態(すなわち、その設定)を維持しながら、コンピュータ間でのアプリケーションのマイグレーションを実施する。たとえば、あるアプリケーションがシングルユーザライセンスを有する場合、ユーザは、そのライセンスをアプリケーションと共に異なるマシンに移したいと思うことがあり、あるいは少なくとも、そのアプリケーションを異なるマシン上で容易にライセンスを取得することが可能な状態にしたいと思うこともある。この例では、本発明により、アプリケーション自体ではなくオペレーティングシステムがライセンスのサポートを維持することが、可能になる。
次に図2を参照すると、オペレーティングシステムに関連するアプリケーションを管理するための例示的な処理が、流れ図によって示されている。112から始まり、アプリケーションオブジェクトが、オペレーティングシステムのプリミティブとして定義される。114で、アプリケーションオブジェクトのIDプロパティが、そのアプリケーションを識別する。116で、本発明の図示した実施形態では、アプリケーションオブジェクトのメタデータプロパティを用いて、識別されたアプリケーションの挙動特性(たとえば、大容量記憶装置、ネットワーキング、プロセス、リソースのスケジューリング、メモリ)を宣言する。アプリケーションオブジェクトのメタデータプロパティは、アプリケーションの責任を定義する。このオペレーティングシステムは、有利には、アプリケーションの宣言された挙動特性がオペレーティングシステムの要件に従っているかどうかを検証することができる。118で、識別されたアプリケーションの動的状態を表すアプリケーション状態が、他のアプリケーションとは無関係に定義される。この例では、アプリケーション状態は、アプリケーションオブジェクトとアプリケーション状態の間の相互作用に関するセマンティクスを定義するデータオブジェクトモデルである。そのため、本発明の諸実施形態では、120で、識別されたアプリケーションへのアクセスを、アプリケーション状態によって表されるその動的状態に基づいて制御することが可能になり、アクセスが許可されたとき、122で、識別されたアプリケーションの使用を、その宣言された挙動特性に従って制御することが可能になる。さらに、本発明の諸実施形態により、識別されたアプリケーションのアプリケーション状態に従って、アプリケーションを更新し、それをあるコンピュータから別のコンピュータにローミングし、そのバックアップを取り、それをリモートコンピュータ上で実行することなどが可能になる。124で、アプリケーションオブジェクトの実行可能ファイル/プロパティ(executables property)を用いて、アプリケーション実行のためのエントリポイントが、定義される。本発明の一実施形態では、実行可能ファイル/プロパティは、識別されたアプリケーションの1つまたは複数のバイナリを表す静的データを含む。
図3には、コンピュータ130の形での汎用コンピューティング装置の一例を示してある。本発明の一実施形態では、コンピュータ130などのコンピュータは、本明細書において例示し説明したその他の各図で使用するのにも適している。コンピュータ130は、1つまたは複数のプロセッサまたは処理ユニット132、およびシステムメモリ134を有する。例示した実施形態では、システムバス136が、システムメモリ134を含めて様々なシステムコンポーネントをプロセッサ132に結合する。バス136は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含めていくつかのタイプのバス構造のうちの1つまたは複数の任意のバス構造を表す。限定ではなく例を挙げると、かかるアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニン(Mezzanine)バスとしても知られるPCI(Peripheral Component Interconnect)バスがある。
コンピュータ130は通常、少なくとも何らかの形のコンピュータ可読媒体を有する。コンピュータ可読媒体には、揮発性および不揮発性の媒体と、取外し可能(removable)および固定の(non−removable)媒体の両方があり、これは、コンピュータ130がアクセスできる任意の利用可能な媒体でよい。限定ではなく例を挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体、および通信媒体を備える。コンピュータ記憶媒体としては、コンピュータ読取り可能な命令や、データ構造、プログラムモジュール、他のデータなどの情報を記憶するための、任意の方法または技術で実装される、揮発性および不揮発性の、取外し可能および固定の媒体が挙げられる。たとえば、コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、DVD(digital versatile disk:デジタル多用途ディスク)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を記憶するのに使用でき、コンピュータ130がアクセスできる他の任意の媒体がある。通信媒体は通常、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、または他のデータを搬送波や他の移送メカニズムなど変調データ信号の形で実施し、任意の情報送達媒体を含んでいる。当業者は、その特徴の1つまたは複数がその信号内の情報を符号化するようなやり方で設定されまたは変更されるこの変調データ信号を熟知している。通信媒体の例としては、有線ネットワークや直接有線接続(direct−wired connection)などの有線媒体、ならびに音響(acoustic)、RF、赤外線、他の無線媒体などの無線媒体がある。上記の任意の組合せも、コンピュータ可読媒体の範囲に含まれる。
システムメモリ134は、取外し可能および/または固定の、揮発性および/不揮発性のメモリの形のコンピュータ記憶媒体を含む。例示の実施形態では、システムメモリ134は、読出し専用メモリ(ROM)138、およびランダムアクセスメモリ(RAM)140を含んでいる。通常、起動時などにコンピュータ130内の要素間で情報を転送するのに役立つ基本的なルーチンを含む基本入出力システム(BIOS)142が、ROM138に格納される。RAM140は通常、処理ユニット132が容易にアクセスでき、そして/または現在実行しているデータおよび/またはプログラムモジュールを含む。限定ではなく例示のため、図3には、オペレーティングシステム144、アプリケーションプログラム146、他のプログラムモジュール148、およびプログラムデータ150を示してある。
コンピュータ130は、他の取外し可能/固定の、揮発性/不揮発性のコンピュータ記憶媒体も含んでよい。たとえば、図3には、固定の不揮発性磁気媒体への読み書きを行うハードディスクドライブ154を示してある。図3には、取外し可能な不揮発性磁気ディスク158への読み書きを行う磁気ディスクドライブ156、およびCD−ROMや他の光媒体など取外し可能な不揮発性光ディスク162への読み書きを行う光ディスクドライブ160も示してある。この例示的な処理環境で使用できる他の取外し可能/固定の、揮発性/不揮発性のコンピュータ記憶媒体としては、それだけに限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが挙げられる。ハードディスクドライブ154、磁気ディスクドライブ156、および光ディスクドライブ160は通常、インターフェイス166などの不揮発性メモリインターフェイスによってシステムバス136と接続される。
上述の図3に示したドライブまたは他の大容量記憶装置およびそれに関連するコンピュータ記憶媒体は、コンピュータ130のコンピュータ読取り可能な命令、データ構造、プログラムモジュール、および他のデータの記憶を行う。たとえば図3では、ハードディスクドライブ154が、オペレーティングシステム170、アプリケーションプログラム172、他のプログラムモジュール174、およびプログラムデータ176を記憶するドライブとして示されている。これらのコンポーネントは、オペレーティングシステム144、アプリケーションプログラム146、他のプログラムモジュール148、およびプログラムデータ150と同じでもあるいは異なっていてもよいことに留意されたい。オペレーティングシステム170、アプリケーションプログラム172、他のプログラムモジュール174、およびプログラムデータ176には、本明細書で少なくともそれらが異なるコピーであることを示すために、異なる番号が付されている。
ユーザは、キーボード180やポインティング装置182(たとえば、マウス、トラックボール、ペン、タッチパッド)などの入力装置またはユーザインターフェイス選択装置を介して、コマンドおよび情報をコンピュータ130に入力することができる。他の入力装置(図示せず)としては、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを挙げることができる。これらおよび他の入力装置は、システムバス136に結合されているユーザ入力インターフェイス184を介して処理ユニット132と接続されるが、パラレルポートや、ゲームポート、ユニバーサルシリアルバス(USB)など他のインターフェイスおよびバス構造によって接続することもできる。モニタ188または他のタイプの表示装置も、ビデオインターフェイス190などのインターフェイスを介してシステムバス136と接続されている。コンピュータ130は、しばしばモニタ188に加えて、出力周辺インターフェイス(図示せず)を介して接続できるプリンタやスピーカなど他の周辺出力装置(図示せず)も含む。
コンピュータ130は、リモートコンピュータ194など1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ194は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の共通ネットワークノードでもよく、通常、コンピュータ130に関する上述の諸要素の大部分または全部を含む。図3に示した論理接続は、構内ネットワーク(LAN)196、および広域ネットワーク(WAN)198を含んでいるが、他のネットワークも含むことができる。LAN136および/またはWAN138は、有線ネットワークや、無線ネットワーク、それらの組合せなどでよい。かかるネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびグローバルコンピュータネットワーク(たとえば、インターネット)においてごく一般的である。
コンピュータ130は、構内ネットワーキング環境で使用される場合、ネットワークインターフェイスまたはアダプタ186を介してLAN196と接続される。コンピュータ130は通常、広域ネットワーキング環境で使用される場合、モデム178、またはインターネットなどのWAN198上での通信を確立する他の手段を含む。モデム178は、内部モデムでも外部モデムでもよく、ユーザ入力インターフェイス184または他の適当なメカニズムを用いてシステムバス136と接続される。ネットワーク環境では、コンピュータ130に関して示したプログラムモジュールまたはその一部分を、リモートメモリ記憶装置(図示せず)に記憶することができる。限定ではなく例示のため、図3には、リモートアプリケーションプログラム192をリモートメモリ装置上に常駐するプログラムとして示してある。図示したネットワーク接続は、例示的な接続であり、コンピュータ間の接続リンクを確立する他の手段を使用することもできる。
一般に、コンピュータ130のデータ処理装置は、様々な時間にコンピュータ130の様々なコンピュータ読取り可能な記憶媒体に記憶される命令手段によってプログラムされる。プログラムおよびオペレーティングシステムは通常、たとえばフロッピー(登録商標)ディスクやCD−ROM上に分散されている。これらのプログラムは、そうした媒体からコンピュータの補助記憶装置にインストールまたはロードされる。実行時は、これらのプログラムが、少なくとも部分的にはコンピュータの電子式の主記憶装置にロードされる。本明細書に記載した本発明の諸実施形態は、マイクロプロセッサまたは他のデータ処理装置に関して後述する諸ステップを実装するための命令またはプログラムを含む場合の、これらおよび他の様々なタイプのコンピュータ読取り可能な記憶媒体を含む。本発明の一実施形態はまた、本明細書に記載した方法および技術に従ってプログラムされた場合の、コンピュータ自体も含む。
本明細書では例示のため、プログラムおよびオペレーティングシステムなど他の実行可能なプログラムコンポーネントを離散的なブロックとして示す。ただし、かかるプログラムおよびコンポーネントは、様々な時間にコンピュータの様々な記憶装置コンポーネント内に所在し、コンピュータの1つ(または複数)のデータ処理装置によって実行されることを理解されたい。
コンピュータ130を含む例示的なコンピューティングシステム環境に関して説明してきたが、本発明の一実施形態は、他の多くの汎用または専用のコンピューティングシステム環境または構成でも動作可能である。このコンピューティングシステム環境は、本発明の諸実施形態の使用範囲または機能についての何らかの限定を示唆するものではない。さらに、このコンピューティングシステム環境は、例示的な処理環境に示したコンポーネントのうちの任意の1つまたはそれらの組合せに関して、何らかの依存性または要件を有するものと解釈されるべきではない。本発明の諸実施形態と一緒に使用するのに適し得る、よく知られているコンピューティングシステム、環境、および/または構成の例としては、それだけに限らないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド型またはラップトップ型装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルな大衆消費電子製品(consumer electronics)、携帯電話、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などが挙げられる。
本発明の諸実施形態を、1つまたは複数のコンピュータあるいは他の装置によって実行されるプログラムモジュールなどのコンピュータ実行可能な命令の一般的なコンテキストで説明することもできる。一般に、プログラムモジュールとしては、それだけに限らないが、特定のタスクを実行し、あるいは特定の抽象データ型を実装した、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造が挙げられる。本発明の諸実施形態を、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実行される、分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含めてローカルとリモートの両方のコンピュータ記憶媒体上に置くことができる。
ソフトウェアアーキテクチャのコンテキストでのインターフェイスには、ソフトウェアモジュール、コンポーネント、コード部分、あるいは他のコンピュータ実行可能な命令シーケンスがある。インターフェイスは、たとえば、第1のモジュールに代わってコンピューティングタスクを実行する第2のモジュールにアクセスする第1のモジュールを含む。一例では、第1および第2のモジュールとして、オペレーティングシステムによって提供されるようなアプリケーションプログラミングインターフェイス(API)、(たとえば、ピアツーピアのアプリケーション間通信用の)COM(コンポーネントオブジェクトモデル)インターフェイス、および(たとえば、Webサービス間での通信用の)XMI(extensible markup language metadata interchange format:XMLメタデータ交換形式)インターフェイスがある。
インターフェイスは、Java(登録商標)2 Platform,Enterprise Edition(J2EE)、COM、分散COM(DCOM)の例におけるような、密結合の同期実装でもよい。その代わりにあるいはそれに加えて、インターフェイスは、(たとえば、簡易オブジェクトアクセスプロトコル(simple object access protocol)を使用する)Webサービスにおけるような、疎結合の非同期実装でもよい。一般に、インターフェイスは、次の特徴、すなわち密結合、疎結合、同期、および非同期という特徴の任意の組合せを含む。さらに、インターフェイスは、標準プロトコル、独自(proprietary)プロトコル、あるいは標準および独自プロトコルの任意の組合せに準拠したものでもよい。
本明細書において説明したインターフェイスはすべて、単一のインターフェイスの一部でよく、また別々のインターフェイスあるいはその任意の組合せとして実装されてもよい。その機能を実現するために、インターフェイスをローカルで実行してもリモートで実行してもよい。さらに、インターフェイスは、本明細書において例示または説明した機能よりも多くの機能あるいは少ない機能を含んでもよい。
動作においては、コンピュータ130は、本明細書において説明した命令などのコンピュータ実行可能な命令を実行して、アプリケーションオブジェクト100をオペレーティングシステムのプリミティブとして定義することによって、オペレーティングシステム144、170に関連するアプリケーションを管理する。アプリケーションオブジェクト100のIDプロパティ102は、オペレーティングシステムに関連する少なくとも1つのアプリケーションを識別し、アプリケーションオブジェクト100のメタデータプロパティ106プロパティは、識別されたアプリケーションの挙動特性を宣言する。識別されたアプリケーションの動的状態を表すアプリケーション状態は、アプリケーションオブジェクト100とアプリケーション状態の間の相互作用に関するセマンティクスを定義する。
本明細書において例示または説明する方法の実行または実施の順序は、別段の指定がない限り、本質的なものではない。すなわち、本願の発明者らは、この方法の諸要素は別段の指定がない限り、任意の順序で実施してもよく、またこの方法は本明細書において開示される要素よりも多くのあるいは少ない要素を含んでもよいことを企図している。たとえば、ある特定の要素を別の要素よりも先に、あるいは同時に、あるいは後に実行しまた実施することが本発明の範囲内であることを企図している。
本発明の諸要素または諸実施形態を導入する場合、「a」、「an」、「the」、および「said」という冠詞は、その要素が1つまたは複数存在することを意味するものとする。「備える(comprising)」、「含む(including)」、および「有する(having)」という用語は、包含的なものであり、列挙した要素以外の追加の要素が存在し得ることを意味するものとする。
上記に鑑みれば、本発明のいくつかの目的が達成され、他の有利な結果が得られることが理解されるであろう。
上記の構成および方法には、本発明の諸実施形態の範囲を逸脱することなく様々な変更を加えることができるので、上記の説明に含まれ、添付の図面に示されるすべての事項は、限定的な意味でなく、例示的なものと解釈されるべきものとする。
本発明の一実施形態による、例示的なアプリケーションの抽象概念を示すブロック図である。 本発明の一実施形態による、オペレーティングシステム用のアプリケーションを管理するための例示的なプロセスの流れを示す流れ図である。 本発明の一実施形態を実装することができる適当なコンピューティングシステム環境の、例示的な一実施形態を示すブロック図である。
符号の説明
100 アプリケーション
102 ID
104 バイナリ/データ
106 メタデータ
108 状態
132 処理ユニット
134 システムメモリ
136 システムバス
144 オペレーティングシステム
146 アプリケーションプログラム
148 他のプログラムモジュール
150 プログラムデータ
166 不揮発性メモリインターフェイス
170 オペレーティングシステム
172 アプリケーションプログラム
174 他のプログラムモジュール
176 プログラムデータ
184 ユーザ入力インターフェイス
186 ネットワークインターフェイス
190 ビデオインターフェイス
192 リモートアプリケーションプログラム
196 構内ネットワーク
198 広域ネットワーク

Claims (20)

  1. オペレーティングシステムに関連する1つまたは複数のアプリケーションを管理する方法であって、
    アプリケーションオブジェクトを前記オペレーティングシステムのプリミティブとして定義するステップと、
    前記アプリケーションオブジェクトのIDプロパティを用いて、前記アプリケーションのうちの少なくとも1つを識別するステップと、
    前記アプリケーションオブジェクトのメタデータプロパティを用いて、識別された前記アプリケーションの挙動特性を宣言するステップと
    を含むことを特徴とする方法。
  2. 識別された前記アプリケーションの動的状態を表すアプリケーション状態を定義するステップをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記アプリケーション状態は、前記アプリケーションオブジェクトと前記アプリケーション状態の間の相互作用に関するセマンティクスを定義するデータオブジェクトモデルを備えることを特徴とする請求項2に記載の方法。
  4. 識別された前記アプリケーションの前記アプリケーション状態を定義する前記ステップは、識別された前記アプリケーションの前記アプリケーション状態を他のアプリケーションとは無関係に定義するステップを含むことを特徴とする請求項2に記載の方法。
  5. 識別された前記アプリケーションへのアクセスを、前記アプリケーション状態によって表されるその前記動的状態に基づいて制御するステップをさらに含むことを特徴とする請求項2に記載の方法。
  6. アクセスが許可されたとき、識別された前記アプリケーションの使用を、識別された前記アプリケーションの宣言された前記挙動特性に従って制御するステップをさらに含むことを特徴とする請求項5に記載の方法。
  7. 識別された前記アプリケーションの前記アプリケーション状態を、別のアプリケーションのアプリケーション状態へと変換するステップをさらに含むことを特徴とする請求項2に記載の方法。
  8. 識別された前記アプリケーションの前記アプリケーション状態に従って、下記のステップ、すなわち前記アプリケーションを更新するステップと、前記アプリケーションをあるコンピュータから別のコンピュータにローミングするステップと、前記アプリケーションのバックアップを取るステップと、前記アプリケーションをリモートコンピュータ上で実行するステップとのうちの1つまたは複数のステップを実施するステップをさらに含むことを特徴とする請求項2に記載の方法。
  9. 前記オペレーティングシステムにより、識別された前記アプリケーションの宣言された前記挙動特性がオペレーティングシステムの要件に従っているかどうかを検証するステップをさらに含むことを特徴とする請求項1に記載の方法。
  10. 前記アプリケーションオブジェクトの前記メタデータプロパティは、識別された前記アプリケーションを前記オペレーティングシステム上で実行するための要件を定義する1つまたは複数のアプリケーションポリシーを指定することを特徴とする請求項1に記載の方法。
  11. 前記アプリケーションオブジェクトの実行可能ファイル/プロパティを用いて、識別された前記アプリケーションの実行のためのエントリポイントを定義するステップをさらに含み、前記実行可能ファイル/プロパティが、識別された前記アプリケーションの1つまたは複数のバイナリを表す静的データを含むことを特徴とする請求項1に記載の方法。
  12. 前記アプリケーションオブジェクトの前記メタデータプロパティを用いて、識別された前記アプリケーションの責任を定義するステップをさらに含むことを特徴とする請求項1に記載の方法。
  13. 識別された前記アプリケーションの宣言された前記挙動特性は、下記の特徴、すなわち大容量記憶装置、ネットワーキング、プロセス、リソースのスケジューリング、およびメモリのうちの1つまたは複数の特徴を含むことを特徴とする請求項1に記載の方法。
  14. 1つまたは複数のコンピュータ可読媒体は、請求項1に記載の方法を実施するためのコンピュータ実行可能な命令を含むことを特徴とする請求項1に記載の方法。
  15. データ構造がそれに記憶されている1つまたは複数のコンピュータ可読媒体であって、
    アプリケーションオブジェクトのIDプロパティであって、前記アプリケーションオブジェクトは、オペレーティングシステムのプリミティブであり、前記IDプロパティは、前記オペレーティングシステムに関連する少なくとも1つのアプリケーションを識別するIDプロパティと、
    前記アプリケーションオブジェクトのメタデータプロパティであって、識別された前記アプリケーションの挙動特性を宣言するメタデータプロパティと、
    識別された前記アプリケーションの動的状態を表すアプリケーション状態と
    を備えることを特徴とするコンピュータ可読媒体。
  16. 識別された前記アプリケーションの実行のためのエントリポイントを定義する前記アプリケーションオブジェクトの実行可能ファイル/プロパティをさらに備えることを特徴とする請求項15に記載のコンピュータ可読媒体。
  17. 前記実行可能ファイル/プロパティは、識別された前記アプリケーションの1つまたは複数のバイナリを表す静的データを含むことを特徴とする請求項16に記載のコンピュータ可読媒体。
  18. 前記アプリケーションオブジェクトの前記メタデータプロパティは、識別された前記アプリケーションの責任を定義するデータを含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  19. オペレーティングシステムに関連する1つまたは複数のアプリケーションを管理する方法であって、
    アプリケーションオブジェクトを前記オペレーティングシステムのプリミティブとして定義するステップと、
    前記アプリケーションオブジェクトのIDプロパティを用いて、前記アプリケーションのうちの少なくとも1つを識別するステップと、
    識別された前記アプリケーションの動的状態を表すアプリケーション状態を定義するステップとを含み、前記アプリケーション状態が、前記アプリケーションオブジェクトと前記アプリケーション状態の間の相互作用に関するセマンティクスを定義することを特徴とする方法。
  20. 前記アプリケーションオブジェクトのメタデータプロパティを用いて、識別された前記アプリケーションの挙動特性を宣言するステップをさらに含むことを特徴とする請求項19に記載の方法。
JP2006010195A 2005-01-18 2006-01-18 オペレーティングシステムのプリミティブとしてのアプリケーションオブジェクト Pending JP2006202290A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/037,480 US20060161582A1 (en) 2005-01-18 2005-01-18 Application object as primitive of operating system

Publications (1)

Publication Number Publication Date
JP2006202290A true JP2006202290A (ja) 2006-08-03

Family

ID=36581470

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006010195A Pending JP2006202290A (ja) 2005-01-18 2006-01-18 オペレーティングシステムのプリミティブとしてのアプリケーションオブジェクト

Country Status (5)

Country Link
US (1) US20060161582A1 (ja)
EP (1) EP1681627A3 (ja)
JP (1) JP2006202290A (ja)
KR (1) KR20060083918A (ja)
CN (1) CN1808379A (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8001528B2 (en) * 2006-03-30 2011-08-16 Microsoft Corporation Organization of application state and configuration settings
WO2008073618A2 (en) * 2006-11-06 2008-06-19 Devicevm, Inc. Instant on platform
US20090165007A1 (en) * 2007-12-19 2009-06-25 Microsoft Corporation Task-level thread scheduling and resource allocation
US8479051B2 (en) * 2009-01-23 2013-07-02 Microsoft Corporation System and method for customized error reporting
US8627284B2 (en) * 2009-06-19 2014-01-07 Microsoft Corporation Managed system extensibility
JP5452125B2 (ja) 2009-08-11 2014-03-26 クラリオン株式会社 データ処理装置及びデータ処理方法
US9354852B2 (en) 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
US8650640B2 (en) 2011-02-24 2014-02-11 International Business Machines Corporation Using a declaration of security requirements to determine whether to permit application operations
CN102298537A (zh) * 2011-06-10 2011-12-28 宇龙计算机通信科技(深圳)有限公司 应用程序的迁移方法及系统
JP6000655B2 (ja) * 2012-05-30 2016-10-05 キヤノン株式会社 情報処理装置、情報処理装置の制御方法及びプログラム
KR101466944B1 (ko) * 2013-01-28 2014-12-03 주식회사 시큐아이 어플리케이션 데이터를 제어하는 방법 및 이를 위한 네트워크 디바이스
US9438560B2 (en) * 2014-12-31 2016-09-06 Symantec Corporation Systems and methods for automatically applying firewall policies within data center applications
US10530468B2 (en) * 2016-10-19 2020-01-07 Vector Launch Inc. State transfer among virtualized nodes in spaceborne or airborne systems
CN109117154A (zh) * 2017-06-22 2019-01-01 深圳优派汉王触控科技有限公司 一种自动刻录应用程序的方法和系统
US11874932B2 (en) * 2021-06-30 2024-01-16 International Business Machines Corporation Managing application security vulnerabilities

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5850518A (en) * 1994-12-12 1998-12-15 Northrup; Charles J. Access-method-independent exchange
US5600790A (en) * 1995-02-10 1997-02-04 Research In Motion Limited Method and system for loading and confirming correct operation of an application program in a target system
US6212628B1 (en) * 1998-04-09 2001-04-03 Teranex, Inc. Mesh connected computer
US7143421B2 (en) * 1998-09-09 2006-11-28 Microsoft Corporation Highly componentized system architecture with a demand-loading namespace and programming model
US6523166B1 (en) * 1998-09-21 2003-02-18 Microsoft Corporation Method and system for on-demand installation of software implementations
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6785887B2 (en) * 2000-12-27 2004-08-31 International Business Machines Corporation Technique for using shared resources on a multi-threaded processor
US7975239B2 (en) * 2003-12-17 2011-07-05 Palo Alto Research Center Incorporated System and method for providing metadata interaction and visualization with task-related objects
US7340469B1 (en) * 2004-04-16 2008-03-04 George Mason Intellectual Properties, Inc. Implementing security policies in software development tools

Also Published As

Publication number Publication date
EP1681627A3 (en) 2007-11-28
US20060161582A1 (en) 2006-07-20
CN1808379A (zh) 2006-07-26
EP1681627A2 (en) 2006-07-19
KR20060083918A (ko) 2006-07-21

Similar Documents

Publication Publication Date Title
JP2006202290A (ja) オペレーティングシステムのプリミティブとしてのアプリケーションオブジェクト
Tsai et al. Cooperation and security isolation of library OSes for multi-process applications
US7162509B2 (en) Architecture for distributed computing system and automated design, deployment, and management of distributed applications
EP3355226B1 (en) System call policies for containers
JP5009299B2 (ja) 分離されたエクステンションおよびデバイスドライバの構成
US8024564B2 (en) Automating configuration of software applications
Mayer et al. SELinux by example: using security enhanced Linux
US20050091192A1 (en) Dynamically identifying dependent files of an application program or an operating system
US20050091346A1 (en) Settings management infrastructure
EP1526429A2 (en) Operating system resource protection
US20090254899A1 (en) Method for virtualizing software applications
US20100077475A1 (en) Partial installation based on available privileges
US20160378348A1 (en) Methods and apparatus to manage inter-virtual disk relations in a modularized virtualization topology using virtual hard disks
Findlay et al. Bpfbox: Simple precise process confinement with ebpf
US7624131B2 (en) Type restriction and mapping for partial materialization
US9804789B2 (en) Methods and apparatus to apply a modularized virtualization topology using virtual hard disks
Le Sommer et al. A contract-based approach of resource-constrained software deployment
US10126983B2 (en) Methods and apparatus to enforce life cycle rules in a modularized virtualization topology using virtual hard disks
JP2006164285A (ja) プロセス間干渉除去
Bijon Constraints for attribute based access control with application in cloud IaaS
Findlay A Practical, Lightweight, and Flexible Confinement Framework in eBPF
Schlegel Trusted Implementation and Enforcement of Application Security Policies
ROSSI SELinux policies for fine-grained protection of Android apps
Jabłonski et al. Secure sandboxing solution for GNU/Linux
GB2442273A (en) Mechanism for allowing access to unsecured resources via a security engine using inverted security policies

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111216

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120706