JP2015076052A - データ書き込み装置、データ書き込みプログラム、及びデータ書き込み方法 - Google Patents

データ書き込み装置、データ書き込みプログラム、及びデータ書き込み方法 Download PDF

Info

Publication number
JP2015076052A
JP2015076052A JP2013213877A JP2013213877A JP2015076052A JP 2015076052 A JP2015076052 A JP 2015076052A JP 2013213877 A JP2013213877 A JP 2013213877A JP 2013213877 A JP2013213877 A JP 2013213877A JP 2015076052 A JP2015076052 A JP 2015076052A
Authority
JP
Japan
Prior art keywords
writing
data
instruction
page
unit
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
Application number
JP2013213877A
Other languages
English (en)
Inventor
慶太 松本
Keita Matsumoto
慶太 松本
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013213877A priority Critical patent/JP2015076052A/ja
Priority to US14/489,619 priority patent/US20150106575A1/en
Publication of JP2015076052A publication Critical patent/JP2015076052A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】より多くの命令実行データを保存することができるデータ書き込み装置を提供する。
【解決手段】RAMにおける仮想メモリ領域の空き領域72は、書き込まれたデータを記憶する複数のフリーページ72S、72S+1、・・・72E-1、72Eを有する。プログラムの命令データが予め定められた順番300に複数のフリーページ72S、72S+1、・・・に書き込まれる。プログラムの複数の命令の各々が実行される毎に、当該命令の実行状態を示す命令実行データが、予め定められた順番300とは逆の順番400に書き込まれる。命令実行データの書き込みが始められるフリーページは、データが最初に書き込まれるフリーページ72Sよりも最も離れたフリーページ72Eである。
【選択図】図19

Description

