JP5904018B2 - 情報処理装置、情報処理方法、並びにプログラム - Google Patents

情報処理装置、情報処理方法、並びにプログラム Download PDF

Info

Publication number
JP5904018B2
JP5904018B2 JP2012125920A JP2012125920A JP5904018B2 JP 5904018 B2 JP5904018 B2 JP 5904018B2 JP 2012125920 A JP2012125920 A JP 2012125920A JP 2012125920 A JP2012125920 A JP 2012125920A JP 5904018 B2 JP5904018 B2 JP 5904018B2
Authority
JP
Japan
Prior art keywords
application
application framework
framework
input
switching
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.)
Expired - Fee Related
Application number
JP2012125920A
Other languages
English (en)
Other versions
JP2013250851A5 (ja
JP2013250851A (ja
Inventor
中村 祐一
祐一 中村
尚史 新田
尚史 新田
制一 永尾
制一 永尾
貴広 岡山
貴広 岡山
大輔 中田
大輔 中田
朋樹 上原
朋樹 上原
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2012125920A priority Critical patent/JP5904018B2/ja
Priority to TW102116202A priority patent/TW201407472A/zh
Priority to RU2014147323A priority patent/RU2014147323A/ru
Priority to CN201380027226.4A priority patent/CN104350469A/zh
Priority to US14/394,527 priority patent/US9910698B2/en
Priority to PCT/JP2013/003296 priority patent/WO2013179621A1/en
Priority to BR112014029271A priority patent/BR112014029271A2/pt
Priority to EP13730946.4A priority patent/EP2856314B1/en
Publication of JP2013250851A publication Critical patent/JP2013250851A/ja
Publication of JP2013250851A5 publication Critical patent/JP2013250851A5/ja
Application granted granted Critical
Publication of JP5904018B2 publication Critical patent/JP5904018B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Description

本技術は、情報処理装置、情報処理方法、並びにプログラムに関する。詳しくは、複数のアプリケーションフレームワークを切り替えた処理を行うことができる情報処理装置、情報処理方法、並びにプログラムに関する。
アプリケーションフレームワーク(Application Framework)は、アプリケーションの開発に便利な機能を提供するミドルウェア群であり、1つのシステム上に、1つのアプリケーションフレームワークが存在し、動作することを前提に設計されている。従って1つのシステム上で複数のアプリケーションフレームワークを利用したい場合、装置の電源を一旦オフにし、再度オンにすることでアプリケーションフレームワークを切り替えるか、別プロセッサ及びハードウェアを用意し、それらを切り替えることでアプリケーションフレームワークを切り替えるか、または仮想マシンを利用する等の方法でアプリケーションフレームワークを切り替える必要があった。
特許文献1には、拡張性の高い電子機器を提供するとの課題をあげ、システムを拡張する時の困難さをとりのぞくために、実行中のアプリケーションの遷移を単位として、デバイスの排他制御設定の変更を管理することが記載されている。
特開2008-210398号公報
1つのシステム上に、1つのアプリケーションフレームワークが存在し、そのアプリケーションフレームワーク上でアプリケーションを動作させる場合、アプリケーションを、アプリケーションフレームワークに合わせ込んで設計する必要があった。このため、アプリケーションによっては、アプリケーションフレームワークに合わせ込むことが困難で、アプリケーションの開発や、動作確認などに時間やコストがかかってしまう。
本技術は、このような状況に鑑みてなされたものであり、複数のアプリケーションフレームワークを切り替え、各アプリケーションフレームワーク上で動作する複数のアプリケーションを利用できるようにするものである。
本技術の一側面の情報処理装置は、複数のアプリケーションフレームワークと、前記アプリケーションフレームワークを切り替える切り替え部とを備え、前記複数のアプリケーションフレームワークのうちの第1のアプリケーションフレームワークと、前記第1のアプリケーションフレームワーク上で動作する第1のアプリケーションと、前記第1のアプリケーションフレームワークとは異なる第2のアプリケーションフレームワークと、前記第2のアプリケーションフレームワーク上で動作する第2のアプリケーションとを備え、前記切り替え部は、前記第1のアプリケーションから、前記第2のアプリケーションフレームワークに切り替えが指示されたとき、前記第1のアプリケーションフレームワークから前記第2のアプリケーションフレームワークに、デバイスとの入出力先を切り替える
前記切り替え部は、前記複数のアプリケーションフレームワークと前記デバイスを1対1に接続されるように切り換えを行うようにすることができる。
前記切り替え部は、複数のアプリケーションのうちの所定のアプリケーションを不活性化し、他のアプリケーションを活性化する機能を担う部分と、前記複数のアプリケーションフレームワークのうちの所定のアプリケーションフレームワークをデバイスと切り離し、他のアプリケーションフレームワークと接続する機能を担う部分をそれぞれ有するようにすることができる。
前記切り替え部は、前記第1のアプリケーションから、前記第2のアプリケーションフレームワークに切り替えが指示されたとき、前記第1のアプリケーションを不活性化し、前記第2のアプリケーションを活性化するようにすることができる。
前記第1のアプリケーションは複数あり、前記切り替え部は、複数の前記第1のアプリケーションの1アプリケーションとして存在し、前記第1のアプリケーションとしての前記切り替え部は、前記デバイスからの入力を前記第2のアプリケーションフレームワークに転送するようにすることができる。
前記切り替え部は、前記第1のアプリケーションフレームワークの1機能として存在し、前記第1のアプリケーションフレームワークに含まれる前記切り替え部は、前記デバイスからの入力を、前記第2のアプリケーションフレームワークに転送するようにすることができる。
前記デバイスからの入力は、オペレーティングシステムに含まれる入力供給機能により、前記第1のアプリケーションまたは前記第1のアプリケーションフレームワークから、前記第2のアプリケーションフレームワークに供給されるようにすることができる。
前記入力供給機能は、uinputの機能であるようにすることができる。
前記第2のアプリケーションからの出力データは、前記第2のアプリケーションフレームワークを介して、記憶部に記憶され、前記記憶部に記憶された前記出力データは、前記第1のアプリケーションにより読み出され、前記第1のアプリケーションフレームワークを介して、前記デバイスに供給されるようにすることができる。
前記第2のアプリケーションが描画した描画データが、前記記憶部に前記第2のアプリケーションフレームワークを介して記憶され、前記記憶部に記憶された前記描画データが、前記第1のアプリケーションより読み出され、前記第1のアプリケーションフレームワークを介して、ディスプレイに供給されるようにすることができる。
前記第1のアプリケーションフレームワークは、カメラ機能に関するアプリケーションフレームワークであり、前記第2のアプリケーションフレームワークは、通信機能に関するアプリケーションフレームワークであるようにすることができる。
前記カメラ機能に関する前記第1のアプリケーションフレームワーク上で動作する前記第1のアプリケーションの処理により、ユーザからの入力操作に従って撮影された画像を、前記通信機能に関する第2のアプリケーションフレームワーク上で動作する前記第2のアプリケーションの処理により、他の装置に送信するようにすることができる。
本技術の一側面の情報処理方法は、複数のアプリケーションフレームワークのうちの第1のアプリケーションフレームワークと、前記第1のアプリケーションフレームワーク上で動作する第1のアプリケーションと、前記第1のアプリケーションフレームワークとは異なる第2のアプリケーションフレームワークと、前記第2のアプリケーションフレームワーク上で動作する第2のアプリケーションとを備える情報処理装置の情報処理方法において、前記第1のアプリケーションから、前記第2のアプリケーションフレームワークに切り替えが指示されたとき、前記第1のアプリケーションフレームワークから前記第2のアプリケーションフレームワークに、デバイスとの入出力先を切り替えるステップを含む。
本技術の一側面のプログラムは、複数のアプリケーションフレームワークのうちの第1のアプリケーションフレームワークと、前記第1のアプリケーションフレームワーク上で動作する第1のアプリケーションと、前記第1のアプリケーションフレームワークとは異なる第2のアプリケーションフレームワークと、前記第2のアプリケーションフレームワーク上で動作する第2のアプリケーションとを備える情報処理装置を制御するコンピュータに、前記第1のアプリケーションから、前記第2のアプリケーションフレームワークに切り替えが指示されたとき、前記第1のアプリケーションフレームワークから前記第2のアプリケーションフレームワークに、デバイスとの入出力先を切り替えるステップを含む処理を実行させる。
本技術の一側面の情報処理装置、情報処理方法、並びにプログラムにおいては、複数のアプリケーションフレームワークが備えられ、それらの複数のアプリケーションフレームワークが選択的に切り替えられる。
本技術の一側面によれば、複数のアプリケーションフレームワークを切り替えることが可能となる。また複数のアプリケーションフレームワークを切り替えることで、各アプリケーションフレームワーク上で動作する複数のアプリケーションを利用できるようになる。
情報処理装置の構成を示す図である。 アプリケーションフレームワークについて説明するための図である。 アプリケーションフレームワークについて説明するための図である。 アプリケーションフレームワークの接続について説明するための図である。 アプリケーションフレームワークに関する構成について説明するための図である。 アプリケーションフレームワークの切り替えについて説明するための図である。 アプリケーションフレームワークの切り替えについて説明するための図である。 アプリケーションフレームワークの切り替えについて説明するための図である。 アプリケーションフレームワークの切り替えについて説明するための図である。 アプリケーションフレームワークの切り替えについて説明するための図である。 アプリケーションフレームワークの切り替えについて説明するための図である。 アプリケーションフレームワークの切り替えについて説明するための図である。 入力時の処理について説明するための図である。 入力時の処理について説明するための図である。 入力時の処理について説明するための図である。 入力時の処理について説明するための図である。 入力時の処理について説明するための図である。 出力時の処理について説明するための図である。 出力時の処理について説明するための図である。
以下に、本技術を実施するための形態(以下、実施の形態という)について説明する。なお、説明は、以下の順序で行う。
1.情報処理装置の構成について
2.ソフトウェアスタック
3.複数のアプリケーションフレームワークの切り替えについて
4.排他制御について
5.インタフェースについて
6.アービタコアのアプリケーションフレームワークの切り替え処理について
7.アプリケーションの切り替えについて
8.アービタの構成について
9.起動時の処理について
10.アプリケーションフレームワークの切り替えの処理について
11.アプリケーションフレームワークの切り替え後の入力に関わる処理について
12.入力に関わる他の処理について
13.出力に関わる処理について
14.記録媒体について
[情報処理装置の構成について]
図1は、情報処理装置の構成を示す図である。ここでは情報処理装置10を例にあげて説明するが、情報処理装置10は、例えば、パーソナルコンピュータなどである。また情報処理装置10は、デジタルカメラなどの撮影装置や、テレビジョン受像機などの再生装置の一部分を構成し、組み込まれている装置とすることも可能である。
CPU(Central Processing Unit)21は、入出力インタフェース25および内部バス24を介して、情報処理装置10のユーザが、入力部26を用いて入力した各種指令に対応する信号を受け、入力された信号に基づいた各種処理を実行する。
ROM(Read Only Memory)22は、CPU21が使用するプログラムや演算用のパラメータのうちの基本的に固定のデータを格納する。RAM(Random Access Memory)23は、CPU21の実行において使用するプログラムやデータ、その実行において適宜変化するパラメータなどを格納する。CPU21、ROM22、およびRAM23は、内部バス24により相互に接続されている。
内部バス24は、入出力インタフェース25とも接続されている。入力部26は、例えば、キーボード、タッチパッド、ジョグダイヤル、ペンタブレット、あるいはマウスなどからなり、情報処理装置10のユーザがCPU21に各種の指令を入力するとき操作される。出力部27は、例えば、液晶表示部などのディスプレイで構成され、各種情報をテキスト、あるいはイメージなどで表示する。
記憶部28は、HDD(hard disk drive)などの記憶装置を含む構成とされ、CPU21によって実行されるプログラムや情報が記録または再生される。通信部29は、有線、あるいは、無線を介して、他の装置などと接続され、情報の授受を行う。ドライブ30には、必要に応じて磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどのリムーバブルメディア31が装着され、データの授受を行う。
これらの入力部26乃至ドライブ30は、入出力インタフェース25および内部バス24を介してCPU21に接続されている。
[ソフトウェアスタック]
次に、本実施の形態の動作環境について説明する。図2を用いて、図1を用いて説明した情報処理装置10のCPU21により実行されるソフトウェアプログラムにおけるソフトウェアスタックについて説明する。図中、より上方に示されるモジュールは、下方に示されるモジュールより上位の階層のものとされる。
図2に示したソフトウェアスタックは、デバイス(Device)11−1乃至11−M、デバイスドライバ(Device Driver)12−1乃至12−M、オペレーティングシステム(Operation System)13、アプリケーションフレームワーク(Application Framework)14、およびアプリケーション(Application)15−1乃至15−Nが含まれている。
デバイス11−1乃至11−Mは、例えば、入力部26を構成するキーボードやマウスなどや、出力部27を構成するディスプレイなどのハードウェアである。デバイスドライバ12−1乃至12−Mは、デバイス11−1乃至11−Mを動作させるのに必要なソフトウェアであり、ここではオペレーティングシステム13に同梱されているとして説明を続ける。また、デバイス11−1乃至11−Mやデバイスドライバ12−1乃至12−Mを個々に区別する必要がない場合、単に、デバイス11、デバイスドライバ12と記述する。他の記載も同様とする。
オペレーティングシステム13は、例えば、入力部26や出力部27を構成するマウス、キーボード、ディスプレイなどの周辺機器を動作させるためのソフトウェアであるデバイスドライバ12の管理や、各種の情報を記録する記憶部28の管理など、多くのアプリケーション15から共通して利用される基本的な機能を提供し、コンピュータシステム全体を管理するソフトウェアである。
アプリケーションフレームワーク14は、プログラミングにおいて、特定のオペレーティングシステムのためのアプリケーションの標準構造を実装するのに使われるクラスやライブラリの集まりである。アプリケーションフレームワーク14は、プラットフォームやアプリケーションの種類ごとに共通して必要とされるコードが予め用意されているため、アプリケーションを開発する際、固有の機能をフレームワークにはめ込んで実装していくだけで目的のアプリケーションを開発することができる。
図2に示すように、1つのシステムには、1つのアプリケーションフレームワーク14が存在し、そのアプリケーションフレームワーク14に合わせ込まれたアプリケーション15−1乃至15−Nが存在している。アプリケーションフレームワーク14は、デバイス11をカプセル化し、アプリケーション15に対してデバイスを抽象化し、通常は1つのシステム上に1つのアプリケーションフレームワーク14しか搭載されない。
アプリケーションフレームワーク14に適したアプリケーション15であれば、アプリケーションフレームワーク14に合わせ込んだ開発を行うことで、時間やコストを低減することができる。このことは、一方で、アプリケーションを開発する際、固有の機能をフレームワークにはめ込んで実装しなくては、目的のアプリケーションを開発することができないことを意味する。またこのことは、アプリケーションフレームワーク14に適していないアプリケーション15であると、アプリケーションフレームワーク14に合わせ込んだ開発を行うことで、時間やコストの点で無駄が生じる可能性がある。
そこで1つのシステム内に、複数のアプリケーションフレームワーク14を備え、それぞれのアプリケーションフレームワーク14に適したアプリケーション15を開発し、実装することができるようにすると、新たなアプリケーションの追加(機能の追加)などが容易になる。また複数のアプリケーションフレームワーク14を切り替えることで、それらのアプリケーションフレームワーク14上に位置する複数のアプリケーション15を選択的に利用することができるようになり、機能の充実などに役立つ。
そこで、1つのシステム内に複数のアプリケーションフレームワーク14が搭載され、それらの複数のアプリケーションフレームワーク14が選択的に切り替えられ、切り替えられたアプリケーションフレームワーク14上に位置するアプリケーション15を利用できるようにした場合のソフトウェアスタックの構成について説明する。
[複数のアプリケーションフレームワークの切り替えについて]
図3は、複数のアプリケーションフレームワーク14が1つのシステム内に搭載されている場合のソフトウェアスタックの構成を示す図である。図3に示したソフトウェアスタックには、アービタ(Arbiter)101、アプリケーションフレームワーク121、アプリケーション122−1乃至122−N、アプリケーションフレームワーク131、アプリケーション132−1乃至132−N、アプリケーションフレームワーク141、アプリケーション142−1乃至142−Nが搭載されている。
アービタ101は、アービタコア(Arbiter Core)102、プロセススイッチ(Process Switch)103、およびデバイスサーバ(Device Server)104を含む。デバイスサーバ104は、複数のデバイスドライバを管理し、図3に示した例では、グラフィックサーバ111、インプットサーバ112、サウンドサーバ113などが管理されている。
なお、図3に示した構成においては、図2に示したデバイス11、オペレーティングシステム13は図示を省略してある。
アプリケーション122−1乃至122−Nは、アプリケーションフレームワーク121に合わせ込まれたアプリケーションである。同様に、アプリケーション132−1乃至132−Nは、アプリケーションフレームワーク131に合わせ込まれたアプリケーションであり、アプリケーション142−1乃至142−Nは、アプリケーションフレームワーク141に合わせ込まれたアプリケーションである。
なおここでは、アプリケーション122、アプリケーション132、アプリケーション142は、それぞれN個あるとして図示したが、異なる個数であっても良い。また、図3においては、アプリケーションフレームワーク121、アプリケーションフレームワーク131、およびアプリケーションフレームワーク141の3個のアプリケーションフレームワークを図示し、以下の説明を続けるが、3個に限定されることを示す記載ではなく、他の個数であっても勿論良い。
図3に示した実施の形態のように、アプリケーションフレームワーク121,131,141を共存させることにより、それらのアプリケーションフレームワークに依存したアプリケーション122,132,142を1つのシステム内で動作できるようになる。また、そのようなことを可能とするために、アービタ101を設ける。以下の説明において、アプリケーションフレームワーク121,131,141のいずれかが対象とされている場合、アプリケーションフレームワークと記載する。また、アプリケーション122−1乃至122−N,132−1乃至132−N,142−1乃至142−Nのいずれかが対象とされている場合、アプリケーションと記載する。
アプリケーションフレームワーク121は、例えば、従来からあるカメラアプリケーションを動かすための、カメラ機能に特化したフレームワークである。カメラ機能とは、例えば、静止画像の撮影や再生、動画像の撮影や再生、ズーム、オートフォーカス機能などの機能のことである。
アプリケーションフレームワーク121は、このようなカメラ機能に特化したフレームワークであり、デジタルカメラのアプリケーションを開発するのに必要な機能を備えている。アプリケーション122は、このようなアプリケーションフレームワーク121の機能に特化したアプリケーションであり、カメラ機能を実現するためのアプリケーションである。
しかしながら、アプリケーションフレームワーク121は、例えば、ネットワークでの通信機能は有しておらず、そのような通信機能は、アプリケーションフレームワーク131などの、アプリケーションフレームワーク121とは異なるアプリケーションフレームワークが有する。ここでは、アプリケーションフレームワーク131が、ネットワークを介した通信を行う機能を有するとする。
アプリケーションフレームワーク131は、スマートフォンなどで用いられる通信機能が充実したアプリケーションフレームワークであり、インターネット上のホームページの閲覧や、クラウドへのアップロードなどの機能を有する。
このアプリケーションフレームワーク131上のアプリケーション132は、撮影画像をネットワークにアップロードするといったアプリケーションとすることができ、そのようなアプリケーション132を、アプリケーションフレームワーク131を用いて開発することは比較的容易である。
アプリケーションフレームワーク131は、アプリケーションフレームワーク121がデジタルカメラの撮影などに関する機能を有しているため、そのようなカメラ機能に関する機能を有する必要がなく、ネットワーク機能が充実されたアプリケーションフレームワーク131とすることが可能である。
このような異なる機能を有するアプリケーションフレームワークを、ある瞬間にシステム上で動作しているアプリケーションフレームワークを、他のアプリケーションフレームワークに切り替えるといったことができるようにする。例えば、ある瞬間ではアプリケーションフレームワーク121が有効であり、その間は アプリケーションフレームワーク121を用いたアプリケーション122が動作可能な状態にある(動作している)。そして、別の瞬間では アプリケーションフレームワーク131が動作可能な状態にある。このようなアプリケーションフレームワークの切り替えの制御をアービタ101が行う。このような切り替えは、アプリケーション側からの指示により行われる。
アービタ101のアービタコア102は、起動されているアプリケーションの指示に基づき、どのアプリケーションフレームワークを有効にするかを決定し、その決定に基づくアプリケーションフレームワークへの切り替えと、そのアプリケーションフレームワーク上で動作するアプリケーションへの切り替えを制御する。
アービタコア102は、動作中のアプリケーションフレームワークに休止を指示し、有効にするアプリケーションフレームワークに開始を指示し、デバイスサーバ104にシステム資源を使用するアプリケーションフレームワークを通知するといった一連の処理を行う。
デバイスサーバ104は、各アプリケーションフレームワークが利用するデバイスについて、切り替え要求に応じてどのシステムとデバイスを接続するかの排他処理を行う。この排他処理については、図4を参照して説明する。また、図5を参照して説明するように、アプリケーションフレームワークとシステム資源(ハードウェアのデバイス等)とのインタフェースも担う。
またデバイスサーバ104は、現在どのアプリケーションフレームワークが有効かの情報を持ち、入力デバイスの情報を現在有効なアプリケーションフレームワークへ配信し、出力デバイスの情報は、現在有効なアプリケーションフレームワークからの情報のみ出力するといった機能も有する。
また図6を参照して説明するように、アービタコア102は、アービタ101の中で、アプリケーションからの要求を基に、プロセススイッチ103とデバイスサーバ104を呼び出し、アプリケーションフレームワークの切り替えを行うモジュールでもある。
プロセススイッチ103は、図7を参照して説明するように、それぞれのアプリケーションフレームワークのアプリケーションを実行するためのプロセスを活性化・不活性化し、アプリケーションの実行主体を切り替えるモジュールである。
なおここでは、アービタ101が、アービタコア102、プロセススイッチ103、およびデバイスサーバ104から構成されるとして説明を続ける。しかしながら、アービタ101が、複数のアプリケーションフレームワークを、選択的に切り替えるための制御を行う構成であれば良く、図3に示すようにアービタコア102、プロセススイッチ103、およびデバイスサーバ104がそれぞれ独立して存在している構成に限定されるものではない。
[排他制御について]
まず、図4を参照し、デバイスサーバ104が行う、切り替え要求に応じてどのシステムとデバイスを接続するかの排他処理について説明する。デバイス、例えば、キーボードなどのデバイスは、通常、システム内に1つ存在するため、2つのアプリケーションフレームワークが同時に利用することはできない構成とされている。よって、1つのデバイスを2以上のアプリケーションフレームワークが同時に利用するようなことがないように、1つのデバイスに1つのアプリケーションフレームワークが接続されるような排他処理が行われる必要がある。
図4Aに示したように、アプリケーションフレームワーク121がインプットサーバ112に接続され、アプリケーションフレームワーク141がグラフィックサーバ111に接続されている状態を想定する。
なお、グラフィックサーバ111やインプットサーバ112は、アプリケーションフレームワーク121をクライアントとして捉えたときに、サーバとしての役割を果たすため、サーバとの名称を付けている。例えば、サーバとしてのグラフィックサーバ111は、後述するように、グラフィックデバイスドライバ161へのデータの供給を行うインタフェースの機能を有し、クライアントとしてのアプリケーションフレームワーク121は、グラフィックサーバ111の機能によりグラフィックデバイスドライバ161にデータを供給することができるように構成されている。
このようなサーバとクライアントの関係があるため、ここでは、グラフィックサーバ111やインプットサーバ112といったように、サーバとの記載を行う。
図4Aに示したような状況の場合、アプリケーションフレームワーク121とインプットサーバ112が1対1で接続され、アプリケーションフレームワーク141とグラフィックサーバ111が1対1で接続されている状態であるため、排他制御が正常に行われている状態である。
同様に、図4Bに示したように、アプリケーションフレームワーク131がグラフィックサーバ111に接続され、アプリケーションフレームワーク141がインプットサーバ112に接続されている状態を想定する。この場合、アプリケーションフレームワーク131とグラフィックサーバ111が1対1で接続され、アプリケーションフレームワーク141とインプットサーバ112が1対1で接続されている状態であるため、排他制御が正常に行われている状態である。
このように、アプリケーションフレームワークとデバイスサーバ104内のデバイスサーバは、1対1で接続されるように、デバイスサーバ104は、排他制御を行う。
[インタフェースについて]
次に、図5を参照し、アプリケーションフレームワークとシステム資源とのインタフェースについて説明する。図5に示すように、デバイスサーバ104内のグラフィックサーバ111とグラフィックデバイスドライバ161との間は、グラフィックデバイスインタフェース151によりデータのやり取りが仲介される。グラフィックデバイスドライバ161は、ディスプレイ171へのデータの出力を制御するドライバである。
デバイスサーバ104内のインプットサーバ112とインプットデバイスドライバ162との間は、インプットデバイスインタフェース152によりデータのやり取りが仲介される。インプットデバイスドライバ162は、キーボード172やマウス173からの入力を制御するドライバである。図示はしていないが、サウンドサーバ113もインタフェースを介してドライバとのデータのやり取りを行う。
アプリケーションフレームワークは、デバイスサーバ104内のグラフィックサーバ111やインプットサーバ112を、グラフィックデバイスドライバ161やインプットデバイスドライバ162のインタフェースとして用いる。すなわち、デバイスサーバ104は、インタフェースの機能を含むものとされ、ドライバとアプリケーションフレームワークを対応付ける機能を有する。
[アービタコアのアプリケーションフレームワークの切り替え処理について]
次に、図6を参照し、アービタコア102によるアプリケーションフレームワークの切り替えについて説明する。図6Aは、ある時点における接続状態を示す。アプリケーションフレームワーク121とグラフィックサーバ111、アプリケーションフレームワーク121とインプットサーバ112が接続されている。このような状態のときに、アプリケーション122から、アービタコア102に対して、アプリケーションフレームワーク131への切り替えが指示される。
このような指示を受け取ったアービタコア102は、次の時点において、デバイスサーバ104に対して、アプリケーションフレームワーク131へ切り替えろという指示を出す。デバイスサーバ104は、アービタコア102からの指示を受け取ると、その指示に基づき、グラフィックサーバ111とインプットサーバ112の接続先を、アプリケーションフレームワーク121からアプリケーションフレームワーク131に切り替える。
このように、アプリケーションからの指示により、アービタコア102は、アプリケーションフレームワークを切り替えの指示を、デバイスサーバ104に出し、デバイスサーバ104は、アービタコア102からの指示に基づき、接続先のアプリケーションフレームワークの切り替えを行う。
[アプリケーションの切り替えについて]
このようなアプリケーションフレームワークの切り替えが行われるととともに、切り替え先のアプリケーションにより処理が開始されるように、アプリケーションの切り替えも行われる必要がある。図7を参照し、アプリケーションの切り替えについて説明する。
図7Aに示した状態は、アプリケーションフレームワーク121が動作し、アプリケーションフレームワーク121上のアプリケーション122が動作している状態である。このような状態のときに、アプリケーション122から、アービタコア102に、アプリケーションフレームワーク131に切り替えの指示が出される。
アービタコア102は、アプリケーション122からの指示を受け取ると、その指示に基づき、プロセススイッチ103に、アプリケーション132に切り替えろという指示を出す。プロセススイッチ103は、アービタコア102からの指示を受け取った時点で動作しているアプリケーションを認識しており、その認識しているアプリケーションに対して動作を停止するように指示を出す。この場合、プロセススイッチ103は、アプリケーション122に対して動作を停止するように指示を出す。アプリケーション122は、その指示に基づき、動作を停止する。
一方でプロセススイッチ103は、アプリケーション132に対して、動作を開始するように指示を出す。アプリケーション132は、その指示に基づき、動作を開始する。
このように、プロセススイッチ103により、アプリケーションが切り替えられる。また、プロセススイッチ103に対するアプリケーションの切り替えの指示は、アービタコア102から出される。アービタコア102は、上記したように、デバイスサーバ104に対して、接続先のアプリケーションフレームワークの切り替えも指示する。
このようにして、アービタコア102の指示に基づき、プロセススイッチ103がアプリケーションを切り替え、デバイスサーバ104がアプリケーションフレームワークを切り替えることで、アプリケーションフレームワークの切り替えが可能となり、アプリケーションフレームワーク上で動作するアプリケーションの切り替えが可能となる。
[アービタの構成について]
図8、図9にアービタ101の構成と、アービタ101と他のサブシステムとの関係について説明する。図8、図9を参照するに、アービタ101のアービタコア102は、アプリケーション122やアプリケーション132からの指示を受け付けられる構造とされている。また、アービタコア102は、プロセススイッチ103に対して指示を出せるように接続されているとともに、デバイスサーバ104内の各デバイスサーバとも接続されている。
図9に示すようにデバイスサーバ104は、スイッチで構成することができる。図9に示した例では、インプットデバイスドライバ162と、アプリケーションフレームワーク121またはアプリケーションフレームワーク131との接続の切り替えを実行するスイッチを図示している。図示はしていないが、デバイスサーバ104内には、グラフィックデバイスドライバ161と、アプリケーションフレームワーク121またはアプリケーションフレームワーク131との接続の切り替えを実行するスイッチなども含まれている。
このように各デバイスドライバとアプリケーションフレームワークとの接続を切り替える複数のスイッチから、デバイスサーバ104が構成されていても良い。
[起動時の処理について]
次に、図10のシーケンス図を参照し、図3乃至図9を参照して説明したアプリケーションフレームワークの切り替えを行えるソフトウェアスタックを有するシステム(または装置)において、起動時に実行される処理について説明する。
例えば、図1に示した情報処理装置10の電源がオンにされたととき、CPU21から、アービタコア102などに対して、初期化の命令が出される。ステップS11において、アービタコア102は、初期化の処理を行う。
ステップS51において、グラフィックサーバ111も初期化の処理を行い、初期化終了後、アービタコア102に対して初期化終了の通知を出す。その通知を、アービタコア102は、ステップS12において受信する。
同様に、ステップS71において、インプットサーバ112も初期化の処理を行い、初期化終了後、アービタコア102に対して初期化終了の通知を出す。その通知を、アービタコア102は、ステップS13において受信する。このような処理は、デバイスサーバ104内の各デバイスサーバにおいて実行される。図10および以下の説明においては、グラフィックサーバ111とインプットサーバ112を例にあげて説明する。
同様に、ステップS91において、プロセススイッチ103も初期化の処理を行い、初期化終了後、アービタコア102に対して初期化終了の通知を出す。その通知を、アービタコア102は、ステップS14において受信する。このように、アービタコア102は、初期化終了の通知を受け取ることで、デバイスサーバ104内のデバイスサーバの状態と、プロセススイッチ103の状態を認識する。
ここではCPU21により、アプリケーション132の起動が指示された場合を例にあげて説明する。このような場合、アプリケーションフレームワーク131とアプリケーション132が起動される。アプリケーション132が起動されると、ステップS101において、アプリケーション132からアービタコア102に対してデバイスとの接続要求が出される。
アービタコア102は、アプリケーション131からの要求をステップS15において受け取ると、アービタコア102とグラフィックサーバ111との間でコールバック(callback)の処理が実行される(ステップS16、ステップS52)。また、アービタコア102とインプットサーバ112との間でもコールバック(callback)の処理が実行される(ステップS17、ステップS72)。
図6を参照して説明したように、デバイスサーバ104の排他制御により、アプリケーションフレームワークとデバイスサーバ(特定のデバイス)が1対1で接続される。この場合、グラフィックサーバ111とインプットサーバ112は、それぞれアプリケーションフレームワーク131と接続される。このような接続が完了すると、その通知が、グラフィックサーバ111とインプットサーバ112からそれぞれ出される(ステップS53、ステップS73)。
アービタコア102は、グラフィックサーバ111とインプットサーバ112とからの通知を、ステップS18、ステップS19において受け取る。ステップS20において、デバイスとの接続が完了したことを示す通知が、アプリケーションフレームワーク131(アプリケーション132)に出され、ステップS102において、アプリケーション132に受信される。このような接続が完了すると、アプリケーション132による処理が開始される。
[アプリケーションフレームワークの切り替えの処理について]
図11を参照し、アプリケーションフレームワークの切り替えについて説明する。ここでは、アプリケーションフレームワーク131とアプリケーション132が起動されている状態であり、アプリケーションフレームワーク121に切り替えが行われる場合を例にあげて説明する。
ステップS201において、アプリケーション132からアービタコア102に対してアプリケーションフレームワーク121への切り替え要求が出される。そのような要求をステップS221において受け取ったアービタコア102は、ステップS222において、コールバックの処理をグラフィックサーバ111と行う。グラフィックサーバ111は、ステップS241の処理として、アービタコア102とのコールバックの処理を行う。
同様に、アービタコア102は、ステップS223において、コールバックの処理をインプットサーバ112と行う。インプットサーバ112は、ステップS261の処理として、アービタコア102とのコールバックの処理を行う。
ここで行われるコールバックの処理は、アプリケーションフレームワーク131との接続を解除するための処理である。そのような接続の解除が行われた場合、グラフィックサーバ111とインプットサーバ112からそれぞれ、接続の解除が終了したことを示す通知が出される(ステップS242、ステップS262)。
アービタコア102は、ステップS224とステップS225において、グラフィックサーバ111とインプットサーバ112からの通知を受信すると、ステップS226において、アプリケーションフレームワーク131に対して、デバイスとの接続が解除されたことをアプリケーションフレームワーク131に対して通知する。アプリケーションフレームワーク131は、ステップS202において、そのような通知を受信し、デバイスサーバとの接続が解除されたことを認識する。
アービタコア102は、このような通知をアプリケーションフレームワーク131に出す一方で、ステップS227において、プロセススイッチ103に対して、アプリケーション132からアプリケーション122に切り替えるように指示を出す。
ステップS281において、アービタコア102からの指示を受け取ったプロセススイッチ103は、ステップS282において、アプリケーション132に対して、動作の停止を指示する(アプリケーションフレームワーク131の不活性化の処理が実行される)。
またステップS283において、プロセススイッチ103は、アプリケーション122に対して動作の開始を指示する(アプリケーションフレームワーク121の活性化の処理が実行される)。このようにして、アプリケーションの切り替えが行われる。この場合、アプリケーション132からアプリケーション122への切り替えが行われる。
このようなプロセススイッチ103からの指示によりアプリケーションの切り替えが行われると、プロセススイッチ103からアービタコア102に対して、アプリケーションの切り替えが終了したことを示す通知が出される(ステップS284)。ステップS228において、アービタコア102は、プロセススイッチ103からの通知により、その時点での動作しているアプリケーション、この場合アプリケーション122であることを認識する。
アービタコア102は、ステップS229において、グラフィックサーバ111とコールバックの処理を行い、ステップS230において、インプットサーバ112とコールバックの処理を行う。このコールバックの処理は、アプリケーションフレームワーク121とグラフィックサーバ111、アプリケーションフレームワーク121とインプットサーバ112をそれぞれ接続するための処理である。
そのような接続の処理が実行された場合、グラフィックサーバ111とインプットサーバ112からそれぞれ、接続が完了したことを示す通知が出される(ステップS244、ステップS264)。アービタコア102は、ステップS231とステップS232において、グラフィックサーバ111とインプットサーバ112からの通知を受信すると、ステップS233において、アプリケーションフレームワーク121に対して、デバイスとの接続が完了したことを通知する。このようにしてアプリケーションフレームワークの切り替えが行われる。
図12を参照し、アプリケーションフレームワークの切り替えについて再度説明する。ここでは、アプリケーションフレームワーク121とアプリケーション122が起動されている状態であり、アプリケーションフレームワーク131に切り替えが行われる場合を例にあげて説明する。
ステップS301において、アプリケーション122からアービタコア102に対してアプリケーションフレームワーク131への切り替え要求が出される。そのような要求をステップS331において受け取ったアービタコア102は、ステップS332において、コールバックの処理をグラフィックサーバ111と行う。グラフィックサーバ111は、ステップS341の処理として、アービタコア102とのコールバックの処理を行う。
同様に、アービタコア102は、ステップS333において、コールバックの処理をインプットサーバ112と行う。インプットサーバ112は、ステップS361の処理として、アービタコア102とのコールバックの処理を行う。
ここで行われるコールバックの処理は、アプリケーションフレームワーク121との接続を解除するための処理である。そのような接続の解除が行われた場合、グラフィックサーバ111とインプットサーバ112からそれぞれ、接続の解除が終了したことを示す通知が出される(ステップS342、ステップS362)。
アービタコア102は、ステップS334とステップS335において、グラフィックサーバ111とインプットサーバ112からの通知を受信すると、ステップS336において、アプリケーションフレームワーク121に、デバイスとの接続が解除されたことを通知する。アービタコア102は、このような通知を出す一方で、ステップS337において、プロセススイッチ103に対して、アプリケーション122からアプリケーション132に切り替えるように指示を出す。
ステップS381において、アービタコア102からの指示を受け取ったプロセススイッチ103は、ステップS382において、アプリケーション122に対して、動作の停止を指示する(アプリケーションフレームワーク121の不活性化の処理が実行される)。
またステップS383において、プロセススイッチ103は、アプリケーション132に対して動作の開始を指示する(アプリケーションフレームワーク131の活性化の処理が実行される)。このようにして、アプリケーションの切り替えが行われる。この場合、アプリケーション122からアプリケーション132への切り替えが行われる。
このようなプロセススイッチ103からの指示によりアプリケーションの切り替えが行われると、プロセススイッチ103からアービタコア102に対して、アプリケーションの切り替えが終了したことを示す通知が出される(ステップS384)。ステップS338において、アービタコア102は、プロセススイッチ103からの通知により、その時点での動作しているアプリケーション、この場合アプリケーション132であることを認識する。
アービタコア102は、ステップS339において、グラフィックサーバ111とコールバックの処理を行い、ステップS340において、インプットサーバ112とコールバックの処理を行う。このコールバックの処理は、アプリケーションフレームワーク131とグラフィックサーバ111、アプリケーションフレームワーク131とインプットサーバ112をそれぞれ接続するための処理である。
そのような接続の処理が実行された場合、グラフィックサーバ111とインプットサーバ112からそれぞれ、接続が完了したことを示す通知が出される(ステップS344、ステップS364)。アービタコア102は、ステップS341とステップS342において、グラフィックサーバ111とインプットサーバ112からの通知を受信すると、ステップS343において、アプリケーションフレームワーク131に対して、デバイスとの接続が完了したことを通知する。このようにしてアプリケーションフレームワークの切り替えが行われる。
このように、1つのシステムに複数のアプリケーションフレームワークを設け、それら複数のアプリケーションフレームワークを切り替えられるようにすることが可能となる。このような複数のアプリケーションフレームワークの切り替えを、装置の電源を一旦オフにし、再度オンにすることで行ったり、別プロセッサ及びハードウェアを用意し、それらを切り替えることで行ったり、または仮想マシンを利用する等の方法で行ったりしなくても行え、高速な切り替えが可能となる。
また、オペレーティングシステムの生存期間中に、1つのシステム内で、様々なアプリケーションフレームワークに依存したアプリケーションを使用することができるようになる。また、過去のアプリケーションフレームワークとアプリケーションを流用しつつ、そのアプリケーションフレームワークとは異なるアプリケーションフレームワークに対応したアプリケーションをシステムに組込むことができる。このようなことが可能となることで、アプリケーションの開発コストを下げることが可能となる。
[アプリケーションフレームワークの切り替え後の処理について]
次に、上記したようにしてアプリケーションフレームワークが切り替えられた後の処理について説明する。まず参考のために、図13を参照し、上記したようなアプリケーションフレームワークの切り替えが行えない場合について説明する。
図13を参照するに、入力デバイスとしてのキーボード172やマウス173などのデバイス11からの入力データは、オペレーティングシステム13上のデバイスドライバ12を介して、アプリケーションフレームワーク14に供給される。さらに、アプリケーションフレームワーク14を介してアプリケーション15に入力データが供給され、アプリケーション15の処理により、入力データに応じた処理が実行される。
従来図2を参照して説明したように、1つのシステムには、1つのアプリケーションフレームワーク14しか存在せず、動作することが前提に設計されている。よって、例えば図13に示すように、アプリケーションフレームワーク14’やアプリケーションフレームワーク14”という、アプリケーションフレームワーク14とは異なるアプリケーションフレームワークが、1つのシステム上に存在した場合、デバイス11からの入力データは、アプリケーションフレームワーク14’やアプリケーションフレームワーク14”に供給する仕組みが無く、供給することができない。
また、アプリケーションフレームワーク14’やアプリケーションフレームワーク14”に依存するアプリケーション15’やアプリケーション15”は、入力データに基づく処理を実行することができない。換言すれば、アプリケーションフレームワーク14上のアプリケーション15しか、入力デバイスからの入力データを使用することができない。
しかしながら、上記したように、本実施の形態によれば、複数のアプリケーションフレームワークを1つのシステム上に設け、それらの複数のアプリケーションフレームワークの切り替えて用いることができる。アプリケーションフレームワークの切り替え後に、入力デバイスからの入力データを、アプリケーションに届けるまでの処理について次に説明する。
図14は、アプリケーションフレームワークの切り替え後に、入力デバイスからの入力データを、アプリケーションに届ける場合の1構成例を示す図である。図14に示した例では、レジストリビュータ(Redistributor)201という入力を受け付けるアプリケーションを、アプリケーション122−1乃至122−Nとは別に設ける。
また、複数のアプリケーションフレームワークのうち、動作しているアプリケーションフレームワークに、入力デバイスからの入力データを供給するために、オペレーティングシステム13、例えば、Linux(登録商標)のUINPUT機能を利用する。このオペレーティングシステム13のUINPUT機能は、アプリケーションからの指示によって、任意の入力イベントを発生させることができる。すなわち、UINPUT機能は、アプリケーションからの指示によって入力されたデータを、他の機能に供給する機能を有する。
このような機能を利用し、アプリケーションフレームワーク上のアプリケーションとして、「入力イベントを受け取ったらUINPUTに渡す」という処理を行うモジュールを追加する。このモジュールが、図14におけるレジストリビュータ201である。レジストリビュータ201により入力イベントは、uinput211に渡され、その結果、他のアプリケーションフレームワーク131やアプリケーションフレームワーク141が入力イベントを受信することができるようになる。
図14において、アプリケーションフレームワーク131が動作しているときには、まず入力デバイスとしてのキーボード172やマウス173などのデバイス11からの入力データは、オペレーティングシステム13上のデバイスドライバ12を介して、アプリケーションフレームワーク121に供給される。さらに、アプリケーションフレームワーク121を介してレジストリビュータ201に入力データが供給され、レジストリビュータ201の処理により、オペレーティングシステム13のuinput211に供給される。
uinput211の処理により、入力データは、アプリケーションフレームワーク131に供給される。このように、レジストリビュータ201に一旦入力データが供給され、レジストリビュータ201の処理により、オペレーティングシステム13のuinput211に入力データが戻され、uinput211の処理により、その時点で、動作中のアプリケーションフレームワークに入力データが供給される。
このように、レジストリビュータ201は、入力デバイスからの入力データを、オペレーティングシステム13を介して、アプリケーションフレームワークに供給する機能を有する。このような機能は、デバイスサーバ104と同じ機能である。デバイスサーバ104は、例えば、図5を参照して説明したように、デバイスからのデータをアプリケーションフレームワークに供給するインタフェースの機能を有する。
よって、図14に示した構成は、デバイスサーバ104を、レジストリビュータ201に設けた場合と言える。このように、デバイスサーバ104は、レジストリビュータ201として設けることが可能である。換言すれば、デバイスサーバ104は、アプリケーションとして設けることが可能である。また、デバイスサーバ104は、完全に独立している必要が無く、他の機能を共用される構成とすることも可能である。
図14に示したような構成における入力に係わる処理について、図15のシーケンス図を参照して説明する。ステップS501において、デバイスドライバ12に、デバイス11からの入力データが供給される。デバイスドライバ12は、デバイス11からの入力データを、アプリケーションフレームワーク121に供給する(ステップS502)。
アプリケーションフレームワーク121は、ステップS521において、デバイスドライバ12からの入力データを受け取る。このように、アプリケーションフレームワーク121に入力イベントが発生すると、ステップS522において、アプリケーションフレームワーク121は、レジストリビュータ201に、入力データを供給する。
レジストリビュータ201は、上記したように、入力イベントを受け取ったらUINPUTに渡すという処理を行うアプリケーションである。よってレジストリビュータ201は、ステップS541において、アプリケーションフレームワーク121から入力データの供給を受けると、その入力データを、ステップS542において、uinput211に戻す。
uinput211は、ステップS561において、レジストリビュータ201からの入力データを受け取ると、ステップS562において、アプリケーションフレームワーク131に入力データを供給する。この場合、アービタコア102の処理により、アプリケーションフレームワーク131がデバイスと対応付けされているため、アプリケーションフレームワーク131に対して入力データが供給される。例えば、アービタコア102の処理により、アプリケーションフレームワーク141がデバイスと対応付けされていた場合には、アプリケーションフレームワーク141に対して入力データが供給される。
アプリケーションフレームワーク131は、ステップS581において、uinput211からの入力データを受け取ると、アプリケーションフレームワーク131に入力イベントが発生する。アプリケーションフレームワーク131に入力イベントが発生した場合、アプリケーションフレームワーク131は、ステップS582において、受け取った入力データを、上層のアプリケーション132に供給する。アプリケーション132は、ステップS591において、入力データを受け取ると、その入力データに基づく処理を開始する。
このように、レジストリビュータ201を備え、レジストリビュータ201からuinput211に入力データが供給され、uinput211から、その時点で動作しているアプリケーションフレームワークに入力データが転送されるようにすることで、キーボードやマウスなどの入力デバイスからの入力を、切り替え後のアプリケーションフレームワークに供給できるようになる。
[入力に係わる他の処理について]
図16を参照し、アプリケーションフレームワークの切り替え後に、入力デバイスからの入力データを、アプリケーションに届ける場合の他の構成例について説明する。図16に示した例でも、図14に示した構成例と同じく、複数のアプリケーションフレームワークのうち、動作しているアプリケーションフレームワークに、入力デバイスからの入力データを供給するために、オペレーティングシステム13、例えば、Linux(登録商標)のUINPUT機能を利用する。
図16に示した構成においては、アプリケーションフレームワーク301に、入出力判断部302を設け、その入出力判断部302により、入力された入力データの出力先が判断され、その判断先に入力データが供給される。入出力判断部302により、デバイスドライバ12を介して入力された入力データが、アプリケーション122への入力データであるのか、アプリケーション122以外のアプリケーションへの入力データであるのかが判断され、その判断に基づくアプリケーションに、入力データが供給される。
図16に示した構成においては、アプリケーションフレームワーク301内に設けられた入出力判断部302が、入力デバイスからの入力データを、オペレーティングシステム13(uinput211)を介して、アプリケーションフレームワークに供給する機能を有する。このような機能は、デバイスサーバ104と同じ機能である。デバイスサーバ104は、例えば、図5を参照して説明したように、デバイスからのデータをアプリケーションフレームワークに供給するインタフェースの機能を有する。
よって、図16に示した構成は、デバイスサーバ104を、アプリケーションフレームワーク301内に設けた場合と言える。このように、デバイスサーバ104は、アプリケーションフレームワークの1機能として設けることが可能である。換言すれば、デバイスサーバ104は、アプリケーションフレームワークとして設けることが可能である。また、デバイスサーバ104は、完全に独立している必要が無く、他の機能を共用される構成とすることも可能である。
図17のシーケンス図を参照し、入力に関わる処理について説明する。ステップS701において、デバイスドライバ12にデバイス11からの入力があると、ステップS702において、デバイスドライバ12は、アプリケーションフレームワーク301に、入力データを供給する。アプリケーションフレームワーク301の入出力判断部302は、ステップS711において、デバイスドライバ12からの入力データを、アプリケーション122に出力するか、アプリケーション122以外のアプリケーションに出力するかを判断する。
入出力判断部302は、デバイスサーバ104の機能を有しているため、デバイスとアプリケーションフレームワークとの対応付けを管理している。その管理している対応付けに基づいて、入出力判断部302は、入力データの供給先を判断する。
入出力判断部302は、アプリケーション122に入力データを出力すると判断した場合、ステップS712において、アプリケーション122に対して、入力データを出力する。アプリケーション122は、ステップS721において、入出力判断部302からの入力データを受け取ると、その入力データに基づく処理を開始する。
一方で、入出力判断部302は、入力データは、アプリケーション122以外のアプリケーションに出力すると判断した場合、ステップS713において、入力データを、uinput211に出力する。なお、図17においては、入出力判断部302から、ステップS712において、アプリケーション122に対して入力データが供給される場合と、ステップS713において、uinput211に対して入力データが供給される場合とを図示したが、実際には入出力判断部302の判断に基づくどちらか一方の供給のみが行われる。
uinput211は、ステップS741において、入出力判断部302からの入力データを受け取ると、ステップS742において、その時点で、動作しているアプリケーションフレームワーク131に、入力データを出力する。その結果、アプリケーションフレームワーク131は、ステップS751において、入力データを受け取る。
このようにして、アプリケーションフレームワーク131に入力イベントが発生すると、ステップS752において、アプリケーションフレームワーク131は、供給された入力データを上層のアプリケーション132に供給する。アプリケーション132は、ステップS761において、アプリケーションフレームワーク131からの入力データを受け取ると、入力データに基づく処理を開始する。
このようにして、入力デバイスからの入力データを、所望のアプリケーション(アプリケーションフレームワーク)に供給することが可能となる。
このように入力デバイスからの入力データを、所望のアプリケーション(アプリケーションフレームワーク)に供給することが可能となることで、既定義のアプリケーションフレームワーク側に変更が必要な場合も、変更量は少なく、システム全体を容易に拡張できる。また、アプリケーションまたはアプリケーションフレームワークでイベントを再配信するため、配信前にフィルタリングや値の補正を行うことや、同時に複数のアプリケーションフレームワークに入力イベントを送信するなどの特殊な処理が可能になる。例えば、不要なイベントを削減、ポインタ座標を補正、ポインタ座標によってイベントを配信するアプリケーションフレームワークを決める等の処理が可能となる。
[出力に関わる処理について]
次に、アプリケーションフレームワークの切り替え後に、所定のアプリケーションから出力デバイスに、データを届ける場合について説明する。出力に関しては、図18に示すように、共有メモリ401を備えることで実現する。
共有メモリ401は、アプリケーション122とアプリケーションフレームワーク131で共用されるメモリである。なお、図18には図示していないが、共有メモリ401は、アプリケーション122とアプリケーションフレームワーク141で共用されるメモリでもある。すなわち、共有メモリ401は、所定のアプリケーション、この場合、アプリケーションフレームワーク121上のアプリケーション122と、その所定のアプリケーションとは異なるアプリケーションの下位層のアプリケーションフレームワークとの間で共有されるメモリである。
共有メモリ401には、アプリケーションフレームワーク131(アプリケーションフレームワーク131の上層のアプリケーション132)が描画したデータが一旦記憶される。そして、共有メモリ401に記憶された描画データは、アプリケーション122により読み出され、アプリケーションフレームワーク121に供給される。
そして、アプリケーションフレームワーク121により、デバイスドライバ12を介してデバイス11に供給され、ディスプレイ171に、アプリケーション132により描画されたテキストや画像などのグラフィックが表示される。
このような処理について、図19のシーケンス図を参照して説明する。図19を参照して説明する出力時の処理は、図18に示した場合と同じく、アプリケーションフレームワーク121がグラフィックデバイスを占有し、アプリケーション132により描画されたグラフィックが、ディスプレイ171に表示される場合を例に挙げて説明する。
アプリケーション132は、ステップS901において、描画を開始し、描画データを、アプリケーションフレームワーク131に出力する。アプリケーションフレームワーク131は、受け取った描画データを、ステップS921において、共有メモリ401に書き込む。このように、アプリケーション132からの描画データは、共有メモリ401に書き込まれる。
アプリケーション122は、アプリケーションフレームワーク131による共有メモリ401への描画データの書き込みが完了したら、アプリケーションフレームワーク131からの通知を受け、共有メモリ401に書き込まれた描画データを読み出す機能を有する。
アプリケーション122は、アプリケーションフレームワーク131から通知を受けると、ステップS941において、共有メモリ401から描画データを読み出す。読み出された描画データは、アプリケーション122の処理により、アプリケーションフレームワーク121に供給される。ステップS961において、アプリケーションフレームワーク121は、そのような供給を受けると、ステップS962において、オペレーティングシステム13(デバイスドライバ12)に、描画データを供給する。
この後、デバイスドライバ12からデバイス11(ディスプレイ171)に描画データが供給されることで、ディスプレイ171上に、アプリケーション132により描画されたグラフィックが表示される。
このように、共有メモリ401をアプリケーションフレームワーク131とアプリケーション122で共用し、アプリケーション122が、共有メモリ401から描画データを読み出し、デバイスに供給することで、描画が行われる。他の出力、例えば音声データなども、同様に共有メモリ401を介して行うことが可能である。
このように、複数のアプリケーションフレームワークのうちの所定のアプリケーションフレームワークが、直接、デバイス11(ディスプレイ171)に描画データを供給できない構成であっても、他のアプリケーションフレームワークとそのアプリケーションフレームワーク上のアプリケーションの処理により、所定のアプリケーションフレームワークからの描画データを、デバイス11に供給することが可能となる。このようなことが可能となることで、アプリケーションフレームワークの変更を少なく、アプリケーションフレームワークを追加して、システム全体を拡張することが可能となる。
[記録媒体について]
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウェアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
例えば、図1に示した情報処理装置10では、CPU21が、例えば、記憶部28に記憶されているプログラムを、入出力インタフェース25及び内部バス24を介して、RAM23にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU21)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア31に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
コンピュータでは、プログラムは、リムーバブルメディア31をドライブ30に装着することにより、入出力インタフェース25を介して、記憶部28にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部29で受信し、記憶部28にインストールすることができる。その他、プログラムは、ROM22や記憶部28に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
101 アービタ, 102 アービタコア, 103 プロセススイッチ, 104 デバイスサーバ, 111 グラフィックサーバ, 112 インプットサーバ, 113 サウンドサーバ, 121 アプリケーションフレームワーク, 122 アプリケーション, 131 アプリケーションフレームワーク, 132 アプリケーション, 141 アプリケーションフレームワーク, 142 アプリケーション

Claims (14)

  1. 複数のアプリケーションフレームワークと、
    前記アプリケーションフレームワークを切り替える切り替え部と
    を備え、
    前記複数のアプリケーションフレームワークのうちの第1のアプリケーションフレームワークと、
    前記第1のアプリケーションフレームワーク上で動作する第1のアプリケーションと、
    前記第1のアプリケーションフレームワークとは異なる第2のアプリケーションフレームワークと、
    前記第2のアプリケーションフレームワーク上で動作する第2のアプリケーションと
    を備え、
    前記切り替え部は、
    前記第1のアプリケーションから、前記第2のアプリケーションフレームワークに切り替えが指示されたとき、前記第1のアプリケーションフレームワークから前記第2のアプリケーションフレームワークに、デバイスとの入出力先を切り替える
    情報処理装置。
  2. 前記切り替え部は、
    前記複数のアプリケーションフレームワークと前記デバイスを1対1に接続されるように切り換えを行う
    請求項に記載の情報処理装置。
  3. 前記切り替え部は、
    複数のアプリケーションのうちの所定のアプリケーションを不活性化し、他のアプリケーションを活性化する機能を担う部分と、
    前記複数のアプリケーションフレームワークのうちの所定のアプリケーションフレームワークをデバイスと切り離し、他のアプリケーションフレームワークと接続する機能を担う部分をそれぞれ有する
    請求項1または2に記載の情報処理装置。
  4. 前記切り替え部は、
    前記第1のアプリケーションから、前記第2のアプリケーションフレームワークに切り替えが指示されたとき、前記第1のアプリケーションを不活性化し、前記第2のアプリケーションを活性化する
    請求項1乃至3のいずれかに記載の情報処理装置。
  5. 前記第1のアプリケーションは複数あり、
    前記切り替え部は、複数の前記第1のアプリケーションの1アプリケーションとして存在し、
    前記第1のアプリケーションとしての前記切り替え部は、前記デバイスからの入力を前記第2のアプリケーションフレームワークに転送する
    請求項1乃至4のいずれかに記載の情報処理装置。
  6. 前記切り替え部は、前記第1のアプリケーションフレームワークの1機能として存在し、
    前記第1のアプリケーションフレームワークに含まれる前記切り替え部は、前記デバイスからの入力を、前記第2のアプリケーションフレームワークに転送する
    請求項1乃至4のいずれかに記載の情報処理装置。
  7. 前記デバイスからの入力は、オペレーティングシステムに含まれる入力供給機能により、前記第1のアプリケーションまたは前記第1のアプリケーションフレームワークから、前記第2のアプリケーションフレームワークに供給される
    請求項1乃至6のいずれかに記載の情報処理装置。
  8. 前記入力供給機能は、uinputの機能である
    請求項に記載の情報処理装置。
  9. 前記第2のアプリケーションからの出力データは、前記第2のアプリケーションフレームワークを介して、記憶部に記憶され、
    前記記憶部に記憶された前記出力データは、前記第1のアプリケーションにより読み出され、前記第1のアプリケーションフレームワークを介して、前記デバイスに供給される
    請求項1乃至8のいずれかに記載の情報処理装置。
  10. 前記第2のアプリケーションが描画した描画データが、前記記憶部に前記第2のアプリケーションフレームワークを介して記憶され、
    前記記憶部に記憶された前記描画データが、前記第1のアプリケーションより読み出され、前記第1のアプリケーションフレームワークを介して、ディスプレイに供給される
    請求項に記載の情報処理装置。
  11. 前記第1のアプリケーションフレームワークは、カメラ機能に関するアプリケーションフレームワークであり、
    前記第2のアプリケーションフレームワークは、通信機能に関するアプリケーションフレームワークである
    請求項1乃至10のいずれかに記載の情報処理装置。
  12. 前記カメラ機能に関する前記第1のアプリケーションフレームワーク上で動作する前記第1のアプリケーションの処理により、ユーザからの入力操作に従って撮影された画像を、前記通信機能に関する第2のアプリケーションフレームワーク上で動作する前記第2のアプリケーションの処理により、他の装置に送信する
    請求項11に記載の情報処理装置。
  13. 複数のアプリケーションフレームワークのうちの第1のアプリケーションフレームワークと、
    前記第1のアプリケーションフレームワーク上で動作する第1のアプリケーションと、
    前記第1のアプリケーションフレームワークとは異なる第2のアプリケーションフレームワークと、
    前記第2のアプリケーションフレームワーク上で動作する第2のアプリケーションと
    を備える情報処理装置の情報処理方法において、
    前記第1のアプリケーションから、前記第2のアプリケーションフレームワークに切り替えが指示されたとき、前記第1のアプリケーションフレームワークから前記第2のアプリケーションフレームワークに、デバイスとの入出力先を切り替える
    ステップを含む情報処理方法。
  14. 複数のアプリケーションフレームワークのうちの第1のアプリケーションフレームワークと、
    前記第1のアプリケーションフレームワーク上で動作する第1のアプリケーションと、
    前記第1のアプリケーションフレームワークとは異なる第2のアプリケーションフレームワークと、
    前記第2のアプリケーションフレームワーク上で動作する第2のアプリケーションと
    を備える情報処理装置を制御するコンピュータに、
    前記第1のアプリケーションから、前記第2のアプリケーションフレームワークに切り替えが指示されたとき、前記第1のアプリケーションフレームワークから前記第2のアプリケーションフレームワークに、デバイスとの入出力先を切り替える
    ステップを含む処理を実行させるためのプログラム。
JP2012125920A 2012-06-01 2012-06-01 情報処理装置、情報処理方法、並びにプログラム Expired - Fee Related JP5904018B2 (ja)

Priority Applications (8)

Application Number Priority Date Filing Date Title
JP2012125920A JP5904018B2 (ja) 2012-06-01 2012-06-01 情報処理装置、情報処理方法、並びにプログラム
TW102116202A TW201407472A (zh) 2012-06-01 2013-05-07 資訊處理裝置、資訊處理方法及程式
CN201380027226.4A CN104350469A (zh) 2012-06-01 2013-05-23 信息处理设备、信息处理方法及程序
US14/394,527 US9910698B2 (en) 2012-06-01 2013-05-23 Information processing apparatus, information processing method, and program
RU2014147323A RU2014147323A (ru) 2012-06-01 2013-05-23 Устройство обработки информации, способ обработки информации и программа
PCT/JP2013/003296 WO2013179621A1 (en) 2012-06-01 2013-05-23 Information processing apparatus, information processing method, and program
BR112014029271A BR112014029271A2 (pt) 2012-06-01 2013-05-23 aparelho e método de processamento de informação, e, mídia legível por computador não temporária
EP13730946.4A EP2856314B1 (en) 2012-06-01 2013-05-23 Information processing apparatus, information processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012125920A JP5904018B2 (ja) 2012-06-01 2012-06-01 情報処理装置、情報処理方法、並びにプログラム

Publications (3)

Publication Number Publication Date
JP2013250851A JP2013250851A (ja) 2013-12-12
JP2013250851A5 JP2013250851A5 (ja) 2015-02-26
JP5904018B2 true JP5904018B2 (ja) 2016-04-13

Family

ID=48672772

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012125920A Expired - Fee Related JP5904018B2 (ja) 2012-06-01 2012-06-01 情報処理装置、情報処理方法、並びにプログラム

Country Status (8)

Country Link
US (1) US9910698B2 (ja)
EP (1) EP2856314B1 (ja)
JP (1) JP5904018B2 (ja)
CN (1) CN104350469A (ja)
BR (1) BR112014029271A2 (ja)
RU (1) RU2014147323A (ja)
TW (1) TW201407472A (ja)
WO (1) WO2013179621A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10768975B2 (en) * 2016-03-04 2020-09-08 Ricoh Company, Ltd. Information processing system, information processing apparatus, and information processing method
CN110554891A (zh) * 2018-05-31 2019-12-10 北京京东尚科信息技术有限公司 系统框架切换方法与装置
TWI801058B (zh) * 2021-12-23 2023-05-01 明遠精密科技股份有限公司 一種複合式電漿源及其運作方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005005909A (ja) * 2003-06-10 2005-01-06 Sony Ericsson Mobilecommunications Japan Inc 競合管理プログラム,競合管理プログラムが記憶された記憶媒体,競合管理方法及び電子機器
GB0422086D0 (en) * 2004-10-05 2004-11-03 Symbian Software Ltd Navigating applications in a computing device
US20090265723A1 (en) * 2006-08-31 2009-10-22 Hisayasu Mochizuki Electronic device and control method of the same
KR20090008695A (ko) * 2007-07-18 2009-01-22 삼성전자주식회사 이동통신 단말기에서 선택 적재를 위한 장치 및 방법
JP2008210398A (ja) * 2008-03-31 2008-09-11 Sharp Corp 電子機器及びその制御方法
US9032390B2 (en) * 2008-07-29 2015-05-12 Qualcomm Incorporated Framework versioning
JP4875043B2 (ja) * 2008-10-31 2012-02-15 株式会社東芝 フレームワークプログラム及びクライアント装置
JP5481308B2 (ja) * 2009-11-30 2014-04-23 株式会社Nttドコモ データ制御装置及びプログラム
US8627426B2 (en) * 2010-04-26 2014-01-07 Vmware, Inc. Cloud platform architecture
JP5566182B2 (ja) * 2010-05-14 2014-08-06 株式会社Nttドコモ 競合管理装置、競合管理方法及びプログラム
GB201107273D0 (en) * 2011-04-28 2011-06-15 Inq Entpr Ltd Application control in electronic devices

Also Published As

Publication number Publication date
EP2856314A1 (en) 2015-04-08
WO2013179621A1 (en) 2013-12-05
RU2014147323A (ru) 2016-06-10
JP2013250851A (ja) 2013-12-12
TW201407472A (zh) 2014-02-16
EP2856314B1 (en) 2020-10-28
CN104350469A (zh) 2015-02-11
BR112014029271A2 (pt) 2017-06-27
US20150095915A1 (en) 2015-04-02
US9910698B2 (en) 2018-03-06

Similar Documents

Publication Publication Date Title
US20180285053A1 (en) Screenshot method and apparatus
US20160210159A1 (en) User Mode Driver Extension and Preprocessing
JP5904018B2 (ja) 情報処理装置、情報処理方法、並びにプログラム
CN102945149A (zh) 多个显示装置任务栏
US20230405455A1 (en) Method and apparatus for processing cloud gaming resource data, computer device, and storage medium
KR20220052771A (ko) 전자 장치 및 그 동작방법
JP2006301907A (ja) 電源制御装置及び電源制御方法並びにプログラム
US10162647B2 (en) Information apparatus
US20220012005A1 (en) Apparatus, computer-readable medium, and method for high-throughput screen sharing
JP2005293417A (ja) コンピュータ機器、コンピュータネットワークシステム、プログラム転送方法およびプログラム転送用プログラム
JP5754059B2 (ja) 情報処理装置、制御方法、プログラム、及び記録媒体
US10742834B2 (en) Buffer management for plug-in architectures in computation graph structures
US10726094B2 (en) Content distribution system
TWI828298B (zh) 拍攝方法、拍攝裝置、電子設備和可讀存儲介質
US20130103907A1 (en) Memory management device, memory management method, control program, and recording medium
JP7240439B2 (ja) アップデート装置、アップデート方法、およびプログラム
JP2018146899A (ja) 再生装置、再生システム、再生方法、およびプログラム
WO2023173315A1 (en) Methods, system, and apparatus to select among image sensors based on device orientation
JP2020004205A (ja) 情報処理装置、情報処理方法、及びプログラム
JP7039576B2 (ja) 電子機器、電力管理方法、および電力管理システム
CN116708940A (zh) 一种控件状态调整方法、装置、设备及可读存储介质
JP2015172919A (ja) 画面共有システム、画面共有方法、端末装置及びプログラム
JP6223125B2 (ja) 表示制御装置、表示制御方法及びプログラム
JP5366996B2 (ja) 情報処理装置および情報処理方法
JP2020170437A (ja) コンテンツ提供システム及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160216

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160229

R151 Written notification of patent or utility model registration

Ref document number: 5904018

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees