JP3900621B2 - 情報処理方法及び記録媒体 - Google Patents

情報処理方法及び記録媒体 Download PDF

Info

Publication number
JP3900621B2
JP3900621B2 JP28389897A JP28389897A JP3900621B2 JP 3900621 B2 JP3900621 B2 JP 3900621B2 JP 28389897 A JP28389897 A JP 28389897A JP 28389897 A JP28389897 A JP 28389897A JP 3900621 B2 JP3900621 B2 JP 3900621B2
Authority
JP
Japan
Prior art keywords
thread
pattern
kernel
threads
area
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
JP28389897A
Other languages
English (en)
Other versions
JPH11120010A (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 JP28389897A priority Critical patent/JP3900621B2/ja
Publication of JPH11120010A publication Critical patent/JPH11120010A/ja
Application granted granted Critical
Publication of JP3900621B2 publication Critical patent/JP3900621B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
この発明は、カーネルスレッドにて並列処理を行うオペレーティングシステムを用いる情報処理方法並びにこのオペレーティングシステムのプログラムが記録された記録媒体に関する。
【0002】
【従来の技術】
従来、マルチタスクの基本ソフトウェアであるオペレーティングシステム(Operating System; OS)上においては、処理の単位であるタスクを見かけ上並行して実行する並列処理が行われている。たとえば、クライアントサーバ型のマルチタスクOSであるUNIX(UNIXはAT&Tの商標)の処理実行単位はプロセスであるが、一のプロセスの実行中にコマンド“fork”により他のプロセスを生成して複数のプロセスを並列に処理することができる。
【0003】
このように、タスクレベルで並行して処理をするために親プロセスから子プロセスを生成すると、子プロセスの起動/終了にオーバヘッドを要し、また、親プロセスと子プロセス間でメモリの共有がそのままではできないというデメリットがある。
【0004】
一方、プロセスより軽いCPU割り当ての単位であるスレッド(thread)を単位として並列処理が行われることがある。このスレッドは、プロセス中に複数存在することができる。さらに、複数のスレッドを起動して単一プロセスの中にアドレス領域を共有させ、かつパフォーマンスを向上させるようないわゆるマルチスレッドが利用されている。
【0005】
【発明が解決しようとする課題】
ところで、OS上における同期化は、アプリケーションであるタスクレベルで実現されている。このため、タスクレベルでの同期化により、上述のデメリットを招来することになる。
【0006】
すなわち、同期化がタスクとして実装された場合には、タスク切り換えに伴うカーネルのスケジューラの起動とコンテクストの切り換えが頻繁に発生し、実行効率の低下を招くことになる。
【0007】
一方、通常のカーネルスレッドとしての処理を実装した場合には、条件付きスレッドのイベント起床や、マルチキャストに代表されるような1対多のような同期関係を実現することができない。
【0008】
この発明は、上述の実情に鑑みてなされるものであって、スレッド間で同期関係を取り、条件付きの起床や、1対多の通信をすることができるような情報処理方法及び記録媒体を提供することを目的とする。
【0009】
【課題を解決するための手段】
上述の課題を解決するために、この発明に係る情報処理方法は、スレッドがスリープする際に当該スレッドに係る情報を表現するパターン、スレッドを実行する際のスタックポインタ及びスレッドのコンテクストを格納する格納領域と、スタック領域とをスレッド毎に生成し、上記スレッドを当該スレッドのスタック領域を用いて並行実行し、スリープ状態のスレッドを起床させる実行コードを実行する際、当該実行コードの関数の引数のパターンとスリープ状態のスレッドの格納領域に格納されたパターンとを照合し、当該パターンが一致した場合、当該パターンが格納領域に格納されたスリープ状態のスレッドを起床させ、スレッド間の同期を取るものである。
【0010】
また、この発明に係る記録媒体は、スレッドがスリープする際に当該スレッドに係る情報を表現するパターン、スレッドを実行する際のスタックポインタ及びスレッドのコンテクストを格納する格納領域と、スタック領域とをスレッド毎に生成し、上記スレッドを当該スレッドのスタック領域を用いて並行実行し、スリープ状態のスレッドを起床させる実行コードを実行する際、当該実行コードの関数の引数のパターンとスリープ状態のスレッドの格納領域に格納されたパターンとを照合し、当該パターンが一致した場合、当該パターンが格納領域に格納されたスリープ状態のスレッドを起床させ、スレッド間の同期を取るオペレーティングシステムのプログラムが記録されたものである。
【0011】
【発明の実施の形態】
以下、この発明に係る情報処理方法及び記録媒体について、図面を参照して説明する。
【0012】
ここでは、情報処理方法及び記録媒体の実施の形態として、カーネルスレッド(kernel thread )A、カーネルスレッドB及びカーネルスレッドCを例に取り、これらのカーネルスレッド間での同期方式について説明する。
【0013】
ここで、カーネル(kernel)とはオペレーティングシステム(operating system; OS)の中核部分である。スレッド(thread)とはプロセスよりも軽い処理実行単位である。
【0014】
まず、カーネルスレッド間の相互の関係について、図1を参照して説明する。図は、カーネルスレッドA及びカーネルスレッドCの2つのカーネルスレッドが並行して実行されている状態を示している。
【0015】
カーネルスレッドAにおいて、パターンPAを引数としたイベント待ちインターフェース関数“drv_sleep() ”が実行されると、このカーネルスレッドAはイベント待ちのためにスリープする。スリープとは、イベント待ちのために実行を一時的に中断し、再実行を待つ状態である。
【0016】
ここで、スレッドを特定するためにパターンが利用されている。パターンとは整数型の語長を持ち、ビット位置によりスレッドの識別を行うものである。
【0017】
一方、カーネルスレッドCにおいて、パターンPCを引数とするイベント起床関数“drv_wakeup()”が実行されると、カーネルスレッドCがイベント起床を行う。起床とは、スリープ状態にあったスレッドが、イベントが発生したために実行を再開することである。
【0018】
なお、パターンPAがパターンPCに一致する場合には、スリープしているカーネルスレッドAを再実行させる。
【0019】
次に、カーネルスレッドのデータ構造について、図2を参照して説明する。
カーネルスレッドAのデータ構造10は、図中のAに示すように、スレッドAがスリープするときにパターンを格納するエリア11、スレッドAを実行する際のスタックポインタを格納するエリア12、レジスタを格納するコンテクスト(context )のエリア13を備えている。
【0020】
カーネルスレッドBのデータ構造20は、カーネルスレッドAのデータ構造と同様に、図中のBに示すように、パターンを格納するエリア21、スレッドBを実行する際のスタックポインタを格納するエリア22、コンテクストのエリア23を備えている。
【0021】
カーネルスレッドCのデータ構造30は、カーネルスレッドA及びカーネルスレッドBのデータ構造と同様に、図中のCに示すように、パターンを格納するエリア31、スレッドCを実行する際のスタックポインタを格納するエリア32、コンテクストエリア33を備えている。
【0022】
次に、スタックのデータ構造について、図3を参照して説明する。
カーネルの管理するスタック40は、カーネルのスケジューラが使用するスタック41、カーネルスレッドAが使用するスタック42、カーネルスレッドBが使用するスタック43、カーネルスレッドCが使用するスタック44を備えている。
【0023】
次に、カーネルスレッドの実行コードについて、図4を参照して説明する。
図中のAには、カーネルスレッドAの実行コード50として、イベント待ちインターフェース関数“drv_sleep()”前の実行コード51、イベント待ちインターフェース関数“drv_sleep()”52、イベント待ちインターフェース関数“drv_sleep()”後の実行コード53が示されている。
【0024】
図中のBには、カーネルスレッドBの実行コード60として、イベント待ちインターフェース関数“drv_sleep()”前の実行コード61、イベント待ちインターフェース関数“drv_sleep()”62、イベント待ちインターフェース関数“drv_sleep()”後の実行コード63が示されている。
【0025】
図中のCには、カーネルスレッドCの実行コード70として、イベント待ちインターフェース関数“drv_sleep()”前の実行コード71、イベント待ちインターフェース関数“drv_sleep()”72、イベント待ちインターフェース関数“drv_sleep()”後の実行コード73が示されている。
【0026】
これらの実行コードにおいては、実行コードは図中の上方から下方に矢印の方向に順に実行され、イベント待ちインターフェース関数“drv_sleep() ”に達すると、パターンが一致するカーネルスレッドがイベント待ちのためにスリープする。
【0027】
次に、イベント待ちのためにスリープしたカーネルスレッドを起床させる際にスレッドの指定がある場合の一連の工程を、図5に示すフローチャートを参照して説明する。
【0028】
最初のステップS11においては、図4中のAに示したスレッドAの実行コードの内で、パターンPAを引数とするイベント待ちインターフェース関数“drv_slreep(・・・PA)”52前の実行コード51の実行に引き続き、このイベント待ちインターフェース関数“drv_sleep(・・・PA)”を実行する。そして、次のステップS12に進む。
【0029】
ステップS12においては上記図2中のAに示したカーネルスレッドAのデータ構造を用い、カーネルスレッドAのスタックポインタをエリア12に、レジスタ含むコンテクストをエリア13に、パターンPAをエリア11にそれぞれ保存する。そして、これに続くステップS13においては、カーネルスレッドAはイベント待ちのためにスリープし、カーネルの実行はカーネルスレッドCに移る。そして、次のステップS14に進む。
【0030】
ステップS14においては、上記図4中のCに示したカーネルスレッドCの実行コード70において、パターンPCを引数にするイベント起床インターフェース関数“drv_wakeup(・・・PC)”72の前のコード71の実行に引き続き、イベント起床関数“drv_wakeup(・・・PC)”72を、起床させる対象がカーネルスレッドAと指定して実行する。そして、これに続くステップS15に進む。
【0031】
ステップS15においては、カーネルスレッドAがイベント待ちのためにスリープしているかどうかを確認し、カーネルスレッドAがスリープしていれば上記図2中のAに示したカーネルスレッドAに用いるデータ構造のエリア11に格納されているパターンPAとパターンPCを比較する。そして、パターンPAとパターンPCが一致する場合にはカーネルスレッドAをイベント起床させて“YES”としてステップS16に進む。一致しない場合には“NO”としてこの一連の工程を終了する。
【0032】
ステップS16においては、カーネルスレッドA用のデータ構造において、カーネルは、コンテクストをエリア13から、スタックポインタをエリア12からそれぞれ読み出す。そして、次のステップS17に進む。
【0033】
ステップS17においては、カーネルスレッドAは、上記図4中のAに示したカーネルスレッドAの実行コード50において、イベント起床インターフェース関数“drv_wakeup(・・・PA) ”52後の実行コード53の実行を再開する。そして、この一連の工程を終了する。
【0034】
このように、引数にてパターンを指定してイベント待ちインターフェース関数“drv_sleep()”及びイベント起床インターフェース関数“drv_wakeup() ”を実行することにより、パターンが一致するスレッドのスリープ及び起床の同期を制御することができる。
【0035】
次に、スリープしたスレッドを起床させる際にスレッドの指定が複数にわたる場合について、図6に示すフローチャートを参照して説明する。
【0036】
最初のステップS21においては、カーネルスレッドAは、上記図4中のAに示したカーネルスレッドAの実行コード50において、引数としてパターンPAを有するイベント待ちインターフェース関数“drv_sleep(・・・PA)”52前の実行コード51の実行に引き続き、このイベント待ちインターフェース関数“drv_sleep(・・・PA)”関数52を実行する。そして次のステップS22に進む。
【0037】
ステップS22においては、上記図1中のAに示したカーネルスレッドAに用いるデータ構造において、スタックポインタをエリア12に、コンテクストをエリア13に、パターンPAをエリア11にそれぞれ書き込む。そして、これに続くステップS23においては、カーネルスレッドAはイベント待ちのためにスリープし、カーネル実行はカーネルスレッドBに移る。そして、ステップS24に進む。
【0038】
ステップS24においては、カーネルスレッドBは、上記図4中のBに示したカーネルスレッドBの実行コード60において、引数としてパターンPBを有するイベント待ちインターフェース関数“drv_sleep(・・・PB)”62前の実行コード部分61の実行に引き続き、このイベント待ちインターフェース関数“drv_sleep(・・・PB)”62をで実行する。そして、次のステップS25に進む。
【0039】
ステップS25においては、上記図2中のBに示したカーネルスレッドBに用いるデータ構造において、カーネルスレッドBのスタックポインタをエリア22に、コンテクストをエリア23に、パターンPBをエリア21にそれぞれ書き込んで保存する。これに続くステップS26においては、カーネルスレッドBはイベント待ちのためにスリープし、カーネル実行はカーネルスレッドCに移る。そして、次のステップS27に進む。
【0040】
ステップS27においては、カーネルスレッドCが、上記図4中のCに示したカーネルスレッドC用の実行コード70において、引数としてパターンPCを有するイベント起床インターフェース関数“drv_wakeup(・・・PC) ”72前の実行コード71の実行に引き続き、イベント起床インターフェース関数“drv_wakeup(・・・PC) ”72を実行する。この際、イベント起床させる対象としてカーネルスレッドA及びカーネルスレッドBを指定する。そして、次のステップS28に進む。
【0041】
ステップS28においては、カーネルスレッドAがスリープしているかどうかを検査し、スリープしていれば上記図2中のAに示したカーネルスレッドAに用いるデータ構造10のエリア11に格納されているパターンPA及びパターンPCを比較する。そして、パターンPAとパターンPCが同一であればカーネルスレッドAを起床させて“YES”としてステップS29に進み、同一でない場合には“NO”としてこの一連の工程を終了する。
【0042】
ステップS29においては、スレッドBがスリープしているかどうかを検査し、スリープしていれば、上記図2中のBに示したカーネルスレッドBのデータ構造におけるエリア21に格納されているパターンPBとパターンPCを比較する。もし、PBとPCが同一であればスレッドBを起床させる。以下、パターンPA、パターンPB及びパターンPCが同一の場合を想定する。
【0043】
そして、カーネルが、上記図2中のAにおいて、コンテクストをエリア13から、スタックポインタをエリア12から戻す。その後、これに続くステップS30に進む。
【0044】
ステップS30においては、カーネルスレッドAが、上記図4中のAに示したカーネルスレッドAの実行コード50におけるイベント待ちインターフェース関数“drv_sleep(・・・PA)”52に続く実行コード53の実行を再開する。また、同図中のBに示したカーネルスレッドBの実行コード60において、カーネルスレッドBが再度スリープ後、カーネルは上記図2中のBに示したカーネルスレッドBのデータ構造において、コンテクストをエリア23から、スタックポインタをエリア22からそれぞれ戻す。そして、次のステップS30に進む。
【0045】
ステップS30においては、カーネルスレッドBは、上記図4中のBに示したカーネルスレッドBの実行コード60において、イベント起床インターフェース関数“drv_wakeup(・・・PC)”62に続く実行コード63の実行を再開する。そして、この一連の工程を終了する。
【0046】
このように、イベントフラグに類似するパターン照合により、複数のカーネルスレッドに対して1対多の同期を取ることができ、マルチキャストを行うことができる。
【0047】
次に、上述のインターフェース関数を用いて記述したマクロの具体例について、図7を参照して説明する。
【0048】
この具体例においては、カーネルスレッドAの実行コード中のマクロ“WAITFOR”に含まれるイベント待ちインターフェース関数“drv_sleep()”を用いてスレッド間の同期を取っている。このマクロ“WAITFOR()”は、括弧内に記述される条件が満足するまで待機するものである。
【0049】
すなわち、マクロ“WAITFOR()”が条件“condition”、制限時間“timeout ”その他を引数として実行されると、図中“WAITFOR Macro ”に記述されている関数が順に実行される。この“WAITFOR Macro ”の関数“while() ”の実行部分には、制限時間“timeout”及びパターン“pattern”を引数に含むイベント待ちインターフェース関数“drv_sleep(・・・,timeout,pattern)”及び条件付分岐関数“if(timeout occers)”が含まれている。
【0050】
この“WAITFOR Macro”に含まれる関数は、関数“while()”の括弧内に記述される条件が満たされない限り繰り返し実行される。そして、制限時間“timeout”及びパターン“pattern”を引数としてイベント待ちインターフェース関数“drv_sleep(・・,timeout,pattern) ”が実行されると、引数“pattern”がカーネルスレッドのパターンと一致する場合には、制限時間“timeout ”にわたってイベント待ちのためにスリープする。
【0051】
また、制限時間“timeout ”を経過すると、条件付分岐関数“if()”における“break ”が実行されて、関数“while() ”から脱出し、このマクロ“WAITFOR()”を終了する。
【0052】
次に、コンテクストの保存及び復元について、図8を参照して説明する。
図中のAは、カーネルスタックエリアであり、ローカルスタックポインタ(Local Stack Pointer; LSP)の位置が矢印にて示されている。図中のBは、カーネルスレッドAの実行コードであり、イベント待ちインターフェース関数“drv_sleep()”が含まれている。
【0053】
このカーネルスレッドAの実行コードの実行がイベント待ちインターフェース関数“drv_sleep() ”に達すると、カーネルスレッドAのLSPも含むコンテクストが、矢印(a)に示すように、図中のCに示すコンテクストエリアに保存(save)される。
【0054】
一方、図中のDに示すカーネルスレッドBの実行コードの実行がイベント起床インターフェース関数“drv_wakeup()”に達すると、このイベント起床インターフェース関数“drv_wakeup()”の引数のパターンが上記カーネルスレッドAのパターンと一致する場合には、矢印(b)に示すように、カーネルスレッドAのコンテクストが復元(restore )される。そして、矢印(c)に示すように、カーネルスレッドAは上記イベント待ちインターフェース関数“drv_sleep() ”によりイベント待ちのスリープ状態になって実行が中断された箇所から実行が再開される。
【0055】
次に、記録媒体について説明する。
この記録媒体には、スレッドが並行して実行されるカーネルを有し、上記スレッド間の同期をパターン照合にて取るオペレーティングシステムのプログラムが記録されている。上記パターンは整数型であり、ビット位置によりスレッドの識別を行う。また、上記スレッド間の同期は1対1のみならず1対多のスレッド間にて取ることができる。
【0056】
このようなオペレーティングシステムは、たとえばいわゆるCD−ROMのような媒体に記録されて提供される。また、このオペレーティングシステムは、通信回線等を介して提供されることもある。
【0057】
上述のように、この発明に係る情報処理方法及び記録媒体においては、イベントフラグに類似するパターン照合にて、1対1の同期のみならず、1対他のスレッド間の同報通信、いわゆるマルチキャストの同期を取るものである。
【0058】
また、カーネルスレッドのパターンとインターフェース関数の引数のパターンの照合によってスレッドとのインターフェースを取ることにより、要因別のイベント起床をすることが可能となる。このことは、ソースコード上でイベント起床すべき相手が明示されていない場合、たとえば起床すべき相手を特定することができないARPの応答パケットが到着した場合には有益である。
【0059】
また、同一のパターンの複数のスレッドがイベント待ちのためにスリープしている場合に、同時にイベント起床させることも可能である。
【0060】
なお、以上の記述したスレッドのデータ構造およびコードはメモリ中に存在し、操作の実行はCPUが行うものである。
【0061】
【発明の効果】
この発明に係る情報処理方法及び記録媒体は、スレッド間でパターン照合によって同期を取ることにより実効効率を向上させる。また、タスクベースでの実装が前提となるアプリケーションに対して適用することにより、スレッドベースによる移植をすることができるようになった。
【図面の簡単な説明】
【図1】カーネルスレッドの相関を示す図である。
【図2】カーネルスレッドのデータ構造を示す図である。
【図3】スタックのデータ構造を示す図である。
【図4】スレッドの実行コードを示す図である。
【図5】スリープしたカーネルスレッドを起床させる際に、カーネルスレッドの指定がある場合の一連の工程を示す図である。
【図6】スリープしたカーネルスレッドを起床させる際に、カーネルスレッドの指定が複数にわたる場合の一連の工程を示す図である。
【図7】インターフェース関数の具体例を示す図である。
【図8】コンテクストの保存及び復元の具体例を示す図である。
【符号の説明】
10 カーネルスレッドAに用いられるのデータ構造、20カーネルスレッドBに用いられるデータ構造、30 カーネルスレッドCに用いられるデータ構造、40 カーネルの管理するデータ構造、50 カーネルスレッドAの実行コード、60 カーネルスレッドCの実行コード、70 カーネルスレッドBの実行コード

Claims (6)

  1. スレッドがスリープする際に当該スレッドに係る情報を表現するパターン、スレッドを実行する際のスタックポインタ及びスレッドのコンテクストを格納する格納領域と、スタック領域とをスレッド毎に生成し、
    上記スレッドを当該スレッドのスタック領域を用いて並行実行し、スリープ状態のスレッドを起床させる実行コードを実行する際、当該実行コードの関数の引数のパターンとスリープ状態のスレッドの格納領域に格納されたパターンとを照合し、当該パターンが一致した場合、当該パターンが格納領域に格納されたスリープ状態のスレッドを起床させ、スレッド間の同期を取る
    ことを特徴とする情報処理方法。
  2. 上記パターンは整数型の語長からなり、このパターンのビット情報により照合を行うことを特徴とする請求項1記載の情報処理方法。
  3. 上記スレッド間の同期は、1対1のみならず1対多のスレッド間にて取ることを特徴とする請求項1記載の情報処理方法。
  4. スレッドがスリープする際に当該スレッドに係る情報を表現するパターン、スレッドを実行する際のスタックポインタ及びスレッドのコンテクストを格納する格納領域と、スタック領域とをスレッド毎に生成し、
    上記スレッドを当該スレッドのスタック領域を用いて並行実行し、スリープ状態のスレッドを起床させる実行コードを実行する際、当該実行コードの関数の引数のパターンとスリープ状態のスレッドの格納領域に格納されたパターンとを照合し、当該パターンが一致した場合、当該パターンが格納領域に格納されたスリープ状態のスレッドを起床させ、スレッド間の同期を取るオペレーティングシステムのプログラムが記録されたこと
    を特徴とする記録媒体。
  5. 上記パターンは整数型の語長からなり、このパターンのビット情報により照合を行うことを特徴とする請求項4記載の記録媒体。
  6. 上記スレッド間の同期は1対1のみならず1対多のスレッド間にて取ることを特徴とする請求項4記載の記録媒体。
JP28389897A 1997-10-16 1997-10-16 情報処理方法及び記録媒体 Expired - Fee Related JP3900621B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28389897A JP3900621B2 (ja) 1997-10-16 1997-10-16 情報処理方法及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28389897A JP3900621B2 (ja) 1997-10-16 1997-10-16 情報処理方法及び記録媒体

Publications (2)

Publication Number Publication Date
JPH11120010A JPH11120010A (ja) 1999-04-30
JP3900621B2 true JP3900621B2 (ja) 2007-04-04

Family

ID=17671622

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28389897A Expired - Fee Related JP3900621B2 (ja) 1997-10-16 1997-10-16 情報処理方法及び記録媒体

Country Status (1)

Country Link
JP (1) JP3900621B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100420268B1 (ko) * 2001-12-21 2004-03-02 한국전자통신연구원 스택을 이용한 커널 스케줄링 방법
US8271986B2 (en) * 2003-12-31 2012-09-18 Intel Corporation Visual and graphical data processing using a multi-threaded architecture

Also Published As

Publication number Publication date
JPH11120010A (ja) 1999-04-30

Similar Documents

Publication Publication Date Title
US6389446B1 (en) Multi-processor system executing a plurality of threads simultaneously and an execution method therefor
JP5809366B2 (ja) ポータブルコンピューティングデバイスにおいて要求をスケジューリングするための方法およびシステム
US6694345B1 (en) External job scheduling within a distributed processing system having a local job control system
EP1880289B1 (en) Transparent support for operating system services
US9104500B1 (en) Lock-free job scheduler for multi-processor systems
US20050289505A1 (en) Method and system for improving performance and scalability of applications that utilize a flow-based-programming methodology
US7043729B2 (en) Reducing interrupt latency while polling
WO2008148076A1 (en) Lazy kernel thread binding
JPH06250853A (ja) プロセス・スケジューリングの管理方法およびシステム
US7653906B2 (en) Apparatus and method for reducing power consumption on simultaneous multi-threading systems
JP2003162515A (ja) クラスタシステム
Camargos et al. Multicoordinated paxos
JP3900621B2 (ja) 情報処理方法及び記録媒体
WO2008154315A1 (en) Lazy kernel thread binding
JP2010152733A (ja) マルチコアシステム
JP2008102847A (ja) マルチスレッドプログラム処理方法及び装置
JP3601677B2 (ja) タスク処理システム
JPH09160790A (ja) タスクスケジュール装置及びタスクスケジュール方法
JP2597283B2 (ja) 割込みにおけるスケジューリング方式
JP2713218B2 (ja) チェックポイント/リスタート処理方式
JPH11249909A (ja) マルチタスクos上でのプロセス再起動方法
JPH10247161A (ja) メモリ管理方式
JP2590872B2 (ja) タスクスケジュール方法
JP3709050B2 (ja) データ更新システム
JP2000132409A (ja) 待ち状態のないタスクのスタック共有方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040415

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060613

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060810

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060919

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061115

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: 20061212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061225

LAPS Cancellation because of no payment of annual fees