JP2007233977A - マルチタスクシステムの排他制御方法 - Google Patents
マルチタスクシステムの排他制御方法 Download PDFInfo
- Publication number
- JP2007233977A JP2007233977A JP2006058438A JP2006058438A JP2007233977A JP 2007233977 A JP2007233977 A JP 2007233977A JP 2006058438 A JP2006058438 A JP 2006058438A JP 2006058438 A JP2006058438 A JP 2006058438A JP 2007233977 A JP2007233977 A JP 2007233977A
- Authority
- JP
- Japan
- Prior art keywords
- exclusive
- service
- priority
- exclusive control
- event
- 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
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Exchange Systems With Centralized Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
【課題】 同一ユーザに対してサービスを確立するためのイベントが多様かつ輻輳的に発生するサービスを提供する際に、イベントの排他制御を適切に行う。
【解決手段】 本発明では、サービス提供に必要な1又は複数のサービスオブジェクトと、サービスオブジェクトを収容している排他制御オブジェクトを有する排他グループを規定している。各イベントを、優先イベントと非優先イベントとに分かれる。各サービスオブジェクトはそれぞれ、自オブジェクトに係る非優先イベントを収容するキューを備える。複数のキューにキューイングされている、排他グループ内の全ての非優先イベントにはリンクが張られる。排他制御オブジェクトは、優先イベントを収容するキューを備える。排他制御オブジェクトは、キューイングされている優先イベントを、リンクが張られている非優先イベントより優先して実行制御する。
【選択図】 図1
【解決手段】 本発明では、サービス提供に必要な1又は複数のサービスオブジェクトと、サービスオブジェクトを収容している排他制御オブジェクトを有する排他グループを規定している。各イベントを、優先イベントと非優先イベントとに分かれる。各サービスオブジェクトはそれぞれ、自オブジェクトに係る非優先イベントを収容するキューを備える。複数のキューにキューイングされている、排他グループ内の全ての非優先イベントにはリンクが張られる。排他制御オブジェクトは、優先イベントを収容するキューを備える。排他制御オブジェクトは、キューイングされている優先イベントを、リンクが張られている非優先イベントより優先して実行制御する。
【選択図】 図1
Description
本発明はマルチタスクシステムの排他制御方法に関し、例えば、IP電話サービスのような、1個のサービス提供サーバ(交換サーバ)が収容するユーザが非常に多く、1ユーザに対してサービスを確立するためのイベントが多様かつ輻輳的に発生する加入者サービスのサービス提供サーバ(交換サーバ)に適用し得る。
一般的な非同期通信システムのサーバ(例えば、IP電話サービスを提供している交換サーバ)では、入力されたイベントに対してコンテキストを割り当て、マルチスレッド(この明細書においてはスレッドやプロセスをまとめてスレッドと呼ぶ)の構造にて、多様で輻輳的なイベントの処理(例えば、多くの加入者からの発呼や着呼やその他の処理に応じる)を実現している。加入者サービスを実現しているサービスオブジェクトなどの上位リソースへアクセスする際には、コンテキストが再入することによって、データの破壊が起きないように、mutexなどのロックプリミティブを用いた排他制御処理を実施する(例えば、特許文献1〜特許文献3、非特許文献1、非特許文献2参照)。
例えば、加入者Aに対する発呼でも、加入者Aが加入者Bと通話状態にあるときに発生した発呼(イベントX)と、通話状態にない加入者Aに対する発呼(イベントY)とでは処理や優先度が異なり、また、加入者Aがキャッチホンサービスを契約しているか否かによっても発呼時(イベントX−1、X−2)の処理や優先度が異なり、排他制御処理が必要となっている。
イベントの順位性は、コンテキストの優先度に応じて、実現することも可能となっているが、システムに依存してしまうため、アプリケーション上でキュー配列を構築して順位付けを行う。通常、キュー長の設定は、イベント輻輳を考慮し、多めに捕捉しておく必要がある。
特開平9−026923号公報
特開平9−044368号公報
特開平9−101901号公報
www.hlla.is.tsukuba.ac.jp/~yas/sie/pdsoft−2000/2001−01−18/
www.valinux.co.jp/docs/pdf/VABF2003/VABF_T01.pdf
一元的なmutexのような排他制御では、イベントを保持したコンテキスト同士の衝突を避けるだけとなり、排他された別のイベントを保持しているコンテキストは、現在処理を行っているコンテキストの処理が完了するまで待機することとなり、サービスオブジェクトへイベント伝達がなされるまで時間がかかってしまうこととなる。そのため、サービスの継続性や品質を必要とするシステム(例えば、IP電話システム)のサーバなどには適用することはできない。
順位性を保証するためのキューは一次配列であり、キュー長は有限なものである。そのため、例えば、複数のサービスオブジェクトが一斉に生成され、イベントが発生した場合、キューあふれが発生し、イベントが喪失してしまうこととなる。
一方、キュー配列を動的に生成/確保していくモデルが考えられるが、システムメモリが限定されているようなシステムでは、キューサイズの管理を実施しなければならず、メモリ管理部がサービスオブジェクトの生成条件を意識する必要があり、オブジェクト指向開発下のモデルには適さない。以上のように、提供するサービスの特性や動作条件に見合った形に、キューの構造的配置を予め定めておくことは大変困難である。
また、キューへのイベント入力とキューからのイベント出力を実施するコンテキストにおいても、順序性を保つため、一つのキューに対して、そのコンテキストに係る入力イベント及び出力イベントを一つずつ配置しなければならない。これは、輻輳的に発生するイベントを処理するには性能的なボトルネックとなる。
さらに、既にキューイングしてあるイベントキューからある特定のオブジェクト宛のイベントを削除/変更する場合に、通常のキュー配列では、先頭からの線形検索を実施しなければ実行することができない。輻輳的にイベントが発生する場合、キュー長も大きくなっており、線形検索実施による処理時間の保証は不可能である。
そのため、収容するユーザが多く、同一ユーザに対してサービスを確立するためのイベントが多様かつ輻輳的に発生するサービスを提供するサーバなどに、好適なマルチタスクシステムの排他制御方法が望まれている。
本発明は、シングルCPUがメモリ上に展開されたサービス提供プログラムに従い、輻輳的に発生するイベントを排他制御しながら実行するマルチタスクシステムの排他制御方法において、(ア)同一の被提供者へのサービス提供に必要な1又は複数のサービスオブジェクトを所属させた、しかも、上記サービスオブジェクトを収容している排他制御オブジェクトを有する排他グループを規定し、(イ)各イベントを、実行の緊急性に基づいて、処理を優先的に行う優先イベントと、その他の非優先イベントに分離し、(ウ)上記各サービスオブジェクトはそれぞれ、自オブジェクトに係る非優先イベントを収容する非優先イベントキューを備え、(エ)上記各サービスオブジェクトの非優先イベントキューにキューイングされている、当該排他グループ内の全ての非優先イベントにリンクを張り、(オ)上記排他制御オブジェクトは、優先イベントを収容する優先イベントキューを備え、(カ)上記排他制御オブジェクトは、当該排他グループが実行権を得たときに、優先イベントキューにキューイングされている優先イベントを、リンクが張られている上記各サービスオブジェクトの非優先イベントキューにキューイングされている非優先イベントより優先して実行制御することを特徴とする。
本発明によれば、同一ユーザ(同一の被提供者)に対してサービスを確立するためのイベントが多様かつ輻輳的に発生するサービスを提供する際に、イベントの排他制御を適切に行うことができる。
(A)実施形態
以下、本発明によるマルチタスクシステムの排他制御方法の一実施形態を、図面を参照しながら詳述する。なお、以下の説明において、具体例での補足は、IP電話システムにおけるコールエージェント(交換サーバ)に設けられているマルチ呼処理タスクシステムを例に行うこととする。
以下、本発明によるマルチタスクシステムの排他制御方法の一実施形態を、図面を参照しながら詳述する。なお、以下の説明において、具体例での補足は、IP電話システムにおけるコールエージェント(交換サーバ)に設けられているマルチ呼処理タスクシステムを例に行うこととする。
(A−1)実施形態の技術思想の特徴
この実施形態は、サービスオブジェクトへ入力されるイベントの形態に伴ってキューとコンテキストの配置を最適化するための排他制御オブジェクトEXOBと、各サービスオブジェクトの基底クラスを提供することにより、オブジェクトのグルーピング、そのグループ内でサービスオブジェクトが増加したときのキュー長の自然拡張、及び、ロック処理を必要としないコンテキストの割付を実現する点に特徴を有している。
この実施形態は、サービスオブジェクトへ入力されるイベントの形態に伴ってキューとコンテキストの配置を最適化するための排他制御オブジェクトEXOBと、各サービスオブジェクトの基底クラスを提供することにより、オブジェクトのグルーピング、そのグループ内でサービスオブジェクトが増加したときのキュー長の自然拡張、及び、ロック処理を必要としないコンテキストの割付を実現する点に特徴を有している。
また、この実施形態は、イベントキューの配列をサービスオブジェクトとバインドすることにより、該当オブジェクト宛のイベントキューを即座に発見することを可能にしている点に特徴を有している。
(A−2)マルチタスク処理装置
以下、マルチタスクシステムが実装されたマルチタスク処理装置の構成を、マルチ呼処理タスク処理装置を例に説明する。
以下、マルチタスクシステムが実装されたマルチタスク処理装置の構成を、マルチ呼処理タスク処理装置を例に説明する。
マルチ呼処理タスク処理装置は、例えば、IP電話機などからの多量のVoIP信号(例えば、80万回線)を取り扱うコールエージェントに適用されているものであり、ハードウェア的には、一般的なコールエージェントと同様である。すなわち、CPU、メモリ、内蔵HDD等の大容量記憶装置、キーボード、マウス、ディスプレイ、通信インタフェース部などを備えており、CPUは、システムバスを介してメモリに接続され、また、システムバス及び入出力デバイスを介して、大容量記憶装置、キーボード、マウス、ディスプレイ、通信インタフェース部等と接続されている。
このマルチ呼処理タスク処理装置は、例えば、Linux・Windows(登録商標)等の汎用マルチタスクOSを適用している。汎用マルチタスクOSはカーネル内にTSSスケジューラを有している。
マルチ呼処理タスク処理装置1は、図2に示すように、汎用マルチタスクOS20におけるカーネル21内のTSSスケジューラ22に加え、ユーザ層に位置する、スケジューラ機能(呼処理イベントスケジューラ31)や排他制御機能(グループ別排他制御処理部32)を有する呼処理イベントエンジン30を有している。スケジュール機能面からは、TSSスケジューラ22は、イベントエンジン30を介して、VoIPアプリケーション40に係るスレッドを処理対象とし得る。言い換えると、イベントスケジューラ31は、カーネル21のTSSスケジューラ22上で動作するコンテキストである。
この実施形態の場合、後述するように、排他制御の単位となる排他グループが複数存在し、カーネル21のTSSスケジューラ22上で動作するイベントスケジューラ31は、CPUの実行権を、どの排他グループに付与するかを決定するものである。なお、この決定には、この実施形態の特徴はないのでその説明は省略する(例えば、特願2004−379909号明細書及び図面に記載の方法を適用できる)。
グループ別排他制御処理部32は、各排他グループ毎に、イベントの順位性を管理し、CPUの実行権が付与された排他グループに関しては、複数のイベントを排他制御しながら実行させるものである。
(A−3)排他グループ毎のイベントの順位性
次に、排他グループ毎のイベントの順位性を、図1を参照しながら説明する。ここで、図1は、排他グループにおけるオブジェクトとイベントキューとの関係を示す説明図である。
次に、排他グループ毎のイベントの順位性を、図1を参照しながら説明する。ここで、図1は、排他グループにおけるオブジェクトとイベントキューとの関係を示す説明図である。
排他グループは、排他制御の単位となるオブジェクトの集合体である。上述したコールエージェントの場合であれば、概ね、各排他グループはそれぞれの「呼」に対応する。
排他グループEGは、図1に示すように、排他グループEG内のイベント実行を制御するための排他制御オブジェクトEXOBと、1以上(図1は4個の例を示している)のサービスオブジェクトSEOB−1〜SEOB−4で構成される。
図1に示す排他グループEGの例では、4つのサービスオブジェクトSEOB−1〜SEOB−4が一つの排他グループEGに属しており、排他制御オブジェクトEXOBによりイベント実行制御が行われる例である。
図1は、コールエージェントにおける排他グループの例を示しており、サービスオブジェクトSEOB−1〜SEOB−4はそれぞれ、発呼側のIP電話機との信号授受を担当する「(発呼側)リソースオブジェクト」、呼処理シーケンスを担当する「コール制御オブジェクトEXOB」、3者通話サービスや転送サービスなどへの移行処理などを担当する「シナリオオブジェクト」、着呼側のIP電話機との信号授受を担当する「(着呼側)リソースオブジェクト」である。例えば、着呼側電話番号が入力されていない状態であれば、「(着呼側)リソースオブジェクト」が形成されておらず、着呼側電話番号が入力され、それに応じたスレッドが実行されることにより「(着呼側)リソースオブジェクト」が形成される。通話状態において、発呼側又は着呼側のIP電話機がオンフックされ、それに応じたスレッドが実行されることにより、オンフックされたIP電話機に係る「リソースオブジェクト」が消去、離脱される。以上のように、一つの排他グループEG内のサービスオブジェクトSEOBも増減するものである。
排他制御オブジェクトEXOBは、現在存在しているサービスオブジェクトSEOB−1〜SEOB−4のリスト情報LISを管理している。
排他グループEGは、2種類の優先度からなるイベントキューを有する。すなわち、「非優先」イベントキューQ1(Q1−1〜Q1−4)と、「優先」イベントキューQ2とを有している。
「非優先」イベントキューQ1は、外部からの入出力のような数が多く非優先的に扱うイベント(非優先イベント)EVNに対するキュー配列であり、このキューQ1は、サービスオブジェクトSEOB−1〜SEOB−4に配置されている。非優先イベントEVNは、イベント実行対象のサービスオブジェクトSEOB−1〜SEOB−4の非優先イベントキューQ1にキューイングされる。ここで、各サービスオブジェクトSEOB−1〜SEOB−4が生成している間に同時に受信すると思われる非優先イベントEVNの最大数に、非優先イベントキューQ1のキュー長が選定されている。そのため、各サービスオブジェクトSEOB−1〜SEOB−4の特性により、各サービスオブジェクトSEOB−1〜SEOB−4における必要なキュー長は異なるが、それぞれ必要なキュー長が確保される。また、サービスオブジェクトSEOBが新たに生成されてグループEG内に結合されると、排他グループEG全体に対するキュー長が伸長されたことになる。
発生した非優先イベントEVNは、上述したように、実行対象サービスオブジェクトSEOB−1〜SEOB−4の非優先イベントキューQ1にキューイングされると共に、排他グループEG内でそれまでの最後にキューイングされていた非優先イベントEVNにリンクされる。
図3は、排他グループEGの非優先イベントキューQ1間における非優先イベントEVNのリンク状態の一例を示す説明図である。
まず、非優先イベントEVN−5が生じていない、4個の非優先イベントEVN−1〜EVN−4が存在している状態を説明する。サービスオブジェクトSEOB−Aに係る非優先イベントEVN−1及びEVN−3はサービスオブジェクトSEOB−A内の非優先イベントキューQ1−Aにキューイングされ、サービスオブジェクトSEOB−Bに係る非優先イベントEVN−2はサービスオブジェクトSEOB−B内の非優先イベントキューQ1−Bにキューイングされ、サービスオブジェクトSEOB−Cに係る非優先イベントEVN−4はサービスオブジェクトSEOB−C内の非優先イベントキューQ1−Cにキューイングされる。これらの4個の非優先イベントEVN−1〜EVN−4はその生成順にリンクが張られている。すなわち、非優先イベントEVN−1から非優先イベントEVN−2へリンクが張られ、非優先イベントEVN−2から非優先イベントEVN−3へリンクが張られ、非優先イベントEVN−4から非優先イベントEVN−4へリンクが張られ、非優先イベントの処理順序が規定されている。
処理順序が先頭(1番)の非優先イベントEVN−1の位置情報STAと、処理順序が最後の非優先イベントEVN−4の位置情報ENDとは、図1に示すように、排他制御オブジェクトEXOBで管理される。リンクの先頭位置情報STAは、非優先イベントEVNを該当オブジェクトからデキューして実行するときに使用される。図3では、先頭位置情報STAとして、先頭の非優先イベントEVN−1に係るサービスオブジェクトSEOB−AのIDを格納し、最後位置情報ENDとして、最後の非優先イベントEVN−4に係るサービスオブジェクトSEOB−CのIDを格納する場合を示している。サービスオブジェクトSEOBが規定されると、その内部の非優先イベントキューQ1によって、先頭又は最後の非優先イベントEVNが一意に定まるので、図3のような格納方法を適用できる。
排他グループEGに、4個の非優先イベントEVN−1〜EVN−4が存在している状態において、新たな非優先イベントEVN−5が生じたとする。その非優先イベントEVN−5は、当該非優先イベントEVN−5に関係するサービスオブジェクトSEOB−C内の非優先イベントキューQ1−Cにキューイングされると共に、それまでの最後の非優先イベントEVN−4にリンクされる。また、最後位置情報ENDは、新たな非優先イベントEVN−5の位置に更新される。
サービスオブジェクトSEOB毎に非優先イベントキューQ1(図1でのQ1−1〜Q1−4、図3でのQ1−A〜Q1−B)を設けるのではなく、排他グループEG全体で1個の非優先イベントキューを設けることも考えられる。しかし、サービスオブジェクトSEOB毎に非優先イベントキューQ1を設ける実施形態の方法は、オブジェクトの生成/離脱に応じて、非優先イベントの順位性を動的に切り換えることができると共に、排他グループEG全体のキュー長を必要に応じて動的に切り換えることができる。
「優先」イベントキューQ2は、排他グループEG内のオブジェクト間通信で発生するようなイベント数が少なく優先的に扱うイベント(優先イベント)EVPに対するキュー配列であり、排他グループEG内で1つ配備し、これは排他制御オブジェクトEXOBに配置する。優先イベントキューQ2は即座に実行されるため、1つのイベントから複数の優先イベントEVPが発生する場合を除き、優先イベントEVPの発生は1つのみのため、排他グループEG毎にキュー長を設定することにより、メモリリソースを最低限に抑えることができる。
(A−4)優先イベント及び非優先イベントの実行
次に、上述のように、キューイングされている優先イベントと非優先イベントの実行について説明する。
次に、上述のように、キューイングされている優先イベントと非優先イベントの実行について説明する。
優先イベントEVPは排他グループEG内の各サービスオブジェクトSEOBが持つ非優先イベントEVNの実行よりも優先的に実行される。例えば、排他グループEG内のサービスオブジェクトSEOB−AからサービスオブジェクトSEOB−Bへイベントを送信した場合、当該イベントは優先イベントEVPとして排他制御オブジェクトEXOB内の優先イベントキューQ2にキューイシングされる。サービスオブジェクトSEOB−Aで行っていた処理を実施した後、コンテキストが排他制御オブジェクトEXOBに戻り次第、排他制御オブジェクトEXOBは優先イベントキューQ2からサービスオブジェクトSEOB−Bのイベントを抽出し、サービスオブジェクトSEOB−Bへイベントを伝達して処理を実施する。このとき、サービスオブジェクトSEOB−Aの優先イベントEVPを発生した処理中に、サービスオブジェクトSEOB−Bへ入力された外部からの非優先イベントEVNは、サービスオブジェクトSEOB−B内の非優先イベントキューQ1-Bへ即座にキューイングされるものの、排他制御オブジェクトEXOB内にある優先イベントキューQ2とは疎結合になっており、優先イベントの処理終了後に実行される。
図4は、非優先イベントEVNに優先させて優先イベントEVPを実行させる際の処理フローチャートである。なお、優先イベントEVPと非優先イベントEVNとの実行は、排他制御オブジェクトEXOBが制御する。
排他制御オブジェクトEXOBは、まず、当該排他グループEG内に優先イベントEVPがあるか否かを、排他制御オブジェクトEXOBが保有している優先イベントキューQ2で確認する(ステップ100)。優先イベントキューQ2に優先イベントEVPがキューイングされていれば、先頭のキューイベントをデキューし(ステップ101)、イベント実行を行うサービスオブジェクトに優先イベントEVPを渡してイベント処理を実行させる(ステップ102)。
そのようなイベント処理が終了して制御が排他制御オブジェクトEXOBに返ってくると、排他制御オブジェクトEXOBは、再度、自オブジェクトが保有している優先イベントキューQ2を見て優先イベントEVPの有無を確認する(ステップ103)。優先イベントEVPがあれば、排他制御オブジェクトEXOBは、上述と同様な処理(ステップ101、102)を繰り返し実行する。
優先イベントキューQ2に当初から優先イベントEVPが存在しない場合(ステップ100で否定結果)や、優先イベントキューQ2に存在した優先イベントEVPに係る処理を全て実行し、優先イベントキューQ2に優先イベントEVPがなくなった場合(ステップ103で否定結果)には、排他制御オブジェクトEXOBは、非優先イベントEVNの処理を行う。
非優先イベントEVNの処理ではまず、排他制御オブジェクトEXOBは、非優先イベントEVNの存在を確認する(ステップ104)。非優先イベントEVNは実行順にリンクされており、排他制御オブジェクトEXOBが保持している非優先イベントリンクの先頭情報STAに有効な情報が記述されていると、排他制御オブジェクトEXOBは、非優先イベントEVNが存在すると判断する。
排他制御オブジェクトEXOBは、非優先イベントリンクの先頭情報STAを元に、先頭非優先イベントをキューイングしているサービスオブジェクトSEOBの非優先イベイトキューQ1から非優先イベントEVNをデキューし(ステップ105)、そのサービスオブジェクトSEOBにてその非優先イベントEVNの処理を実行させる(ステップ106)。なお、デキュー時には、非優先イベントリンクの先頭情報STAの書き換えなども実行する。
非優先イベントEVNが存在しない場合(ステップ104で否定結果)や、非優先イベントEVNの処理が終了して制御が排他制御オブジェクトEXOBに返ってきた場合には、排他制御オブジェクトEXOBは、実行権を解放する(ステップ107)。言い換えると、他のコンテキスト(例えば、他の排他グループ)に実行権を渡す。
当該排他グループに実行権が戻ってくると、排他制御オブジェクトEXOBは、上述したステップ102に移行し、優先イベントキューQ2にイベントEVPがあるかを確認する。
以上のように、1回の実行権の付与では、優先イベントEVPが存在すれば、存在する全ての優先イベントENPの処理を行い、優先イベントEVPがない場合やなくなった場合には、一つの非優先イベントEVNの処理を行う。すなわち、常に優先イベントENPの処理を先に実行し、優先イベントENPがないときやなくなったときに非優先イベントEVNの処理を実行する。
(A−5)排他グループからのサービスオブジェクトの離脱
排他グループEGの構成からサービスオブジェクトSEOBがサービス上の条件により離脱する場合である。
排他グループEGの構成からサービスオブジェクトSEOBがサービス上の条件により離脱する場合である。
一度、サービス形態によるオブジェクト群が一つのサービスを成した後、サービス実施中に発生した新たな要求により、その形態を変更する必要があり、いずれかのサービスオブジェクトが離脱することがある。例えば、加入者A及び加入者Bとの通話に係る排他グループEGにおいて、通話中状態で加入者Aがオンフックしたような場合には、加入者Aとの信号授受を担当していたリソースオブジェクトSEOB−1(図1参照)は排他グループから離脱することになる。
図5は、離脱時の処理を示すフローチャートであり、図6は、離脱時の処理イメージを示す説明図である。ここで、排他制御オブジェクトEXOBにおける離脱時用のスレッドの制御下で離脱時の処理が実行される。
離脱時には、離脱するオブジェクトSEOB−1は、自分へ入力されていた非優先イベントEVNを非優先イベントキューQ1の配列から削除する(ステップ200)。次に、排他制御オブジェクトEXOB内の優先イベントキューQ2の配列から、離脱するオブジェクトSEOB−1に関係する優先イベントEVPを削除する(ステップ201)。以上のようにして、離脱するオブジェクトSEOB−1への全てのイベントEVN、EVPをキューQ1、Q2の配列から削除した後、排他制御オブジェクトEXOB内のオブジェクトリストLISとからそのサービスオブジェクトSEOB−1を削除することによって(ステップ202)、排他グループEGからのサービスオブジェクトSEOB−1の離脱を実現している。
因みに、サービスオブジェクトSEOBの追加処理は、排他制御オブジェクトEXOB内のオブジェクトリストLISへの書込みだけであり、追加直後に、必要に応じて、イベントEVN、EVPをキューQ1、Q2の配列に書き込むことになる。
ここで、非優先イベントキューQ1の配列からの削除処理では、残った非優先イベントEVNのリンクの張替えや、先頭位置情報STAや最終位置情報ENDの更新などが実行される。
図7は、離脱するオブジェクト宛の非優先イベントをキュー配列から削除する際の具体的な方法の説明図である。
図7は、2個のオブジェクトSEOB−A及びSEOB−Bがある状態から、オブジェクトSEOB−Aが離脱する場合を示している。各オブジェクトの非優先イベントキューQ1−A、Q1−Bの非優先イベントQA−1〜QA−3、QB−1〜QB−3は順序性を管理するためチェーン管理されており、前後の非優先イベントの位置情報を保持している。対象非優先イベントの削除は、この前後の非優先イベントの情報を入れ替えることにより実現する。
まず、離脱オブジェクトSEOB−Aの先頭の非優先イベントQA−1に着目し、この先頭非優先イベントQA−1が前の非優先イベントと書き込んでいる非優先イベントQB−1と、この先頭非優先イベントQA−1が後の非優先イベントと書き込んでいる非優先イベントQA−2とを直結させて先頭非優先イベントQA−1を離脱させる。
次に、離脱オブジェクトSEOB−Aの新たに先頭の非優先イベントとなった非優先イベントQA−2に着目し、この非優先イベントQA−2が前の非優先イベントと書き込んでいる非優先イベントQB−1と、この非優先イベントQA−2が後の非優先イベントと書き込んでいる非優先イベントQB−2とを直結させて非優先イベントQA−2を離脱させる。
以下、同様なアトミックな処理を、離脱オブジェクトSEOB−Aの全ての非優先イベントEVNがなくなるまで繰り返す。
(A−6)排他グループの結合と分離
次に、排他グループEGの結合と分離とについて説明する。まず、排他グループEGの結合について説明する。排他グループ結合のイメージを図8及び図9に示している。
次に、排他グループEGの結合と分離とについて説明する。まず、排他グループEGの結合について説明する。排他グループ結合のイメージを図8及び図9に示している。
排他グループの結合とは、それぞれ異なるサービスを実現している複数の排他グループが新たなサービスを実現するために1つの排他グループとしてイベント制御されることである。例えば、加入者A及び加入者Bの通話サービスに係る第1の排他グループがあり、加入者Cが発呼処理を開始した直後の第2の排他グループがあり、その後、加入者Cが入力した発呼先電話番号が加入者Aの電話番号であって、加入者Aがキャッチホンサービスに契約しているような場合には、第1及び第2の排他グループは結合される。
排他グループEGの結合は、図8に示すように、1つの排他クループEG−Aの排他制御オブジェクトEXOB−1が親排他制御オブジェクトとなり、他排他グループEG−Bの排他制御オブジェクトEXOB−2を子排他制御オブジェクトとして親排他グループEG−A(=EG−C)に所属させる。
既に結合している排他グループと既に結合している排他グループとの結合や、既に結合している排他グループと他の排他グループとの結合も可能である。例えば、既に結合している排他グループと既に結合している排他グループとの結合であれば、図9に示すように、一方の既結合排他グループEG−Aの最下位レベルの子排他制御オブジェクトEXOB−1を親排他制御オブジェクトとし、一方の既結合排他グループEG−Bの親排他制御オブジェクトEXOB−2を子排他制御オブジェクトとして結合し、新たな結合排他グループEG−Cを構成する。
排他グループの結合の必要性や、いずれを親排他制御オブジェクトとし、いずれを子排他制御オブジェクトとするかは、イベントを処理する所定のオブジェクトの中に予め規定されている。
結合された子排他制御オブジェクトは、その親排他制御オブジェクトの配下のサービスオブジェクトと同様なものとなる。図8の例であれば、結合排他グループEG−Cの親排他制御オブジェクトEXOB−1内のオブジェクトリストLISに、サービスオブジェクトSEOB−a、SEOB−bと共に、子排他制御オブジェクトEXOB−2の識別情報もリストアップされる。
グループ結合された排他グループでのイベント実行方式は、1個の排他グループのイベント実行方式とほぼ同様であり、結合された排他グループ内でのイベント実行制御は親排他制御オブジェクトから子排他制御オブジェクトへ順に分配されていく。
図8において、排他グループEG−Cでのイベント制御は、親排他制御オブジェクトEXOB−1から子排他制御オブジェクトEXOB−2に分配される。そのため、子排他制御オブジェクトEXOB−2の配下のサービスオブジェクトSEOB−c、SEOB−dへのイベント実行順序は、排他制御オブジェクトEXOB−1から分配された排他制御オブジェクトEXOB−2におけるイベント実行として、所属オブジェクトSEOB−c、SEOB−dへのイベント制御が行われる。従って、結合された排他グループEG−C内でのイベント実行順序も保たれている。
図10は、グループ結合された排他グループでのイベント実行制御を示すフローチャートであり、上述した図4との同一、対応処理には同一符号を付して示している。
図10において、排他制御オブジェクト(親排他制御オブジェクト)は、非優先イベントEVNが存在しない場合(ステップ104で否定結果)や、非優先イベントEVNの処理が終了して制御が自排他制御オブジェクトに返ってきた場合には、子排他制御オブジェクトが結合されているか否かを判別する(ステップ110)。子排他制御オブジェクトが結合されている場合には、配下の子排他制御オブジェクトに実行権を引き渡す(ステップ111)。このとき、配下の子排他制御オブジェクトは、図10に示と同様なイベント実行制御を行う。親排他制御オブジェクトは、子排他制御オブジェクトが存在しない場合(ステップ110で否定結果)や、子排他制御オブジェクトの処理が終了して制御が自排他制御オブジェクトに返ってきた場合には、実行権を解放する(ステップ107)。言い換えると、他のコンテキスト(例えば、他の排他グループ)に実行権を渡す。
次に、排他グループEGの分離について説明する。図11は、結合排他グループの分離のイメージを示している。
排他グループの分離とは、結合されて1つになった排他グループ内から、子排他制御オブジェクトに係る排他グループが、親排他制御オブジェクトに係るグループの所属から分離し、子排他制御オブジェクトが自ら実行を分配する親排他制御オブジェクト相当のイベント制御を行う状態になることである。当初からの親排他制御オブジェクトは、制御対象は減少したが、継続して制御を実効的に行う。例えば、加入者A、B、Cによる3者通話状態から、一人の加入者がオンフックし、オンフックした加入者との切断処理が残っているような状態への変化では、排他グループの分離が必要となる。
排他グループの分離の必要性や、どこで分離するかは、イベントを処理する所定のオブジェクトの中に予め規定されている。
図11は、排他グループ結合した排他グループEG−Dを排他制御オブジェクトEXOB−1と排他制御オブジェクトEXOB−2の間で分離する例である。排他制御オブジェクトEXOB−1と排他制御オブジェクトEXOB−2の間で分離すると、排他制御オブジェクトEXOB−1は排他グループEG−Eを形成し、排他制御オブジェクトEXOB−2は配下の排他制御オブジェクトEXOB−3、4と共に排他グループEG−Fを形成する。
分離した排他グループEG−Eの排他制御オブジェクトEXOB−1は、引き続き親排他制御オブジェクトとしてグループ内のイベント制御を実行し、排他グループEG−Fの排他制御オブジェクトEXOB−2は、親排他制御オブジェクトになってグループ内のイベント制御を実行する。
例えば、分離前の結合排他グループEG−Dの親排他制御オブジェクトEXOB−1内のオブジェクトリストLISから、子排他制御オブジェクトEXOB−2の識別情報が除外されることで排他グループEG−Eの分離がなされる。
(A−7)排他グループ内のサービスオブジェクトの移動
次に、結合排他グループ内におけるサービスオブジェクトの移動について説明する。図12は、結合排他グループ内でのオブジェクト移動のイメージを示している。
次に、結合排他グループ内におけるサービスオブジェクトの移動について説明する。図12は、結合排他グループ内でのオブジェクト移動のイメージを示している。
図12は、親排他制御オブジェクトEXOB−1に所属するサービスオブジェクトSEOB−bが、子排他制御オブジェクトEXOB−2の所属となる例を示している。例えば、キャッチホンサービスにおいて、待機中の加入者が切り替わるような場合には、親から子の移動や、子から親への移動が並行的に実行される。
結合排他グループ内におけるサービスオブジェクトの移動の必要性や、いずれを移動するかは、イベントを処理する所定のオブジェクトの中に予め規定されている。
親排他制御オブジェクトEXOB−1に所属するオブジェクトSEOB−bは、同一排他グループEG−A内の子排他制御オブジェクトEXOB−2の部分排他グループへ移動することができる。オブジェクトSEOB−bが移動するとき、オブジェクトSEOB−bの非優先イベントEVNがキューイングされている場合、そのイベントと共に子排他制御オブジェクトEXOB−2の所属へ移動し、イベント実行順序は最後になる。なお、親排他制御オブジェクトEXOB−1に残っている他のサービスオブジェクトの非優先イベントのリンクの張り直しも適宜実行される。
図12に示すような移動では、親排他制御オブジェクトEXOB−1内のオブジェクトリストLISから、サービスオブジェクトSEOB−bが除外され、子排他制御オブジェクトEXOB−2のオブジェクトリストLISには、サービスオブジェクトSEOB−bが追加される。
なお、図12では、親排他制御オブジェクトから子排他制御オブジェクトへのサービスオブジェクトの移動を示したが、子排他制御オブジェクトから親排他制御オブジェクトへサービスオブジェクトが移動することもある。
(A−8)実施形態の効果
上記実施形態によれば、以下の効果を奏することができる。
上記実施形態によれば、以下の効果を奏することができる。
(A−8−1)上記実施形態によれば、要求されたイベントは、排他グループ内において、優先イベントと非優先イベントとに分離して管理され、イベントの順序性を厳密に保つことができる。
また、サービスの段階、状態により、同一の排他制御オブジェクトに収容されているサービスオブジェクトの数が変化しても、各サービスオブジェクト毎に、キュー長が設けられていて、トータルとしてのキュー長がダイナミックに変化するため、キュー配列を予め捕捉しておく必要がなく、メモリリソースの節約ができ、かつ、輻輳的に発生したイベントにも対応することできる。
さらに、キュー長を排他制御オブジェクトは意識せず、各サービスオブジェクト側で意識するため、多様なサービスに対応することが可能となる。
さらにまた、優先イベント、非優先イベント(のキュー)がメモリ的にも別オブジェクトにて配置されていて疎結合となっているため、キュー操作をそれぞれ、別のコンテキストで実施しても、コンテキスト競合が発生せず、高速なキューイングオペレーションを実現することが可能となる。
また、サービス過渡期若しくは実施中に、サービスを構成するオブジェクトを変更するようなリアルタイムサービスにも容易に対応することができる。
また、上記実施形態によれば、オブジェクト指向に基づき生成される各オブジェクト間でのイベント通信を可能とするオブジェクト仮想ネットワークを実現しつつ、ユーザ処理部において独自でイベントの排他および順序の考慮を必要としないため、一貫したオブジェクトモデルを構築可能とし、一定な性能品質を保証する。
(A−8−2)上記実施形態によれば、排他グループからサービスオブジェクトが離脱する際に、当該オブジェクト内にキュー配列が配置されているため、当該オブジェクト内のキュー配列のキュー操作を行うだけで必要な動作を完了させることができる。
これは、キュー配列から該当するイベントキューを探すために、排他グループ全体のキュー配列を線形検索する必要がなく、該当するイベントキュー操作を即座に実施でき、高速なキュー配列操作を実施することが可能となっている。
排他グループの結合では、排他グループ(子排他グループ)を1つのサービスオブジェクトと見立てることで優先イベント、非優先イベントの順序制御が親排他制御オブジェクトの制御下で行うことができる。
(A−8−3)上記実施形態によれば、排他グループの結合、分離を行うことにより、例えば、複数の入出力を伴うサービスでも、入出力の排他制御を一元的に管理することが可能となり、複雑なサービスへ対応することが可能となっている。
(A−8−4)上記実施形態によれば、例えば、複数ある入出力を持つサービスにおいて、1つの入出力を別のサービスへ移行させることが可能となっている。
(B)他の実施形態
本発明のマルチタスク処理装置及び方法は、上記実施形態に示したような、オブジェクトが単独又はグルーピングされ、オブジェクトへのイベント入出力によってサービスを実現するようなシステムに適用可能である。
本発明のマルチタスク処理装置及び方法は、上記実施形態に示したような、オブジェクトが単独又はグルーピングされ、オブジェクトへのイベント入出力によってサービスを実現するようなシステムに適用可能である。
例えば、メディアゲートウェイコントローラ(MGC)などの電話交換装置にも適用できる。また例えば、Webアプリケーションサーバなどにも適用できる
1…マルチ呼処理スレッド処理装置、10…ハードウェア、20…汎用マルチタスクOS、21…カーネル、22…TSSスケジューラ、30…呼処理イベントエンジン、31…呼処理イベントスケジューラ、32…グループ別排他制御処理部、40…VoIPアプリケーション。
Claims (6)
- シングルCPUがメモリ上に展開されたサービス提供プログラムに従い、輻輳的に発生するイベントを排他制御しながら実行するマルチタスクシステムの排他制御方法において、
同一の被提供者へのサービス提供に必要な1又は複数のサービスオブジェクトを所属させた、しかも、上記サービスオブジェクトを収容している排他制御オブジェクトを有する排他グループを規定し、
各イベントを、実行の緊急性に基づいて、処理を優先的に行う優先イベントと、その他の非優先イベントに分離し、
上記各サービスオブジェクトはそれぞれ、自オブジェクトに係る非優先イベントを収容する非優先イベントキューを備え、
上記各サービスオブジェクトの非優先イベントキューにキューイングされている、当該排他グループ内の全ての非優先イベントにリンクを張り、
上記排他制御オブジェクトは、優先イベントを収容する優先イベントキューを備え、
上記排他制御オブジェクトは、当該排他グループが実行権を得たときに、優先イベントキューにキューイングされている優先イベントを、リンクが張られている上記各サービスオブジェクトの非優先イベントキューにキューイングされている非優先イベントより優先して実行制御する
ことを特徴とするマルチタスクシステムの排他制御方法。 - サービス提供の形態、段階に応じて、排他グループ内にサービスオブジェクトを追加させ、又は、排他グループ内から所定のサービスオブジェクトを離脱させ、離脱時には、非優先イベントのリンクを張り直すことを特徴とする請求項1に記載のマルチタスクシステムの排他制御方法。
- サービス提供の形態、段階に応じて、複数の排他グループを、上記各排他グループの上記排他制御オブジェクトが親子関係となるように、かつ、上記各排他制御オブジェクトが上記サービスオブジェクトの収容状態を維持したまま、結合することを特徴とする請求項1又は2に記載のマルチタスクシステムの排他制御方法。
- 親の上記排他制御オブジェクトは、子の上記排他制御オブジェクトを、自己が収容するサービスオブジェクトと同列で排他制御対象とすることを特徴とする請求項3に記載のマルチタスクシステムの排他制御方法。
- サービス提供の形態、段階に応じて、複数の上記排他グループが結合されて形成されている排他グループを、2個の上記排他制御オブジェクト間の親子関係を分断することにより、分離することを特徴とする請求項3又は4に記載のマルチタスクシステムの排他制御方法。
- サービス提供の形態、段階に応じて、複数の上記排他グループが結合されて形成されている排他グループ内において、所定の上記サービスオブジェクトの収容先の上記排他制御オブジェクトを変更することを特徴とする請求項3又は4に記載のマルチタスクシステムの排他制御方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006058438A JP2007233977A (ja) | 2006-03-03 | 2006-03-03 | マルチタスクシステムの排他制御方法 |
CNA2006101680898A CN101030150A (zh) | 2006-03-03 | 2006-12-18 | 多任务系统的排它控制方法 |
US11/713,020 US20070220519A1 (en) | 2006-03-03 | 2007-03-02 | Exclusive control method in a multitask system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006058438A JP2007233977A (ja) | 2006-03-03 | 2006-03-03 | マルチタスクシステムの排他制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007233977A true JP2007233977A (ja) | 2007-09-13 |
Family
ID=38519514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006058438A Pending JP2007233977A (ja) | 2006-03-03 | 2006-03-03 | マルチタスクシステムの排他制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070220519A1 (ja) |
JP (1) | JP2007233977A (ja) |
CN (1) | CN101030150A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9521134B2 (en) * | 2015-05-13 | 2016-12-13 | Atto Research Co., Ltd. | Control apparatus in software defined network and method for operating the same |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0970055A (ja) * | 1995-08-31 | 1997-03-11 | Oki Tsushin Syst Kk | オブジェクト指向型ソフトウェアの排他制御方法 |
JP2003058382A (ja) * | 2001-08-16 | 2003-02-28 | Nec Corp | 情報処理システムにおける優先実行制御方法及びその装置並びにプログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6161147A (en) * | 1995-03-31 | 2000-12-12 | Sun Microsystems, Inc. | Methods and apparatus for managing objects and processes in a distributed object operating environment |
WO2002035312A2 (en) * | 2000-10-16 | 2002-05-02 | Goahead Software Inc. | Techniques for maintaining high availability of networked systems |
JP3726741B2 (ja) * | 2001-11-16 | 2005-12-14 | 日本電気株式会社 | パケット転送装置、方法およびプログラム |
US6993602B2 (en) * | 2002-01-29 | 2006-01-31 | Intel Corporation | Configuring queues based on a given parameter |
US20070204268A1 (en) * | 2006-02-27 | 2007-08-30 | Red. Hat, Inc. | Methods and systems for scheduling processes in a multi-core processor environment |
-
2006
- 2006-03-03 JP JP2006058438A patent/JP2007233977A/ja active Pending
- 2006-12-18 CN CNA2006101680898A patent/CN101030150A/zh active Pending
-
2007
- 2007-03-02 US US11/713,020 patent/US20070220519A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0970055A (ja) * | 1995-08-31 | 1997-03-11 | Oki Tsushin Syst Kk | オブジェクト指向型ソフトウェアの排他制御方法 |
JP2003058382A (ja) * | 2001-08-16 | 2003-02-28 | Nec Corp | 情報処理システムにおける優先実行制御方法及びその装置並びにプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20070220519A1 (en) | 2007-09-20 |
CN101030150A (zh) | 2007-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7987467B2 (en) | Scale across in a grid computing environment | |
JP5597196B2 (ja) | プロセス内のスケジューラインスタンス | |
US20100153957A1 (en) | System and method for managing thread use in a thread pool | |
US9535756B2 (en) | Latency-hiding context management for concurrent distributed tasks in a distributed system | |
CN103197968A (zh) | 一种融合同步异步特点的线程池处理方法及系统 | |
CN104601696B (zh) | 服务处理方法、服务调用系统、装置和系统 | |
WO2017133623A1 (zh) | 一种数据流处理方法、装置和系统 | |
CN101452399B (zh) | 任务二级调度模块及方法 | |
JP7050957B2 (ja) | タスクスケジューリング | |
JPH0563821B2 (ja) | ||
CN101840328A (zh) | 一种数据处理方法及系统以及相关设备 | |
CN110413210B (zh) | 用于处理数据的方法、设备和计算机程序产品 | |
CN112214318A (zh) | 一种任务调度方法、系统、设备以及介质 | |
WO2023284171A1 (zh) | 一种系统重启后的资源分配方法、系统及相关组件 | |
US7047531B2 (en) | Method and apparatus for automated network polling | |
JP2007233977A (ja) | マルチタスクシステムの排他制御方法 | |
CN104769553A (zh) | 用于支持集群中的工作共享复用的系统和方法 | |
US10656967B1 (en) | Actor and thread message dispatching | |
CN114610465B (zh) | 任务处理方法、装置及存储介质 | |
CN109344091B (zh) | 一种缓冲数组规整方法、装置、终端及可读介质 | |
JP6413817B2 (ja) | 会話管理システム、会話管理方法及び会話管理プログラム | |
US20140019992A1 (en) | Method of Parallel Processing of Ordered Data Streams | |
CN113626181B (zh) | 一种内存清理方法、装置、设备及可读存储介质 | |
CN114035929B (zh) | 多顺序模式的任务执行方法、装置、系统和存储介质 | |
CN114691320A (zh) | 一种数据处理方法、装置、及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080317 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091119 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100105 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100511 |