JP4476193B2 - 情報処理方法および情報処理装置 - Google Patents

情報処理方法および情報処理装置 Download PDF

Info

Publication number
JP4476193B2
JP4476193B2 JP2005220427A JP2005220427A JP4476193B2 JP 4476193 B2 JP4476193 B2 JP 4476193B2 JP 2005220427 A JP2005220427 A JP 2005220427A JP 2005220427 A JP2005220427 A JP 2005220427A JP 4476193 B2 JP4476193 B2 JP 4476193B2
Authority
JP
Japan
Prior art keywords
state
thread
processing
confirmation
confirmation target
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.)
Active
Application number
JP2005220427A
Other languages
English (en)
Other versions
JP2007034900A (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 Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2005220427A priority Critical patent/JP4476193B2/ja
Priority to US11/487,148 priority patent/US20070028240A1/en
Publication of JP2007034900A publication Critical patent/JP2007034900A/ja
Application granted granted Critical
Publication of JP4476193B2 publication Critical patent/JP4476193B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、情報処理技術に関し、特に複数のスレッドを並列処理する情報処理方法、およびそれを利用した情報処理装置に関する。
近年、情報処理装置の分野では、アプリケーションソフトウェアに対応するタスクをスレッドと呼ばれる複数の実行単位に分割し、それらをプロセッサのタイムスライスに割り当て、順番に処理することによって複数の処理を並行して行う、マルチスレッドシステムの技術が提供されている。スレッドはタスクと比較するとその管理情報の量が小さいため、切り替えに要する処理が少なく、オーバーヘッドを軽減することができる。
マルチスレッドシステムにおいて、複数のスレッドは、情報処理装置の基本的な制御を行うOS(Operation System)によって各タイムスライスに対してスケジューリングされ、それに基づいてプロセッサが処理を行う。あるスレッドに割り当てられたタイムスライスが満了したときは、OSはそれまでのスレッド処理に用いてきたレジスタ類の内容を一旦メインメモリに退避して、そのスレッドを待機状態とし、プロセッサが次にスケジューリングされたスレッドの処理を開始する。
一方、アプリケーションソフトウェアを製品化するためには、ソフトウェアの不具合を検出しプログラムを修正するデバッグ作業が不可欠である。不具合の検出からプログラムの適正な修正に至るためには、アプリケーションソフトウェアを実際の実行環境で動作させて不具合を発生させ、各スレッドが関与しているメモリ、レジスタ、スタックなどの内容を逐一確認し、演算結果たる変数などに問題が発生するタイミングを取得し、それに対応するプログラムの箇所を抽出する必要がある。
デバッグ作業は上述のとおり、実際の実行環境でリアルタイムに変数などを観察することが望ましいため、例えばプログラムのある単位ごとに処理を停止させ変数を確認したり、あるブレークポイントを設けてそのポイントまで進捗した時点で処理を停止し、変数を確認したりする。しかし、上述のようなマルチスレッドシステムでは、OSによる制御のもと、複数のスレッドが処理順やレジスタ、メモリの使用などについて相互干渉しながら、処理が進捗するため、ひとつのスレッドのみを停止させ、変数などを確認するようにすると、実際の実行環境とは異なってしまい、デバッグ作業の求めるリアルタイムな確認が困難な場合があることを本発明者は認識した。
本発明はこのような課題に鑑みてなされたものであり、その目的はマルチスレッドシステムにおいて、実際の実行環境に即したデバッグを行うことのできる技術を提供することにある。
本発明のある態様は情報処理方法に関する。この方法は、確認対象スレッドに係る内部情報の確認要求信号を受け付けるステップと、確認要求信号の入力があった旨のフラグ情報を各スレッドの状態情報を記録するテーブルに、確認対象スレッドに対応させて書き込むステップと、確認要求信号に応じて内部情報を出力するステップと、を含み、スレッドの処理開始前にテーブルを参照し、確認要求信号の入力があった旨のフラグ情報を検出した際、当該スレッドの処理に所定の制限を設けることを特徴とする。
「スレッド」とは、ある目的を達成するためにプログラムされたアプリケーションまたはそれに含まれる情報処理の内容をいい、アプリケーションと対応してもよいし、入出力制御やユーザが指定したコマンドなどアプリケーションよりも小さい単位と対応してもよく、何らかの処理または機能の単位に対応すればよい。また「内部情報」とは、スレッドの処理途上で発生した変数や、複数のスレッドの処理順、情報処理装置に接続された入出力装置に対するアクセス待ち順、スレッドの状態など、情報処理装置における処理の状態を表す情報のいずれでもよい。
本発明の別の態様も情報処理方法に関する。この方法は、確認対象スレッドに係る内部情報の確認要求信号を受け付けるステップと、前記確認対象スレッドのプロセッサによる処理開始への状態移行を監視するステップと、処理開始への状態移行が検出されない確認対象スレッドに係る内部情報を出力するステップと、処理開始への状態移行が検出された確認対象スレッドを停止状態とするステップと、を含むことを特徴とする。
本発明のさらに別の態様は情報処理装置に関する。この装置は、複数のスレッドをプロセッサにより処理する情報処理装置であり、各スレッドの状態情報テーブルを格納する記憶部と、ユーザによる確認対象スレッドに係る内部情報の確認要求信号の入力を受け付ける要求受信部と、確認要求信号の入力があった旨のフラグ情報を確認対象スレッドに対応させて状態情報テーブルに書き込む情報更新部と、スレッドの処理開始前に状態情報テーブルを参照し、フラグ情報に基づき当該スレッドの処理開始の是非を決定する処理許可部と、確認要求信号に応じて内部情報を出力する状況出力部と、を含むことを特徴とする。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、所望のスレッドに係る内部情報を効率よく確認することができる。
図1は、本実施の形態に係る情報処理装置1000の構成を示すブロック図である。情報処理装置1000は、プロセッサ100、メインメモリ200、入出力ユニット300を含み、それらがバス50によって接続されている。入出力ユニット300は、二次記憶装置400、表示装置500、キーボードなどの入力装置600と接続されている。図1などにおいて、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされた予約管理機能のあるプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
この情報処理装置1000では、情報処理装置1000を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するOSが実行される。そのOS上で複数のアプリケーションソフトウェア(以下、単にアプリケーションという)が実行される。
プロセッサ100は、情報処理装置1000が実行するアプリケーションより生成された複数のスレッドの処理を、処理時間や優先度などに基づきOSが生成したスケジュールに基づいて行う。処理が行われるスレッドは、プロセッサ100内にあるレジスタ10を一時記憶領域として用い、演算結果などを一時的に格納する。
メインメモリ200は、DRAM(Dynamic Random Access Memory)などで構成され、実行されるアプリケーションに対応するマシンコードプログラムやデータを格納する記憶領域である。またメインメモリ200は、プロセッサ100によって処理が行われるスレッドが使用するスタックを格納したり、待機状態にあるスレッドが処理されていたときに使用していたレジスタ10の内容を一時的に退避したりするのに用いられる。
入出力ユニット300はハードディスク、CD−ROMなどの二次記憶装置400や表示装置500などの装置に対するデータの出力を、プロセッサ100の制御のもとで行う。また、二次記憶装置400や入力装置600からのデータや信号の入力を受け付け、プロセッサ100やメインメモリ200へ渡す。
つぎに、以上のように構成された情報処理装置1000において、生成された複数のスレッドが処理される手順について説明する。
図2はスレッドの状態遷移を模式的に示している。「処理状態」はスレッドが実際にプロセッサ100によって処理されている状態である。一方、「準備状態」は処理が可能で、「処理状態」への遷移の順番待ちをしている状態である。さらに「待機状態」は、メインメモリ200へのアクセス権取得のための順番待ちの状態など、プロセッサ100による処理の順番待ち以外の待ち状態である。「停止状態」は、何らかの原因によってスレッドが処理のループから抜け、停止している状態である。スレッドがどの状態にあるかは、メインメモリ200に格納された管理情報テーブルに、各スレッドの識別情報と関連付けて記述されている。OSは管理情報テーブルを参照することにより各スレッドの状態を判断し、さらに当該スレッドの優先度や処理時間などの情報に基づき適宜スレッドの状態遷移の制御を行う。
例えばOSは、処理時間や優先度などに基づき、「準備状態」にあるスレッドについて所定の方式でスケジューリングを行う。「処理状態」にあるスレッドが、割り当てられたタイムスライスを使い果たしたり、自発的に処理を中断したりして、プロセッサ100を開放し、「処理状態」から「準備状態」または「待機状態」へと遷移すると(それぞれ遷移b、遷移c)、スケジューリングされた次に処理すべきスレッドが「準備状態」から「処理状態」へ遷移し(遷移a)、プロセッサ100によって処理が行われる。
マルチスレッドシステムにおいては、同一プロセス内の複数のスレッドが共通のデータへアクセスすることが可能であるため、同時に同一のデータに対し読み書きが行われることによる不具合が発生しないように、OSによって排他制御がなされる。そのため、あるスレッドによってロックされたユニットに他のスレッドがアクセスしようとした場合には、後者のスレッドはブロックされ、「待機状態」となる。具体的には、スレッドがメインメモリ200や二次記憶装置400、表示装置500、入力装置600などの入出力装置などプロセッサ100以外のユニットへアクセスする際、他のスレッドによって当該ユニットがロックされている場合は、そのユニットが開放されるまで「待機状態」となる。このとき、さらに別のスレッドがそのユニットへのアクセスを必要とした場合は、「待機状態」の中に当該ユニットに対するアクセスの待ち行列が形成される。この機構は、マルチスレッドシステムに対応したOSによって提供されるミューテックスやセマフォなどの同期化機能によって実現される。
この他にも、他のスレッドや入出力装置からの応答信号待ちを行ったり、定期的なイベント発生によってスレッドを実行させる場合などにタイマによる期間の満了を待ったりする際に、スレッドは「待機状態」となる。同一ユニットへのアクセスと同様、同一の発信元からの応答信号を待って「待機状態」にある複数のスレッドは、信号待ち行列を形成することになる。
「待機状態」となったスレッドは、アクセスを所望するユニットが他のスレッドから開放されるなど、「待機状態」となった要因が解決された場合に、「準備状態」へと遷移し(遷移d)、スケジューリングの対象となる。スレッドが待ち行列を形成していた場合は、行列の先頭スレッドからひとつずつ「準備状態」へと遷移することになる。
「処理状態」にあったスレッドが「待機状態」や「準備状態」に遷移する際は、コンテキストスイッチが行われ、スレッドの処理に使用していたレジスタ10に格納された演算結果など、処理に係る情報(以降、コンテキストと呼ぶ)はメインメモリ200に退避される。そして当該スレッドが再び「処理状態」となったときに、当該情報がメインメモリ200から読み出されレジスタ10など本来の記憶領域に格納されることにより、スレッドの再処理が可能となる。
ここで、あるスレッドを構成するソースコードのデバッグを行う場合を考える(以後、このスレッドを「確認対象スレッド」と呼ぶ)。従来のデバッグ手法においては、確認対象スレッドを「処理状態」、および「準備状態」からユーザの入力信号などにより強制的に「停止状態」へ遷移させることによって(それぞれ遷移fおよび遷移e)、その確認対象スレッドが受け持つ変数など、コンテキストの内容を確認していた。これには一般的な割り込みの技術を適用する。すなわち割り込み信号によって、「処理状態」にあった確認対象スレッドの処理を停止させ、コンテキストをメインメモリ200へ格納するなどして、「停止状態」へと遷移させる。その後、メインメモリ200に格納されたソースコードやコンテキストを表示装置500に表示させるなどの処理が行われ、ユーザによって不具合箇所の確認がなされる。ユーザの確認作業が終了すると、確認対象スレッドを「停止状態」から「処理状態」へと遷移させるとともに、保存されたコンテキストが復元され、処理が再開される。デバッグ手法にはこの他にも、ソースコード自体にブレークポイントを設けて、処理がそこまで進捗した時点で同様の処理にてスレッドを「停止状態」へと遷移させる場合などがある。
しかし、上述のような状態遷移のサイクルにある確認対象スレッドを「停止状態」とすることにより、実際の実行環境の保全が困難となる場合がある。例えば、「待機状態」にあって、あるユニットの開放を待つ行列中にあるスレッドのコンテキストを確認したい場合、当該スレッドを突然「停止状態」へと遷移させると、待ち行列の順番に変化が生じる。引き抜いた確認対象スレッドが「停止状態」にあるうちに、待ち行列の後続スレッドが、当該ユニットへのアクセス権を取得して「準備状態」または「処理状態」となってしまえば、確認対象スレッドを元の状態に戻すことができなくなる。同一プロセスに含まれる複数のスレッドは共通データへアクセスし、相互干渉しながら処理が進捗するため、待ち行列の順番の変化が他のスレッドの処理結果に影響を及ぼす場合がある。また待ち行列の順序が保存されないと、待ち行列自体の確認を行うことも困難になる。
「待機状態」や「準備状態」にあるスレッドは、上述のとおりコンテキストをメインメモリ200へ退避しているため、スレッドを「停止状態」とせずに内容を確認することはできるが、確認作業中に待ちの原因が解決し、当該スレッドが「処理状態」へ遷移してしまうことが考えられる。このときコンテキストはレジスタ10などへ復帰し、上書きされてしまうため、確認しているコンテキストはもはや古い情報となってしまう。さらにそのスレッドが再び「待機状態」や「準備状態」に遷移しようとすると、メインメモリ200のコンテキスト退避領域へのアクセスが確認作業と競合してしまう。本発明者はこれらの問題を解決するため、以下に述べる実施の形態に想到した。
本実施の形態では、ユーザによって所定のスレッドにかかる情報確認の指示が発生した場合に、当該確認対象スレッドに対してストップフラグを立てる。さらにストップフラグの立っているスレッドが、「処理状態」にある場合、もしくは「処理状態」へ遷移しそうな場合に限り「停止状態」へと遷移させる(遷移fおよび遷移g)。ここで、「準備状態」から「処理状態」への遷移途上(遷移a)にあるスレッドにストップフラグが立った場合は、当該スレッドが「処理状態」へと遷移した直後に上述の如く「停止状態」へと遷移させる(遷移f)。「準備状態」や「待機状態」にあるスレッドにストップフラグが立った場合は、それらが「準備状態」から「処理状態」へと遷移するタイミングが到来した際に「停止状態」へと遷移させる(遷移g)。
図3は本実施の形態において確認対象スレッドにかかる情報を表示する手順を示している。まずユーザはデバッガなどのソフトウェアを呼び出す。ソフトウェアは二次記憶装置400に格納されているパッケージでもよいし、起動済みのOSのカーネルに含まれていてもよい。そして表示装置500に表示されたスレッドリストから選択することによって、確認対象スレッドにかかる情報表示の指示を入力装置600などに対して行う(S10)。それに応じてOSは選択された確認対象スレッドに対してストップフラグを立てる(S12)。ストップフラグは、カーネルがスレッドの状態などを把握し制御を行うためにメインメモリ200に格納している管理情報テーブルを構成する構造体中の変数であり、通常の処理では「0」の値が代入されている。S12ではこれに「1」を代入することによりフラグを立てる。管理情報テーブルの構造については後に述べる。
次にストップフラグを立てた確認対象スレッドが現在「処理状態」または「処理状態」への遷移途上であるかどうかを、管理情報テーブルに記録されたスレッド状態を参照して確認する(S14)。ここで「遷移途上」とは、確認対象スレッドが「準備状態」の待ち行列中、プロセッサ100によって次に処理される順番となった場合で、プロセッサ100によって処理されている前のスレッドがプロセッサ100を開放した時点から、当該確認対象スレッドの処理開始のために、コンテキストのレジスタ10への復帰を完了させる前までの状態である。確認対象スレッドが「処理状態」または「処理状態」への遷移途上にあった場合は(S14のY)、コンテキストをメインメモリ200に退避させ、当該スレッドを「停止状態」に遷移させる(S18)。このとき、スレッドが「処理状態」にあった場合は、プロセッサ100による当該スレッドの処理を停止させて「停止状態」へと遷移させる。スレッドが「処理状態」への遷移途上にあった場合は、コンテキストのレジスタ10への復帰完了を待ってから「停止状態」へと遷移させる。
確認対象スレッドが「処理状態」または「処理状態」への遷移途上にない場合は(S14のN)、そのスレッドが「処理状態」への遷移を開始するかどうかを確認する(S16)。「処理状態」への遷移を開始する場合は(S16のY)、コンテキストをレジスタ10へ復帰させることなく、当該スレッドを「停止状態」へと遷移させる(S18)。S16は実際には、「処理状態」にあったスレッドがプロセッサ100を開放する都度、次に「処理状態」へ遷移すべくスケジューリングされたスレッドのストップフラグを確認し、ストップフラグが立っていたら上述のように「停止状態」へ遷移するように制御してよい。
確認対象スレッドを「停止状態」へ遷移させた(S18)後、および、確認対象スレッドが「待機状態」や「準備状態」にある場合(S16のN)は、メインメモリ200に退避した当該スレッドのコンテキストなどの情報を入出力ユニット300へ読み出し、表示装置500へ表示する(S20)。ユーザによって入力装置600へ終了指示信号が入力された場合など、確認作業の終了をOSが認識するまでは(S22のN)、確認対象スレッドが「処理状態」へ遷移するかどうかを監視しながら、情報の表示を続行する。確認作業の終了が認識できたら(S22のY)、確認対象スレッドのストップフラグに「0」値を代入する(S24)。確認対象スレッドが以前、「処理状態」にあったり「処理状態」へ遷移しそうになったりして、確認のために「停止状態」へ遷移させていた場合は(S26のY)、スレッドを「停止状態」から復活させる(S28)。復活には、例えば確認対象スレッドに高優先度を与えて「準備状態」の待ち行列に戻すことにより(図2の遷移h)、次回のプロセッサ100開放時に「処理状態」へと遷移させるようにする。確認対象スレッドが「停止状態」以外の状態、すなわち「待機状態」か「準備状態」にあった場合は(S26のN)、待ち行列中にあっても順序を保存したままスレッドの情報を表示しているため、そのまま確認処理を終了する。
図4は、本実施の形態におけるスレッドの管理情報テーブルの構造例を示している。管理情報テーブル700は、識別番号欄702、命令ポインタ欄704、汎用レジスタ値欄706、スタックポインタ欄708、スレッド状態欄710、ストップフラグ欄712を含む。各スレッドは、識別番号欄702に記載された識別番号に基づき管理される。命令ポインタ欄704、汎用レジスタ値欄706、スタックポインタ欄708には、各スレッドが実行するマシンコード命令を格納するレジスタ10のアドレス値を示すポインタ、現在の汎用レジスタの値、およびスレッドに割り当てられるスタック領域の中のアドレス値を示すポインタがそれぞれ記録され、コンテキストスイッチの際などに参照される。スレッド状態欄710には、「準備状態」、「処理状態」など、当該スレッドの現在の状態が、それぞれを識別できる文字列などで記録され、例えば図3のS14やS16において、ストップフラグを立てたスレッドの状態を確認する際などに参照される。ストップフラグ欄712には、上述のごとく確認対象スレッドには「1」が、それ以外のスレッドには「0」が設定される。
なお、管理情報テーブル700の内容は図4に示された項目に限らない。例えば汎用レジスタ値として整数レジスタと浮動小数点レジスタの値を記録したり、機能設定レジスタなど使用するレジスタの値を記録したりしてよい。また、スタックポインタとしてカーネルスタックとユーザスタックのそれぞれのポインタを記録してよい。さらに、ストップフラグ以外でスレッド管理に用いるフラグ、例えばスレッドの終了時に他のスレッドと待ち合わせをするかどうか、当該スレッドが割り込みスレッドが通常スレッドか、または当該スレッドがカーネルスレッドかユーザスレッドか、などを示すフラグが含まれていてよい。
本実施の形態によれば、確認対象スレッドが「待機状態」にあっても、当該スレッドを「停止状態」に遷移させることなくコンテキストなどの情報確認ができるため、待ち行列の順序を変化させることなく、実際の実行状況下にあるスレッドの情報を取得することができる。さらに確認が終了したら待ち行列にかかる処理を続行させることができるため、実行環境に影響を与えることなく、次の確認段階まで処理を継続させることができる。また、メインメモリ200に退避されたコンテキストなどを表示しているうちに、確認対象スレッドが「処理状態」へ遷移してしまうことがないため、実際の状況と表示された情報とに矛盾が生じるなどの不具合なく、安全に確認作業を行うことができる。また、確認中は「待機状態」や「準備状態」における待ち行列の順序が保存されているため、複数のスレッドの待ち行列の順序に関する情報自体を表示することが可能となる。これにより、実際の実行環境により近い環境でのスレッドにかかる情報を確認することができ、不具合箇所をより確実に検出することができ、デバッグ作業の効率化が実現できる。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば本発明を実現するソフトウェアは、情報処理装置1000とネットワークで接続された図示しないサーバに格納されていてもよく、図示しないネットワークを介して処理を行うようにしてもよい。これにより、デバッグを行うソフトウェアを実装しない情報装置などにおいても、実機によるデバッグ作業が上述のとおり効率的に行える。
また、複数のスレッドを同時に確認対象スレッドとしてストップフラグを立ててもよい。例えば生成された全スレッドにストップフラグを立てることにより、「準備状態」から「処理状態」へと遷移しようとするスレッドは全て「停止状態」へと遷移させられるため、確認終了時に「停止状態」へ遷移した順序で「準備状態」の待ち行列の先頭に戻せば、「処理状態」で処理される順序も保存したまま確認作業をおこなうことができ、実際の実行環境に近い環境でのデバッグ作業が行える。
本実施の形態に係る情報処理装置の構成を示すブロック図である。 スレッドの状態遷移を模式的に示した図である。 本実施の形態において確認対象スレッドにかかる情報を表示する手順を示すフローチャートである。 本実施の形態におけるスレッドの管理情報テーブルの構造例を示した図である。
符号の説明
10 レジスタ、 100 プロセッサ、 200 メインメモリ、 300 入出力ユニット、 400 二次記憶装置、 500 表示装置、 600 入力装置、 700 管理情報テーブル、 1000 情報処理装置。

Claims (11)

  1. プログラムを所定の実行単位に分割してなるスレッドを処理するステップと、
    前記スレッドのうち、確認対象スレッドに係る内部情報の確認要求信号を受け付けるステップと、
    前記確認対象スレッドが、処理状態および処理状態への遷移途上以外の状態にあった場合、前記確認要求信号に起因した状態変化を与えずに前記確認対象スレッドの状態遷移を監視するステップと、
    前記確認対象スレッドが処理状態または処理状態への遷移途上にあった場合に、当該スレッドの処理に所定の制限を設けるステップと、
    前記確認要求信号に応じて前記内部情報を出力するステップと、を含むことを特徴とする情報処理方法。
  2. 前記確認要求信号を受け付ける時点において、プロセッサによる処理待ち状態、入出力装置へのアクセス待ち状態にあるスレッドを、前記確認対象スレッドとして受け付けることを特徴とする請求項1に記載の情報処理方法。
  3. 前記所定の制限は、前記スレッドの処理開始の不許可を含むことを特徴とする請求項1または2に記載の情報処理方法。
  4. 前記内部情報は確認対象スレッドを含む複数のスレッドの処理待ち行列の順序に係る情報を含むことを特徴とする請求項1または2に記載の情報処理方法。
  5. 前記内部情報は確認対象スレッドを含む複数のスレッドの入出力装置へのアクセス待ち行列の順序に係る情報を含むことを特徴とする請求項1または2に記載の情報処理方法。
  6. 前記確認要求信号の入力があった際、前記確認対象スレッドが処理中であった場合には、前記確認対象スレッドに係るコンテキストをメインメモリに退避させて処理を中断するステップをさらに含むことを特徴とする請求項1から5のいずれかに記載の情報処理方法。
  7. プログラムを実行単位に分割してなる複数のスレッドをプロセッサにより処理する情報処理装置において、
    前記スレッドのうち、確認対象スレッドに係る内部情報の確認要求信号の入力をユーザより受け付ける要求受信部と、
    前記確認対象スレッドが、処理状態および処理状態への遷移途上以外の状態にあった場合、前記確認要求信号に起因した状態変化を与えずに前記確認対象スレッドの状態遷移を監視し、前記確認対象スレッドが処理状態または処理状態への遷移途上にあった場合に、当該スレッドの処理に所定の制限を設ける処理許可部と、
    前記確認要求信号に応じて前記内部情報を出力する状況出力部と、
    を含むことを特徴とする情報処理装置。
  8. 前記要求受信部は、プロセッサによる処理待ち状態、入出力装置へのアクセス待ち状態にあるスレッドを、前記確認対象スレッドとして受け付けることを特徴とする請求項に記載の情報処理装置。
  9. 前記所定の制限は、前記スレッドの処理開始の不許可を含むことを特徴とする請求項またはに記載の情報処理装置。
  10. プログラムを所定の実行単位に分割してなるスレッドを処理する機能と、
    前記スレッドのうち、確認対象スレッドに係る内部情報の確認要求信号を受け付ける機能と、
    前記確認対象スレッドが、処理状態および処理状態への遷移途上以外の状態にあった場合、前記確認要求信号に起因した状態変化を与えずに前記確認対象スレッドの状態遷移を監視する機能と、
    前記確認対象スレッドが処理状態または処理状態への遷移途上にあった場合に、当該スレッドの処理に所定の制限を設ける機能と、
    前記確認要求信号に応じて前記内部情報を出力する機能と、
    をコンピュータに実現させることを特徴とするコンピュータプログラム。
  11. プログラムを所定の実行単位に分割してなるスレッドを処理する機能と、
    前記スレッドのうち、確認対象スレッドに係る内部情報の確認要求信号を受け付ける機能と、
    前記確認対象スレッドが、処理状態および処理状態への遷移途上以外の状態にあった場合、前記確認要求信号に起因した状態変化を与えずに前記確認対象スレッドの状態遷移を監視する機能と、
    前記確認対象スレッドが処理状態または処理状態への遷移途上にあった場合に、当該スレッドの処理に所定の制限を設ける機能と、
    前記確認要求信号に応じて前記内部情報を出力する機能と、
    をコンピュータに実現させることを特徴とするコンピュータプログラムを記憶した記憶媒体。
JP2005220427A 2005-07-29 2005-07-29 情報処理方法および情報処理装置 Active JP4476193B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005220427A JP4476193B2 (ja) 2005-07-29 2005-07-29 情報処理方法および情報処理装置
US11/487,148 US20070028240A1 (en) 2005-07-29 2006-07-14 Information processing method and information processing apparatus for processing a plurality of threads

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005220427A JP4476193B2 (ja) 2005-07-29 2005-07-29 情報処理方法および情報処理装置

Publications (2)

Publication Number Publication Date
JP2007034900A JP2007034900A (ja) 2007-02-08
JP4476193B2 true JP4476193B2 (ja) 2010-06-09

Family

ID=37695839

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005220427A Active JP4476193B2 (ja) 2005-07-29 2005-07-29 情報処理方法および情報処理装置

Country Status (2)

Country Link
US (1) US20070028240A1 (ja)
JP (1) JP4476193B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080077727A1 (en) * 2006-09-25 2008-03-27 Baca Jim S Multithreaded state machine in non-volatile memory devices
US10452820B2 (en) * 2007-06-26 2019-10-22 International Business Machines Corporation Thread-based software license management
US8739133B2 (en) 2007-12-21 2014-05-27 International Business Machines Corporation Multi-threaded debugger support
JP5022262B2 (ja) * 2008-02-12 2012-09-12 株式会社アドバンテスト デバッグ中にツールを使用可能な試験システム及び方法
JP5330384B2 (ja) * 2008-06-25 2013-10-30 パナソニック株式会社 情報処理装置、情報処理方法及び情報処理プログラム
JP2010191734A (ja) * 2009-02-19 2010-09-02 Hitachi Software Eng Co Ltd 画像再生装置及び中間語プログラム実行方法
US8458723B1 (en) * 2009-12-29 2013-06-04 Calm Energy Inc. Computer methods for business process management execution and systems thereof
KR20110095050A (ko) * 2010-02-18 2011-08-24 삼성전자주식회사 공유 라이브러리 디버깅 장치
JP5655403B2 (ja) * 2010-07-13 2015-01-21 富士通株式会社 マルチコアプロセッサシステム,スケジュール管理プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
CN104220989B (zh) * 2011-12-21 2017-12-12 英特尔公司 用于识别并且再现多线程程序中并发冲突的方法及系统
CN103984529B (zh) * 2014-05-15 2016-06-22 中国人民解放军国防科学技术大学 基于飞腾处理器的x图形系统并行加速方法
JP6350452B2 (ja) * 2015-08-27 2018-07-04 京セラドキュメントソリューションズ株式会社 電子機器および割り込み処理プログラム
CN106484472B (zh) * 2016-09-29 2021-06-15 华为技术有限公司 一种内存回收方法及终端
US10942820B2 (en) * 2019-06-27 2021-03-09 EMC IP Holding Company LLC Stream level uninterrupted restore operation using an interrupt service routine approach

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778230A (en) * 1995-11-13 1998-07-07 Object Technology Licensing Corp. Goal directed object-oriented debugging system
US7577962B2 (en) * 2004-12-03 2009-08-18 Microsoft Corporation Routing exceptions to operating system subsystems

Also Published As

Publication number Publication date
US20070028240A1 (en) 2007-02-01
JP2007034900A (ja) 2007-02-08

Similar Documents

Publication Publication Date Title
JP4476193B2 (ja) 情報処理方法および情報処理装置
US8327336B2 (en) Enhanced thread stepping
US8176489B2 (en) Use of rollback RCU with read-side modifications to RCU-protected data structures
US9104425B2 (en) Apparatus and method for handling exception events
US7353346B2 (en) Read-copy-update (RCU) operations with reduced memory barrier usage
US7395383B2 (en) Realtime-safe read copy update with per-processor read/write locks
JP2010522920A (ja) パイプラインプロセッサにおける長い待ち時間命令の処理
JP2009175960A (ja) 仮想マルチプロセッサシステム
JP3323169B2 (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法、および、そのプログラムを記録した記録媒体
CN109358903B (zh) 数据访问设备和访问错误通知方法
US7702836B2 (en) Parallel processing device and exclusive control method
JPH0895798A (ja) データ処理装置
JP2653412B2 (ja) ブレークポイント設定方法
JP4562641B2 (ja) コンピュータシステム、動作状態判定プログラムおよび動作状態判定方法
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JPH01300366A (ja) 共有データ競合制御方式
US20220156074A1 (en) Electronic device and multiplexing method of spatial
JP2010044699A (ja) 情報処理装置
JP2002251299A (ja) プログラムトレース装置
JP2007213396A (ja) デバッグシステム、オペレーションシステム、デバッグ方法、プログラム
JP4825058B2 (ja) 計算機のエミュレーション方法
JPH0391055A (ja) ハードウエアロックのセット方法、ハードウエアロック制御装置、ハードウエアロックの検出方法と装置
JP6481437B2 (ja) トランザクション処理装置、トランザクション処理方法及び制御プログラム
JP2504151B2 (ja) デ―タ処理装置
JP2002014843A (ja) プログラム実行トレース方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090930

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100210

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100217

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100309

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3