JP2022164182A - 演算装置、プログラムの動作方法 - Google Patents
演算装置、プログラムの動作方法 Download PDFInfo
- Publication number
- JP2022164182A JP2022164182A JP2021069512A JP2021069512A JP2022164182A JP 2022164182 A JP2022164182 A JP 2022164182A JP 2021069512 A JP2021069512 A JP 2021069512A JP 2021069512 A JP2021069512 A JP 2021069512A JP 2022164182 A JP2022164182 A JP 2022164182A
- Authority
- JP
- Japan
- Prior art keywords
- program
- managed
- management
- background
- memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 142
- 230000008569 process Effects 0.000 claims abstract description 145
- 238000012545 processing Methods 0.000 claims abstract description 45
- 230000003213 activating effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 15
- 230000007704 transition Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000004048 modification Effects 0.000 description 11
- 238000012986 modification Methods 0.000 description 11
- 101100328887 Caenorhabditis elegans col-34 gene Proteins 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
【課題】プログラムによる処理を迅速に開始できる。【解決手段】演算装置は、メモリと、非リアルタイムOS、複数を同時に起動できない管理対象プログラム、管理対象プログラムを実行する背後プログラム、管理対象プログラムを管理する管理プログラムを格納する不揮発性記憶媒体と、OS、管理対象プログラム、背後プログラム、および管理プログラムを実行する中央演算装置とを備える。背後プログラムは、OSによる1または複数の仮プロセスの生成、および管理対象プログラムのメモリへの格納を行い、仮プロセスの1つである選択プロセスを選択してメモリに格納した管理対象プログラムと紐づけ、管理プログラムは、管理対象プログラムを起動する指令を受けると新たなプロセスを生成せずに選択プロセスに紐づけた管理対象プログラムを動作させる。【選択図】図2
Description
本発明は、演算装置、およびプログラムの動作方法に関する。
リアルタイムOSは、一定の時間周期以内でプログラムを動作させることができるため産業分野では好まれる。その一方でリアルタイムOSには制約が存在するため、汎用OSにおいて一定の時間周期以内でプログラムを動作させることの需要が存在する。特許文献1には、リアルタイムOS(RTOS)をワークステーション(WS)やPCなどの汎用開発マシン上でUNIX(登録商標)やWindows(登録商標)などの汎用OSを利用して実現するRTOSシミュレーション方式であって、汎用OSの実時間に基づいて指定時間間隔で定期的にシグナルを発生するタイマ機能(実時間タイマ機能)とプロセスに対するCPU割り当て時間に基づいて指定時間間隔で定期的にシグナルを発生するタイマ機能(プロセス相対時間タイマ機能)とを効率良く使い分けて利用してRTOSの時間管理を実現するために、RTOS起動時に、前記プロセス相対時間タイマ機能を用いてCPU割り当て時間に基づいて一定時間ごとにシグナルを発生させるように設定する起動時タイマ設定工程と、ユーザタスクがみずから何らかのイベント発生を待つWAITING状態やSUSPENDED状態への遷移を伴うシステムコールを発行した際に、発生するタスクスイッチが通常のユーザタスクからアイドル状態を意味する特殊なタスク(アイドルタスク)へのタスクスイッチであるかどうかを判定するタイマ切り替え実行判定工程と、前記タイマ切り替え実行判定工程で、通常のユーザタスクからアイドルタスクへのタスクスイッチであると判断された場合に、起動されているタイマ機能を停止し、前記実時間タイマ機能を用いて実時間に基づいて一定時間ごとにシグナルを発生させるように設定するタイマ切り替え工程と、シグナル発生時に、各割り込みハンドラ処理終了後、タスクスイッチが必要でかつそれがアイドルタスクから通常のユーザタスクへのタスクスイッチであるかどうかを判断する第2のタイマ切り替え実行判定工程と、前記第2のタイマ切り替え実行判定工程で、タスクスイッチが必要でかつそれがアイドルタスクから通常のユーザタスクへのタスクスイッチであると判断された場合に、起動されているタイマ機能を停止し、前記プロセス相対時間タイマ機能を用いてCPU割り当て時間に基づいて一定時間ごとにシグナルを発生させるように設定する第2のタイマ切り替え工程とを有することを特徴とするRTOSシミュレーション方式が開示されている。
特許文献1に記載されている発明では、プログラムの起動時の処理に改善の余地がある。
本発明の第1の態様による演算装置は、高速に読み書きが可能なメモリと、リアルタイム処理に非対応のオペレーティングシステムであるOS、複数を同時に起動できない管理対象プログラム、前記管理対象プログラムを実行する背後プログラム、前記管理対象プログラムを管理する管理プログラムを格納する不揮発性記憶媒体と、前記OS,前記管理対象プログラム、前記背後プログラム、および前記管理プログラムを実行する中央演算装置とを備え、前記背後プログラムは、前記OSによる1または複数の仮プロセスの生成、および前記管理対象プログラムの前記メモリへの格納を行い、前記仮プロセスの1つである選択プロセスを選択して前記メモリに格納した前記管理対象プログラムと紐づけ、前記管理プログラムは、前記管理対象プログラムを起動する指令を受けると新たなプロセスを生成せずに前記選択プロセスに紐づけた前記管理対象プログラムを動作させる。
本発明の第2の態様によるプログラムの動作方法は、高速に読み書きが可能なメモリと、リアルタイム処理に非対応のオペレーティングシステムであるOS、複数を同時に起動できない管理対象プログラム、前記管理対象プログラムを実行する背後プログラム、前記管理対象プログラムを管理する管理プログラムを格納する不揮発性記憶媒体と、前記OS、前記管理対象プログラム、前記背後プログラム、および前記管理プログラムを実行する中央演算装置とを備える演算装置が実行するプログラムの動作方法であって、前記背後プログラムが、前記OSによる1または複数の仮プロセスの生成、および前記管理対象プログラムの前記メモリへの格納を行い、前記仮プロセスの1つである選択プロセスを選択して前記メモリに格納した前記管理対象プログラムと紐づけることと、前記管理プログラムが、前記管理対象プログラムを起動する指令を受けると新たなプロセスを生成せずに前記選択プロセスに紐づけた前記管理対象プログラムを動作させることとを含む。
本発明の第2の態様によるプログラムの動作方法は、高速に読み書きが可能なメモリと、リアルタイム処理に非対応のオペレーティングシステムであるOS、複数を同時に起動できない管理対象プログラム、前記管理対象プログラムを実行する背後プログラム、前記管理対象プログラムを管理する管理プログラムを格納する不揮発性記憶媒体と、前記OS、前記管理対象プログラム、前記背後プログラム、および前記管理プログラムを実行する中央演算装置とを備える演算装置が実行するプログラムの動作方法であって、前記背後プログラムが、前記OSによる1または複数の仮プロセスの生成、および前記管理対象プログラムの前記メモリへの格納を行い、前記仮プロセスの1つである選択プロセスを選択して前記メモリに格納した前記管理対象プログラムと紐づけることと、前記管理プログラムが、前記管理対象プログラムを起動する指令を受けると新たなプロセスを生成せずに前記選択プロセスに紐づけた前記管理対象プログラムを動作させることとを含む。
本発明によれば、プログラムによる処理を迅速に開始できる。
―第1の実施の形態―
以下、図1~図10を参照して、演算装置の第1の実施の形態を説明する。
以下、図1~図10を参照して、演算装置の第1の実施の形態を説明する。
図1は、演算装置1のハードウエア構成図である。演算装置1は、中央演算処理装置であるCPU11と、読み出し専用の記憶領域であるROM12と、高速な読み書きが可能なRAM13と、演算装置1の外部と通信する通信装置14と、不揮発性の記憶装置である記憶装置17とを備える。CPU11は、RTコア11Aと、管理コア11Bとを含む複数の演算コアを有する。CPU11は、複数の演算コアを有する単一のハードウエアでもよいし、単一の演算コアを有する複数のハードウエアでもよい。
ROM12はたとえば、マスクROM、EPROM(Erasable Programmable Read Only Memory)、またはEEPROM(Electric Erasable Programmable ROM)である。RAM13はたとえばDRAM(Dynamic RAM)である。通信装置14はたとえば、IEEE802.3に対応する通信モジュールや、IEEE802.11に対応する無線通信モジュールである。記憶装置17は、たとえばフラッシュメモリやハードディスクドライブである。
図2は、記憶装置17に格納される情報を示す図である。ただし以下に説明する全ての情報が記憶装置17に格納されることは必須ではなく、これらの一部がROM12に格納されてもよい。記憶装置17には、背後プログラム2と、管理表3と、管理プログラム4と、実行プログラム5と、フッカー7と、OS8と、第1プログラム91と、第2プログラム92とが格納される。以下では、第1プログラム91および第2プログラム92をまとめて、管理対象プログラム9とも呼ぶ。背後プログラム2、管理プログラム4、実行プログラム5、フッカー7、OS8、第1プログラム91、および第2プログラム92は、CPU11がRAM13に展開して実行する。
本実施の形態では、管理対象プログラム9の起動と終了に関連する処理を重点的に説明するので、管理対象プログラム9と実行プログラム5はプログラムの単位ではなくプロセスの単位で説明する。背後プログラム2、管理プログラム4、およびOS8は、本実施の形態で説明する範囲では終了することがないので、これらのプロセスについては特に説明をしない。
OS8は、オペレーティングシステムであり、リアルタイム実効性の有無は問わない。すなわちOS8は、リアルタイムOSでもよいし非リアルタイムOSでもよい。管理表3には、背後プログラム2が動作を管理する管理対象プログラム9である第1プログラム91および第2プログラム92に関連する情報が格納される。管理表3の詳しい構成は後述する。
管理対象プログラム9、すなわち第1プログラム91および第2プログラム92は、所定の時間間隔以内で周期的に動作することが求められる。本実施の形態では、所定の時間間隔以内で周期的に動作することを「リアルタイム動作」と呼ぶ。また、管理対象プログラム9のそれぞれは、常時起動ではなく起動や終了が繰り返される。さらに管理対象プログラム9のそれぞれは、システムの整合性を保証するなどの目的により、同時には複数が動作できない。なお本実施の形態では管理対象プログラム9に2つのプログラムが含まれるが、管理対象プログラム9は1つでもよいし3以上でもよい。管理対象プログラム9は、後述するようにRTコア11Aまたは管理コア11Bにおいて実行される。
背後プログラム2は、演算装置1において常時動作するプログラム、いわゆる「デーモン」や「サービス」である。背後プログラム2は、管理表3に記載された情報に基づき動作する。管理プログラム4は、ミドルウエアまたはライブラリであり、管理対象プログラム9に関連するシステムコールを処理する。背後プログラム2および管理プログラム4は、リアルタイム実効性を有しないOS4において、管理対象プログラム9のリアルタイム動作を実現する。背後プログラム2は常に管理コア11Bにおいて実行される。
実行プログラム5のプロセスは、背後プログラム2により生成され、背後プログラム2からの指示に基づき第1プログラム91または第2プログラム92を実行する。実行プログラム5のプロセスは、第1プログラム91または第2プログラム92を実行することを目的に仮に作成されるので、以下では実行プログラム5のプロセスを「仮プロセス」とも呼ぶ。背後プログラム2は、OS8のシステムコールである「fork」を利用して実行プログラム5のプロセスを生成するが、実行プログラム5による第1プログラム91または第2プログラム92の実行には、システムコールである「fork」は利用されない。詳しくは後述する。
フッカー7は、各アプリケーションからOS8への読み出しをフックするライブラリである。具体的にはフッカー7は、シンボルラッピング(symbol wrapping)によりシステムコールを管理プログラム4の呼び出しに変更する。フッカー7は、少なくとも、Fork、Exit、およびAbortをフックして管理プログラム4を呼び出す。管理プログラム4は、Fork、Exit、およびAbortの対象が管理対象プログラム9の場合のみ後述する特別な処理を行い、他のプログラムが対象の場合にはOS8に対してシステムコールを発行する。
(管理表)
図3は、管理表3の一例を示す図である。管理表3は複数のレコードから構成され、各レコードはそれぞれ、管理番号31、格納位置32、エントリポイント33、状態34、資源35、および割当PID36のフィールドを有する。演算装置1が動作していない状態では、管理表3には管理番号31および格納位置32のフィールドのみが記載される。または管理表3の他のフィールドに何らかの情報が格納されていても、演算装置1の起動時の初期化処理により、エントリポイント33、状態34、資源35、および割当PID36の情報は消去される。
図3は、管理表3の一例を示す図である。管理表3は複数のレコードから構成され、各レコードはそれぞれ、管理番号31、格納位置32、エントリポイント33、状態34、資源35、および割当PID36のフィールドを有する。演算装置1が動作していない状態では、管理表3には管理番号31および格納位置32のフィールドのみが記載される。または管理表3の他のフィールドに何らかの情報が格納されていても、演算装置1の起動時の初期化処理により、エントリポイント33、状態34、資源35、および割当PID36の情報は消去される。
管理番号31には、背後プログラム2が動作を管理するプログラムの識別子が格納される。格納位置32には、プログラムが格納されている位置の情報、換言するとプログラムの絶対パスが格納される。図3に示す例では、「task1.bin」がたとえば第1プログラム91であり、「task2.bin」が第2プログラム92である。エントリポイント33には、プログラムを格納したRAM13のアドレスであって、そのプログラムの動作を開始するRAM13の番地が格納される。プログラムの動作を開始するRAM13の番地とは、たとえばC言語のmain関数に相当するコードが格納されている番地である。ただしこのプログラムがまだRAMに格納されていない場合にはエントリポイントには番地が入力されない。
状態34には、プログラムの状態を示す情報が格納される。資源35には、プログラムに割り当てた資源の情報、具体的にはRAM13のサイズと先頭番地の情報が格納される。割当PID36には、そのレコードのプログラムを動作させる実行プログラム5のプロセス、換言するとそのプログラムに対応する仮プロセスのプロセスIDが格納される。ただしそのレコードのプログラムを動作させる仮プロセスがまだ決定されていない場合には、割当PID36は空欄である。
図3に示す最初のレコードを具体的に説明する。この最初のレコードは、管理番号が「T1」のプログラムは絶対パスで「/bin/task1.bin」の位置に格納されており、このプログラムはRAM13に格納済みで、かつエントリポイントは「0x0f0001」であることが示されている。さらに、現在の状態は「ABORTING」で、このプログラムに割り当てたRAM13は「0xf10001」を先頭とする「64kb」の領域であり、プロセスIDが「1234」である仮プロセスに対応することが示されている。
(プロセス状態)
図4は、本実施の形態におけるプロセス状態の遷移を示す図である。管理プログラム4は、実行プログラム5のプロセスをいかのいずれかの状態として管理する。図4に示す状態のうち、薄いハッチングで示すDORMANT、READY、RUNNNIG、WAIT、およびSUSPENDは一般的なプロセス管理における状態であり、これに加えて本実施の形態では、PRE-DORMANT、REGISTERTED、ABORTING、ABORTED、およびEXITINGの状態を追加する。ここでは主に、本実施の形態で追加した状態を説明する。
図4は、本実施の形態におけるプロセス状態の遷移を示す図である。管理プログラム4は、実行プログラム5のプロセスをいかのいずれかの状態として管理する。図4に示す状態のうち、薄いハッチングで示すDORMANT、READY、RUNNNIG、WAIT、およびSUSPENDは一般的なプロセス管理における状態であり、これに加えて本実施の形態では、PRE-DORMANT、REGISTERTED、ABORTING、ABORTED、およびEXITINGの状態を追加する。ここでは主に、本実施の形態で追加した状態を説明する。
PRE-DORMANTは、仮プロセスが作成された際の最初の状態である。PRE-DORMANTの状態からはDORMANTに遷移する。DORMANT状態からは、REGISTERED状態に遷移する。REGISTERED状態は、仮プロセスにおいて管理対象プログラム9を実行する準備が完了した状態である。仮プロセスはREGISTERED状態で待機し、対応する管理対象プログラム9の起動が指示されるとREADY状態に遷移する。また、READY、RUNNNIG、WAIT、およびSUSPENDのいずれかの状態から「_EXIT」のシステムコールによりREGISTERDの状態に戻る。
READY、RUNNNIG、WAIT、およびSUSPENDの各状態についての説明は省略する。READY、RUNNNIG、WAIT、およびSUSPENDの各状態から「_EXIT」のシステムコールによりREGISTERDに遷移し、「_ABORT」のシステムコールによりABORTINGに遷移する。ABORTINGの状態からはABORTEDに遷移する。ABORTEDの状態からはEXITINGおよびREGISTERED状態に遷移する。
(動作の概要)
背後プログラム2は、実行プログラム5のプロセスである仮プロセスを複数作成する。このときの仮プロセスの状態はPRE-DORMANTである。次に背後プログラム2は資源を確保し、管理表3に記載の各バイナリをRAM4に読み込み、各バイナリのエントリポイントを管理表3のエントリポイント33に登録してREGISTERDに遷移させる。背後プログラム2は、イベントの発生に応じて起動処理、終了処理、および生成処理を行う。詳しくは後述する。
背後プログラム2は、実行プログラム5のプロセスである仮プロセスを複数作成する。このときの仮プロセスの状態はPRE-DORMANTである。次に背後プログラム2は資源を確保し、管理表3に記載の各バイナリをRAM4に読み込み、各バイナリのエントリポイントを管理表3のエントリポイント33に登録してREGISTERDに遷移させる。背後プログラム2は、イベントの発生に応じて起動処理、終了処理、および生成処理を行う。詳しくは後述する。
OS8の環境下において管理対象プログラム9が起動される際には、フッカー7によりシステムコール「Fork」の代わりに「_Fork」がミドルウエアである管理プログラム4に伝達される。管理プログラム4は、「_Fork」の対象である管理対象プログラム9に対応する仮プロセスの状態を「REGISTERD」から「READY」に変更して、その仮プロセスにおいてエントリポイントを呼び出すことで「_Fork」の対象である管理対象プログラム9の実行を開始する。
仮プロセスは、管理対象プログラム9の実行を開始すると、管理対象プログラム9用の資源を確保し、さらに管理対象プログラム9がリソースを確保する命令を実行すると、管理プログラム4はこの呼び出しをフックして背後プログラム2が確保したRAM13の領域の一部を割り当てる。この際に背後プログラム2は、割り当てたRAM13のサイズ、およびRAM13の先頭番地を管理表3の資源35に記載する。
仮プロセスが処理を終了する際にシステムコール「EXIT」を出力すると、フッカー7が受信して「_EXIT」を管理プログラム4に出力する。管理プログラム4は、まず「EXIT」を出力した仮プロセスをRTコア11Aから管理コア11Bに移動させ、仮プロセスの状態を「ABORTING」に遷移させる。次に管理プログラム4は、その仮プロセスが使用していた管理対象プログラム9用の資源を開放し、仮プロセスの状態を「ABORTED」に遷移させる。そして管理プログラム4は、OS8に仮プロセスを終了させるシステムコールを出力し、仮プロセスの状態を「EXITING」に遷移させる。なお他のプロセスが仮プロセスを対象にシステムコール「ABORT」を出力した場合にも、上記と同様の処理が行われる。
図5は、背後プログラム2の動作を示すフローチャートである。前述のとおり、背後プログラム2は管理コア11Bにおいて実行される。背後プログラム2は、まずステップS301において背後プログラム2自身をForkして複数の実行プログラム5のプロセス、すなわち仮プロセスを生成し、さらに所定時間後にタイマイベントを発生させるためのタイマを設定する。
ここで1つだけでなく複数のプロセスを生成するのは、管理対象プログラム9が複数存在するだけでなく、管理対象プログラム9が短時間に終了と開始を繰り返した場合に必要となるからである。また、背後プログラム2は前述のとおり管理コア11Bにおいて動作しており、生成した仮プロセスも管理コア11Bにおいて動作している。
続くステップS302では背後プログラム2は、資源確保、すなわちメモリ領域の確保を行う。この資源確保は、OS8へのシステムコールにより実現される。以下では、本ステップで確保したRAM4の領域を「管理領域」とも呼ぶ。
続くステップS303では背後プログラム2は、管理表3を読み込む。続くステップS304では背後プログラム2は、ステップS303において読み込んだ管理表3の各レコードを全て処理したか否かを判断する。背後プログラム2は、全てを処理したと判断する場合はステップS309に進み、未処理のレコードが存在すると判断する場合はステップS305に進む。
ステップS305では背後プログラム2は、ステップS303において読み込んだ管理表3に含まれる未処理のレコードを1つ選択する。続くステップS306では背後プログラム2は、ステップS305において選択したレコードの格納位置32に示されるバイナリをステップS303において確保したメモリ領域に読み込む。続くステップS307では背後プログラム2は、ステップS306においてメモリに読み込んだバイナリのエントリポイントのアドレスを取得して管理表3に記録する。続くステップS308では背後プログラム2は、管理表3の処理対象のレコードにおける状態34を「REGISTERD」に変更する。
ステップS304において肯定判断されると実行されるステップS309では背後プログラム2は、イベントの発生を待機し、発生したイベントに応じてステップS350、S360、およびS370のいずれかに進む。具体的には背後プログラム2は、起動イベントが発生したと判断するとステップS350に進み、終了イベントが発生したと判断するとステップS360に進み、タイマイベントが発生したと判断するとステップS370に進む。ステップS350、S360、およびS370のいずれが終了した場合でも、背後プログラム2は、ステップS309に戻る。以上が図5の説明である。
なお、起動イベントはフッカー7が管理対象プログラム9の起動処理をフックすることで発生する。終了イベントは、後述する図10のステップS343の処理により発生する。タイマイベントは、ステップS301または後述する図8のステップS374において設定したタイマが所定の時間の経過により発生させる。
図6は、図5のステップS350の詳細、すなわち起動処理を示すフローチャートである。ステップS351では背後プログラム2は、起動を指示された管理対象プログラム9に対して、すでに作成していたいずれかの仮プロセスを割り当てる。続くステップS352では背後プログラム2は、ステップS351において割り当てた仮プロセスのプロセスIDを、管理表3の割当PID36に記載する。たとえば起動を指示されたのが「task2.bin」であり、割り当てられた仮プロセスのプロセスIDが「1256」の場合には、図3の例のように管理表3に記載される。
続くステップS353では背後プログラム2は、ステップS351において割り当てた仮プロセスをRTコア11Aに移動させる。続くステップS354では背後プログラム2は、ステップS353においてRTコア11Aに移動させた仮プロセスにエントリポイントからの実行を指示して、図6に示す処理を終了する。
図7は、図5のステップS360の詳細、すなわち終了処理を示すフローチャートである。まずステップS361では背後プログラム2は、終了イベントを示す信号を受信する。この信号には終了させるプログラムを特定する情報、たとえばプログラムの名称またはプロセスIDが含まれる。続くステップS362では背後プログラム2は、管理表3から該当するプログラムのレコードにおける割当PID36の値を削除して図7に示す処理を終了する。
図8は、図5のステップS370の詳細、すなわち生成処理を示すフローチャートである。まずステップS371では背後プログラム2は、生成されている仮プロセスの数を確認する。続くステップS372では背後プログラム2は、ステップS371において確認した仮プロセスの数が所定数、たとえば10以下であるか否かを判断する。背後プログラム2は、仮プロセスの数が所定数以下であると判断する場合はステップS373に進み、仮プロセスの数が所定数よりも多いと判断する場合はステップS374に進む。
ステップS373では背後プログラム2は、仮プロセスを1または複数生成してステップS374に進む。ステップS374では背後プログラム2は、所定時間後にタイマイベントを発生させるためのタイマを設定して、図8に示す処理を終了する。
図9は、図5のステップS301または図8のステップS373において生成される仮プロセスの動作を表すフローチャートである。仮プロセスは、図6のステップS354において背後プログラム2からの指示を受けて動作を開始する。まずステップS323では仮プロセスは、管理表3を参照して自身の仮プロセスが読み込むべきエントリポイントを取得する。具体的には仮プロセスは、管理表3の割当PID36において自身のプロセス番号が記載されているレコードを特定し、そのレコードのエントリポイント33のアドレスを取得する。続くステップS324では仮プロセスは、背後プログラム2があらかじめ取得したメモリ領域であって、そのアプリ用の資産をマッピングする。この処理にはたとえば、Linux(登録商標)のmmapコマンドが利用できる。
続くステップS325では仮プロセスは、管理対象プログラム9の処理を開始する。具体的には仮プロセスは、ステップS323において取得したエントリポイントから処理を開始する。ステップS325において開始した管理対象プログラム9の処理に動的な領域確保の処理が含まれていた場合にはステップS326が実行される。ステップS326では仮プロセスは、OS8からではなく背後プログラム2から動的領域を取得する。仮プロセスは、管理対象プログラム9の全ての処理が完了すると、標準のシステムコールである「EXIT」ではなく、管理プログラム4による処理が行われる「_EXIT」を出力して処理を終了する。
図10は、管理プログラム4がシステムコールである「_EXIT」または「_ABORT」を受信した際の終了処理を示すフローチャートである。S341では管理プログラム4は、「_EXIT」を出力したプロセス、または「_ABORT」の対象となるプロセスを特定し、特定されたそのプロセス(以下では「停止プロセス」と呼ぶ)の資源を開放し、停止プロセスの状態を「REGISTERD」に遷移する。資源の開放とは、図9のS324におけるアプリ用資産、およびステップS326において取得した動的領域である。
続くステップS342では管理プログラム4は、停止プロセスをRTコア11Aから管理コア11Bに移動させる。続くステップS343では管理プログラム4は、終了イベントの発生を背後プログラム2に対して通知し、仮プロセスの状態に「EXITING」フラグを追加して、図10に示す処理を終了する。
なお、ステップS341の処理が完了すれば、停止プロセスが利用していた資源はすでに解放されているため、その資源は他の仮プロセスに割り当てが可能である。そのため、ステップS343の実行後に行われる、OS8による停止プロセスの終了処理を待つことなく新たに管理対象プログラム9のプロセスを開始できる。換言すると、「_EXIT」または「_ABORT」が出されてから同一の管理対象プログラム9のプロセスが開始できるまでの時間が短縮される。
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)演算装置1は、高速に読み書きが可能なメモリであるRAM4と、OS4、複数を同時に起動できない管理対象プログラム9、管理対象プログラム9を実行する背後プログラム2、管理対象プログラム9を管理する管理プログラム4を格納する記憶装置17と、OS8、管理対象プログラム9、背後プログラム2、および管理プログラム4を実行するCPU11とを備える。背後プログラム2は、OS8による1または複数の仮プロセスの生成、および管理対象プログラム9のRAM4への格納を行い、仮プロセスの1つである選択プロセスを選択してRAM4に格納した管理対象プログラム9と紐づける。管理プログラム4は、管理対象プログラム9を起動する指令を受けると新たなプロセスを生成せずに選択プロセスに紐づけた管理対象プログラムを動作させる。そのため、管理対象プログラム9の起動が支持される前に予め仮プロセスを作成してOS8による資源管理が完了しているため、管理対象プログラム9による処理を迅速に開始できる。
(1)演算装置1は、高速に読み書きが可能なメモリであるRAM4と、OS4、複数を同時に起動できない管理対象プログラム9、管理対象プログラム9を実行する背後プログラム2、管理対象プログラム9を管理する管理プログラム4を格納する記憶装置17と、OS8、管理対象プログラム9、背後プログラム2、および管理プログラム4を実行するCPU11とを備える。背後プログラム2は、OS8による1または複数の仮プロセスの生成、および管理対象プログラム9のRAM4への格納を行い、仮プロセスの1つである選択プロセスを選択してRAM4に格納した管理対象プログラム9と紐づける。管理プログラム4は、管理対象プログラム9を起動する指令を受けると新たなプロセスを生成せずに選択プロセスに紐づけた管理対象プログラムを動作させる。そのため、管理対象プログラム9の起動が支持される前に予め仮プロセスを作成してOS8による資源管理が完了しているため、管理対象プログラム9による処理を迅速に開始できる。
(2)背後プログラム2は、RAM4における領域である管理領域を確保する。仮プロセスはさらに、管理対象プログラム9における動的なメモリ確保処理において、管理領域の一部を取得する(図9のS323およびS326)。そのため、OS8とは独立して管理対象プログラム9用のリソースを管理できる。
(3)管理プログラム4は、管理対象プログラム9の終了指令、すなわち「_EXIT」や「_ABORT」に基づき、管理対象プログラム9を動作している選択プロセスから管理領域を回収し(図10のステップS342)、その後にOSに選択プロセスを終了させる。そのため、OSによる選択プロセスの終了が完了しなくても、選択プロセスが利用していた管理対象プログラム9用のリソースを次の仮プロセスが利用できる。
(4)CPU11は複数のコアを備える。CPU11において、管理対象プログラム9の実行はRTコア11Aにおいて実行され、背後プログラム2による仮プロセスの生成処理は管理コア11Bにおいて実行される。そのため、仮プロセスの生成は管理対象プログラム9の実行とは異なる演算コアにおいて実行されるので、仮プロセスの生成が管理対象プログラム9のリアルタイムでの実行に悪影響を及ぼさない。
(変形例1)
上述した第1の実施の形態では、CPU11は複数のコアを備えた。しかしCPU11は1つの演算コアのみを備えてもよい。この場合には、管理対象プログラム9、背後プログラム2、および管理プログラム4が全て同一のコアで動作するため総合に影響を及ぼすことが避けられない。しかしこの場合であっても、本発明を適用することにより管理対象プログラム9が起動される前に事前に仮プロセスを生成しておくことで、少なくともOS8による資源確保の時間を省略できる利点は第1の実施の形態と同様である。また、管理対象プログラム9を実行していた仮プロセスが終了する際に、先に管理対象プログラム9の実行用の資源を開放することで、OS8が仮プロセスを終了させている際に、並行して次の仮プロセスに管理対象プログラム9の実行用の資源を割り当てることができる利点も第1の実施の形態と同様である。
上述した第1の実施の形態では、CPU11は複数のコアを備えた。しかしCPU11は1つの演算コアのみを備えてもよい。この場合には、管理対象プログラム9、背後プログラム2、および管理プログラム4が全て同一のコアで動作するため総合に影響を及ぼすことが避けられない。しかしこの場合であっても、本発明を適用することにより管理対象プログラム9が起動される前に事前に仮プロセスを生成しておくことで、少なくともOS8による資源確保の時間を省略できる利点は第1の実施の形態と同様である。また、管理対象プログラム9を実行していた仮プロセスが終了する際に、先に管理対象プログラム9の実行用の資源を開放することで、OS8が仮プロセスを終了させている際に、並行して次の仮プロセスに管理対象プログラム9の実行用の資源を割り当てることができる利点も第1の実施の形態と同様である。
(変形例2)
上述した第1の実施の形態では、管理対象プログラム9は動的なメモリ確保が必須であるかのように説明した。しかし管理対象プログラム9が動的にメモリを確保することは必須ではない。
上述した第1の実施の形態では、管理対象プログラム9は動的なメモリ確保が必須であるかのように説明した。しかし管理対象プログラム9が動的にメモリを確保することは必須ではない。
(変形例3)
上述した第1の実施の形態では、背後プログラム2と管理プログラム4は異なるプログラムとして説明した。しかし、背後プログラム2と管理プログラム4とが統合して1つのプログラムとして構成されてもよい。また、管理プログラム4はOS8に統合されてもよい。
上述した第1の実施の形態では、背後プログラム2と管理プログラム4は異なるプログラムとして説明した。しかし、背後プログラム2と管理プログラム4とが統合して1つのプログラムとして構成されてもよい。また、管理プログラム4はOS8に統合されてもよい。
(変形例4)
演算装置1は、プロセス一覧の出力機能を有してもよい。図11は演算装置1におけるプロセス状態の表示結果を示す図である。図11に示す例では、プロセス一覧を出力する「PS」コマンドに所定のオプションを追加指定することで、プロセスの状態が右端に出力されており、「REGISTERED」や「ABORTING」などの状態が確認できる。
演算装置1は、プロセス一覧の出力機能を有してもよい。図11は演算装置1におけるプロセス状態の表示結果を示す図である。図11に示す例では、プロセス一覧を出力する「PS」コマンドに所定のオプションを追加指定することで、プロセスの状態が右端に出力されており、「REGISTERED」や「ABORTING」などの状態が確認できる。
―第2の実施の形態―
図12を参照して、演算装置の第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、演算装置に新たな管理対象プログラムが追加される点で、第1の実施の形態と異なる。
図12を参照して、演算装置の第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、演算装置に新たな管理対象プログラムが追加される点で、第1の実施の形態と異なる。
図12は、第2の実施の形態において記憶装置17に格納される情報を示す図である。図12では、追加データPが追加されることが示されている。この追加データPは、通信装置14を介して受信してもよいし、CD-ROMやUSBメモリなどの記憶媒体を介して受け渡されてもよい。
演算装置1Aに追加される追加データPは、追加処理を行うスクリプト41と、新たな管理対象プログラム9である第3プログラム93と、管理プログラム4を差し替える管理プログラム4Aとを含む。スクリプト41は、たとえばシェルスクリプトであり、第3プログラム93および管理プログラム4Aの記憶装置17への配置、および管理表3の更新を行う。管理プログラム4Aは、第1プログラム91および第2プログラム92だけでなく、第3プログラム93にも対応する点が管理プログラム4と異なる。
スクリプト41の処理を具体的に説明する。スクリプト41は、第3プログラム93を記憶装置17の所定の格納位置に保存し、その保存位置の絶対パスを管理表3の新たなレコードの格納位置32に記載する。スクリプト41はたとえば、そのレコードの管理番号31を既存のレコードとの連番となるように設定する。またスクリプト41は、記憶装置17に格納されている管理プログラム4を新たな管理プログラム4Aで上書きする。
背後プログラム2は、管理表3に新たなレコードが追加されると、新たなレコードの格納位置32で示されるバイナリをRAM13に格納し、仮プロセスの1つを第3プログラム93に割り当て、管理コア11BからRTコア11Aに移動させる。これ以降の処理は第1の実施の形態と同様なので説明を省略する。
(第2の実施の形態の変形例1)
上述した第2の実施の形態では、追加データPには管理プログラム4を差し替えるデータである管理プログラム4Aが含まれた。しかし追加データPには管理プログラム4と管理プログラム4Aとの差分情報が含まれ、その差分情報と管理プログラム4とを用いて管理プログラム4Aを作成してもよい。また、追加データPに管理プログラム4Aや第3プログラム93そのものが含まれる代わりに、追加データPに管理プログラム4Aのソースコードや第3プログラム93のソースコードが含まれてもよい。この場合は、演算装置1の内部でコンパイルおよびビルドが行われて、管理プログラム4Aや第3プログラム93が生成される。
上述した第2の実施の形態では、追加データPには管理プログラム4を差し替えるデータである管理プログラム4Aが含まれた。しかし追加データPには管理プログラム4と管理プログラム4Aとの差分情報が含まれ、その差分情報と管理プログラム4とを用いて管理プログラム4Aを作成してもよい。また、追加データPに管理プログラム4Aや第3プログラム93そのものが含まれる代わりに、追加データPに管理プログラム4Aのソースコードや第3プログラム93のソースコードが含まれてもよい。この場合は、演算装置1の内部でコンパイルおよびビルドが行われて、管理プログラム4Aや第3プログラム93が生成される。
(第2の実施の形態の変形例2)
上述した第2の実施の形態では、記憶装置17にすでに管理対象プログラム9が格納されていることを前提としており、記憶装置17には同様に背後プログラム2、実行プログラム5、およびフッカー7が格納されていた。しかし記憶装置17に予め管理対象プログラム9、背後プログラム2、実行プログラム5、およびフッカー7が含まれていることは必須の構成ではなく、追加データPに背後プログラム2、実行プログラム5、およびフッカー7が含まれてもよい。
上述した第2の実施の形態では、記憶装置17にすでに管理対象プログラム9が格納されていることを前提としており、記憶装置17には同様に背後プログラム2、実行プログラム5、およびフッカー7が格納されていた。しかし記憶装置17に予め管理対象プログラム9、背後プログラム2、実行プログラム5、およびフッカー7が含まれていることは必須の構成ではなく、追加データPに背後プログラム2、実行プログラム5、およびフッカー7が含まれてもよい。
すなわちOS8が動作する演算装置1に、管理対象プログラム9、背後プログラム2、管理プログラム4、実行プログラム5、およびフッカー7を含む追加データPを追加して第1の実施の形態を実現してもよい。この場合は、管理対象プログラム9、背後プログラム2、管理プログラム4、実行プログラム5、およびフッカー7は、ソースコードとして追加データPに含まれ、演算装置1の内部でコンパイルおよびビルドが行われて、これらのプログラムが生成されてもよい。
(第2の実施の形態の変形例3)
上述した第2の実施の形態において、追加データPの生成と追加データPの記憶装置17への送信は一連の処理として実行されてもよい。たとえば第3プログラム93のコンパイル処理の延長として、生成された第3プログラム93を含む追加データPが記憶装置17に送信されてもよい。
上述した第2の実施の形態において、追加データPの生成と追加データPの記憶装置17への送信は一連の処理として実行されてもよい。たとえば第3プログラム93のコンパイル処理の延長として、生成された第3プログラム93を含む追加データPが記憶装置17に送信されてもよい。
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、1つの機能ブロック図で表した構成を2以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
1…演算装置
2…背後プログラム
3…管理表
4…管理プログラム
5…実行プログラム
7…フッカー
9…管理対象プログラム
11…制御装置
11A…RTコア
11B…管理コア
14…通信装置
17…記憶装置
91…第1プログラム
92…第2プログラム
2…背後プログラム
3…管理表
4…管理プログラム
5…実行プログラム
7…フッカー
9…管理対象プログラム
11…制御装置
11A…RTコア
11B…管理コア
14…通信装置
17…記憶装置
91…第1プログラム
92…第2プログラム
Claims (6)
- 高速に読み書きが可能なメモリと、
リアルタイム処理に非対応のオペレーティングシステムであるOS、複数を同時に起動できない管理対象プログラム、前記管理対象プログラムを実行する背後プログラム、前記管理対象プログラムを管理する管理プログラムを格納する不揮発性の記憶装置と、
前記OS,前記管理対象プログラム、前記背後プログラム、および前記管理プログラムを実行する中央演算装置とを備え、
前記背後プログラムは、前記OSによる1または複数の仮プロセスの生成、および前記管理対象プログラムの前記メモリへの格納を行い、前記仮プロセスの1つである選択プロセスを選択して前記メモリに格納した前記管理対象プログラムと紐づけ、
前記管理プログラムは、前記管理対象プログラムを起動する指令を受けると新たなプロセスを生成せずに前記選択プロセスに紐づけた前記管理対象プログラムを動作させる、演算装置。 - 請求項1に記載の演算装置において、
前記背後プログラムはさらに、前記メモリにおける領域である管理領域を確保し、
前記選択プロセスはさらに、前記管理領域の一部を取得する、演算装置。 - 請求項2に記載の演算装置において、
前記選択プロセスはさらに、前記管理対象プログラムにおける動的なメモリ確保処理において、前記管理領域の一部を取得する、演算装置。 - 請求項2に記載の演算装置において、
前記管理プログラムは、前記管理対象プログラムの終了指令に基づき、前記管理対象プログラムを動作している前記選択プロセスから前記管理領域を回収し、その後に前記OSに前記選択プロセスを終了させる、演算装置。 - 請求項1に記載の演算装置において、
前記中央演算装置は複数のコアを備え、
前記管理対象プログラムの実行と、前記背後プログラムによる前記仮プロセスの生成処理とは、異なる前記コアにおいて実行される、演算装置。 - 高速に読み書きが可能なメモリと、リアルタイム処理に非対応のオペレーティングシステムであるOS、複数を同時に起動できない管理対象プログラム、前記管理対象プログラムを実行する背後プログラム、前記管理対象プログラムを管理する管理プログラムを格納する不揮発性の記憶装置と、前記OS、前記管理対象プログラム、前記背後プログラム、および前記管理プログラムを実行する中央演算装置とを備える演算装置が実行するプログラムの動作方法であって、
前記背後プログラムが、前記OSによる1または複数の仮プロセスの生成、および前記管理対象プログラムの前記メモリへの格納を行い、前記仮プロセスの1つである選択プロセスを選択して前記メモリに格納した前記管理対象プログラムと紐づけることと、
前記管理プログラムが、前記管理対象プログラムを起動する指令を受けると新たなプロセスを生成せずに前記選択プロセスに紐づけた前記管理対象プログラムを動作させることとを含む、プログラムの動作方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021069512A JP2022164182A (ja) | 2021-04-16 | 2021-04-16 | 演算装置、プログラムの動作方法 |
PCT/JP2022/016279 WO2022220143A1 (ja) | 2021-04-16 | 2022-03-30 | 演算装置、プログラムの動作方法 |
EP22788068.9A EP4325358A1 (en) | 2021-04-16 | 2022-03-30 | Arithmetic device, and method for operating program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021069512A JP2022164182A (ja) | 2021-04-16 | 2021-04-16 | 演算装置、プログラムの動作方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022164182A true JP2022164182A (ja) | 2022-10-27 |
Family
ID=83639665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021069512A Pending JP2022164182A (ja) | 2021-04-16 | 2021-04-16 | 演算装置、プログラムの動作方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4325358A1 (ja) |
JP (1) | JP2022164182A (ja) |
WO (1) | WO2022220143A1 (ja) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06332724A (ja) * | 1993-05-20 | 1994-12-02 | Fuji Facom Corp | オブジェクト指向型システムにおける論理的単位の実装方式、及び実行多重度制御方式、並びに実行優先度制御方式 |
JP2006163983A (ja) | 2004-12-09 | 2006-06-22 | Canon Inc | リアルタイムosシミュレーション方式 |
JP2016001417A (ja) * | 2014-06-12 | 2016-01-07 | 株式会社日立製作所 | 計算機システム |
JP2016091257A (ja) * | 2014-11-04 | 2016-05-23 | 株式会社デンソー | 車両用機器 |
JP7015203B2 (ja) * | 2018-04-11 | 2022-02-02 | 株式会社日立製作所 | アプリの実行方法 |
-
2021
- 2021-04-16 JP JP2021069512A patent/JP2022164182A/ja active Pending
-
2022
- 2022-03-30 EP EP22788068.9A patent/EP4325358A1/en active Pending
- 2022-03-30 WO PCT/JP2022/016279 patent/WO2022220143A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022220143A1 (ja) | 2022-10-20 |
EP4325358A1 (en) | 2024-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3425502A1 (en) | Task scheduling method and device | |
JP5015665B2 (ja) | カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム | |
JP5295228B2 (ja) | 複数のプロセッサを備えるシステム、ならびにその動作方法 | |
JP3653159B2 (ja) | 仮想計算機システム間の仮想計算機移動制御方法 | |
JP5597196B2 (ja) | プロセス内のスケジューラインスタンス | |
JP4345630B2 (ja) | 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム | |
KR102140730B1 (ko) | Gpu 기반의 딥러닝 개발 환경 제공 시스템 및 방법 | |
JPH0754471B2 (ja) | デ−タ処理装置 | |
JP2008186175A (ja) | オペレーティングシステムの起動制御方法及び情報処理装置 | |
JP2009157684A (ja) | 仮想化プログラム、シミュレーション装置、仮想化方法 | |
KR20070090649A (ko) | 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법 | |
CN111666210A (zh) | 一种芯片验证方法及装置 | |
CN115480931A (zh) | 一种核间通信处理方法、装置及计算机系统 | |
CN102047217A (zh) | 重新获取对执行外部执行上下文的处理资源的控制 | |
WO2022220143A1 (ja) | 演算装置、プログラムの動作方法 | |
JP2008269094A (ja) | 情報処理装置、情報処理装置の最適化方法、プログラム | |
JP2015001757A (ja) | 計算機システム及び起動方法 | |
JP3893136B2 (ja) | 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム | |
CN117008984A (zh) | 一种基于多核异构的可执行文件加载系统和芯片 | |
CN110618794B (zh) | 一种SSD固件访问NandFlash的方法和系统 | |
JP2022539956A (ja) | メモリ管理方法及び関連製品 | |
CN109271179B (zh) | 虚拟机应用程序管理方法、装置、设备及可读存储介质 | |
Inam et al. | Mode-change mechanisms support for hierarchical freertos implementation | |
CN118550595B (zh) | 一种Linux系统组织管理RTOS系统的方法及系统 | |
KR102708907B1 (ko) | 외부 예외 핸들링 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240222 |