JP2004334537A - プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム - Google Patents
プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム Download PDFInfo
- Publication number
- JP2004334537A JP2004334537A JP2003129545A JP2003129545A JP2004334537A JP 2004334537 A JP2004334537 A JP 2004334537A JP 2003129545 A JP2003129545 A JP 2003129545A JP 2003129545 A JP2003129545 A JP 2003129545A JP 2004334537 A JP2004334537 A JP 2004334537A
- Authority
- JP
- Japan
- Prior art keywords
- task
- session
- tasks
- program
- identification information
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
【課題】同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定して好適にメッセージ通信を行なう。
【解決手段】セッションの起動時に、セッションを各機能毎にタスクを分割したときの各ブロックにブロックIDを割り振るとともに、ブロックIDとタスクIDの早見表であるタスク・ルックアップ・テーブルを作成する。メッセージ通信を行なう際、送信元タスクは送信先をブロックIDで指定し、タスク・ルックアップ・テーブルを参照してタスクIDを取得する。この後、送信先のタスクIDを指定し、OSのメッセージ通信機能を用いてメッセージの送受信を行なう。
【選択図】 図2
【解決手段】セッションの起動時に、セッションを各機能毎にタスクを分割したときの各ブロックにブロックIDを割り振るとともに、ブロックIDとタスクIDの早見表であるタスク・ルックアップ・テーブルを作成する。メッセージ通信を行なう際、送信元タスクは送信先をブロックIDで指定し、タスク・ルックアップ・テーブルを参照してタスクIDを取得する。この後、送信先のタスクIDを指定し、OSのメッセージ通信機能を用いてメッセージの送受信を行なう。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、複数のタスクを擬似的に同時並列的に動作させるマルチタスク環境下でアプリケーションを実行するプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムに係り、特に、アプリケーションが複数の機能を同時並行して動作する際に複数の機能で同一のタスクを共有するプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムに関する。
【0002】
さらに詳しくは、本発明は、複数の機能で共有されるタスクのリソースと実行状態を管理するプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムに係り、特に、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定してメッセージ通信を行なうプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムに関する。
【0003】
【従来の技術】
昨今のLSI(Large Scale Integration)技術における革新的な進歩とも相俟って、さまざまなタイプの情報処理機器や情報通信機器が開発・市販され、日常生活に深く浸透するに至っている。この種の機器では、オペレーティング・システムが提供する実行環境下で、CPU(Central Processing Unit)やその他のプロセッサが所定のプログラム・コードを実行することによりさまざまな処理サービスを提供するようになっている。
【0004】
一般に、オペレーティング・システムは、複数のタスクを時分割で実行することによって、プロセッサの数よりも多くのタスクをあたかも同時に実行しているかのように見せるマルチタスク機能を備えている。マルチタスク・オペレーティング・システムを使用することにより、アプリケーションを機能毎にタスクとして作成し、複数のタスクを擬似的に同時並列的に動作させることができる。
【0005】
しかしながら、オペレーティング・システムには、タスク単位の管理機能はあるものの、複数のタスクによってある特定の機能が実現されるような場合、その機能に係る一連のタスクを一元的に管理する機構は提供していない。すなわち、マルチタスクにおいて、個々のタスクの実行を制御するのみで、タスク間の関連性までは考慮しない。このため、各タスクが自分自身でタスク間の関連性を管理しなければならず、プログラムの組み易さやメンテナンス性が低下してしまう。
【0006】
また、同時並行して動作する複数の機能で同一のタスクを共有したい場合があるが、共有されるタスクを管理するような仕組みはオペレーティング・システムでは提供されない。
【0007】
また、このようなマルチタスク環境下では、同一のソースコードを持つ複数のタスクが複数存在するという状況が想定されるが、このような場合にタスクを動的に特定することはできない。
【0008】
一般的なオブジェクト間通信では、オペレーティング・システムのオブジェクト識別機能を用いてメッセージ送受信先の特定が行なわれる(例えば、特許文献1、特許文献2を参照のこと)。しかしながら、複数のセッションにおいて同じタスクが起動しているような状況においては、単にタスクを識別するタスク識別子を用いるだけでは、どのセッションのタスクなのかを特定することはできない。
【0009】
【特許文献1】
特開平08−55037号公報
【特許文献2】
特開平08−106441号公報
【0010】
【発明が解決しようとする課題】
本発明の目的は、アプリケーションが複数の機能を同時並行して動作する際に複数の機能で同一のタスクを好適に共有することができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することにある。
【0011】
本発明のさらなる目的は、複数の機能で共有されるタスクのリソースと実行状態を好適に管理することができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することにある。
【0012】
本発明のさらなる目的は、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定して好適にメッセージ通信を行なうことができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することにある。
【0013】
【課題を解決するための手段及び作用】
本発明は、上記課題を参酌してなされたものであり、その第1の側面は、複数のタスクを擬似的に並列に実行させるマルチタスク環境とタスク間通信機能を提供するマルチタスク・オペレーティング・システムが提供する実行環境下で複数のタスクからなるプログラムを実行するプログラム処理システムであって、
プログラムが提供する各機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義するセッション定義手段と、
セッションを実行するためのリソースと実行状態を管理するセッション管理手段とを備え、
前記セッション管理手段は、セッション起動時に当該セッションを構成する各タスクのインスタンスを生成するとともに、当該セッション及び当該セッションを構成する各タスクのインスタンスにセッションの識別情報及びインスタンスの識別情報を割り振り、セッション毎のタスク・ルックアップ・テーブル上で前記の各識別情報を管理する、
ことを特徴とするプログラム処理システムである。
【0014】
但し、ここで言う「システム」とは、複数の装置(又は特定の機能を実現する機能モジュール)が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【0015】
本発明に係るプログラム処理装置は、タスク間で通信を行なうメッセージ通信手段をさらに備えている。メッセージ通信手段は、タスク間で通信を行なう際に、タスクが含まれるセッションのタスク・ルックアップ・テーブルを参照して送信先タスクのインスタンス識別情報に基づいてタスクを特定して、オペレーティング・システムが提供するタスク間通信機能を用いてメッセージ送受信を行なうことができる。このようなメッセージ通信手段は各タスク内に組み込むことができる。
【0016】
本発明に係るアプリケーション・プログラムは、複数のタスクで構成され、提供する機能毎に該機能を実現するために必要なタスクとその実行順序がセッションとして定義されている。そして、マルチタスク環境下で実行することにより、同一のソースコードを持つタスクが複数のセッションで同時に起動する。
【0017】
一般的なオペレーティング・システムはタスク間通信機能を備えているが、同一のソースコードを持つ複数のタスクを動的に特定することはできない。そこで、本発明では、セッションを起動したときに、セッションを機能毎にタスクを分割したときの各ブロックにブロックIDを割り振るとともに、ブロックIDとタスクIDの早見表であるタスク・ルックアップ・テーブルを作成する。ブロックIDは、セッション起動時に生成されるタスクのインスタンスの識別情報に相当する。
【0018】
そして、あるタスクが別のタスクへメッセージを送信する際には、送信元タスクは送信先をブロックIDで指定し、タスク・ルックアップ・テーブルを参照することによりタスクIDを取得することができる。この後、送信先のタスクIDを指定して、オペレーティング・システムのメッセージ通信機能を用いてメッセージの送受信を行なうことができる。
【0019】
したがって、本発明によれば、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定して好適にメッセージ通信を行なうことができるようになる。
【0020】
また、本発明の第2の側面は、複数のタスクを擬似的に並列に実行させるマルチタスク環境とタスク間通信機能を提供するマルチタスク・オペレーティング・システムが提供する実行環境下下で実行することにより複数の機能を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、
プログラムが提供する各機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義するセッション定義手段と、
セッションを実行するためのリソースと実行状態を管理するセッション管理手段と、
タスク間で通信を行なうメッセージ通信手段とを備え、
前記セッション管理手段は、セッション起動時に当該セッションを構成する各タスクのインスタンスを生成するとともに、当該セッション及び当該セッションを構成する各タスクのインスタンスにセッションの識別情報及びインスタンスの識別情報を割り振り、セッション毎のタスク・ルックアップ・テーブル上で前記の各識別情報を管理し、
前記メッセージ通信手段は、タスク・ルックアップ・テーブルから得られた送信先タスクのインスタンス識別情報に基づいて、前記オペレーティング・システムが提供するタスク間通信機能を用いてメッセージ送受信を行なう、
ことを特徴とするコンピュータ・プログラムである。
【0021】
本発明の第2の側面に係るコンピュータ・プログラムは、コンピュータ・システム上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本発明の第2の側面に係るコンピュータ・プログラムをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の第1の側面に係るプログラム処理システムと同様の作用効果を得ることができる。
【0022】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【0023】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態について詳解する。
【0024】
A.システム構成
図1には、本発明の実施に供されるプログラム処理システム10の構成を模式的に示している。同図に示すように、プログラム処理システム10は、プロセッサ11と、RAM(Random Access Memory)12と、ROM(Read Only Memory)13と、複数の入出力装置14−1,14−2…と、タイマ15とを含んでいる。
【0025】
プロセッサ11は、演算処理システム10のメイン・コントローラであり、オペレーティング・システム(OS)の制御下で、アプリケーションなどの各種のプログラム・コードを実行するようになっている。オペレーティング・システムは例えば組み込み型で構成される。
【0026】
オペレーティング・システムがプログラム実行を管理・制御する単位は、一般に「タスク」と呼ばれる。本実施形態に係るプログラム処理システム10では、プログラム中に複数のタスクが存在することを許容し、複数のタスクを時分割で実行し、タスクを頻繁に切り替えることにより、各タスクを擬似的に並列に実行させるマルチタスク機能を備えている。したがって、実際に計算を進める実体であるプロセッサの数よりも多くのタスクが存在し、多くのタスクをあたかも同時に実行しているかのように見える。
【0027】
オペレーティング・システムは、プロセッサ11により処理される各タスクに、他のタスクと識別可能なタスクIDを割り振り、個々のタスクの実行を管理する。但し、オペレーティング・システムは、実行されるタスク間の関連性までは考慮しない。
【0028】
一方、プログラム処理システム10上で実行されるアプリケーション・プログラムは、マルチタスク環境下で実行される複数のタスクで構成され、複数の機能を提供することができる。例えば、DVD記録再生装置における組み込みアプリケーションであれば、DVDの記録面に対する記録や再生などの複数の機能が提供される。本明細書中では、提供する機能サービス毎に当該機能を実現するために必要なタスクとその実行順序を「セッション」として定義する。また、「セッション・マネージャ」と呼ばれるタスクを備え、呼び出されたセッションを実行するためのリソースと実行状態を管理する。ここで言うリソース管理には、セッションに含まれるタスクのインスタンスの生成及びタスクが行なう入出力の管理などが含まれる。セッションを操作する側は、個々のタスクの状態を意識せず、必要な機能を実現できる。
【0029】
プロセッサ11は、バス16によって他の機器類(後述)と相互接続されている。システム・バス16上の各機器にはそれぞれ固有のメモリ・アドレス又はI/Oアドレスが付与されており、プロセッサ11はこれらアドレスを指定することによって所定の機器へのアクセスが可能となっている。システム・バス16は、アドレス・バス、データ・バス、コントロール・バスを含む共通信号伝送路である。
【0030】
RAM12は、書き込み可能なメモリであり、プロセッサ11において実行されるプログラム・コードをロードしたり、実行プログラムの作業データを一時格納したりするために使用される。プログラム・コードには、例えば、BIOS(Basic input・Output system:基本入出力システム)、周辺機器をハードウェア操作するためのデバイス・ドライバ、オペレーティング・システム、アプリケーションなどが挙げられる。
【0031】
ROM13は、所定のコードやデータを恒久的に記憶するための不揮発メモリであり、例えば、BIOSや始動時の自己診断プログラム(Power on Self Test:POST)などを格納している。
【0032】
入出力装置14には、ディスプレイ21を接続するためのディスプレイ・インターフェース14−1、キーボード22やマウス23のようなユーザ入力装置を接続するためのユーザ入力装置インターフェース14−2、ハード・ディスク24やメディア・ドライブ25などの外部記憶装置を接続するための外部記憶装置インターフェース14−3、外部ネットワークと接続するためのネットワーク・インターフェース・カード(NIC)14−4などが含まれる。但し、装備すべき入出力装置14の種類や構成などは、プログラム処理システム10の実体が何であるかに依存する。
【0033】
ディスプレイ・インターフェース14−1は、プロセッサ11が発行する描画命令を実際に処理するための専用インターフェース・コントローラである。ディスプレイ・インターフェース14−1において処理された描画データは、例えばフレーム・バッファ(図示しない)に一旦書き込まれた後、ディスプレイ21によって画面出力される。
【0034】
HDD24は、記憶担体としての磁気ディスクを固定的に搭載した外部記憶装置であり(周知)、記憶容量やデータ転送速度などの点で他の外部記憶装置よりも優れている。通常、HDD24には、プロセッサ11が実行すべきオペレーティング・システムのプログラム・コードや、アプリケーション・プログラム、デバイス・ドライバなどが不揮発的に格納されている。ソフトウェア・プログラムを実行可能な状態でHDD24上に置くことをプログラムのシステムへの「インストール」と呼ぶ。例えば、本発明を実現するオペレーティング・システムや、複数のタスクが存在するように設計されたアプリケーション・プログラムをHDD24上にインストールすることができる。
【0035】
メディア・ドライブ25は、CD(Compact Disc)やMO(Magneto−Optical disc)、DVD(Digital Versatile Disc)などの可搬型メディアを装填して、そのデータ記録面にアクセスするための装置である。
【0036】
可搬型メディアは、主として、ソフトウェア・プログラムやデータ・ファイルなどをコンピュータ可読形式のデータとしてバックアップすることや、これらをシステム間で移動(すなわち販売・流通・配布を含む)する目的で使用される。例えば、本発明を実現するオペレーティング・システムや、複数のタスクが存在するように設計されたアプリケーション・プログラムを、これら可搬型メディアを利用して複数の機器間で物理的に流通・配布することができる。
【0037】
ネットワーク・インターフェース14−1は、Ethernet(登録商標)などの所定の通信プロトコルに従って、システム10をLAN(Local Area Network)などの局所的ネットワーク、さらにはインターネットのような広域ネットワークに接続することができる。
【0038】
ネットワーク上では、複数のホスト端末(図示しない)がトランスペアレントな状態で接続され、分散コンピューティング環境が構築されている。ネットワーク上では、ソフトウェア・プログラムやデータ・コンテンツなどの配信が行うことができる。例えば、本発明を実現するオペレーティング・システムや、複数のタスクが存在するように設計されたアプリケーション・プログラムを、ネットワーク経由でダウンロードすることができる。
【0039】
各入出力装置14−1,14−2…には、割り込みレベルが割り当てられており、所定のイベント発生(例えばキーボード入力やマウス・クリックなどのGUI処理や、ハード・ディスクにおけるデータ転送の完了など)に応答して、割り込み要求信号線19を介してプロセッサ11に通知することができる。プロセッサ11は、このような割り込み要求に応答して、対応する割り込みハンドラを実行する。
【0040】
タイマ15は、タイマ信号を所定周期で発生させる装置である。タイマ15にも割り込みレベルが割り当てられており、割り込み要求信号線19を介してプロセッサ11に対して周期的な割り込みを発生する。
【0041】
B.アプリケーション・プログラムの構成
本実施形態では、アプリケーション・プログラムは、マルチタスク環境下で実行される複数のタスクで構成され、複数の機能を提供することができる。図2には、アプリケーション・プログラム100の構成を模式的に示している。
【0042】
図示のアプリケーション・プログラム100によれば、並行動作する複数のタスクの連携によって、ある特定の機能が実現される。この一連の動作のことをセッションと呼び、セッションの動作に係るタスクをセッション構成タスクと呼ぶ。図示の例では、タスク111、タスク112、タスク113の実行順序で構成されるセッション101と、タスク112、タスク114、タスク115の実行順序で構成されるセッション102が定義されている。
【0043】
また、アプリケーション・プログラム100を構成するタスクの1つはセッション・マネージャ110であり、セッション毎の動作の実行を管理する。セッション・マネージャ110は、アプリケーション・プログラム100内のすべてのセッションを一元的に管理するために、あらかじめ静的に定義されているセッション登録テーブル130を備えている。セッション登録テーブル130には各セッションの識別番号と、それぞれのセッションを構成するタスクの識別番号並びに実行順序、各セッションにおいて使用されるハードウェア資源が格納されている。
【0044】
セッション登録テーブル130には、セッションを構成するタスクの数だけタスク識別番号が登録される。このとき、異なるセッションで同一のタスクを重複して登録することが可能である。図2に示す例では、タスク112は、セッション101及びセッション102の双方に登録されている。
【0045】
セッション・マネージャ110は、セッション登録テーブル130を用いて、セッションを実行するためのリソースと実行状態を管理する。ここで言うリソース管理には、セッションに含まれるタスクのインスタンスの生成及びタスクが行なう入出力の管理などが含まれる。
【0046】
また、セッションは、タスクと同様に、起動、中断、再開、終了など、動作の実行状態を遷移させることが可能である。これらセッション単位の実行状態の操作及び管理は、セッション・マネージャ110が外部からの要求(コマンド)に応じて行なう。
【0047】
セッションの操作の際には、セッション・マネージャ110がセッションを構成するすべてのタスクの操作を一括して行なうので、セッション操作を要求する側では個々のセッション構成タスクを意識する必要はない。
【0048】
セッションの起動は、セッション・マネージャ110が、セッション登録テーブル130から当該セッションを構成する各タスクの識別番号を読み込み、該当するタスクを一斉に起動することにより行なわれる。この際、セッション・マネージャ110は、該当するセッションに対してセッション管理テーブルを作成し、そこに当該セッション及び各セッション構成タスクの識別番号及び動作状態を記録し監視する。
【0049】
また、セッションの中断及び再開の操作は、セッション・マネージャ110が、指定された識別番号を持つセッションに対し、セッション管理テーブルに記録されているセッション構成タスクの実行を一斉に中断又は再開することにより行なわれる。
【0050】
また、セッションの終了では、セッション・マネージャ110は、セッション構成タスクを一斉に強制終了し、当該セッションのセッション管理テーブルを削除する。
【0051】
上述したセッション操作の際におけるセッションを構成する各タスクの動作は、セッション・マネージャ110がオペレーティング・システムのシステム・コールを発行することにより制御する。1つのアプリケーション・プログラムにおいて複数のセッションを登録することが可能であり、複数のセッションを同時に並行動作させることが可能である。また、同種のセッションを複数同時に動作させることも可能である。また、異種のセッション間で同一のタスクを共有することも可能である。
【0052】
ここで、DVD記録再生装置における組み込みアプリケーションを例にとって、本発明に係るアプリケーション・プログラムの機能構成並びのその作用について説明する。
【0053】
図3には、DVD記録再生装置における組み込みアプリケーションの構成を模式的に示している。
【0054】
アプリケーション・プログラムは、複数のタスクで構成される。図示の例では、アプリケーション・プログラムを構成するタスクは、ソフトウェア・ブロックに格納されており(但し、セッション・マネージャを除く)、再生制御タスク、記録制御タスク、入出力制御タスク、多重化タスク、逆多重化タスク、映像符号化タスク、映像逆符号化タスク、音声符号化タスク、音声逆符号化タスク、メモリ制御タスクなどのタスクからなる。また、アプリケーション・プログラムは、入出力制御装置、多重化装置、逆多重化装置、映像信号制御装置、音声信号制御装置、メモリなどのハードウェア資源を使用する。
【0055】
また、アプリケーションは、並行動作する複数のタスクの連携によって、DVDディスクの記録面に対する再生や記録特定の機能が実現される。ここでは、これら再生や記録に関する一連の動作のことをそれぞれ「再生セッション」、「記録セッション」と呼ぶ。
【0056】
図示の例では、再生セッションは、再生制御タスク、入出力制御タスク、逆多重化タスク、映像逆符号化タスク、音声逆符号化タスク、メモリ制御タスクというセッション構成タスクで定義される。また、記録セッションは、記録制御タスク、入出力制御タスク、多重化タスク、映像符号化タスク、音声符号化タスク、メモリ制御タスクというセッション構成タスクで定義される。
【0057】
また、このアプリケーション・プログラムを構成するタスクの1つは、セッション・マネージャであり、セッション毎の動作の実行を管理する。セッション・マネージャは、このアプリケーション・プログラム内のすべてのセッションを一元的に管理するために、あらかじめ静的に定義されているセッション登録テーブルを備えている。セッション登録テーブルには、再生セッション、記録セッションなど各セッションの識別番号と、それぞれのセッションを構成するタスクの識別番号並びに実行順序、各セッションにおいて使用されるハードウェア資源が格納されている。
【0058】
セッション登録テーブルには、セッションを構成するタスクの数だけタスク識別番号が登録される。このとき、異なるセッションで同一のタスクを重複して登録することが可能である。図3に示す例では、入出力制御タスクやメモリ制御タスクは、再生セッション及び記録セッションの双方に登録されている。
【0059】
セッション・マネージャは、外部からセッションのオープンが指示されると、セッション登録テーブルを参照して、当該セッションを構成するタスクや、各タスクが使用するハードウェア資源を獲得する。そして、セッション構成タスクのインスタンスを生成するとともに、インスタンスによるハードウェア資源に対する入出力を管理する。
【0060】
また、これらのセッションは、タスクと同様に、起動、中断、再開、終了など、動作の実行状態を遷移させることが可能である。これらセッション単位の実行状態の操作及び管理は、セッション・マネージャが外部からの要求に応じて行なう。セッションの操作の際には、セッション・マネージャがセッションを構成するすべてのタスクの操作を一括して行なうので、セッション操作を要求する側では個々のセッション構成タスクを意識する必要はない。
【0061】
図3に示す例では、再生セッションや記録セッションを始め複数のセッションが登録されている。図示の例では、再生セッションや記録セッションなど複数のセッションが同時に並行動作している。また、2つの再生セッションが同時に動作している。また、再生セッションと記録セッションという異種のセッション間で、入出力制御タスクとメモリ制御タスクが共有されている。再生セッション1、記録セッション2、再生セッション1は、ソフトウェア・ブロックにあるセッション構成タスクのインスタンスを生成したイメージを示している。
【0062】
C.タスクの特定及びタスク間のメッセージ通信
前項Bでは、複数のタスクで構成され、マルチタスク環境下で実行されるアプリケーション・プログラムが、提供する機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義し、タスクの1つとして構成されるセッション・マネージャが呼び出されたセッションを実行するためのリソースと実行状態を管理する、という点を説明した。これによって、複数のタスクをセッションという形で一元的に管理することができ、なお且つ実行効率、生産性、移植性、保守性といったタスク単位での開発のメリットを生かすことができる。また、セッションを操作する側では、個々のタスクの状態を意識することなく、必要な機能を実現することが可能である。また、セッション間でタスクを共有することができるので、従来のタスク単体よりも効率的なアプリケーション開発が可能となる。
【0063】
一方、このようなセッション定義並びにセッション管理機能を備えたアプリケーション・プログラムは、マルチタスク・オペレーティング・システム上で動作させた場合に、同一のソースコードを持つタスクが複数のセッションで同時に起動する可能性が高い(例えば、図3を参照のこと)。
【0064】
このような場合、オペレーティング・システムにより提供されているメッセージ機能やフラグ機能などをソースコード上で使用する場合、プログラム開発者はあらかじめセッション数を把握してコーディングをしなければならず、セッション数およびタスク数が静的に決まっていることが必要になる。ところが、セッション数およびタスク数が固定であることを前提でコーディングしてしまうと、機能拡張や再利用を行なうときにソースコードの変更部分が多大になり、プログラムの拡張性や再利用性が低下してしまう。
【0065】
本発明は、このような問題を解決するために、セッション数及びタスク数が変更されても対応できる仕組みを実現するものである。
【0066】
通常の組み込み機器(例えば、DVD記録再生装置)では、主に機能ブロック毎にタスクを分割し実装する。まず、その機能毎にブロックIDを定義し、付加しておく。また、1つのタスクにはメッセージやメール・ボックスなどの受信部は1つのみとする。
【0067】
図4には、本実施形態に係るプログラム処理システム10のタスク間通信機能の仕組みを図解している。同図に示すように、プログラム処理システム10のタスク間通信機能は、マルチタスク・オペレーティング・システム140と、セッション・マネージャ110と、セッション内の各機能ブロック毎のタスクを参照するためのタスク・ルックアップ・テーブル150と、このタスク・ルックアップ・テーブル150を管理するテーブル・コントロール部とで構成される。
【0068】
セッション・マネージャ110によってセッションが構成され、そのセッションを構成するタスクがマルチタスク・オペレーティング・システム140によって起動される。
【0069】
タスク・ルックアップ・テーブル150は、セッション内の各機能ブロック毎のタスクを参照するための早見表である。図5には、タスク・ルックアップ・テーブル150の構成例を模式的に示している。同図に示すように、タスク・ルックアップ・テーブル150は、セッション毎にテーブル化されており、各セッションについてのセッションID、セッションを構成する各ブロックのブロックID、並びにブロックに対応するタスクのタスクIDをそれぞれ登録している。
【0070】
図6には、タスク・ルックアップ・テーブルを生成するための手順をフローチャートの形式で示している。また、図7には、マルチタスク環境下でセッションBが起動したときのタスク・ルックアップ・テーブルを生成するときの処理の流れを図解している。
【0071】
コマンド・インターフェースなどを介してセッション・オープンの指示があると、セッションを起動し(ステップS1)、セッション・マネージャ110が空きセッション番号をテーブルに問い合わせる(ステップS2、P1)。
【0072】
テーブル・コントロール部160内のテーブル管理部161は、タスク・ルックアップ・テーブル150を参照し、空きセッションIDを検索し(ステップS2、P3)、空きセッションIDをセッション管理部162に通知する(P5)。
【0073】
また、セッション管理部162は、その空きセッションIDを使用してセッションを起動するため、テーブル管理部161にセッションIDを使用する旨を通知する(ステップS3、P1)。テーブル管理部161は、この通知に応答して、セッション・ルックアップ・テーブル150上に使用するセッションIDを確保する(P2)。セッション管理部162は、そのセッションIDでセッションを起動し、セッションに属する各タスクの起動をオペレーティング・システム140に指示する(ステップS4)。
【0074】
セッション管理部162は、タスクの起動をオペレーティング・システム140に指示すると同時に、テーブル管理部163にブロックIDとタスクIDを通知する(ステップS5、P1)。そして、テーブル管理部161は、そのタスクIDとブロックIDをタスク・ルックアップ・テーブルに記録する(P2)。セッションIDとブロックIDの組み合わせにより、タスクのインスタンスを識別することができる。
【0075】
ステップS4〜S5の処理を起動させるタスクが無くなるまで行ない(ステップS6)、起動するすべてのタスク(すなわち、セッションを構成するすべてのタスク)を、当該セッションのタスク・ルックアップ・テーブルに登録する。そして、起動するすべてのタスクについての登録処理が完了すると、これに伴い、セッションの起動も完了する(ステップS7)。
【0076】
なお、タスク・ルックアップ・テーブルの登録はセッションを構成する各タスクを起動する度に行なうのではなくて、タスクの起動を開始する前、あるいはすべてのタスクを起動した後に一括して登録するようにしても良い。
【0077】
このようにして、起動した各セッション毎にタスク・ルックアップ・テーブルが作成され、セッション内での機能ブロックとタスクとの対応関係が明瞭となる。そして、起動中のあるタスクが他のタスクに対してメッセージ送信を行なおうとする際には、このタスク・ルックアップ・テーブルを参照することにより送信先となるタスクのIDを取得することができる。
【0078】
図8には、タスク・ルックアップ・テーブルを参照することによってタスクIDを取得してメッセージを送受信するための処理手順をフローチャートの形式で示している。また、図9には、タスク・ルックアップ・テーブルから取得されたタスクIDを用いてオペレーティング・システムのタスク間通信機能を用いてメッセージ送受信を行なう流れを示している。
【0079】
あるタスクが同一セッション内へメッセージの送信を行なうとき(ステップS8)、送信元のタスクは、送信先となるタスクのメール・ボックスIDを知る必要がある。本実施形態に係るプログラム処理システム100では、メール・ボックスIDをタスクIDとしているので、送信先のタスクIDを求めることになる。
【0080】
送信先のタスクIDを求めるためには、まず、当該セッションのタスク・ルックアップ・テーブルを参照して、ブロックIDを特定する(ステップS9)。他のセッションに向けた送信を行う場合はセッションIDをともに指定することで可能だが、ここでは同一セッション内のタスクに送ることを想定する。
【0081】
ブロックIDを特定した後、送信元のタスクは、テーブル管理部161にブロックIDを渡す(P6)。タスクID取得部163は、テーブル管理部161に対し、ブロックIDからタスクIDを求めるよう指示する(P7)。テーブル管理部161は、この指示に応答して、送信元のタスクが属しているセッションのセッションIDを取得し(ステップS10)、このセッションに該当するタスク・ルックアップ・テーブルよりタスクIDを取得し(P3)、これをタスクID取得部163に通知する(P8)。タスクID取得ブロックは、受け取ったタスクIDを、要求元のタスクに対して送信先タスクIDとして渡す(P9)。
【0082】
これらの動作によって、送信元タスクは、自セッション内における送信先タスクのタスクIDを取得する(ステップS11)。メッセージ送信先のメッセージ・ボックスIDは送信タスクのタスクIDと同じであるから、そのタスクIDをそのままメッセージ送信IDとして使用する。この結果、メッセージ・ボックスのID(mid)は必然的に決定される(tid=mid)。
【0083】
次いで、送信元のタスクは、メッセージを送信するため、オペレーティング・システム140が持つメッセージ送信ブロック141に対して、メッセージ・ボックスID(ここでは送信先タスクのタスクID)とメッセージ本体を送信する(ステップS12、P10)。オペレーティング・システム140は、メッセージ・ボックスIDを特定し、メッセージ受信ブロック142を通して、送信先タスクにメッセージを渡す(ステップS13、P12)。
【0084】
送信元タスクから送信先タスクへ送るメッセージの中に送信元のタスクIDを入れておくことで、送信先タスクから送信元タスクへのメッセージ送信は、テーブルからタスクIDを引くことなく送信元にメッセージを送り返すことができる(P13、P14、P15)。
【0085】
なお、上述の説明ではメッセージの送信方法を例にしたが、メール・ボックス、フラグ、データ・キューなどにおいても同様の手順で実施が可能であるということを充分理解されたい。
【0086】
D.ソースコードの記述
本実施形態に係るアプリケーション・プログラムは、複数のタスクで構成され、提供する機能毎に該機能を実現するために必要なタスクとその実行順序がセッションとして定義されている。そして、マルチタスク環境下で実行することにより、同一のソースコードを持つタスクが複数のセッションで同時に起動する。
【0087】
一般的なオペレーティング・システムはタスク間通信機能を備えているが、同一のソースコードを持つ複数のタスクを動的に特定することはできない。そこで、本実施形態では、セッションを起動したときに、セッションを各機能毎にタスクを分割したときの各ブロックにブロックIDを割り振るとともに、ブロックIDとタスクIDの早見表であるタスク・ルックアップ・テーブルを作成する。そして、あるタスクが別のタスクへメッセージを送信する際には、送信元タスクは送信先をブロックIDで指定し、タスク・ルックアップ・テーブルを参照することによりタスクIDを取得することができる。この後、送信先のタスクIDを指定して、オペレーティング・システムのメッセージ通信機能を用いてメッセージの送受信を行なうことができる。
【0088】
したがって、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定して好適にメッセージ通信を行なうことができるようになる。以下では、タスクを構成するソースコードを参照しながら、本実施形態に係るメッセージ通信の仕組みについて説明する。
【0089】
図10には、同一のソースコードからなる複数のタスクの実体(インスタンス)が起動される様子を図解している。
【0090】
図示の通り、タスクAのソースコードには、コード“rcv_msg(*msg)”によって構成されるメッセージの受信部と、コード“snd_msg(*msg)”によって構成されるメッセージの送信部が含まれている。タスクのソースコードには、受信部が1つでよいという点に十分留意されたい。
【0091】
コマンド・インターフェースからのセッション・オープンの指示に応答して、オペレーティング・システムがセッションを構成するすべてのタスクを起動することによって、その実体すなわちインスタンスが生成される。そして、オープンが指示される複数のセッションに同じタスクが含まれている場合、図示のように、同じソースコードのタスクが複数起動される。既に説明したように、タスク起動時には、タスクIDとブロックIDの対応関係がセッションについてのタスク・ルックアップ・テーブルに登録される。
【0092】
図11には、本発明に係るメッセージ通信方式を取り入れた場合のタスクのソースコード内での送信部及び受信部の記述方法を示している。
【0093】
タスクAのソースコードには、コード“rcv_msg(tid,*msg)”によって構成されるメッセージの受信部と、コード“snd_msg(stid,*msg)”によって構成されるメッセージの送信部が含まれている。
【0094】
上述したように、本実施形態では、セッション内の機能ブロック毎にブロックIDを割り振り、セッション・ルックアップ・テーブルを作成している。したがって、送信元のタスクは、送信先のタスクのブロックID(bid)からそのタスクID(tid)を検索することができ、そのtidを用いてメッセージを送信することができる。
【0095】
図11に示す例では、送信元となるタスク1では、送信先のタスクをブロックIDで指定しておく(bid=2)とともに、テーブル・ルックアップ・テーブルから当該ブロックIDを引くことで取得されるタスクIDを変数stidに代入し(stid=get_tid_from_bid(bid))、stidを送信先に指定して(snd_msg(stid,*msg))、メッセージ送信する。一方、送信先となるタスクのソースコードには、受信部が1つでよい(同上)。すなわち、コード“get_tid(tid)”により送信元タスクのtidを取得し、コード“rcv_msg(tid,+msg)”により送信元タスクからのメッセージを受信することができる。
【0096】
したがって、アプリケーション・プログラムに含まれるセッション数が増えたり、タスクの構成が変更したりしたとしても、ソースコードを変更する必要はない。
【0097】
なお、あるタスクから別のタスクへメッセージを送信する場合、ソースコード上にIDを直接記述することによっても、同一のソースコードを持つタスクが複数のセッションで同時に起動する環境下でメッセージ送受信を実現することもできる。図12には、この場合の例を示している。
【0098】
同図に示す例では、送信元のタスクのソースコードには、起動したときのセッションIDに応じた送信部を備えている。すなわち、セッション1でこのタスクが起動したときにはメッセージの送信先のタスクIDは2であり、それ以外のセッションで起動したときにはメッセージの送信先のタスクIDは3である。
【0099】
[追補]
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0100】
【発明の効果】
以上詳記したように、本発明によれば、アプリケーションが複数の機能を同時並行して動作する際に複数の機能で同一のタスクを好適に共有することができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することができる。
【0101】
また、本発明によれば、複数の機能で共有されるタスクのリソースと実行状態を好適に管理することができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することができる。
【0102】
また、本発明によれば、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定して好適にメッセージ通信を行なうことができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することができる。
【0103】
本発明によれば、目的のタスク及びメッセージ送受信先を動的に特定する機能がないオペレーティング・システムによって提供される実行環境に、当該機能をオペレーティング・システム外で提供することができる。また、このようなメッセージ送受信機能を搭載したことで、仕様変更に伴うソースコードの変更量を軽減することができ、生産性の向上につながる。
【図面の簡単な説明】
【図1】本発明の実施に供されるプログラム処理システムの構成を模式的に示した図である。
【図2】アプリケーション・プログラムの構成を模式的に示した図である。
【図3】DVD記録再生装置における組み込みアプリケーションの構成を模式的に示した図である。
【図4】プログラム処理装置10のタスク間通信機能の仕組みを説明するための図である。
【図5】タスク・ルックアップ・テーブル150の構成例を模式的に示した図である。
【図6】タスク・ルックアップ・テーブルを生成するための手順を示したフローチャートである。
【図7】マルチタスク環境下でセッションBが起動したときのタスク・ルックアップ・テーブルを生成するときの処理の流れを示した図である。
【図8】タスク・ルックアップ・テーブルを参照することによってタスクIDを取得してメッセージを送受信するための処理手順を示したフローチャートである。
【図9】タスク・ルックアップ・テーブルから取得されたタスクIDを用いてオペレーティング・システムのタスク間通信機能を用いてメッセージ送受信を行なう流れを示した図である。
【図10】同一のソースコードからなる複数のタスクの実体(インスタンス)が起動される様子を示した図である。
【図11】本発明に係るメッセージ通信方式を取り入れた場合のタスクのソースコード内での送信部及び受信部の記述方法を説明するための図である。
【図12】あるタスクから別のタスクへメッセージを送信する場合、ソースコード上にIDを直接記述することによってメッセージ送受信を実現する例を説明するための図である。
【符号の説明】
10…プログラム処理システム
11…プロセッサ
12…RAM
13…ROM
14…入出力装置
15…タイマ
16…システム・バス
19…割り込み要求線
21…ディスプレイ
22…キーボード
23…マウス
24…HDD
25…メディア・ドライブ
100…アプリケーション・プログラム
101,102…セッション
110…セッション・マネージャ
111,112,113,114,115…タスク
121,122…セッション管理テーブル
130…セッション登録テーブル
140…マルチタスク・オペレーティング・システム
150…タスク・ルックアップ・テーブル
160…テーブル・コントロール部
【発明の属する技術分野】
本発明は、複数のタスクを擬似的に同時並列的に動作させるマルチタスク環境下でアプリケーションを実行するプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムに係り、特に、アプリケーションが複数の機能を同時並行して動作する際に複数の機能で同一のタスクを共有するプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムに関する。
【0002】
さらに詳しくは、本発明は、複数の機能で共有されるタスクのリソースと実行状態を管理するプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムに係り、特に、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定してメッセージ通信を行なうプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムに関する。
【0003】
【従来の技術】
昨今のLSI(Large Scale Integration)技術における革新的な進歩とも相俟って、さまざまなタイプの情報処理機器や情報通信機器が開発・市販され、日常生活に深く浸透するに至っている。この種の機器では、オペレーティング・システムが提供する実行環境下で、CPU(Central Processing Unit)やその他のプロセッサが所定のプログラム・コードを実行することによりさまざまな処理サービスを提供するようになっている。
【0004】
一般に、オペレーティング・システムは、複数のタスクを時分割で実行することによって、プロセッサの数よりも多くのタスクをあたかも同時に実行しているかのように見せるマルチタスク機能を備えている。マルチタスク・オペレーティング・システムを使用することにより、アプリケーションを機能毎にタスクとして作成し、複数のタスクを擬似的に同時並列的に動作させることができる。
【0005】
しかしながら、オペレーティング・システムには、タスク単位の管理機能はあるものの、複数のタスクによってある特定の機能が実現されるような場合、その機能に係る一連のタスクを一元的に管理する機構は提供していない。すなわち、マルチタスクにおいて、個々のタスクの実行を制御するのみで、タスク間の関連性までは考慮しない。このため、各タスクが自分自身でタスク間の関連性を管理しなければならず、プログラムの組み易さやメンテナンス性が低下してしまう。
【0006】
また、同時並行して動作する複数の機能で同一のタスクを共有したい場合があるが、共有されるタスクを管理するような仕組みはオペレーティング・システムでは提供されない。
【0007】
また、このようなマルチタスク環境下では、同一のソースコードを持つ複数のタスクが複数存在するという状況が想定されるが、このような場合にタスクを動的に特定することはできない。
【0008】
一般的なオブジェクト間通信では、オペレーティング・システムのオブジェクト識別機能を用いてメッセージ送受信先の特定が行なわれる(例えば、特許文献1、特許文献2を参照のこと)。しかしながら、複数のセッションにおいて同じタスクが起動しているような状況においては、単にタスクを識別するタスク識別子を用いるだけでは、どのセッションのタスクなのかを特定することはできない。
【0009】
【特許文献1】
特開平08−55037号公報
【特許文献2】
特開平08−106441号公報
【0010】
【発明が解決しようとする課題】
本発明の目的は、アプリケーションが複数の機能を同時並行して動作する際に複数の機能で同一のタスクを好適に共有することができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することにある。
【0011】
本発明のさらなる目的は、複数の機能で共有されるタスクのリソースと実行状態を好適に管理することができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することにある。
【0012】
本発明のさらなる目的は、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定して好適にメッセージ通信を行なうことができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することにある。
【0013】
【課題を解決するための手段及び作用】
本発明は、上記課題を参酌してなされたものであり、その第1の側面は、複数のタスクを擬似的に並列に実行させるマルチタスク環境とタスク間通信機能を提供するマルチタスク・オペレーティング・システムが提供する実行環境下で複数のタスクからなるプログラムを実行するプログラム処理システムであって、
プログラムが提供する各機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義するセッション定義手段と、
セッションを実行するためのリソースと実行状態を管理するセッション管理手段とを備え、
前記セッション管理手段は、セッション起動時に当該セッションを構成する各タスクのインスタンスを生成するとともに、当該セッション及び当該セッションを構成する各タスクのインスタンスにセッションの識別情報及びインスタンスの識別情報を割り振り、セッション毎のタスク・ルックアップ・テーブル上で前記の各識別情報を管理する、
ことを特徴とするプログラム処理システムである。
【0014】
但し、ここで言う「システム」とは、複数の装置(又は特定の機能を実現する機能モジュール)が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【0015】
本発明に係るプログラム処理装置は、タスク間で通信を行なうメッセージ通信手段をさらに備えている。メッセージ通信手段は、タスク間で通信を行なう際に、タスクが含まれるセッションのタスク・ルックアップ・テーブルを参照して送信先タスクのインスタンス識別情報に基づいてタスクを特定して、オペレーティング・システムが提供するタスク間通信機能を用いてメッセージ送受信を行なうことができる。このようなメッセージ通信手段は各タスク内に組み込むことができる。
【0016】
本発明に係るアプリケーション・プログラムは、複数のタスクで構成され、提供する機能毎に該機能を実現するために必要なタスクとその実行順序がセッションとして定義されている。そして、マルチタスク環境下で実行することにより、同一のソースコードを持つタスクが複数のセッションで同時に起動する。
【0017】
一般的なオペレーティング・システムはタスク間通信機能を備えているが、同一のソースコードを持つ複数のタスクを動的に特定することはできない。そこで、本発明では、セッションを起動したときに、セッションを機能毎にタスクを分割したときの各ブロックにブロックIDを割り振るとともに、ブロックIDとタスクIDの早見表であるタスク・ルックアップ・テーブルを作成する。ブロックIDは、セッション起動時に生成されるタスクのインスタンスの識別情報に相当する。
【0018】
そして、あるタスクが別のタスクへメッセージを送信する際には、送信元タスクは送信先をブロックIDで指定し、タスク・ルックアップ・テーブルを参照することによりタスクIDを取得することができる。この後、送信先のタスクIDを指定して、オペレーティング・システムのメッセージ通信機能を用いてメッセージの送受信を行なうことができる。
【0019】
したがって、本発明によれば、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定して好適にメッセージ通信を行なうことができるようになる。
【0020】
また、本発明の第2の側面は、複数のタスクを擬似的に並列に実行させるマルチタスク環境とタスク間通信機能を提供するマルチタスク・オペレーティング・システムが提供する実行環境下下で実行することにより複数の機能を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、
プログラムが提供する各機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義するセッション定義手段と、
セッションを実行するためのリソースと実行状態を管理するセッション管理手段と、
タスク間で通信を行なうメッセージ通信手段とを備え、
前記セッション管理手段は、セッション起動時に当該セッションを構成する各タスクのインスタンスを生成するとともに、当該セッション及び当該セッションを構成する各タスクのインスタンスにセッションの識別情報及びインスタンスの識別情報を割り振り、セッション毎のタスク・ルックアップ・テーブル上で前記の各識別情報を管理し、
前記メッセージ通信手段は、タスク・ルックアップ・テーブルから得られた送信先タスクのインスタンス識別情報に基づいて、前記オペレーティング・システムが提供するタスク間通信機能を用いてメッセージ送受信を行なう、
ことを特徴とするコンピュータ・プログラムである。
【0021】
本発明の第2の側面に係るコンピュータ・プログラムは、コンピュータ・システム上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本発明の第2の側面に係るコンピュータ・プログラムをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の第1の側面に係るプログラム処理システムと同様の作用効果を得ることができる。
【0022】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【0023】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態について詳解する。
【0024】
A.システム構成
図1には、本発明の実施に供されるプログラム処理システム10の構成を模式的に示している。同図に示すように、プログラム処理システム10は、プロセッサ11と、RAM(Random Access Memory)12と、ROM(Read Only Memory)13と、複数の入出力装置14−1,14−2…と、タイマ15とを含んでいる。
【0025】
プロセッサ11は、演算処理システム10のメイン・コントローラであり、オペレーティング・システム(OS)の制御下で、アプリケーションなどの各種のプログラム・コードを実行するようになっている。オペレーティング・システムは例えば組み込み型で構成される。
【0026】
オペレーティング・システムがプログラム実行を管理・制御する単位は、一般に「タスク」と呼ばれる。本実施形態に係るプログラム処理システム10では、プログラム中に複数のタスクが存在することを許容し、複数のタスクを時分割で実行し、タスクを頻繁に切り替えることにより、各タスクを擬似的に並列に実行させるマルチタスク機能を備えている。したがって、実際に計算を進める実体であるプロセッサの数よりも多くのタスクが存在し、多くのタスクをあたかも同時に実行しているかのように見える。
【0027】
オペレーティング・システムは、プロセッサ11により処理される各タスクに、他のタスクと識別可能なタスクIDを割り振り、個々のタスクの実行を管理する。但し、オペレーティング・システムは、実行されるタスク間の関連性までは考慮しない。
【0028】
一方、プログラム処理システム10上で実行されるアプリケーション・プログラムは、マルチタスク環境下で実行される複数のタスクで構成され、複数の機能を提供することができる。例えば、DVD記録再生装置における組み込みアプリケーションであれば、DVDの記録面に対する記録や再生などの複数の機能が提供される。本明細書中では、提供する機能サービス毎に当該機能を実現するために必要なタスクとその実行順序を「セッション」として定義する。また、「セッション・マネージャ」と呼ばれるタスクを備え、呼び出されたセッションを実行するためのリソースと実行状態を管理する。ここで言うリソース管理には、セッションに含まれるタスクのインスタンスの生成及びタスクが行なう入出力の管理などが含まれる。セッションを操作する側は、個々のタスクの状態を意識せず、必要な機能を実現できる。
【0029】
プロセッサ11は、バス16によって他の機器類(後述)と相互接続されている。システム・バス16上の各機器にはそれぞれ固有のメモリ・アドレス又はI/Oアドレスが付与されており、プロセッサ11はこれらアドレスを指定することによって所定の機器へのアクセスが可能となっている。システム・バス16は、アドレス・バス、データ・バス、コントロール・バスを含む共通信号伝送路である。
【0030】
RAM12は、書き込み可能なメモリであり、プロセッサ11において実行されるプログラム・コードをロードしたり、実行プログラムの作業データを一時格納したりするために使用される。プログラム・コードには、例えば、BIOS(Basic input・Output system:基本入出力システム)、周辺機器をハードウェア操作するためのデバイス・ドライバ、オペレーティング・システム、アプリケーションなどが挙げられる。
【0031】
ROM13は、所定のコードやデータを恒久的に記憶するための不揮発メモリであり、例えば、BIOSや始動時の自己診断プログラム(Power on Self Test:POST)などを格納している。
【0032】
入出力装置14には、ディスプレイ21を接続するためのディスプレイ・インターフェース14−1、キーボード22やマウス23のようなユーザ入力装置を接続するためのユーザ入力装置インターフェース14−2、ハード・ディスク24やメディア・ドライブ25などの外部記憶装置を接続するための外部記憶装置インターフェース14−3、外部ネットワークと接続するためのネットワーク・インターフェース・カード(NIC)14−4などが含まれる。但し、装備すべき入出力装置14の種類や構成などは、プログラム処理システム10の実体が何であるかに依存する。
【0033】
ディスプレイ・インターフェース14−1は、プロセッサ11が発行する描画命令を実際に処理するための専用インターフェース・コントローラである。ディスプレイ・インターフェース14−1において処理された描画データは、例えばフレーム・バッファ(図示しない)に一旦書き込まれた後、ディスプレイ21によって画面出力される。
【0034】
HDD24は、記憶担体としての磁気ディスクを固定的に搭載した外部記憶装置であり(周知)、記憶容量やデータ転送速度などの点で他の外部記憶装置よりも優れている。通常、HDD24には、プロセッサ11が実行すべきオペレーティング・システムのプログラム・コードや、アプリケーション・プログラム、デバイス・ドライバなどが不揮発的に格納されている。ソフトウェア・プログラムを実行可能な状態でHDD24上に置くことをプログラムのシステムへの「インストール」と呼ぶ。例えば、本発明を実現するオペレーティング・システムや、複数のタスクが存在するように設計されたアプリケーション・プログラムをHDD24上にインストールすることができる。
【0035】
メディア・ドライブ25は、CD(Compact Disc)やMO(Magneto−Optical disc)、DVD(Digital Versatile Disc)などの可搬型メディアを装填して、そのデータ記録面にアクセスするための装置である。
【0036】
可搬型メディアは、主として、ソフトウェア・プログラムやデータ・ファイルなどをコンピュータ可読形式のデータとしてバックアップすることや、これらをシステム間で移動(すなわち販売・流通・配布を含む)する目的で使用される。例えば、本発明を実現するオペレーティング・システムや、複数のタスクが存在するように設計されたアプリケーション・プログラムを、これら可搬型メディアを利用して複数の機器間で物理的に流通・配布することができる。
【0037】
ネットワーク・インターフェース14−1は、Ethernet(登録商標)などの所定の通信プロトコルに従って、システム10をLAN(Local Area Network)などの局所的ネットワーク、さらにはインターネットのような広域ネットワークに接続することができる。
【0038】
ネットワーク上では、複数のホスト端末(図示しない)がトランスペアレントな状態で接続され、分散コンピューティング環境が構築されている。ネットワーク上では、ソフトウェア・プログラムやデータ・コンテンツなどの配信が行うことができる。例えば、本発明を実現するオペレーティング・システムや、複数のタスクが存在するように設計されたアプリケーション・プログラムを、ネットワーク経由でダウンロードすることができる。
【0039】
各入出力装置14−1,14−2…には、割り込みレベルが割り当てられており、所定のイベント発生(例えばキーボード入力やマウス・クリックなどのGUI処理や、ハード・ディスクにおけるデータ転送の完了など)に応答して、割り込み要求信号線19を介してプロセッサ11に通知することができる。プロセッサ11は、このような割り込み要求に応答して、対応する割り込みハンドラを実行する。
【0040】
タイマ15は、タイマ信号を所定周期で発生させる装置である。タイマ15にも割り込みレベルが割り当てられており、割り込み要求信号線19を介してプロセッサ11に対して周期的な割り込みを発生する。
【0041】
B.アプリケーション・プログラムの構成
本実施形態では、アプリケーション・プログラムは、マルチタスク環境下で実行される複数のタスクで構成され、複数の機能を提供することができる。図2には、アプリケーション・プログラム100の構成を模式的に示している。
【0042】
図示のアプリケーション・プログラム100によれば、並行動作する複数のタスクの連携によって、ある特定の機能が実現される。この一連の動作のことをセッションと呼び、セッションの動作に係るタスクをセッション構成タスクと呼ぶ。図示の例では、タスク111、タスク112、タスク113の実行順序で構成されるセッション101と、タスク112、タスク114、タスク115の実行順序で構成されるセッション102が定義されている。
【0043】
また、アプリケーション・プログラム100を構成するタスクの1つはセッション・マネージャ110であり、セッション毎の動作の実行を管理する。セッション・マネージャ110は、アプリケーション・プログラム100内のすべてのセッションを一元的に管理するために、あらかじめ静的に定義されているセッション登録テーブル130を備えている。セッション登録テーブル130には各セッションの識別番号と、それぞれのセッションを構成するタスクの識別番号並びに実行順序、各セッションにおいて使用されるハードウェア資源が格納されている。
【0044】
セッション登録テーブル130には、セッションを構成するタスクの数だけタスク識別番号が登録される。このとき、異なるセッションで同一のタスクを重複して登録することが可能である。図2に示す例では、タスク112は、セッション101及びセッション102の双方に登録されている。
【0045】
セッション・マネージャ110は、セッション登録テーブル130を用いて、セッションを実行するためのリソースと実行状態を管理する。ここで言うリソース管理には、セッションに含まれるタスクのインスタンスの生成及びタスクが行なう入出力の管理などが含まれる。
【0046】
また、セッションは、タスクと同様に、起動、中断、再開、終了など、動作の実行状態を遷移させることが可能である。これらセッション単位の実行状態の操作及び管理は、セッション・マネージャ110が外部からの要求(コマンド)に応じて行なう。
【0047】
セッションの操作の際には、セッション・マネージャ110がセッションを構成するすべてのタスクの操作を一括して行なうので、セッション操作を要求する側では個々のセッション構成タスクを意識する必要はない。
【0048】
セッションの起動は、セッション・マネージャ110が、セッション登録テーブル130から当該セッションを構成する各タスクの識別番号を読み込み、該当するタスクを一斉に起動することにより行なわれる。この際、セッション・マネージャ110は、該当するセッションに対してセッション管理テーブルを作成し、そこに当該セッション及び各セッション構成タスクの識別番号及び動作状態を記録し監視する。
【0049】
また、セッションの中断及び再開の操作は、セッション・マネージャ110が、指定された識別番号を持つセッションに対し、セッション管理テーブルに記録されているセッション構成タスクの実行を一斉に中断又は再開することにより行なわれる。
【0050】
また、セッションの終了では、セッション・マネージャ110は、セッション構成タスクを一斉に強制終了し、当該セッションのセッション管理テーブルを削除する。
【0051】
上述したセッション操作の際におけるセッションを構成する各タスクの動作は、セッション・マネージャ110がオペレーティング・システムのシステム・コールを発行することにより制御する。1つのアプリケーション・プログラムにおいて複数のセッションを登録することが可能であり、複数のセッションを同時に並行動作させることが可能である。また、同種のセッションを複数同時に動作させることも可能である。また、異種のセッション間で同一のタスクを共有することも可能である。
【0052】
ここで、DVD記録再生装置における組み込みアプリケーションを例にとって、本発明に係るアプリケーション・プログラムの機能構成並びのその作用について説明する。
【0053】
図3には、DVD記録再生装置における組み込みアプリケーションの構成を模式的に示している。
【0054】
アプリケーション・プログラムは、複数のタスクで構成される。図示の例では、アプリケーション・プログラムを構成するタスクは、ソフトウェア・ブロックに格納されており(但し、セッション・マネージャを除く)、再生制御タスク、記録制御タスク、入出力制御タスク、多重化タスク、逆多重化タスク、映像符号化タスク、映像逆符号化タスク、音声符号化タスク、音声逆符号化タスク、メモリ制御タスクなどのタスクからなる。また、アプリケーション・プログラムは、入出力制御装置、多重化装置、逆多重化装置、映像信号制御装置、音声信号制御装置、メモリなどのハードウェア資源を使用する。
【0055】
また、アプリケーションは、並行動作する複数のタスクの連携によって、DVDディスクの記録面に対する再生や記録特定の機能が実現される。ここでは、これら再生や記録に関する一連の動作のことをそれぞれ「再生セッション」、「記録セッション」と呼ぶ。
【0056】
図示の例では、再生セッションは、再生制御タスク、入出力制御タスク、逆多重化タスク、映像逆符号化タスク、音声逆符号化タスク、メモリ制御タスクというセッション構成タスクで定義される。また、記録セッションは、記録制御タスク、入出力制御タスク、多重化タスク、映像符号化タスク、音声符号化タスク、メモリ制御タスクというセッション構成タスクで定義される。
【0057】
また、このアプリケーション・プログラムを構成するタスクの1つは、セッション・マネージャであり、セッション毎の動作の実行を管理する。セッション・マネージャは、このアプリケーション・プログラム内のすべてのセッションを一元的に管理するために、あらかじめ静的に定義されているセッション登録テーブルを備えている。セッション登録テーブルには、再生セッション、記録セッションなど各セッションの識別番号と、それぞれのセッションを構成するタスクの識別番号並びに実行順序、各セッションにおいて使用されるハードウェア資源が格納されている。
【0058】
セッション登録テーブルには、セッションを構成するタスクの数だけタスク識別番号が登録される。このとき、異なるセッションで同一のタスクを重複して登録することが可能である。図3に示す例では、入出力制御タスクやメモリ制御タスクは、再生セッション及び記録セッションの双方に登録されている。
【0059】
セッション・マネージャは、外部からセッションのオープンが指示されると、セッション登録テーブルを参照して、当該セッションを構成するタスクや、各タスクが使用するハードウェア資源を獲得する。そして、セッション構成タスクのインスタンスを生成するとともに、インスタンスによるハードウェア資源に対する入出力を管理する。
【0060】
また、これらのセッションは、タスクと同様に、起動、中断、再開、終了など、動作の実行状態を遷移させることが可能である。これらセッション単位の実行状態の操作及び管理は、セッション・マネージャが外部からの要求に応じて行なう。セッションの操作の際には、セッション・マネージャがセッションを構成するすべてのタスクの操作を一括して行なうので、セッション操作を要求する側では個々のセッション構成タスクを意識する必要はない。
【0061】
図3に示す例では、再生セッションや記録セッションを始め複数のセッションが登録されている。図示の例では、再生セッションや記録セッションなど複数のセッションが同時に並行動作している。また、2つの再生セッションが同時に動作している。また、再生セッションと記録セッションという異種のセッション間で、入出力制御タスクとメモリ制御タスクが共有されている。再生セッション1、記録セッション2、再生セッション1は、ソフトウェア・ブロックにあるセッション構成タスクのインスタンスを生成したイメージを示している。
【0062】
C.タスクの特定及びタスク間のメッセージ通信
前項Bでは、複数のタスクで構成され、マルチタスク環境下で実行されるアプリケーション・プログラムが、提供する機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義し、タスクの1つとして構成されるセッション・マネージャが呼び出されたセッションを実行するためのリソースと実行状態を管理する、という点を説明した。これによって、複数のタスクをセッションという形で一元的に管理することができ、なお且つ実行効率、生産性、移植性、保守性といったタスク単位での開発のメリットを生かすことができる。また、セッションを操作する側では、個々のタスクの状態を意識することなく、必要な機能を実現することが可能である。また、セッション間でタスクを共有することができるので、従来のタスク単体よりも効率的なアプリケーション開発が可能となる。
【0063】
一方、このようなセッション定義並びにセッション管理機能を備えたアプリケーション・プログラムは、マルチタスク・オペレーティング・システム上で動作させた場合に、同一のソースコードを持つタスクが複数のセッションで同時に起動する可能性が高い(例えば、図3を参照のこと)。
【0064】
このような場合、オペレーティング・システムにより提供されているメッセージ機能やフラグ機能などをソースコード上で使用する場合、プログラム開発者はあらかじめセッション数を把握してコーディングをしなければならず、セッション数およびタスク数が静的に決まっていることが必要になる。ところが、セッション数およびタスク数が固定であることを前提でコーディングしてしまうと、機能拡張や再利用を行なうときにソースコードの変更部分が多大になり、プログラムの拡張性や再利用性が低下してしまう。
【0065】
本発明は、このような問題を解決するために、セッション数及びタスク数が変更されても対応できる仕組みを実現するものである。
【0066】
通常の組み込み機器(例えば、DVD記録再生装置)では、主に機能ブロック毎にタスクを分割し実装する。まず、その機能毎にブロックIDを定義し、付加しておく。また、1つのタスクにはメッセージやメール・ボックスなどの受信部は1つのみとする。
【0067】
図4には、本実施形態に係るプログラム処理システム10のタスク間通信機能の仕組みを図解している。同図に示すように、プログラム処理システム10のタスク間通信機能は、マルチタスク・オペレーティング・システム140と、セッション・マネージャ110と、セッション内の各機能ブロック毎のタスクを参照するためのタスク・ルックアップ・テーブル150と、このタスク・ルックアップ・テーブル150を管理するテーブル・コントロール部とで構成される。
【0068】
セッション・マネージャ110によってセッションが構成され、そのセッションを構成するタスクがマルチタスク・オペレーティング・システム140によって起動される。
【0069】
タスク・ルックアップ・テーブル150は、セッション内の各機能ブロック毎のタスクを参照するための早見表である。図5には、タスク・ルックアップ・テーブル150の構成例を模式的に示している。同図に示すように、タスク・ルックアップ・テーブル150は、セッション毎にテーブル化されており、各セッションについてのセッションID、セッションを構成する各ブロックのブロックID、並びにブロックに対応するタスクのタスクIDをそれぞれ登録している。
【0070】
図6には、タスク・ルックアップ・テーブルを生成するための手順をフローチャートの形式で示している。また、図7には、マルチタスク環境下でセッションBが起動したときのタスク・ルックアップ・テーブルを生成するときの処理の流れを図解している。
【0071】
コマンド・インターフェースなどを介してセッション・オープンの指示があると、セッションを起動し(ステップS1)、セッション・マネージャ110が空きセッション番号をテーブルに問い合わせる(ステップS2、P1)。
【0072】
テーブル・コントロール部160内のテーブル管理部161は、タスク・ルックアップ・テーブル150を参照し、空きセッションIDを検索し(ステップS2、P3)、空きセッションIDをセッション管理部162に通知する(P5)。
【0073】
また、セッション管理部162は、その空きセッションIDを使用してセッションを起動するため、テーブル管理部161にセッションIDを使用する旨を通知する(ステップS3、P1)。テーブル管理部161は、この通知に応答して、セッション・ルックアップ・テーブル150上に使用するセッションIDを確保する(P2)。セッション管理部162は、そのセッションIDでセッションを起動し、セッションに属する各タスクの起動をオペレーティング・システム140に指示する(ステップS4)。
【0074】
セッション管理部162は、タスクの起動をオペレーティング・システム140に指示すると同時に、テーブル管理部163にブロックIDとタスクIDを通知する(ステップS5、P1)。そして、テーブル管理部161は、そのタスクIDとブロックIDをタスク・ルックアップ・テーブルに記録する(P2)。セッションIDとブロックIDの組み合わせにより、タスクのインスタンスを識別することができる。
【0075】
ステップS4〜S5の処理を起動させるタスクが無くなるまで行ない(ステップS6)、起動するすべてのタスク(すなわち、セッションを構成するすべてのタスク)を、当該セッションのタスク・ルックアップ・テーブルに登録する。そして、起動するすべてのタスクについての登録処理が完了すると、これに伴い、セッションの起動も完了する(ステップS7)。
【0076】
なお、タスク・ルックアップ・テーブルの登録はセッションを構成する各タスクを起動する度に行なうのではなくて、タスクの起動を開始する前、あるいはすべてのタスクを起動した後に一括して登録するようにしても良い。
【0077】
このようにして、起動した各セッション毎にタスク・ルックアップ・テーブルが作成され、セッション内での機能ブロックとタスクとの対応関係が明瞭となる。そして、起動中のあるタスクが他のタスクに対してメッセージ送信を行なおうとする際には、このタスク・ルックアップ・テーブルを参照することにより送信先となるタスクのIDを取得することができる。
【0078】
図8には、タスク・ルックアップ・テーブルを参照することによってタスクIDを取得してメッセージを送受信するための処理手順をフローチャートの形式で示している。また、図9には、タスク・ルックアップ・テーブルから取得されたタスクIDを用いてオペレーティング・システムのタスク間通信機能を用いてメッセージ送受信を行なう流れを示している。
【0079】
あるタスクが同一セッション内へメッセージの送信を行なうとき(ステップS8)、送信元のタスクは、送信先となるタスクのメール・ボックスIDを知る必要がある。本実施形態に係るプログラム処理システム100では、メール・ボックスIDをタスクIDとしているので、送信先のタスクIDを求めることになる。
【0080】
送信先のタスクIDを求めるためには、まず、当該セッションのタスク・ルックアップ・テーブルを参照して、ブロックIDを特定する(ステップS9)。他のセッションに向けた送信を行う場合はセッションIDをともに指定することで可能だが、ここでは同一セッション内のタスクに送ることを想定する。
【0081】
ブロックIDを特定した後、送信元のタスクは、テーブル管理部161にブロックIDを渡す(P6)。タスクID取得部163は、テーブル管理部161に対し、ブロックIDからタスクIDを求めるよう指示する(P7)。テーブル管理部161は、この指示に応答して、送信元のタスクが属しているセッションのセッションIDを取得し(ステップS10)、このセッションに該当するタスク・ルックアップ・テーブルよりタスクIDを取得し(P3)、これをタスクID取得部163に通知する(P8)。タスクID取得ブロックは、受け取ったタスクIDを、要求元のタスクに対して送信先タスクIDとして渡す(P9)。
【0082】
これらの動作によって、送信元タスクは、自セッション内における送信先タスクのタスクIDを取得する(ステップS11)。メッセージ送信先のメッセージ・ボックスIDは送信タスクのタスクIDと同じであるから、そのタスクIDをそのままメッセージ送信IDとして使用する。この結果、メッセージ・ボックスのID(mid)は必然的に決定される(tid=mid)。
【0083】
次いで、送信元のタスクは、メッセージを送信するため、オペレーティング・システム140が持つメッセージ送信ブロック141に対して、メッセージ・ボックスID(ここでは送信先タスクのタスクID)とメッセージ本体を送信する(ステップS12、P10)。オペレーティング・システム140は、メッセージ・ボックスIDを特定し、メッセージ受信ブロック142を通して、送信先タスクにメッセージを渡す(ステップS13、P12)。
【0084】
送信元タスクから送信先タスクへ送るメッセージの中に送信元のタスクIDを入れておくことで、送信先タスクから送信元タスクへのメッセージ送信は、テーブルからタスクIDを引くことなく送信元にメッセージを送り返すことができる(P13、P14、P15)。
【0085】
なお、上述の説明ではメッセージの送信方法を例にしたが、メール・ボックス、フラグ、データ・キューなどにおいても同様の手順で実施が可能であるということを充分理解されたい。
【0086】
D.ソースコードの記述
本実施形態に係るアプリケーション・プログラムは、複数のタスクで構成され、提供する機能毎に該機能を実現するために必要なタスクとその実行順序がセッションとして定義されている。そして、マルチタスク環境下で実行することにより、同一のソースコードを持つタスクが複数のセッションで同時に起動する。
【0087】
一般的なオペレーティング・システムはタスク間通信機能を備えているが、同一のソースコードを持つ複数のタスクを動的に特定することはできない。そこで、本実施形態では、セッションを起動したときに、セッションを各機能毎にタスクを分割したときの各ブロックにブロックIDを割り振るとともに、ブロックIDとタスクIDの早見表であるタスク・ルックアップ・テーブルを作成する。そして、あるタスクが別のタスクへメッセージを送信する際には、送信元タスクは送信先をブロックIDで指定し、タスク・ルックアップ・テーブルを参照することによりタスクIDを取得することができる。この後、送信先のタスクIDを指定して、オペレーティング・システムのメッセージ通信機能を用いてメッセージの送受信を行なうことができる。
【0088】
したがって、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定して好適にメッセージ通信を行なうことができるようになる。以下では、タスクを構成するソースコードを参照しながら、本実施形態に係るメッセージ通信の仕組みについて説明する。
【0089】
図10には、同一のソースコードからなる複数のタスクの実体(インスタンス)が起動される様子を図解している。
【0090】
図示の通り、タスクAのソースコードには、コード“rcv_msg(*msg)”によって構成されるメッセージの受信部と、コード“snd_msg(*msg)”によって構成されるメッセージの送信部が含まれている。タスクのソースコードには、受信部が1つでよいという点に十分留意されたい。
【0091】
コマンド・インターフェースからのセッション・オープンの指示に応答して、オペレーティング・システムがセッションを構成するすべてのタスクを起動することによって、その実体すなわちインスタンスが生成される。そして、オープンが指示される複数のセッションに同じタスクが含まれている場合、図示のように、同じソースコードのタスクが複数起動される。既に説明したように、タスク起動時には、タスクIDとブロックIDの対応関係がセッションについてのタスク・ルックアップ・テーブルに登録される。
【0092】
図11には、本発明に係るメッセージ通信方式を取り入れた場合のタスクのソースコード内での送信部及び受信部の記述方法を示している。
【0093】
タスクAのソースコードには、コード“rcv_msg(tid,*msg)”によって構成されるメッセージの受信部と、コード“snd_msg(stid,*msg)”によって構成されるメッセージの送信部が含まれている。
【0094】
上述したように、本実施形態では、セッション内の機能ブロック毎にブロックIDを割り振り、セッション・ルックアップ・テーブルを作成している。したがって、送信元のタスクは、送信先のタスクのブロックID(bid)からそのタスクID(tid)を検索することができ、そのtidを用いてメッセージを送信することができる。
【0095】
図11に示す例では、送信元となるタスク1では、送信先のタスクをブロックIDで指定しておく(bid=2)とともに、テーブル・ルックアップ・テーブルから当該ブロックIDを引くことで取得されるタスクIDを変数stidに代入し(stid=get_tid_from_bid(bid))、stidを送信先に指定して(snd_msg(stid,*msg))、メッセージ送信する。一方、送信先となるタスクのソースコードには、受信部が1つでよい(同上)。すなわち、コード“get_tid(tid)”により送信元タスクのtidを取得し、コード“rcv_msg(tid,+msg)”により送信元タスクからのメッセージを受信することができる。
【0096】
したがって、アプリケーション・プログラムに含まれるセッション数が増えたり、タスクの構成が変更したりしたとしても、ソースコードを変更する必要はない。
【0097】
なお、あるタスクから別のタスクへメッセージを送信する場合、ソースコード上にIDを直接記述することによっても、同一のソースコードを持つタスクが複数のセッションで同時に起動する環境下でメッセージ送受信を実現することもできる。図12には、この場合の例を示している。
【0098】
同図に示す例では、送信元のタスクのソースコードには、起動したときのセッションIDに応じた送信部を備えている。すなわち、セッション1でこのタスクが起動したときにはメッセージの送信先のタスクIDは2であり、それ以外のセッションで起動したときにはメッセージの送信先のタスクIDは3である。
【0099】
[追補]
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0100】
【発明の効果】
以上詳記したように、本発明によれば、アプリケーションが複数の機能を同時並行して動作する際に複数の機能で同一のタスクを好適に共有することができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することができる。
【0101】
また、本発明によれば、複数の機能で共有されるタスクのリソースと実行状態を好適に管理することができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することができる。
【0102】
また、本発明によれば、同一のソースコードからなるタスクが複数存在する場合にメッセージ送信先を特定して好適にメッセージ通信を行なうことができる、優れたプログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラムを提供することができる。
【0103】
本発明によれば、目的のタスク及びメッセージ送受信先を動的に特定する機能がないオペレーティング・システムによって提供される実行環境に、当該機能をオペレーティング・システム外で提供することができる。また、このようなメッセージ送受信機能を搭載したことで、仕様変更に伴うソースコードの変更量を軽減することができ、生産性の向上につながる。
【図面の簡単な説明】
【図1】本発明の実施に供されるプログラム処理システムの構成を模式的に示した図である。
【図2】アプリケーション・プログラムの構成を模式的に示した図である。
【図3】DVD記録再生装置における組み込みアプリケーションの構成を模式的に示した図である。
【図4】プログラム処理装置10のタスク間通信機能の仕組みを説明するための図である。
【図5】タスク・ルックアップ・テーブル150の構成例を模式的に示した図である。
【図6】タスク・ルックアップ・テーブルを生成するための手順を示したフローチャートである。
【図7】マルチタスク環境下でセッションBが起動したときのタスク・ルックアップ・テーブルを生成するときの処理の流れを示した図である。
【図8】タスク・ルックアップ・テーブルを参照することによってタスクIDを取得してメッセージを送受信するための処理手順を示したフローチャートである。
【図9】タスク・ルックアップ・テーブルから取得されたタスクIDを用いてオペレーティング・システムのタスク間通信機能を用いてメッセージ送受信を行なう流れを示した図である。
【図10】同一のソースコードからなる複数のタスクの実体(インスタンス)が起動される様子を示した図である。
【図11】本発明に係るメッセージ通信方式を取り入れた場合のタスクのソースコード内での送信部及び受信部の記述方法を説明するための図である。
【図12】あるタスクから別のタスクへメッセージを送信する場合、ソースコード上にIDを直接記述することによってメッセージ送受信を実現する例を説明するための図である。
【符号の説明】
10…プログラム処理システム
11…プロセッサ
12…RAM
13…ROM
14…入出力装置
15…タイマ
16…システム・バス
19…割り込み要求線
21…ディスプレイ
22…キーボード
23…マウス
24…HDD
25…メディア・ドライブ
100…アプリケーション・プログラム
101,102…セッション
110…セッション・マネージャ
111,112,113,114,115…タスク
121,122…セッション管理テーブル
130…セッション登録テーブル
140…マルチタスク・オペレーティング・システム
150…タスク・ルックアップ・テーブル
160…テーブル・コントロール部
Claims (10)
- 複数のタスクを擬似的に並列に実行させるマルチタスク環境とタスク間通信機能を提供するマルチタスク・オペレーティング・システムが提供する実行環境下で複数のタスクからなるプログラムを実行するプログラム処理システムであって、
プログラムが提供する各機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義するセッション定義手段と、
セッションを実行するためのリソースと実行状態を管理するセッション管理手段とを備え、
前記セッション管理手段は、セッション起動時に当該セッションを構成する各タスクのインスタンスを生成するとともに、当該セッション及び当該セッションを構成する各タスクのインスタンスにセッションの識別情報及びインスタンスの識別情報を割り振り、セッション毎のタスク・ルックアップ・テーブル上で前記の各識別情報を管理する、
ことを特徴とするプログラム処理システム。 - タスク間で通信を行なう際に、タスクが含まれるセッションのタスク・ルックアップ・テーブルを参照して送信先タスクのインスタンス識別情報に基づいてタスクを特定して、メッセージ送受信を行なうメッセージ通信手段をさらに備える、
ことを特徴とする請求項1に記載のプログラム処理システム。 - 前記メッセージ通信手段は、タスク・ルックアップ・テーブルから得られた送信先タスクのインスタンス識別情報に基づいて、前記オペレーティング・システムが提供するタスク間通信機能を用いてメッセージ送受信を行なう、
ことを特徴とする請求項2に記載のプログラム処理システム。 - 前記メッセージ通信手段は各タスク内に組み込まれる、
ことを特徴とする請求項2に記載のプログラム処理システム。 - 複数のタスクを擬似的に並列に実行させるマルチタスク環境とタスク間通信機能を提供するマルチタスク・オペレーティング・システムが提供する実行環境下で複数のタスクからなるプログラムを実行するプログラム処理方法であって、
プログラムが提供する各機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義するセッション定義ステップと、
セッションを実行するためのリソースと実行状態を管理するセッション管理ステップとを備え、
前記セッション管理ステップでは、セッション起動時に当該セッションを構成する各タスクのインスタンスを生成するとともに、当該セッション及び当該セッションを構成する各タスクのインスタンスにセッションの識別情報及びインスタンスの識別情報を割り振り、セッション毎のタスク・ルックアップ・テーブル上で前記の各識別情報を管理する、
ことを特徴とするプログラム処理方法。 - タスク間で通信を行なう際に、タスクが含まれるセッションのタスク・ルックアップ・テーブルを参照して送信先タスクのインスタンス識別情報に基づいてタスクを特定して、メッセージ送受信を行なうメッセージ通信ステップをさらに備える、
ことを特徴とする請求項5に記載のプログラム処理方法。 - 前記メッセージ通信ステップでは、タスク・ルックアップ・テーブルから得られた送信先タスクのインスタンス識別情報に基づいて、前記オペレーティング・システムが提供するタスク間通信機能を用いてメッセージ送受信を行なう、
ことを特徴とする請求項6に記載のプログラム処理方法。 - 複数のタスクを擬似的に並列に実行させるマルチタスク環境とタスク間通信機能を提供するマルチタスク・オペレーティング・システムが提供する実行環境下下で実行することにより複数の機能を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、
プログラムが提供する各機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義するセッション定義手段と、
セッションを実行するためのリソースと実行状態を管理するセッション管理手段と、
タスク間で通信を行なうメッセージ通信手段とを備え、
前記セッション管理手段は、セッション起動時に当該セッションを構成する各タスクのインスタンスを生成するとともに、当該セッション及び当該セッションを構成する各タスクのインスタンスにセッションの識別情報及びインスタンスの識別情報を割り振り、セッション毎のタスク・ルックアップ・テーブル上で前記の各識別情報を管理し、
前記メッセージ通信手段は、タスク・ルックアップ・テーブルから得られた送信先タスクのインスタンス識別情報に基づいて、前記オペレーティング・システムが提供するタスク間通信機能を用いてメッセージ送受信を行なう、
ことを特徴とするコンピュータ・プログラム。 - 前記メッセージ通信手段は各タスク内に組み込まれる、
ことを特徴とする請求項8に記載のコンピュータ・プログラム。 - 複数のタスクを擬似的に並列に実行させるマルチタスク環境とタスク間通信機能を提供するマルチタスク・オペレーティング・システムが提供する実行環境下で複数のタスクからなるプログラムの処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、
プログラムが提供する各機能毎に該機能を実現するために必要なタスクとその実行順序をセッションとして定義するセッション定義ステップと、
セッションを実行するためのリソースと実行状態を管理するセッション管理ステップと、
前記セッション管理ステップでは、セッション起動時に当該セッションを構成する各タスクのインスタンスを生成するとともに、当該セッション及び当該セッションを構成する各タスクのインスタンスにセッションの識別情報及びインスタンスの識別情報を割り振り、セッション毎のタスク・ルックアップ・テーブル上で前記の各識別情報を管理し、
前記メッセージ通信ステップでは、タスク・ルックアップ・テーブルから得られた送信先タスクのインスタンス識別情報に基づいて、前記オペレーティング・システムが提供するタスク間通信機能を用いてメッセージ送受信を行なう、
ことを特徴とするコンピュータ・プログラム。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003129545A JP2004334537A (ja) | 2003-05-07 | 2003-05-07 | プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム |
PCT/JP2004/006510 WO2004099984A1 (ja) | 2003-05-07 | 2004-05-07 | プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム |
EP04731769A EP1622017A4 (en) | 2003-05-07 | 2004-05-07 | SYSTEM AND METHOD FOR PROCESSING PROGRAM AND COMPUTER PROGRAM |
KR1020057020822A KR20060008965A (ko) | 2003-05-07 | 2004-05-07 | 프로그램 처리 시스템 및 프로그램 처리 방법, 및 컴퓨터프로그램 |
US10/555,355 US7802253B2 (en) | 2003-05-07 | 2004-05-07 | System for session management of resources and tasks having records in the lookup table for the session |
CNB2004800191357A CN100390741C (zh) | 2003-05-07 | 2004-05-07 | 程序处理系统、程序处理方法以及计算机程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003129545A JP2004334537A (ja) | 2003-05-07 | 2003-05-07 | プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004334537A true JP2004334537A (ja) | 2004-11-25 |
Family
ID=33432077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003129545A Pending JP2004334537A (ja) | 2003-05-07 | 2003-05-07 | プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US7802253B2 (ja) |
EP (1) | EP1622017A4 (ja) |
JP (1) | JP2004334537A (ja) |
KR (1) | KR20060008965A (ja) |
CN (1) | CN100390741C (ja) |
WO (1) | WO2004099984A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7861240B2 (en) | 2005-11-10 | 2010-12-28 | Fujitsu Semiconductor Limited | Task distribution program and task distribution device for a processor device having multiprocessors |
JP2011039775A (ja) * | 2009-08-11 | 2011-02-24 | Clarion Co Ltd | データ処理装置及びデータ処理方法 |
JPWO2016075818A1 (ja) * | 2014-11-14 | 2017-04-27 | 三菱電機株式会社 | サーバー装置、クライアント装置、サーバー装置プログラム、セッション管理方法、及びクライアントサーバーシステム |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007104264A1 (fr) * | 2006-03-16 | 2007-09-20 | Huawei Technologies Co., Ltd. | Procede et systeme de commande de session, et appareil d'attribution d'identificateur de session associe dans un reseau d'acces |
CN101047706B (zh) * | 2006-03-27 | 2011-07-06 | 华为技术有限公司 | 一种接入网会话控制系统及方法 |
JP2011253511A (ja) * | 2010-06-02 | 2011-12-15 | Minoru Yoshida | 情報生成システム及びその方法 |
CN101976208B (zh) * | 2010-10-25 | 2014-08-13 | 中兴通讯股份有限公司 | 信息投递的方法和装置 |
CN102681905A (zh) * | 2011-03-09 | 2012-09-19 | 新奥特(北京)视频技术有限公司 | 一种任务之间的相互通讯方法及系统 |
US11410075B2 (en) | 2018-01-15 | 2022-08-09 | Microsoft Technology Licensing, Llc | Contextually-aware recommendations for assisting users with task completion |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5487170A (en) * | 1993-12-16 | 1996-01-23 | International Business Machines Corporation | Data processing system having dynamic priority task scheduling capabilities |
CA2149476A1 (en) | 1994-06-21 | 1995-12-22 | James Michael Magee | Capability engine method and apparatus for a microkernel data processing system |
EP0689137A3 (en) | 1994-06-22 | 1998-01-07 | International Business Machines Corporation | Message control structure registration method and apparatus for a microkernel data processing system |
FR2723652B1 (fr) * | 1994-08-11 | 1996-09-13 | Cegelec | Procede pour ordonnancer des taches successives |
JPH09223004A (ja) * | 1996-02-19 | 1997-08-26 | Nippon Telegr & Teleph Corp <Ntt> | プログラム開発支援方法 |
US6112023A (en) * | 1997-02-24 | 2000-08-29 | Lucent Technologies Inc. | Scheduling-based hardware-software co-synthesis of heterogeneous distributed embedded systems |
GB9710522D0 (en) * | 1997-05-23 | 1997-07-16 | Rolls Royce Plc | Control system |
US6678714B1 (en) * | 1998-11-16 | 2004-01-13 | Taskserver.Com, Inc. | Computer-implemented task management system |
US6889378B2 (en) * | 2000-07-24 | 2005-05-03 | Sony Corporation | Information processing method, inter-task communication method, and computer-executable program for the same |
WO2002054238A2 (en) | 2000-12-29 | 2002-07-11 | Honeywell International Inc. | Methods and apparatus for sharing slack in a time-partitioned system |
JP2002342097A (ja) * | 2001-05-17 | 2002-11-29 | Matsushita Electric Ind Co Ltd | タスク割当可能時間決定装置及びタスク割当可能時間決定方法 |
CN1152542C (zh) * | 2001-06-12 | 2004-06-02 | 华为技术有限公司 | 一种多任务操作系统中任务进程的保护方法 |
US20030037091A1 (en) * | 2001-08-09 | 2003-02-20 | Kozo Nishimura | Task scheduling device |
JP2003122586A (ja) | 2001-08-09 | 2003-04-25 | Matsushita Electric Ind Co Ltd | タスク・スケジューリング装置 |
US7203943B2 (en) * | 2001-10-31 | 2007-04-10 | Avaya Technology Corp. | Dynamic allocation of processing tasks using variable performance hardware platforms |
US7194385B2 (en) * | 2002-11-12 | 2007-03-20 | Arm Limited | Performance level setting of a data processing system |
-
2003
- 2003-05-07 JP JP2003129545A patent/JP2004334537A/ja active Pending
-
2004
- 2004-05-07 KR KR1020057020822A patent/KR20060008965A/ko not_active Application Discontinuation
- 2004-05-07 US US10/555,355 patent/US7802253B2/en not_active Expired - Fee Related
- 2004-05-07 CN CNB2004800191357A patent/CN100390741C/zh not_active Expired - Fee Related
- 2004-05-07 EP EP04731769A patent/EP1622017A4/en not_active Withdrawn
- 2004-05-07 WO PCT/JP2004/006510 patent/WO2004099984A1/ja active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7861240B2 (en) | 2005-11-10 | 2010-12-28 | Fujitsu Semiconductor Limited | Task distribution program and task distribution device for a processor device having multiprocessors |
JP2011039775A (ja) * | 2009-08-11 | 2011-02-24 | Clarion Co Ltd | データ処理装置及びデータ処理方法 |
US9176771B2 (en) | 2009-08-11 | 2015-11-03 | Clarion Co., Ltd. | Priority scheduling of threads for applications sharing peripheral devices |
JPWO2016075818A1 (ja) * | 2014-11-14 | 2017-04-27 | 三菱電機株式会社 | サーバー装置、クライアント装置、サーバー装置プログラム、セッション管理方法、及びクライアントサーバーシステム |
Also Published As
Publication number | Publication date |
---|---|
US20070162910A1 (en) | 2007-07-12 |
KR20060008965A (ko) | 2006-01-27 |
EP1622017A4 (en) | 2007-11-07 |
CN1816800A (zh) | 2006-08-09 |
US7802253B2 (en) | 2010-09-21 |
EP1622017A1 (en) | 2006-02-01 |
WO2004099984A1 (ja) | 2004-11-18 |
CN100390741C (zh) | 2008-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976925B (zh) | 一种基于混合多系统核间实时通信的方法和系统 | |
KR101330495B1 (ko) | 가상 기계 볼륨 데이터의 애플리케이션-일관성 백업 생성 방법 | |
JP5496254B2 (ja) | マシンから仮想マシンへの変換 | |
RU2324970C2 (ru) | Распределенные вычисления на основе идентичности для ресурсов устройств | |
JP2677744B2 (ja) | 分散メモリ式デジタル計算システム | |
US8458694B2 (en) | Hypervisor with cloning-awareness notifications | |
JP4690988B2 (ja) | 持続的なユーザレベルスレッド用の装置、システムおよび方法 | |
US20040083481A1 (en) | System and method for transferring data between virtual machines or other computer entities | |
WO2006035730A1 (ja) | 情報処理装置、通信処理方法、並びにコンピュータ・プログラム | |
KR20060117869A (ko) | 파티션 버스 | |
JP2000330806A (ja) | 計算機システム | |
WO2005062178A2 (en) | Method, apparatus and system for proxying, aggregating and optimizing virtual machine information for network-based management | |
KR20090095619A (ko) | 보호 영역 경계들에서의 오브젝트 호출 방법, 시스템 및 장치 | |
WO2006035729A1 (ja) | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム | |
TW200826594A (en) | Network interface techniques | |
JP2004326774A (ja) | 論理的に区画化されたコンピュータにおける区画管理操作に関する非同期通知の選択的生成 | |
JP2004334537A (ja) | プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム | |
CN115391035A (zh) | 一种异构计算资源协同管理调度的方法 | |
CN111339541B (zh) | 基于binder驱动的进程间通信IPC机制的复用方法及装置 | |
JP2004310615A (ja) | プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム | |
JP2004005222A (ja) | 格納形式が異なる記録装置のためのバックアップ技術 | |
WO2007123025A1 (ja) | 組込機器による外部との通信を代行サーバにより制御させる技術 | |
JP3993342B2 (ja) | 電子計算機における処理の中断/再開方法 | |
CN114911421B (zh) | 基于csi插件的数据存储方法、系统、装置及存储介质 | |
JPH08221372A (ja) | 分散処理システムにおける空き資源管理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060516 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060714 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070109 |