開示の技術は、データ書き込み装置、データ書き込みプログラム、及びデータ書き込み方法に関する。
従来、複数の命令を含むプログラムの各命令が実行されると、この実行によって生成されたデータ(命令実行データ)が、メモリの予め定められた位置にある固定サイズの調査用資料記憶領域に記憶されている。これは、システムが暴走(パニック)した場合等に、調査用資料記憶領域に記憶された上記命令実行データを2次記憶装置に記憶(クラッシュダンプ)し、どのような暴走が生じたのかを後に判断できるようにするためである。
特開2001-290678号公報 特開2006-72931号公報
しかし、上記のように、調査用資料記憶領域は固定サイズとなっている。従って、複数の命令の各々が順次実行された場合、上記実行によって生成された命令実行データが、以前に記憶された命令実行データに上書きされてしまう。即ち、調査用資料記憶領域には、調査用資料記憶領域全てにデータを記憶するのに要する一定時間内のデータしか記憶されない。従って、一定時間より前に生じた命令実行データを得ることができない。
開示の技術は、1つの側面として、より多くの命令実行データを保存することができるようにすることが目的である。
記憶部は、書き込まれたデータを記憶する複数の記憶領域を有する。第1の書き込み部は、記憶部の記憶領域にデータを書き込む。第2の書き込み部は、記憶部の複数の記憶領域の内、第1の書き込み部により書き込みがされないと予想される記憶領域に、複数の命令を含むプログラムの各命令の実行状態を示す命令実行データを書き込む。
開示の技術は、1つの側面として、より多くの命令実行データを保存することができる、という効果を有する。
業務プログラム実行装置のブロック図である。 (A)は、ROM22に記憶されたプログラムを示し、(B)は、2次記憶装置に記憶されたOS及びトラブルの調査用資料の記憶領域を示す図である。 仮想メモリ領域200の具体的内容を示す図である。 先頭終端ページ構造体対応テーブル62を示す図である。 ページ構造体71、管理構造体84、空き領域72の関係を示す図である。 ページ構造体71の具体的内容を示す図である。 仮想メモリアドレスを管理する管理構造体84の具体的内容を示す図である。 業務プログラム記憶領域対応テーブル70を示す図である。 (A)は、OSの機能ブロック図であり、(B)は、OSのプロセスを示す図であり、(C)は、業務プログラムの機能ブロック図であり、(D)は、業務プログラムのプロセスを示す図である。 OSがフリーページを利用する際に、フリーページを取得するフリーページ取得処理の一例を示すフローチャートである。 OSがフリーページを追加する処理の一例を示すフローチャートである。 業務プログラム実行装置に電源が投入されたときにOS18Aが仮想メモリ領域200の内容を設定する初期設定処理の一例を示すフローチャートである。 業務プログラムA42が実行された時に記憶領域68A2に命令実行データが記憶される様子を示す図である。 アイドル状態となった空CPUをOSが検知した時に、OSが空CPUにアイドルスレッド処理を実行させる命令処理の一例を示すフローチャートである。 アイドルスレッド処理の一例を示すフローチャートである。 アイドルスレッド処理のロギング処理を実行するように設定(ロード)する処理の一例を示すフローチャートである。 アイドルスレッド処理のロギング処理を解除(アンロード)する処理の一例を示すフローチャートである。 図15のステップ194のロギング処理の一例を示すフローチャートである。 (A)は、空き領域72を示し、(B)は、OSがデータを空き領域72に書き込む順番300を示し、(C)は、ロギング処理で命令実行データを退避する際に書き込む順番400を示し、(D)は、OSが、命令実行データにデータを上書きすることを示し、(E)は、命令実行データにデータを上書きする際の(D)とは別の順番を示し、(F)は、ロギング処理で命令実行データを退避する際に書き込む(C)の順番400とは異なる順番401を示す図である。 OSがアイドルスレッド処理を停止する処理の一例を示すフローチャートである。 OSがアイドルスレッド処理を実行(再開)させる処理の一例を示すフローチャートである。 (A)は、第1の命令が第2の命令にジャンプしかつ第2の命令が第3の命令にジャンプする内容の場合に、命令実行データとしてスレッドを用いると、第3の命令から第2の命令に戻る場合に、第2の命令のスレッド(func2)に第3の命令のスレッド(func3)が上書きされることを示し、(B)は、第3の命令から第2の命令に戻る場合に、第2の命令のスレッド(func2)に第3の命令のスレッド(func3)が上書きされる前に第2の命令のスレッド(func2)が退避されることを示す図である。
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。
図1には、業務プログラム実行装置のブロック図が示されている。図1に示すように、業務プログラム実行装置は、複数のCPU(中央処理装置:Central Processing Unit)12、14、16、・・・を備えている。業務プログラム実行装置は、2次記憶装置18、メモリ20、ROM(Read Only Memory)22、表示制御部24、表示制御部24に接続された表示装置26、入力装置28、及び通信制御部30を備えている。表示装置26としては、液晶表示装置(LCD)、ブラウン管(CRT)、有機エレクトロルミネセンス表示装置(OELD)、プラズマディスプレイパネル(PDP)、電界放出ディスプレイ(FED)等が適用できる。入力装置28としては、キーボード(keyboard)やマウス(mouse)などが適用できる。複数のCPU12、14、16、・・・2次記憶装置18、メモリ20、ROM22、表示制御部24、入力装置28、及び通信制御部30はバス32を介して相互に接続されている。
業務プログラム実行装置は、本開示の技術の「データ書き込み装置」の一例である。
図2(A)には、ROM22に記憶されたプログラムが示されている。図2(A)に示すように、ROM22には、複数の業務プログラム、例えば、業務プログラムA42、業務プログラムB44、及び業務プログラムC46が記憶されている。また、ROM22には、業務プログラムA42、業務プログラムB44、業務プログラムC46それぞれに対応するアイドルスレッド処理プログラムA52、アイドルスレッド処理プログラムB54、及びアイドルスレッド処理プログラムC56が記憶されている。
図2(B)に示すように、2次記憶装置18には、オペレーティングシステム(OS)18Aが記憶される。また、2次記憶装置18には、トラブルの調査用資料を保存(クラッシュダンプ)するための記憶領域18Bが設けられている。
図3には、仮想メモリ領域200の具体的内容が示されている。メモリ20の記憶領域は、仮想メモリ領域200として管理される。仮想メモリ領域200には、後述する初期設定処理(図12)の結果、管理領域60、業務プログラムA42用の領域68A、業務プログラムB44用の領域68B、業務プログラムC46用の領域68C、及び業務プログラム記憶領域対応テーブル70が設定される。仮想メモリ領域200内で、これらの領域(60、68A、68B、68C、70)以外の領域は空き領域72である。管理領域60には、先頭終端ページ構造体対応テーブル62、ページ構造体記憶領域64、及び管理構造体記憶領域66が設定される。業務プログラムA42用の領域68A、業務プログラムB44用の領域68B、及び業務プログラムC46用の領域68Cの各設定内容はそれぞれ同一である。よって、業務プログラムA42用の領域68Aの設定内容のみ説明する。業務プログラムA42用の領域68Aには、命令a1、命令a2、・・・命令akを含む業務プログラムA42を記憶するための領域68A1、及び業務プログラムA42用のトラブルの調査用資料を記憶するための記憶領域68A2が設定されている。また、業務プログラムA42用の領域68Aには、業務プログラムA42用のアイドルスレッド処理プログラムA68A3を記憶するための記憶領域68A3、及び設定領域68A4が設定されている。
メモリ20は、本開示の技術の「記憶部」の一例である。
仮想メモリ領域200の選択された領域に記憶されるように指示されたデータは、OS18Aにより、メモリ20の仮想メモリ領域200の選択された領域に対応する記憶領域に記憶される。
図4には、先頭終端ページ構造体対応テーブル62が示されている。先頭終端ページ構造体対応テーブル62は、先頭及び終端のそれぞれに対応して、先頭のページ構造体が記憶されているページを示すポインタ(アドレス情報)ps、終端ページ構造体が記憶されているページを示すポインタ(アドレス情報)peが記憶されている。
図5には、ページ構造体71、管理構造体84、空き領域72の関係が示されている。図5に示すように、空き領域72は、固定サイズの複数の未使用(データが記憶されていない)の領域(フリーページ)に分割されている。各フリーページは、管理構造体記憶領域66に記憶された、各フリーページの仮想メモリアドレスを管理する構造体(管理構造体)84により管理されている。また、管理構造体84は、ページ構造体記憶領域(フリーリスト)64に記憶されたページ構造体71に管理されている。
フリーページは、本開示の技術の「記憶領域」の一例である。
図6には、ページ構造体71の具体的内容が示されている。ページ構造体71は、次のデータを記憶するテーブルである。即ち、ページ(フリーページ)の状態を示すフラグ74、次のページ構造体へのポインタ76、及び前のページ構造体のポインタ78が記憶される。また、当該ページ構造体71に対応するフリーページの仮想メモリアドレスを管理する構造体(管理構造体)へのポインタ80、及びクラッシュダンプ採取対象となるか判定するフラグ82が記憶される。
図7には、仮想メモリアドレスを管理する構造体(管理構造体)84の具体的内容が示されている。図7に示すように、仮想メモリアドレスを管理する管理構造体84は、仮想メモリアドレスへのポインタ86を記憶するテーブルである。
OS18Aは、空き領域72の複数のフリーページについてデータを書き込む順番を決定する。例えば、図3及び図19(A)に示すように、OS18Aは、空き領域72の左上端のフリーページを先頭のフリーページ72Sとし、順に右下端のフリーページの終端のフリーページ72Eまで、データを書き込む順番を決定する。図19(B)に示すように、先頭のフリーページ72Sの次にデータが書き込まれるページとしてのフリーページ72S+1がある。また、終端のフリーページ72Eの前にデータが書き込まれるページとしてページ72E-1がある。
図6に示すように、ページ構造体71は、OS18Aが当該ページ構造体71に対応するページの次にデータを書き込む予定のページに対応するページ構造体71へのポインタ76を記憶する。また、ページ構造体71は、OS18Aが当該ページ構造体71に対応するページより前にデータを書き込む予定のページに対応するページ構造体71へのポインタ78を記憶する。
例えば、先頭のフリーページ72Sの図3及び図19に向かって右側のフリーページ72S+1には、先頭のフリーページ72Sの次にデータが書き込まれる。よって、先頭のフリーページ72Sのページ構造体71における次のページ構造体へのポインタ76(図6)に、フリーページ72S+1(図19(B)参照)に対応するページ構造体71へのポインタが記憶される。
また、終端のフリーページ72Eの図3及び図19に向って左側のフリーページ72E−1には、終端のフリーページ72Eよりも1つ前にデータが書き込まれる。よって、終端のフリーページ72Eのページ構造体71における前のページ構造体へのポインタ78(図6)に、フリーページ72E−1(図19(B)参照)に対応するページ構造体71へのポインタを記憶する。
ページ構造体71は、管理構造体84へのポインタ80を記憶する。ページ構造体71は、クラッシュダンプ時に、対応するページに記憶されたデータが2次記憶装置18の記憶領域18B(図2(B))に記憶(ダンプ)される対象となるか判定するフラグ82を記憶する。業務プログラム実行装置がパニックすると、OS18Aがトラブルの調査用資料の記憶領域68A2に記憶された内容を2次記憶装置18にダンプする。OS18Aは、各ページを管理するページ構造体71におけるフラグ82を参照してダンプ採取するか否かを判断する。ページは本来、OS18Aによってトラブルの調査用資料の保存のためには利用されない。よって、フラグ82は、ダンプ採取不要のステータスになっている。後述するロギング処理で、トラブルの調査用資料が退避された場合、フラグ82が「ダンプ採取必要」と変更されることにより(図18のステップ218)、当該ページがダンプ採取対象となるように、設定される。
OS18Aが先頭のフリーページにデータを書き込む場合、OS18Aは、先頭終端ページ構造体対応テーブル62(図4)の先頭に対応して記憶されているページ構造体71へのポインタpsを取得する。OS18Aは、取得したポインタpsに基づいて先頭のフリーページに対応するページ構造体71を把握する。OS18Aは、把握したページ構造体71中のポインタ80に基づいて、管理構造体84を把握する。OS18Aは、把握した管理構造体84中のポインタ86から先頭のフリーページの仮想メモリアドレスを把握する。OS18Aは、把握した仮想メモリアドレスの先頭のフリーページにデータを書き込む。
図8には、業務プログラム記憶領域対応テーブル70が示されている。図8に示すように、業務プログラム記憶領域対応テーブル70は、業務プログラムと業務プログラムが記憶されている記憶領域のアドレスとを対応して記憶するテーブルである。業務プログラムA42に対応してアドレスA、業務プログラムB44に対応してアドレスB、及び業務プログラムC46に対応してアドレスCが記憶されている。
図9(A)には、OS18Aの機能ブロック図が、図9(B)には、OS18Aのプロセスが示されている。図9(A)に示すように、OS18Aの機能部は、初期設定部90、空CPU利用部92、空メモリ利用部94、命令部96、及びダンプ部98を備えている。図9(B)に示すように、OS18Aのプロセスは、初期設定プロセス100、空CPU利用プロセス102、空メモリ利用プロセス104、命令プロセス106、及びダンププロセス108を備えている。例えば、CPU12が、上記プロセス(100、102、104、106、108)の各々を実行することにより、図9(A)の上記各部(90、92、94、96、98)として動作する。
図9(C)には、業務プログラムの機能ブロック図が、図9(D)は、業務プログラムのプロセスが示されている。図9(C)に示すように、業務プログラムの機能部は、処理部91を備えている。図9(D)に示すように、業務プログラムのプロセスは、処理プロセス93を備えている。例えば、CPU14が、処理プロセス93を実行することにより、図9(C)の処理部91として動作する。
次に、本実施の形態の作用を説明する。
OS18Aは、次の場合に空き領域72からフリーページを取得する。即ち、新たに業務プログラムがROM22に追加されて空き領域72に新たな業務プログラムを書き込んだ場合や、業務プログラムの各命令を実行するためにデータを空き領域72に書き込んだ場合である。図10にはフリーページ取得処理の一例がフローチャートとして示されている。
図10のステップ112で、空メモリ利用部94は、先頭終端ページ構造体対応テーブル62(図4)における先頭に対応して記憶されている先頭のページ構造体へのポインタpsを取得する。
ステップ114で、空メモリ利用部94は、ページ構造体記憶領域64に記憶された複数のページ構造体71の1つのページ構造体71を任意に選択する。例えば、空メモリ利用部94は、複数のページ構造体71の内の中央のページ構造体71を選択する。空メモリ利用部94は、当該選択したページ構造体71から、ポインタpsで識別されるページ構造体71まで(図5に向って左側に向って)、各ページ構造体71における前のページ構造体へのポインタ78(図6)に基づいて、辿る。空メモリ利用部94は、ポインタpsで識別されるページ構造体71まで辿ることができたか否かを判断することにより、ポインタpsで識別されるページ構造体71を取得できたか否かを判断する。ステップ114の判定結果が否定判定の場合には、先頭のフリーページがない、即ち、フリーページがないのでフリーページ取得処理は終了する。
ステップ114の判定結果が肯定判定の場合には、フリーページ取得処理はステップ116に進む。ステップ116で、空メモリ利用部94は、ページ構造体71のページの状態を示すフラグ74を使用中に変更する。これにより、当該ページはフリーページでないことが示される。更に、空メモリ利用部94は、ページ前後のリンクを削除する。即ち、空メモリ利用部94は、先頭のフリーページ72S(図19(B))のページ構造体71における次のページ構造体へのポインタ76及び当該次のページ構造体における前のページ構造体へのポインタ78を削除する。これにより、先頭ページは、ページ構造体記憶領域(フリーリスト)64の管理下から外れ、先頭ページでなくなる。
ステップ118で、空メモリ利用部94は、先頭のフリーページ72S(図19(B))の次にデータを書き込む予定のフリーページ72S+1(図19(B))のページ構造体71へのポインタを取得する。OS18Aは、ページ構造体記憶領域64においてフリーページ72S+1のページ構造体71を管理しているので、当該ポインタを取得できる。
ステップ120で、空メモリ利用部94は、ページ構造体記憶領域64に記憶された複数のページ構造体71の1つのページ構造体71を任意に選択する。例えば、空メモリ利用部94は、複数のページ構造体71の内の中央のページ構造体71を選択する。空メモリ利用部94は、当該選択したページ構造体71から、フリーページ72S+1のページ構造体71まで(図5に向って左側に向って)、各ページ構造体71における前のページ構造体へのポインタ78(図6)に基づいて、辿る。空メモリ利用部94は、フリーページ72S+1のページ構造体71まで辿ることができたか否かを判断することにより、ステップ118で取得したポインタにより識別される次のページ構造体が取得できたか否かを判断する。ステップ120の判手結果が否定判定の場合は、フリーページがないので、フリーページ取得処理は終了する。
ステップ120の判定結果が肯定判定の場合には、本フリーページ取得処理はステップ122に進む。ステップ122で、空メモリ利用部94は、上記ステップ120で辿った先のアドレスを先頭ページ構造体へのポインタ先として新しくリンクし直す。即ち、空メモリ利用部94は、先頭終端ページ構造体対応テーブル62(図4)における先頭に対応して、ステップ118で取得したポインタのアドレスを記憶する。これにより、次のページだったページが先頭のページとして管理される。
OS18Aは、業務プログラムの実行が終了したり、次の命令の実行に移ったりして、ページを利用しなくなった場合、当該ページをフリーページにする。図11には、ページ構造体記憶領域(フリーリスト)64にフリーページを追加するフリーページ追加処理の1例がフローチャートとして示されている。
ステップ132で、空メモリ利用部94は、先頭終端ページ構造体対応テーブル62(図4)における終端に対応して記憶されている終端のページ構造体71へのポインタpeを取得する。
ステップ134で、空メモリ利用部94は、ページ構造体記憶領域64に記憶された複数のページ構造体71の内の任意に選択したページ構造体71における次のページ構造体へのポインタ76から出発する。空メモリ利用部94は、ポインタpeにより識別される終端のページ構造体71まで(図5に向って右側に向って)辿る。空メモリ利用部94は、ポインタpeにより識別される終端のページ構造体71が取得できたか否かを判断する。ステップ134の判定結果が肯定判定の場合には、フリーページ追加処理はステップ136に進む。ステップ134の判定結果が否定判定の場合には、フリーページ追加処理はステップ138に進む。
ステップ136で、空メモリ利用部94は、終端のページのページ構造体71における次のページ構造体のポインタ76として新しいページ構造体のアドレスを設定する。また、空メモリ利用部94は、新しいページ構造体71における前のページ構造体へのポインタ78として終端のページのページ構造体71へのポインタを設定する。更に、空メモリ利用部94は、先頭終端ページ構造体対応テーブル62(図4)の終端に対応して、新しいページのページ構造体のアドレスを記憶する。本ステップ136の処理により、新しく追加されたページが終端のページとなりかつ終端のページだったページが終端のページの1つ前のページに設定される。
ステップ134の判定結果が否定判定の場合には、終端のページがない、即ち、フリーページがない場合である。ステップ138で、空メモリ利用部94は、先頭終端ページ構造体対応テーブル62(図4)の先頭ページ構造体と終端ページ構造体に新しいページ構造体をポインタ先として設定する。
空メモリ利用部94は、本開示の技術の「第1の書き込み部」の一例である。
図12には、業務プログラム実行装置に電源が投入されたときにOS18Aが仮想メモリ領域200の内容を設定する初期設定処理の一例がフローチャートとして示されている。図12のステップ142で、初期設定部90は、仮想メモリの全ページを管理するための管理領域60の設定をする。これにより、先頭終端ページ構造体対応テーブル62、ページ構造体記憶領域64、及び管理構造体記憶領域66が設定される。
ステップ144で、初期設定部90は、ROM22から業務プログラム及びアイドルスレッド処理プログラムを読み出す。
ステップ146で、初期設定部90は、各業務プログラムを識別する変数pを0に初期化する。例えば、変数p=1は、業務プログラムA42が識別される。ステップ148で、初期設定部90は、変数pを1インクリメントする。ステップ150で、初期設定部90は、変数pで識別される業務プログラムpを仮想メモリ領域200に設定し、ステップ152で、初期設定部90は、業務プログラムp用のトラブル調査資料の記憶領域68Aを設定する。即ち、変数p=1で、業務プログラムA42が認識される場合、初期設定部90は、記憶領域68A1に業務プログラムA42を記憶し、業務プログラムA42用のトラブルの調査用資料の記憶領域68A2が設定される。なお、記憶領域68A2の記憶領域の数は、所定値に固定されている。
ステップ154で、初期設定部90は、業務プログラムp用のアイドルスレッド処理プログラムを設定(記憶)する。即ち、変数p=1で、業務プログラムA42が認識される場合、初期設定部90は、記憶領域68A3にアイドルスレッド処理プログラムA52を記憶する。ステップ156で、初期設定部90は、業務プログラムp用のアイドルスレッド処理プログラムの実行又は非実行の設定領域68A4を設定する。
ステップ158で、初期設定部90は、変数pが、業務プログラムの総数Pか否かを判断する。ステップ158の判定結果が否定判定の場合には、本初期設定処理は、ステップ148に戻って、以上の処理(ステップ148〜158)が実行される。ステップ158の判定結果が肯定判定の場合には、本初期設定処理はステップ160に進む。
ステップ160で、初期設定部90は、変数pを0に初期化、ステップ162で、初期設定部90は、変数pを1インクリメントする。ステップ164で、初期設定部90は、業務プログラムpを複数のCPU12、14、16、・・・の中から業務プログラムp用に選択したCPUpに実行させる。
ステップ166で、変数pは、総数Pか否かを判断する。ステップ166の判定結果が否定判定の場合には、本初期設定処理はステップ162に進む。ステップ166の判定結果が肯定判定の場合には、本初期設定処理は終了する。
以上の処理により、業務プログラムA42、業務プログラムB44、業務プログラムC46が実行される。しかし、業務プログラムA42用のアイドルスレッド処理プログラムA52、業務プログラムB44用のアイドルスレッド処理プログラムB54、及び業務プログラムC46用のアイドルスレッド処理プログラムC56はこの段階では実行されない。
図13には、上記ステップ164(図12)により、例えば、業務プログラムA42の命令a1、a2、・・・akの各々が実行される場合に、当該命令の実行状態を表す命令実行データが記憶領域68A2に記憶される様子が示されている。この命令実行データの記憶処理は、命令の一部として行われる。
ここで、命令実行データとしては、次の種類のデータがある。第1の種類としては、命令を実行した場合に生成されるデータがある。業務プログラムの当該命令の内容によってどのようなデータが生成されるのかが決まる。例えば、当該命令の内容が所定の演算をすることである場合には、上記命令実行データは、その演算結果である。また、当該命令の内容が指定されたウェブサイトをブラウズする場合には、上記命令実行データは、上記ブラウズのために受信したデータ数である。
第2の種類としては、命令を実行するために使用するデータがある。例えば、ある命令が、既に実行した命令(演算処理)の中間の演算結果を使用する場合には、当該既に実行した命令(演算処理)の中間の演算結果である。
第3の種類としては、実行した命令を識別するデータ(スレッド)である。
業務プログラムA42の実行がスタートすると、OS18Aの命令部96は、まず、命令a1をCPU12に実行させる。CPU12は、命令a1を実行する。命令a1が実行されると命令実行データa1が生成される。生成された命令実行データa1が、時間t1において、記憶領域68A21に記憶される。
同様に、命令a2が実行されると、命令実行データa2が、時間t2において記憶領域68A2における命令実行データa1が記憶された領域68A21とは異なる領域68A22に記憶される。そして命令aiが実行されると、命令実行データaiが、時間ti(業務プログラムA42の実行がスタートしたときからT時間後)において、領域68A2iに記憶される。
次の命令ai+1が実行されると、命令実行データai+1が、時間ti+1で、命令実行データa1が記憶された領域68A21に記憶されようとする。命令実行データai+1が、命令実行データa1が記憶された領域に記憶されると、命令実行データa1に命令実行データai+1が上書きされる。よって、命令実行データa1が消去される。従って、クラッシュダンプしたとき、命令実行データa1を取得できず、命令a1の実行状態を把握することができない。そこで、本実施の形態では、後述するロギング処理が実行される。
命令部96は、本開示の技術の「第3の書き込み部」の一例である。
図14には、アイドル状態となった空CPUをOS18Aが検知した時に、OS18Aが空CPUにアイドルスレッド処理を実行させる命令処理の一例がフローチャートとして示されている。図14のステップ172で、空CPU利用部92は、アイドルスレッド処理を空CPUに実行させていない業務プログラムを検出する。
ステップ174で、空CPU利用部92は、業務プログラムが検出されたか否かを判断する。ステップ174の判定結果が否定判定の場合には、アイドルスレッド処理の実行の命令処理は終了する。ステップ174の判定結果が肯定判定の場合には、本命令処理はステップ176に進む。
ステップ176で、空CPU利用部92は、検出されたアイドルスレッド処理プログラムを識別する変数qを0に初期化し、ステップ178で、空CPU利用部92は、変数qを1インクリメントする。
ステップ180で、空CPU利用部92は、検出された空CPUに業務プログラムq用のアイドルスレッド処理プログラムを実行させる。例えば、q=1により業務プログラムA42が識別される場合、空CPUにアイドルスレッド処理プログラムA52の実行が割り当てられる。
ステップ182で、空CPU利用部92は、変数qが上記検出された業務プログラムの総数Qに等しいか否かを判断する。ステップ182の判定結果が否定判定の場合には、アイドルスレッド処理の実行命令処理はステップ184に進む。ステップ182の判定結果が肯定判定の場合には、本命令処理は終了する。
ステップ184で、空CPU利用部92は、更に空CPUがあるか否かを判断する。ステップ184の判定結果が否定判定の場合には、アイドルスレッド処理の実行命令処理は終了する。ステップ184の判定結果が肯定判定の場合には、本命令処理はステップ178に進む。
次に、アイドルスレッド処理を説明する。アイドルスレッド処理は、各業務プログラムに対応するアイドルスレッド処理プログラムにより実行される。業務プログラムA42〜業務プログラムC46に対応するアイドルスレッド処理プログラムA52〜アイドルスレッド処理プログラムC56は互いに同様であるので、以下、アイドルスレッド処理プログラムA52のみ説明する。図15には、アイドルスレッド処理の一例がフローチャートとして示されている。図15のステップ192で、処理部91は、ロギング処理が実行するようにユーザにより設定されたか否かを判断する。ステップ192の判定結果が否定判定の場合には、本処理はステップ192に進む。よって、ロギング処理が実行するように設定されてない場合、当該CPUは、当該判断処理(ステップ192)を実行し続ける。
ステップ192の判定結果が肯定判定の場合には、本処理はステップ194に進む。ステップ194で、処理部91は、ロギング処理を実行する。
図16には、アイドルスレッド処理のロギング処理を実行するように設定(ロード)する処理の一例がフローチャートとして示されている。ユーザが、入力装置28を介して、例えば、業務プログラムA42についてのロギング処理を実行するように、データを入力(ロード)したとする。OS18Aの命令部96は、当該ロードを検知すると、図16のステップ196で、命令部96は、設定領域68A4にアイドルスレッド処理プログラムA52の格納アドレスを設定する。これにより、図15のステップ192の判定が肯定判定となる。
一方、図17には、アイドルスレッド処理のロギング処理を解除(アンロード)する処理の一例がフローチャートとして示されている。ユーザが、入力装置28を介して、例えば、業務プログラムA42についての実行を停止するように、データを入力(アンロード)したとする。OS18Aの命令部96は、当該アンロードを検知すると、図17のステップ198で、命令部96は、設定領域A4からアイドルスレッド処理プログラムA52の格納アドレスを削除する。これにより、図15のステップ192の判定が否定判定となる。
このように、ユーザは、業務プログラムを選択してロギング処理を実行させたり、業務プログラムを選択してロギング処理を停止させたりすることができる。
入力装置28は、本開示の技術の「書き込み設定部」及び「停止設定部」の一例である。
図18には、図15のステップ194のロギング処理の一例がフローチャートとして示されている。図18のステップ202で、処理部91は、ページ構造体記憶領域(フリーリスト)64の終端のページ構造体のポインタpe(図4)を取得する。ステップ204で、処理部91は、ページ構造体記憶領域64に記憶された複数のページ構造体71の1つのページ構造体71を任意に選択する。例えば、処理部91は、複数のページ構造体71の内の中央のページ構造体71を選択する。処理部91は、当該選択したページ構造体71から、ポインタpeで識別される終端のページ構造体まで(図5に向って右側に向って)、各ページ構造体71における次のページ構造体へのポインタ76(図6)に基づいて、辿る。処理部91は、終端のページ構造体まで辿ることができたか否かを判断することにより、ポインタpeで識別される終端のページ構造体を含め、記憶領域68A2(図13参照)のページの数分のページ構造体が取得できたか否かを判断する。記憶領域68A2(図13参照)のページの数分のページ構造体が取得できたか否かを判断するのは、後述するステップ216で、処理部91が記憶領域68A2(図13参照)の全ての領域に記憶された命令実行データを一括して退避させるためである。
ステップ204の判定結果が否定判定の場合には、利用可能なフリーページが存在しないと判断でき、ロギング処理はステップ206に進む。ステップ206で、処理部91は、一定時間待機する。一定時間待機すると、上記(図10)のようにフリーページが追加されることもある。この場合には、ステップ204の判定結果が肯定判定となる。ステップ204の判定結果が肯定判定の場合には、ロギング処理はステップ208に進む。
ステップ208で、処理部91は、業務プログラム記憶領域対応テーブル70(図8)を参照し、例えば、業務プログラムA42に対応して記憶されているアドレスAを取得し、アドレスAに基づいて退避する記憶領域68A2を検出できたか否かを判断する。
ところで、アイドルスレッド処理(ロギング処理)は、対応する業務プログラムの実行とは独立して実行される。よって、前述したようにユーザによりロギング処理が実行されるように設定された状態であっても、対応する業務プログラムがメモリ20に存在しない場合がある。なお、対応する業務プログラムがメモリ20に存在しない場合は、業務プログラム記憶領域対応テーブル70の対応する業務プログラムに対応する記憶領域に記憶されたアドレスがOS18Aにより削除される。この場合には、ステップ208の判定結果が否定判定となる。ステップ208の判定結果が否定判定の場合には、ロギング処理はステップ210に進む。ステップ210で、処理部91は、一定時間待機する。一定時間待機すると、対応する業務プログラムがメモリ20に記憶(復活)される場合もある。この場合には、業務プログラム記憶領域対応テーブル70の対応する業務プログラムに対応する記憶領域にアドレスがOSにより記憶(復活)される。ステップ208の判定結果が肯定判定となる。ステップ208の判定結果が肯定判定の場合には、ロギング処理はステップ212に進む。
ステップ212で、処理部91は、ヘッダ情報の作成をする。ここで、ヘッダ情報には、マジックナンバ、シーケンス番号、時刻(タイムスタンプ)、使用したCPU番号、領域の属性、チェックサムがある。マジックナンバは、調査資料がどの業務プログラムに対応するのかを示す。シーケンス番号は、調査資料がどの命令に対応するのかを示す。領域の属性は、調査資料の具体的内容の種類を識別する情報である。
ヘッダ情報は、本開示の技術の「命令を特定するデータ」の一例である。
ステップ214で、処理部91は、ページ構造体がページ構造体記憶領域(フリーハスト)64上にあるか否を確認する。ところで、ステップ204で、ページ構造体が取得できたと判断されても、ステップ208の判定結果が否定判定の場合、ロギング処理は、ステップ210で一定時間待機される。ロギング処理が一定時間待機された場合、OS18Aがステップ204におけるページ構造体に対応するページを利用する場合がある。この場合には、ステップ204におけるページ構造体がページ構造体記憶領域(フリーリスト)64から外れる(図10)。よって、ステップ214の判定結果は否定判定となる。この場合、ロギング処理はステップ206に進む。上記のように、ステップ206で、ロギング処理は一定時間待機する。ロギング処理が一定時間待機している間に、ページが解放されて、ページ構造体記憶領域(フリーリスト)64にページ構造体が追加される(図11)。この場合、ステップ214の判定結果が肯定判定となる。
ステップ214の判定結果が肯定判定の場合には、ロギング処理はステップ216に進む。ステップ216で、処理部91は、ヘッダ情報と記憶領域68A2の命令実行データをページに書き込む。即ち、処理部91は、ステップ204で取得できたページ構造体71における管理構造体84へのポインタ80に基づいて、管理構造体84を認識する。処理部91は、認識した管理構造体84のポインタ86に基づいて、上記ステップ204で取得できたページ構造体71に対応するページに、ヘッダ情報と命令実行データを記憶(退避)する。
ステップ218で、処理部91は、ページ構造体71のフラグ82を、クラッシュダンプの採取対象に変更する。即ち、処理部91はフラグ82を「ダンプ採取必要」に変更する。
ステップ220で、処理部91は、上記T時間待機する。ステップ216の処理により、上記T時間が経過する間に、上記(図13)のように、複数の命令が実行され、記憶領域68A2に新たに命令実行データが記憶される。ロギング処理がステップ220に移行したときから上記T時間が経過するときは、記憶領域68A2に新たに記憶されたデータに、更に新たなデータが上書きされそうになる。
よって、記憶領域68A2に記憶された命令実行データを再度退避するため、ロギング処理はステップ222に進む。ステップ222で、処理部91は、ロギング処理により書き込んだページがリンクしている、前のページ構造体アドレスを取得する。
ここで、ステップ222で、上記のように前のページ構造体アドレスを取得するようにしているのは次の理由からである。即ち、OS18Aが空き領域72のフリーページ(図19(A))にデータを書き込む順番(300(図19B))とは逆の順番(400(図19(C))で、処理部91が命令実行データをフリーページに書き込むようにするためである。これは、終端のフリーページ72Eを含む所定数のフリーページは、空メモリ利用部94によりデータが書き込まれないと予想されるフリーページである。ここで、空メモリ利用部94によりデータが書き込まれないと予想されるフリーページには、第1に、全くデータが書き込まれないと予想されるフリーページや、第2に、一定時間後でなければデータが書き込まれないと予想されるフリーページが含まれる。当該一定時間は、過去の統計値に基づいて得られる、業務プログラム実行装置に電源が投入された時からクラッシュダンプが生ずるであろうと予想される時間である。なお、このように上記一定時間は統計値に基づいて得られるので、空メモリ利用部94によりデータが書き込まれないと予想した所定数のフリーページに現実にはデータが書き込まれこともある。
また、ステップ222における「前のページ構造体」の数は、記憶領域68A2(図13参照)のページの数である。これは、ステップ222の処理後に実行されるステップ216では、記憶領域68A2(図13参照)の全ての領域に記憶された命令実行データを一括して退避するからである。
ステップ222の後は、ロギング処理は、ステップ204に進み、処理部91は、以上の処理(ステップ204〜222)を実行する。なお、ステップ222の処理後にロギング処理が進んだステップ204では、処理部91は、ステップ222で取得された前のページ構造体アドレスに基づいて、記憶領域68A2(図13参照)のページの数のページ構造体が取得できたか否かを判断する。
上記(図13)のように、複数の命令が実行され、記憶領域68A2に命令実行データが記憶される。ロギング処理がステップ220に移行したときから上記T時間が経過するときは、記憶領域68A2に記憶された命令実行データに、新たな命令実行データが上書きされそうになる。そこで、ロギング処理では、ステップ216で、新たな命令実行データが上書きされる前に、記憶領域68A2の全ての領域に記憶された命令実行データを上記のように空き領域200のフリーページに退避される。
処理部91は、本開示の技術の「第2の書き込み部」の一例である。
上記のように、ロギング処理では、調査用資料を退避した先の空き領域72のページを管理しているページ構造体71におけるフラグ82が、クラッシュダンプ採取対象となることを示すように変更される。ダンプ部98は、何れかのCPUが暴走した場合(パニックが生じた場合)、このフラグ82の内容を調べることにより、空き領域72のページがメモリダンプ採取対象か否か判断する。そして、ダンプ部98は、調査用資料を2次記憶装置18の記憶領域18B(図2(B)参照)に記憶(ダンプ)する。
ところで、アイドルスレッド処理は、以下の場合に、強制的に終了となるが、以下の場合以外の場合は、実行し続けられる。
第1に、アイドルスレッド処理を実行しているCPUが業務プログラムの実行のために利用される場合に、アイドルスレッド処理は強制的に終了となる。
第2に、図19(C)に示すように全てのフリーページが利用された場合である。即ち、OS18Aが、業務プログラム等の実行のために、フリーページ72S〜72Lにデータを書き込みかつヘッダ情報及び命令実行データをフリーページ72E〜72Mに書き込んだ場合、ロギング処理は強制終了となる。なお、業務プログラム等の実行のために、データを書き込む場合、OS18Aは、ページ72M以後の(図19(D)の順番302参照)を利用する。この場合には、保存した命令実行データにデータが上書きされる。
第3に、OS18Aのカーネルにパニックが発生した場合に、ロギング処理は強制的に終了となる。
アイドルスレッド処理を実行しているCPUが業務プログラムの実行のために利用される場合、全てのフリーページが利用された場合、及びOS18Aのカーネルにパニックが発生した場合の各場合をOS18Aが検知した場合、次の処理がスタートする。即ち、図20に示すアイドルスレッド処理停止処理がスタートし、命令部96は、ステップ230で、アイドルスレッド処理を停止する。
一方、第2の場合(図19(B))の後にフリーページが追加された場合、カーネルのパニックが解消された場合の各場合をOS18Aが検知した場合、次の処理がスタートする。即ち、図21に示すアイドルスレッド処理実行処理がスタートし、命令部96は、ステップ240でアイドルスレッド処理を実行させる。
次に、本実施の形態の効果を説明する。
(第1の効果)
ロギング処理では、命令実行データ(調査用資料)を記憶領域68A2(図3、図13)から空き領域72に退避するので、命令実行データを記憶領域68A2(図3、図13)の記憶可能量よりも多く保存することができる。また、ロギング処理では、命令実行データを退避する場合、業務プログラム等が空き領域72のフリーページを利用する順番とは逆の順番でフリーページが利用される。空き領域72が存在する状態では、保存した内容(命令実行データ)が上書きされることをより少なくすることができる。命令実行データが一旦、固定領域の記憶領域68A2(図3、図13)に記憶され、記憶領域68A2に記憶された命令実行データに上書きされる前に、命令実行データが空き領域72に退避される。よって、命令実行データが上書きされることをより少なくすることができる。
(第2の効果)
OS18Aは、ロギング処理を空CPUに実行させるので、業務処理をしているCPUの処理を妨げることを防止することができる。また、OSは、ロギング処理を実行しているCPUが業務処理を実行する場合には、ロギング処理を停止させる共に当該CPUに業務処理を実行させるので、業務処理の妨げとなることを防止することができる。
(第3の効果)
ロギング処理は、フリーページがある状態でのみ業務処理を実行する際に利用されるフリーページを利用するので、業務処理の妨げとなることを防止することができる。
(第4の効果)
ロギング処理では、命令実行データ(調査用資料)を退避した先の空き領域72のページを管理しているページ構造体71におけるフラグ82が、クラッシュダンプ採取対象となることを示すように変更される。このフラグ82の内容を調べることにより、空き領域72のページがメモリダンプ採取対象か否か判断でき、命令実行データを2次記憶装置18の記憶領域18B(図2(B)参照)に保存することが可能となる。その結果、命令実行データを確実に採取することができる。
(第5の効果)
ヘッダ情報が命令実行データ(調査用資料)に対応して付与される。よって、クラッシュダンプの中から目的の調査資料を探しやすい。また、ヘッダ情報には、領域の属性として命令実行データがどのような処理の情報なのかを示す情報が含まれている。よって、採取された命令実行データの解析時に命令実行データがどのような内容なのかを特定することができる。
(第6の効果)
命令実行データとして命令の実行によって生成された演算結果や中間の演算結果を利用すると、命令が正しく実行されたのかを知ることができる。
(第7の効果)
命令実行データとしてスレッド(命令の識別データ)を利用すると、どの命令が実行されたのか及びどの命令が実行されなかったのかを知ることができる。また、命令実行データとして、命令のスレッドを用いると、従来の方法だと、当該スレッドが上書きされる場合がある。即ち、図22(A)に示すように、第1の命令が第2の命令にジャンプしかつ第2の命令が第3の命令にジャンプする内容の場合を例にとり説明する。図22(A)の上側に示すように、第1の命令が実行されると、第1の命令の識別データであるスレッド(func2)がフリーページ232に保存され、第2の命令が実行されると、第2の命令のスレッド(func2)がフリーページ234に保存される。第3の命令から第2の命令に戻る場合には、図22(A)の下側に示すように、第2の命令のスレッド(func2)に第3の命令のスレッド(func3)が上書きされる。しかし、本実施の形態では、図22(B)の中間に示すように、第3の命令から第2の命令に戻る場合に、第2の命令のスレッド(func2)に第3の命令のスレッド(func3)が上書きされる前に第2の命令のスレッド(func2)が退避される。よって、スレッドを保存することができる。
次に、本実施の形態の変形例を説明する。
(第1の変形例)
図19(D)に示すように、OS18Aは、ページ72M以後のページを順番302に従って、ページを利用することに代えて、図19(E)に示すように、終端のページ72Eから上記順番300、301とは逆の順番(304)にページを利用してもよい。命令実行データが上書きされる順番をより古い順番にすることができる。これは、クラッシュダンプ時に時間的により近い命令実行データを保存するためである。
(第2の変形例)
図19(C)に示すように、命令実行データを終端のフリーページ72Eから書き込むことに代えて、次のようにしてもよい。即ち、OS18Aは、空き領域72の全てのフリーページを、先頭のフリーページ72Sから4/5の部分と、終端のフリーページ72Eからの1/5の部分に分ける。命令実行データは、上記順番300、301と同方向の順番(401)に、フリーページ72Eから終端72Eに向って利用するようにしてもよい。これにより、命令実行データが上書きされる順番をより古い順番にすることができる。ここで、1/5の部分は、OS18Aによりデータが書き込まれないと予想されるフリーページの部分である。なお、1/5は例示であり、OS18Aによりデータが書き込まれないフリーページの数の統計値に基づいて決定することができる。
(第3の変形例)
命令実行データが一旦記憶領域68A2(図3、図13)に記憶された後、空き領域72のフリーページに記憶(退避)することに代えて、次のようにしてもより。即ち、OS18Aは、命令実行データが生成される毎に、生成された命令実行データを空き領域72のフリーページに直接記憶してもよい。これにより、記憶領域68A2を消去して、より空き領域72を増やすことができる。なお、一旦記憶領域68A2に記憶した後、空き領域72に退避する場合、及び空き領域72に直接記憶する場合の各場合における命令実行データの種類は、上記第1〜第3の種類の何れかに限定されない。上記第1〜第3の種類の少なくとも1つの種類することができる。
(第4の変形例)
ステップ216とステップ214との間で、処理部91は次の処理を実行してもよい。即ち、ステップ208で検出できた上記退避する領域68A2に記憶されかつこれから退避する上記命令実行データが、ステップ204で取得したページ構造体よりも次のページ構造体に記憶された命令実行データと同じか否かを判断する処理である。これは、同じ内容の命令実行データが再度退避されないようにするためである。なお、命令実行データが同じ内容か否かは、各命令実行データに対応するヘッダ情報のマジックナンバ及びシーケンス番号が同じか否か判断することにより判断することができる。
(第5の変形例)
ダンプ部98は、何れかのCPUが暴走した場合(パニックが生じた場合)、命令実行データを2次記憶装置18の記憶領域18B(図2(B)参照)に記憶(ダンプ)することに代え、次のようにしてもよい。第1に、CPUが適正に動作している、即ち、パニックが生じていない場合に、命令実行データを、空き領域72に退避される毎に2次記憶装置18の記憶領域18Bに記憶してもよい。第2に、命令実行データが生成され、直接空き領域72に記憶される毎に命令実行データを2次記憶装置18の記憶領域18Bに記憶してもよい。
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
書き込まれたデータを記憶する複数の記憶領域を有する記憶部と、
前記記憶部の記憶領域にデータを書き込む第1の書き込み部と、
前記記憶部の複数の記憶領域の内、前記第1の書き込み部により書き込みがされないと予想される記憶領域に、複数の命令を含むプログラムの各命令の実行状態を示す命令実行データを書き込む第2の書き込み部と、
を備えたデータ書き込み装置。
(付記2)
前記第1の書き込み部は、前記記憶部の複数の記憶領域に予め定められた順番にデータを書き込み、
前記第2の書き込む部は、前記各命令の実行状態を示す命令実行データを、前記記憶部の複数の記憶領域に前記順番とは逆の順番に書き込むと共に前記第1の書き込み部が最初に書き込む記憶領域よりも最も離れた記憶領域から書き込み始める
付記1に記載のデータ書き込み装置。
(付記3)
前記記憶部は、予め定められた数の特定の記憶領域を有し、
前記各命令が実行される毎に、前記命令実行データを、前記特定の記憶領域に書き込むと共に前記特定の記憶領域の全てに前記命令実行データを書き込んだ場合には、前記命令実行データが記憶された記憶領域に別の命令実行データを書き込む第3の書き込み部を更に備え、
前記第2の書き込み部は、前記命令実行データが記憶された記憶領域に別の命令実行データが書き込まれる前に、前記記憶領域に記憶された前記命令実行データを、前記予想される記憶領域に書き込む
付記1又は付記2に記載のデータ書き込み装置。
(付記4)
前記第2の書き込み部は、プログラムの命令を実行可能であり、前記命令を実行する場合には、前記命令実行データを書き込むことを停止する付記1〜付記3の何れか1項に記載のデータ書き込み装置。
(付記5)
前記第2の書き込み部は、前記記憶部の前記複数の記憶領域の全てに前記データ又は前記命令実行データが書き込まれた場合には、前記命令実行データを書き込むことを停止する付記1〜付記4の何れか1項に記載のデータ書き込み装置。
(付記6)
前記命令実行データは、前記命令を実行した場合に生成される第1のデータ、前記命令を実行するために利用する第2のデータ、前記実行された命令を識別する第3のデータの少なくとも1つである付記1〜付記5の何れか1項に記載のデータ書き込み装置。
(付記7)
前記命令実行データを書き込むように設定する書き込み設定部を更に備え、
前記第2の書き込み部は、前記書き込み設定部により前記命令実行データを書き込むように設定された場合に、前記命令実行データを書き込む付記1〜付記6の何れか1項に記載のデータ書き込み装置。
(付記8)
前記命令実行データの書き込みを停止するように設定する停止設定部を更に備え、
前記第2の書き込み部は、前記停止設定部により前記命令実行データの書き込みを停止するように設定された場合に、前記命令実行データの書き込みを停止する付記1〜付記7の何れか1項に記載のデータ書き込み装置。
(付記9)
前記第2の書き込み部は、複数のプログラムの各々に対応して備える付記1〜付記8の何れか1項に記載のデータ書き込み装置。
(付記10)
前記第2の書き込み部は、前記命令実行データと、前記命令を特定するデータとを対応して書き込む付記1〜付記9の何れか1項に記載のデータ書き込み装置。
(付記11)
コンピュータに、
書き込まれたデータを記憶する複数の記憶領域を有する記憶部の記憶領域にデータを書き込む第1の書き込みをし、
前記記憶部の複数の記憶領域の内、前記第1の書き込みにより書き込みがされないと予想される記憶領域に、複数の命令を含むプログラムの各命令の実行状態を示す命令実行データを書き込む第2の書き込みをする
ことを含む処理を実行させるデータ書き込みプログラム。
(付記12)
前記第1の書き込みでは、前記記憶部の複数の記憶領域に予め定められた順番にデータを書き込み、
前記第2の書き込むでは、前記各命令の実行状態を示す命令実行データを、前記記憶部の複数の記憶領域に前記順番とは逆の順番に書き込むと共に前記第1の書き込み部が最初に書き込む記憶領域よりも最も離れた記憶領域から書き込み始める
付記11に記載のデータ書き込みプログラム。
(付記13)
前記記憶部は、予め定められた数の特定の記憶領域を有し、
前記コンピュータに、
前記各命令が実行される毎に、前記命令実行データを、前記特定の記憶領域に書き込むと共に前記特定の記憶領域の全てに前記命令実行データを書き込んだ場合には、前記命令実行データが記憶された記憶領域に別の命令実行データを書き込む第3の書き込みをすることを含む処理を更に実行させ、
前記第2の書き込みでは、前記命令実行データが記憶された記憶領域に別の命令実行データが書き込まれる前に、前記記憶領域に記憶された前記命令実行データを、前記予想される記憶領域に書き込む
付記11又は付記12に記載のデータ書き込みプログラム。
(付記14)
前記第2の書き込みを行う第2の書き込み部は、プログラムの命令を実行可能であり、
前記コンピュータに、
前記第2の書き込み部が前記命令を実行する場合には、前記第2の書き込みを停止することを含む処理を更に実行させる付記11〜付記13の何れか1項に記載のデータ書き込みプログラム。
(付記15)
前記コンピュータに、
前記記憶部の前記複数の記憶領域の全てに前記データ又は前記命令実行データが書き込まれた場合には、前記第2の書き込みを停止することを含む処理を更に実行させる付記11〜付記14の何れか1項に記載のデータ書き込みプログラム。
(付記16)
前記命令実行データは、前記命令を実行した場合に生成される第1のデータ、前記命令を実行するために利用する第2のデータ、前記実行された命令を識別する第3のデータの少なくとも1つである付記11〜付記15の何れか1項に記載のデータ書き込みプログラム。
(付記17)
前記コンピュータに、
前記第2の書き込みをするように設定することを含む処理を更に実行させ、
前記第2の書き込みでは、前記命令実行データを書き込むように設定された場合に、前記命令実行データを書き込む付記11〜付記16の何れか1項に記載のデータ書き込みプログラム。
(付記18)
前記コンピュータに、
前記第2の書き込みを停止するように設定された場合に、前記第2の書き込みを停止することを含む処理を更に実行させる付記11〜付記17の何れか1項に記載のデータ書き込みプログラム。
(付記19)
複数のプログラムの各々に対応して前記第2の書き込みが行われる付記11〜付記18の何れか1項に記載のデータ書き込みプログラム。
(付記20)
前記第2の書き込みでは、前記命令実行データと、前記命令を特定するデータとを対応して書き込む付記11〜付記19の何れか1項に記載のデータ書き込みプログラム。
(付記21)
コンピュータに、
書き込まれたデータを記憶する複数の記憶領域を有する記憶部の記憶領域にデータを書き込む第1の書き込みをし、
前記記憶部の複数の記憶領域の内、前記第1の書き込みにより書き込みがされないと予想される記憶領域に、複数の命令を含むプログラムの各命令の実行状態を示す命令実行データを書き込む第2の書き込みをする
ことを含む処理を実行させるデータ書き込み方法。
(付記22)
前記第1の書き込みでは、前記記憶部の複数の記憶領域に予め定められた順番にデータを書き込み、
前記第2の書き込むでは、前記各命令の実行状態を示す命令実行データを、前記記憶部の複数の記憶領域に前記順番とは逆の順番に書き込むと共に前記第1の書き込み部が最初に書き込む記憶領域よりも最も離れた記憶領域から書き込み始める
付記21に記載のデータ書き込み方法。
(付記23)
前記記憶部は、予め定められた数の特定の記憶領域を有し、
前記コンピュータに、
前記各命令が実行される毎に、前記命令実行データを、前記特定の記憶領域に書き込むと共に前記特定の記憶領域の全てに前記命令実行データを書き込んだ場合には、前記命令実行データが記憶された記憶領域に別の命令実行データを書き込む第3の書き込みをすることを含む処理を更に実行させ、
前記第2の書き込みでは、前記命令実行データが記憶された記憶領域に別の命令実行データが書き込まれる前に、前記記憶領域に記憶された前記命令実行データを、前記予想される記憶領域に書き込む
付記21又は付記22に記載のデータ書き込み方法。
(付記24)
前記第2の書き込みを行う第2の書き込み部は、プログラムの命令を実行可能であり、
前記コンピュータに、
前記第2の書き込み部が前記命令を実行する場合には、前記第2の書き込みを停止することを含む処理を更に実行させる付記21〜付記23の何れか1項に記載のデータ書き込み方法。
(付記25)
前記コンピュータに、
前記記憶部の前記複数の記憶領域の全てに前記データ又は前記命令実行データが書き込まれた場合には、前記第2の書き込みを停止することを含む処理を更に実行させる付記21〜付記24の何れか1項に記載のデータ書き込み方法。
(付記26)
前記命令実行データは、前記命令を実行した場合に生成される第1のデータ、前記命令を実行するために利用する第2のデータ、前記実行された命令を識別する第3のデータの少なくとも1つである付記21〜付記25の何れか1項に記載のデータ書き込み方法。
(付記27)
前記コンピュータに、
前記第2の書き込みをするように設定することを含む処理を更に実行させ、
前記第2の書き込みでは、前記命令実行データを書き込むように設定された場合に、前記命令実行データを書き込む付記21〜付記26の何れか1項に記載のデータ書き込み方法。
(付記28)
前記コンピュータに、
前記第2の書き込みを停止するように設定された場合に、前記第2の書き込みを停止することを含む処理を更に実行させる付記21〜付記27の何れか1項に記載のデータ書き込み方法。
(付記29)
複数のプログラムの各々に対応して前記第2の書き込みが行われる付記21〜付記28の何れか1項に記載のデータ書き込み方法。
(付記30)
前記第2の書き込みでは、前記命令実行データと、前記命令を特定するデータとを対応して書き込む付記21〜付記29の何れか1項に記載のデータ書き込み方法。
12、14、16 CPU
18A OS
20 メモリ
28 入力装置
42 業務プログラムA
44 業務プログラムB
46 業務プログラムC
52 アイドルスレッド処理プログラムA
54 アイドルスレッド処理プログラムB
55 アイドルスレッド処理プログラムC
68A2 記憶領域
91 処理部
94 空メモリ利用部
96 命令部
200 仮想メモリ領域

Claims (7)

  1. 書き込まれたデータを記憶する複数の記憶領域を有する記憶部と、
    前記記憶部の記憶領域にデータを書き込む第1の書き込み部と、
    前記記憶部の複数の記憶領域の内、前記第1の書き込み部により書き込みがされないと予想される記憶領域に、複数の命令を含むプログラムの各命令の実行状態を示す命令実行データを書き込む第2の書き込み部と、
    を備えたデータ書き込み装置。
  2. 前記第1の書き込み部は、前記記憶部の複数の記憶領域に予め定められた順番にデータを書き込み、
    前記第2の書き込む部は、前記各命令の実行状態を示す命令実行データを、前記記憶部の複数の記憶領域に前記順番とは逆の順番に書き込むと共に前記第1の書き込み部が最初に書き込む記憶領域よりも最も離れた記憶領域から書き込み始める
    請求項1に記載のデータ書き込み装置。
  3. 前記記憶部は、予め定められた数の特定の記憶領域を更に有し、
    前記各命令が実行される毎に、前記命令実行データを、前記特定の記憶領域に書き込むと共に前記特定の記憶領域の全てに前記命令実行データを書き込んだ場合には、前記命令実行データが記憶された記憶領域に別の命令実行データを書き込む第3の書き込み部を更に備え、
    前記第2の書き込み部は、前記命令実行データが記憶された記憶領域に別の命令実行データが書き込まれる前に、前記記憶領域に記憶された前記命令実行データを、前記予想される記憶領域に書き込む
    請求項1又は請求項2に記載のデータ書き込み装置。
  4. 前記第2の書き込み部は、プログラムの命令を実行可能であり、前記命令を実行する場合には、前記命令実行データを書き込むことを停止する請求項1〜請求項3の何れか1項に記載のデータ書き込み装置。
  5. 前記第2の書き込み部は、前記記憶部の前記複数の記憶領域の全てに前記データ又は前記命令実行データが書き込まれた場合には、前記命令実行データを書き込むことを停止する請求項1〜請求項4の何れか1項に記載のデータ書き込み装置。
  6. コンピュータに、
    書き込まれたデータを記憶する複数の記憶領域を有する記憶部の記憶領域にデータを書き込む第1の書き込みをし、
    前記記憶部の複数の記憶領域の内、前記第1の書き込みにより書き込みがされないと予想される記憶領域に、複数の命令を含むプログラムの各命令の実行状態を示す命令実行データを書き込む第2の書き込みをする
    ことを含む処理を実行させるデータ書き込みプログラム。
  7. コンピュータに、
    書き込まれたデータを記憶する複数の記憶領域を有する記憶部の記憶領域にデータを書き込む第1の書き込みをし、
    前記記憶部の複数の記憶領域の内、前記第1の書き込みにより書き込みがされないと予想される記憶領域に、複数の命令を含むプログラムの各命令の実行状態を示す命令実行データを書き込む第2の書き込みをする
    ことを含む処理を実行させるデータ書き込み方法。
JP2013213877A 2013-10-11 2013-10-11 データ書き込み装置、データ書き込みプログラム、及びデータ書き込み方法 Pending JP2015076052A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013213877A JP2015076052A (ja) 2013-10-11 2013-10-11 データ書き込み装置、データ書き込みプログラム、及びデータ書き込み方法
US14/489,619 US20150106575A1 (en) 2013-10-11 2014-09-18 Data writing device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013213877A JP2015076052A (ja) 2013-10-11 2013-10-11 データ書き込み装置、データ書き込みプログラム、及びデータ書き込み方法

Publications (1)

Publication Number Publication Date
JP2015076052A true JP2015076052A (ja) 2015-04-20

Family

ID=52810659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013213877A Pending JP2015076052A (ja) 2013-10-11 2013-10-11 データ書き込み装置、データ書き込みプログラム、及びデータ書き込み方法

Country Status (2)

Country Link
US (1) US20150106575A1 (ja)
JP (1) JP2015076052A (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4704660B2 (ja) * 2002-12-18 2011-06-15 株式会社日立製作所 記憶デバイス制御装置の制御方法、記憶デバイス制御装置、及びプログラム
TWI425515B (zh) * 2009-12-23 2014-02-01 Silicon Motion Inc 資料儲存裝置及快閃記憶體之資料寫入方法

Also Published As

Publication number Publication date
US20150106575A1 (en) 2015-04-16

Similar Documents

Publication Publication Date Title
CN110865888B (zh) 一种资源加载方法、装置、服务器及存储介质
US8732576B2 (en) Operating system providing multi-touch support for applications in a mobile device
US8196116B2 (en) Tracing objects in object-oriented programming model
US8453121B2 (en) Managing the tracing of the execution of a computer program
US20140344536A1 (en) Storage systems that create snapshot queues
US9430355B2 (en) System diagnostics with thread dump analysis
US9575827B2 (en) Memory management program, memory management method, and memory management device
US20120246518A1 (en) Operating a computer system
WO2018032698A1 (zh) 一种翻页方法、装置及书写终端
US20130219406A1 (en) Computer system, job execution management method, and program
JP5359601B2 (ja) ダンプ出力制御装置、ダンプ出力制御プログラム、ダンプ出力制御方法
US9507657B2 (en) Investigation program, information processing apparatus, and information processing method
TWI517020B (zh) 判斷控制項狀態的方法
US20140337595A1 (en) Information processing apparatus, and information processing method
CN114942863A (zh) 一种级联快照处理方法、装置、设备及存储介质
US10102104B2 (en) Thread dump viewer
CN112069189A (zh) 多层级映射表格的更新方法、系统、终端设备及存储介质
TW201324347A (zh) 功能模組命令管理系統及方法
JP2015076052A (ja) データ書き込み装置、データ書き込みプログラム、及びデータ書き込み方法
US11809881B2 (en) Target process injection prior to execution of marker libraries
CN114385368A (zh) 预写日志的刷写方法和装置
CN113867834A (zh) 调试插件调用方法、装置及计算机可读存储介质
CN114489495A (zh) 数据存储方法、装置、终端设备以及存储介质
CN114238391A (zh) 数据分页查询方法、装置、电子设备及存储介质
EP3506130B1 (en) Data extracting system and method