JP6311330B2 - 情報処理装置、情報処理方法およびプログラム - Google Patents

情報処理装置、情報処理方法およびプログラム Download PDF

Info

Publication number
JP6311330B2
JP6311330B2 JP2014014349A JP2014014349A JP6311330B2 JP 6311330 B2 JP6311330 B2 JP 6311330B2 JP 2014014349 A JP2014014349 A JP 2014014349A JP 2014014349 A JP2014014349 A JP 2014014349A JP 6311330 B2 JP6311330 B2 JP 6311330B2
Authority
JP
Japan
Prior art keywords
storage area
scheduler
stored
preemptive
executed
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
JP2014014349A
Other languages
English (en)
Other versions
JP2015141584A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2014014349A priority Critical patent/JP6311330B2/ja
Publication of JP2015141584A publication Critical patent/JP2015141584A/ja
Application granted granted Critical
Publication of JP6311330B2 publication Critical patent/JP6311330B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Description

本発明は、マルチプロセッサにおけるスケジューリング技術に関する。
一台のコンピュータで同時に複数の処理を実行するマルチタスク処理を実現するマルチプロセッサがある。マルチプロセッサによるマルチタスク処理の実現方法として、OS(Operating System)がCPU(Central Processing Unit)の割り当てを管理するプリエンプティブマルチタスク方式と、OSがCPUを管理しないノンプリエンプティブマルチタスク方式がある。
一般に、マルチプロセッサにより複数の処理を含むアプリケーションプログラムを実行する場合、プリエンプティブマルチタスク方式またはノンプリエンプティブマルチタスク方式のいずれか一方によりアプリケーションプログラムを実行する。つまり、プリエンプティブマルチタスク方式を実現するプリエンプティブスケジューラ、またはノンプリエンプティブマルチタスク方式を実現するノンプリエンプティブスケジューラのいずれか一方を、スケジューラとして動作させている。
このため、係る一般的なマルチタスク方式では、1つのアプリケーションプログラムの中に、プリエンプティブの動作に適した処理とノンプリエンプティブの動作に適した処理とが混在する場合でも、プリエンプティブスケジューラまたはノンプリエンプティブスケジューラのいずれか一方で動作させている。例えば、特許文献1は、マルチプロセッサとノンプリエンプティブOSとで構成されたリアルタイムシステムを開示する。
ここで、プリエンプティブの動作に適した処理とノンプリエンプティブの動作に適した処理とが混在するアプリケーションプログラムを、プリエンプティブスケジューラで動作させることを考える。ノンプリエンプティブの動作に適した処理として、例えば排他処理が含まれるとする。このアプリケーションプログラムがプリエンプティブスケジューラで動作されると、上記排他処理の実行中にプリエンプションが発生しうる。排他処理の実行中にプリエンプションが発生すると、排他時間が長くなると共に、排他解除待ちの他プロセスの待ち時間も長くなるため、ロックネックを引き起こす。
そこで、当該アプリケーションプログラムをノンプリエンプティブスケジューラで動作させることを考える。この場合、プリエンプションが発生しないため、プリエンプティブスケジューラで動作させる場合よりも排他時間を短縮できる。また、排他処理はその実行中にプロセッサのキャッシュを占有することができる。したがって、キャッシュヒット率を向上することができるので、排他時間をさらに短縮することができる。
一方で、このように当該アプリケーションプログラムをノンプリエンプティブスケジューラで動作させる場合、プリエンプティブの動作に適した処理に、自発的にCPUを解放する処理を実行する命令を組み込む等の配慮が必要となる。
特許文献1は、プロセッサの利用効率の低下を抑え、かつリアルタイム処理を迅速に実行することのできるマルチプロセッサによりリアルタイム処理を実行する情報処理装置およびスケジューリング方法を開示する。この情報処理装置では、第一のプロセッサで、リアルタイム性が高くかつ優先順位が高い第一の処理と、リアルタイム性が低くかつ優先順位が低い第二の処理を実行し、第二のプロセッサで、リアルタイム性が低くかつ優先順位が高い第三の処理を実行する。これにより、当該情報処理装置は、第一の処理のリアルタイム性を確保している。
第一の処理、第二の処理、および第三の処理は、それぞれ別々のプロセッサで実行され、また第一のプロセッサで実行するか、第二のプロセッサで実行するかはあらかじめシステムが定めている。
また、特許文献2は、スレッドがプリエンプト化可能なスレッドまたはプリエンプト不可能なスレッドのいずれであるかを示すステップを含むスレッドの実行方法を開示する。
特開2007−193744号公報 特開2004−288162号公報
上述のように、マルチプロセッサでは、一般に、プリエンプティブスケジューラまたはノンプリエンプティブスケジューラのいずれか一方でアプリケーションプログラムを動作させている。例えばプリエンプティブスケジューラで動作させる場合、ノンプリエンプティブの動作に適した排他処理の実行中にプリエンプションが発生し、ロックネックが引き起こされるので、システム全体のスループットが低下するという課題がある。一方、ノンプリエンプティブスケジューラで動作させる場合、プリエンプティブの動作に適した処理に、自発的にCPUを解放する処理を実行する命令を組み込む等が必要になるという課題がある。
特許文献1に開示されるスケジュール方法は、リアルタイム性の高い処理とリアルタイム性の低い処理が混合しているようなプロセスには、有効ではない。また、第一の処理においても優先順位に差がある場合には、優先順位の低い方のプロセスは割り込まれる可能性があり、完全にノンプリエンプティブで動作するわけではなく、リアルタイム性は保証できない。
特許文献2には、プリエンプティブの動作に適した処理とノンプリエンプティブの動作に適した処理とが混在するアプリケーションプログラムを、ロックネックを引き起こすことなく実行する技術は開示されていない。
本願発明は、上記課題を鑑みてなされたものであり、実行するプロセスに特定の命令の組み込みを要することなく、スループットを向上させることができる情報処理装置等を提供することを主要な目的とする。
本発明の第1の情報処理装置は、第1の方式によって実行中のプロセスから第2の方式への切り替え指示を受けた場合には当該プロセスを前記第2の方式に関連付けられる第2の格納領域に格納し、前記第2の方式によって実行中のプロセスから前記第1の方式への切り替え指示を受けた場合には当該プロセスを前記第1の方式に関連付けられる第1の格納領域に格納する方式切替手段と、前記第2の方式への切り替え指示を行ったプロセスを中断すると共に、前記第1の格納領域に格納されるプロセスを前記第1の方式によってスケジューリングする第1のスケジューラと、前記第1の方式への切り替え指示を行ったプロセスを中断すると共に、前記第2の格納領域に格納されるプロセスを前記第2の方式によってスケジューリングする第2のスケジューラとを備える。
本発明の第1の情報処理方法は、コンピュータによって、第1の方式によって実行中のプロセスから第2の方式への切り替え指示を受けた場合には当該プロセスを前記第2の方式に関連付けられる第2の格納領域に格納し、前記第2の方式によって実行中のプロセスから前記第1の方式への切り替え指示を受けた場合には当該プロセスを前記第1の方式に関連付けられる第1の格納領域に格納し、前記第2の方式への切り替え指示を行ったプロセスを中断すると共に、前記第1の格納領域に格納されるプロセスを前記第1の方式によってスケジューリングし、前記第1の方式への切り替え指示を行ったプロセスを中断すると共に、前記第2の格納領域に格納されるプロセスを前記第2の方式によってスケジューリングする。
なお同目的は、上記の各構成を有する情報処理装置または情報処理方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
本願発明によれば、実行するプロセスに特定の命令の組み込みを要することなく、スループットを向上させることができるという効果が得られる。
本発明の第1の実施形態に係る情報処理装置の構成の概要を示す図である。 本発明の第1の実施形態に係る情報処理装置が備えるプロセス開始部の動作を説明するフローチャートである。 本発明の第1の実施形態に係る情報処理装置が備えるプリエンプションキューにおけるエントリに設定される情報の一例を示す図である。 本発明の第1の実施形態に係る情報処理装置が備えるノンプリエンプションキューにおけるエントリに設定される情報の一例を示す図である。 本発明の第1の実施形態に係る情報処理装置が備えるプロセス管理テーブルの一例を示す図である。 本発明の第1の実施形態に係る情報処理装置が備えるノンプリエンプション設定部の動作を説明するフローチャートである。 本発明の第1の実施形態に係る情報処理装置が備えるプリエンプション設定部の動作を説明するフローチャートである。 本発明の第1の実施形態に係る情報処理装置が備えるプロセス再開部の動作を説明するフローチャートである。 本発明の第1の実施形態に係る情報処理装置が備えるプリエンプティブスケジュール部の動作を説明するフローチャートである。 本発明の第1の実施形態に係る情報処理装置が備えるCPUリソース管理情報格納領域に格納されるCPUリソース管理情報の一例を示す図である。 本発明の第1の実施形態に係る情報処理装置が備えるノンプリエンプティブスケジュール部に含まれるCPUリソース調整プロセスの動作を示すフローチャートである。 本発明の第1の実施形態に係る情報処理装置が備えるノンプリエンプションキューの一例を示す図である。 本発明の第1の実施形態に係る情報処理装置が備えるCPUリソース管理情報格納領域に格納されるCPUリソース管理情報の一例を示す図である。 本発明の第1の実施形態に係る情報処理装置が備えるノンプリエンプティブスケジュール部に含まれるディスパッチプロセスの動作を示すフローチャートである。 本発明の第2の実施形態に係る情報処理装置の構成の概要を示す図である。 本発明の各実施形態に係る情報処理装置のハードウエア構成を例示する図である。
以下、本発明の実施形態について図面を参照して詳細に説明する。
第1の実施形態
図1は、本発明の第1の実施形態に係る情報処理装置100の構成を示すブロック図である。図1に示すように、情報処理装置100は、プロセス開始部101、ノンプリエンプション設定部102、プリエンプション設定部103、プロセス再開部104、プロセススケジューラ105、プロセス管理テーブル格納領域106、プリエンプションキュー110、プリエンプティブスケジューラ120、ノンプリエンプションキュー130、ノンプリエンプティブスケジューラ140、CPUリソース管理情報格納領域150、OS210、CPU220を備える。
情報処理装置100では、OS210が全体的な動作の制御や、アプリケーションプログラムの実行管理等を行う。情報処理装置100は、複数の処理にCPU220を割り当てることにより同時に実行するマルチタスク処理を実現する。
情報処理装置100は、所定の業務を実現する1または複数のアプリケーションプログラム(以降、単に「プログラム」と称する)を実行する。ここで、プログラムを実行するための1または複数のプロセスの集まりで、情報処理装置100におけるCPUリソースを配分する単位を、「プロセスグループ」と称する。
プロセスグループには、実行の際にプリエンプティブの動作に適したプロセスと、ノンプリエンプティブの動作に適したプロセスとが混在する場合がある。本実施形態に係る情報処理装置100では、このようなプリエンプティブの動作に適したプロセスとノンプリエンプティブの動作に適したプロセスとが混在するプロセスグループ(プログラム)を実行することを説明する。
情報処理装置100の各構成要素の動作の概要について説明する。
プロセス開始部101は、プログラムの実行を指示するコマンドを受けると、当該プログラムに含まれる各プロセスを動作させるスケジューラに対応付けられたキュー(プリエンプションキュー110またはノンプリエンプションキュー130)に、各プロセスをキューイングする。
プリエンプションキュー110は、プリエンプティブで動作中のプロセスで、かつ、実行可能状態のプロセスがキューイングされる格納領域である。キューイングの順番は、FIFO(First In First Out)であっても、優先順位順であってもよい。
ノンプリエンプションキュー130は、ノンプリエンプティブで動作中のプロセスで、かつ、実行可能状態のプロセスがキューイングされる格納領域である。
プリエンプティブスケジューラ120は、プリエンプティブスケジュール部121を備え、プリエンプションキュー110に格納されるプロセスを、プリエンプティブで動作するようにスケジューリングする。
ノンプリエンプティブスケジューラ140は、ノンプリエンプティブスケジュール部141を備え、ノンプリエンプションキュー130に格納されるプロセスを、ノンプリエンプティブで動作するようにスケジューリングする。
ノンプリエンプション設定部102は、プリエンプティブで動作中のプロセスまたはOS210から、ノンプリエンプション設定要求を受けると、当該要求したプロセスをノンプリエンプションキュー130にキューイングする。
プリエンプション設定部103は、ノンプリエンプティブで動作中のプロセスまたはOS210から、プリエンプション設定要求を受けると、当該要求したプロセスをプリエンプションキュー110にキューイングする。
プロセススケジューラ105は、各プロセスの実行状態を管理する。例えば、プロセススケジューラ105は、実行中のプロセスがファイルの入出力状態に移行したこと等を検出すると共に、当該プロセスの実行状態に関する情報をプロセス管理テーブルに格納する(詳細は後述する)。
プロセス再開部104は、プロセススケジューラ105からの呼び出しに応じて、実行待ち等により中断されていたプロセスの再開を管理する。
CPUリソース管理情報格納領域150は、CPUリソース管理情報の格納領域である(詳細は後述する)。
次に、情報処理装置100の各構成要素の動作の詳細について説明する。
情報処理装置100は、プログラムの実行を指示するコマンドに応じて当該プログラムの実行を開始する。コマンドには、開始するプログラムを構成する1または複数のプロセスについて、プロセス番号、プロセスグループ番号、各プロセスを動作させるスケジューラの種類(プリエンプティブスケジューラ120またはノンプリエンプティブスケジューラ140)等が含まれる。ここで、各プロセスは、一連の動作を行う1または複数の処理(命令群)、例えば排他処理を含む。
図2は、プロセス開始部101の動作を説明するフローチャートである。図2に示すように、プロセス開始部101は、動作させるスケジューラの種類に応じて、プロセスをキューイングする(ステップST301)。
すなわち、プリエンプティブスケジューラで動作させる(プリエンプションが指定される)、プロセス開始部101は、プリエンプションキュー110における未使用エントリに、開始するプロセスに関するプロセス番号、プロセスグループ番号を設定すると共に、使用エントリにそのプロセスをキューイングする(ステップST302)。キューイングする領域は、エントリの最後尾でもよいし、プロセスが優先順位順に実行される順となる領域でもよい。
図3は、プリエンプションキュー110における各エントリに設定される情報の一例を示す図である。図3に示すように、プリエンプションキュー110の各エントリには、プロセス番号、プロセスグループ番号が設定される。
一方、ノンプリエンプティブスケジューラで動作させる(ノンプリエンプションが指定される)場合、プロセス開始部101は、開始するプロセスに含まれる予測処理時間を取得する(ステップST303)。プロセス開始部101は、ノンプリエンプションキュー130における未使用エントリに、開始するプロセスに関するプロセス番号、プロセスグループ番号、予測処理時間を設定すると共に、使用エントリの最後尾にそのプロセスをキューイングする(ステップST304)。
図4は、ノンプリエンプションキュー130における各エントリに設定される情報の一例を示す図である。図4に示すように、ノンプリエンプションキュー130の各エントリには、プロセス番号、プロセスグループ番号および予測処理時間が設定される。
そして、プロセス開始部101は、各プロセスに関する情報をプロセス管理テーブル格納領域106に格納されるプロセス管理テーブルに書き込む。図5は、プロセス管理テーブルの一例を示す図である。図5に示すように、プロセス管理テーブルは、例えばプロセス番号、スケジューラの種類および実行状態を含む。スケジューラの種類は、そのプロセスがプリエンプティブスケジューラで動作するかノンプリエンプティブスケジューラで動作するかを示す情報を含む。実行状態は、実行中、中断、終了等、そのプロセスの実行状態を示す情報を含む。
プリエンプティブスケジューラ120は、プリエンプションキュー110にキューイングされたプロセスに、自スケジューラが割り当て可能なCPUをプリエンプティブで割り当てる(詳細は後述する)。プロセスは、割り当てられたCPUにより実行される。CPUの割り当て方法は、本実施形態では、プロセスグループに対してCPUリソースを配分する方法を説明するが、FIFO方法であっても、優先順位が高いプロセスから実行する方法であっても、タイムシェアリングで実行する方法であってもよい。
同様に、ノンプリエンプティブスケジューラ140は、ノンプリエンプションキュー130にキューイングされたプロセスに、自スケジューラが割り当て可能なCPUをノンプリエンプティブで割り当る(詳細は後述する)。プロセスは、割り当てられたCPUにより実行される。CPUの割り当て方法は、本実施形態では、プロセスグループに対してCPUリソースを配分する方法について説明するが、FIFO方法であっても、優先順位が高いプロセスから実行する方法であってもよい。
次に、例えばプリエンプティブで実行中のプロセス番号1Aであるプロセス(以降、「プロセス1A」と称する)に、ノンプリエンプティブの動作に適した処理(例えば排他処理)が含まれていた場合の動作について説明する。この場合、プロセス1Aからノンプリエンプション設定要求が生じる。
ここで、OS210は、方式をプリエンプションからノンプリエンプションに切り替えるシステムコール(関数)、およびノンプリエンプションからプリエンプションに切り替えるシステムコールを予め備え、必要なタイミングで該当システムコールが呼び出されることにより方式を切り替える。システムコールを呼び出す命令は、プロセスを構成するプログラムコードに記述されていてもよい。
図6は、ノンプリエンプション設定部102の動作を示すフローチャートである。上述のようにノンプリエンプション設定要求が生じると、ノンプリエンプション設定部102は、ノンプリエンプション設定要求をしたプロセス1Aから、ノンプリエンプションの処理にかかる時間(予測処理時間)を取得する(ステップST310)。
ノンプリエンプション設定部102は、ノンプリエンプションキュー130の未使用エントリに、ノンプリエンプション設定要求をしたプロセス1Aのプロセス番号、プロセスグループ番号、および取得した予測処理時間を設定すると共に、使用エントリの最後尾にプロセス1Aをキューイングする(ステップST311)。
そして、ノンプリエンプション設定部102は、プロセス1Aの実行の中断を、当該プロセス1AにCPUを割り当てているプリエンプティブスケジューラ120に通知する(ステップST312)。当該通知に応じて、プリエンプティブスケジューラ120はプロセス1Aの実行を中断する。
ここで、プロセスが実行または中断等されると、プロセススケジューラ105はそれを検出すると共に、プロセスの実行状態等をプロセス管理テーブルに書き込む。ここでは、例えば、図5に示すように、プロセススケジューラ105は、プリエンプションで実行中のプロセス1Aがノンプリエンプションで実行中になったことを書き込む。
なお、ノンプリエンプション設定部102は、プロセスに明示的に記述される設定要求に応じて動作してもよいし、排他処理に含まれるロック命令の実行を契機に動作してもよい。
次に、ノンプリエンプティブで実行中のプロセス番号2Aであるプロセス(以降、「プロセス2A」と称する)に、プリエンプティブの動作に適した処理が含まれていた場合について説明する。この場合、プロセス2Aからプリエンプション設定要求が生じる。
図7は、プリエンプション設定部103の動作を示すフローチャートである。プリエンプション設定要求が生じると、プリエンプション設定部103は、プリエンプションキュー110の未使用エントリに、プリエンプション設定要求をしたプロセス2Aに関するプロセス番号、プロセスグループ番号を設定すると共に、プロセス2Aを使用エントリにキューイングする(ステップST320)。キューイングする領域は、エントリの最後尾でもよいし、プロセスが優先順位順に実行される順となる領域でもよい。
そして、プリエンプション設定部103は、プロセス2Aの実行の中断を、当該プロセス2AにCPUを割り当てているノンプリエンプティブスケジューラ140に通知する(ステップST321)。当該通知に応じて、ノンプリエンプティブスケジューラ140はプロセス2Aの実行を中断する。
上述のように、プロセスが実行または中断等されると、プロセススケジューラ105はそれを検出すると共に、プロセスの実行状態等をプロセス管理テーブルに書き込む。
なお、プリエンプション設定部103は、プロセスに明示的に記述される設定要求に応じて動作してもよいし、排他処理に含まれるアンロック命令の実行を契機に動作してもよい。
このように、実行中のプロセスに、当該プロセスを動作させるスケジューラとは異なるスケジューラでの動作に適した処理が含まれると、ノンプリエンプション設定部102またはプリエンプション設定部103が動作する。そして、ノンプリエンプション設定部102またはプリエンプション設定部103は、当該プロセスを、それぞれノンプリエンプションキュー130またはプリエンプションキュー110にキューイングすると共に、当該プロセスを中断する。
図8は、プロセス再開部104の動作を示すフローチャートである。プロセススケジューラ105は、ファイルの入出力が完了した場合など、プロセスが中断から実行状態へ遷移する場合、それを検出すると共にプロセス再開部104を呼び出す。
プロセス再開部104は、プロセススケジューラ105からの呼び出しに応じてプロセス管理テーブルを参照し、当該プロセスが中断された際に動作させていたスケジューラの種類に応じて、プロセスをキューイングする(ステップST330)。すなわち、プロセス管理テーブルに格納される実行方式がプリエンプションである場合、プロセス再開部104は、プリエンプションキュー110の未使用エントリに当該プロセスに関するプロセス番号、プロセスグループ番号を設定すると共に、使用エントリにキューイングする(ステップST331)。キューイングする領域は、エントリの最後尾でもよいし、プロセスが優先順位順に実行される順となる領域でもよい。
一方、プロセス管理テーブルに格納される実行方式がノンプリエンプションである場合、プロセス再開部104は、当該プロセスに関してノンプリエンプション設定部102が取得した予測処理時間から、プロセス再開までにCPUを消費した時間を減算する(ステップST332)。
プロセス再開部104は、ノンプリエンプションキュー130の未使用エントリに、再開するプロセスのプロセス番号、プロセスグループ番号、および予測処理時間を設定すると共に、使用エントリの最後尾にキューイングする(ステップST333)。
図9は、プリエンプティブスケジュール部121の動作を示すフローチャートである。図9を参照して、プリエンプティブスケジュール部121の動作について説明する。プリエンプティブスケジュール部121は、OS210実行中常に動作しており、プリエンプションキュー110にキューイングされたプロセスにCPUリソースを割り当てる。CPUリソースの割り当てに際して、プリエンプティブスケジュール部121は、各プロセスグループに予め設定された、CPUリソースに対する目標実行比率で各プロセスグループが実行されるように、各プロセスにCPUを割り当てる。
プリエンプティブスケジュール部121は、まず、CPUリソース管理情報格納領域150から、プリエンプションのスケジューリング配分率を取得する(ステップST340)。
図10は、CPUリソース管理情報格納領域150に格納されるCPUリソース管理情報を示す図である。図10に示すように、CPUリソース管理情報は、ユーザが設定した、CPUリソースを配分するプロセスグループ毎の、CPUの目標実行比率と、ノンプリエンプションまたはプリエンプションのスケジューリング配分率とを含む。プリエンプティブスケジュール部121は、プロセスグループ1、プロセスグループ2、プロセスグループ3のプリエンプションのスケジューリング配分率として、それぞれ40%、20%、40%を取得する。
プリエンプティブスケジュール部121は、ステップST340を実行してから次にステップST340を実行するまでの所定時間(以降、「シェアインターバル」と称する)内での各プロセスグループに関するCPU使用率を算出する。プリエンプティブスケジュール部121は、算出したCPU使用率が、上記取得したスケジューリング配分率に比べて最も小さいプロセスグループに含まれるプロセスを、プリエンプションキュー110からデキューする(ステップST341)。
例えば、プロセスグループ1、プロセスグループ2、プロセスグループ3のCPU使用率が、それぞれ37%、20%、38%であった場合、プロセスグループ1が、上記取得したスケジューリング配分率に比べて最も小さいプロセスグループである。プリエンプティブスケジュール部121は、プロセスグループ1に含まれる、例えばプロセス番号1Fであるプロセス(以降、「プロセス1F」と称する)を、プリエンプションキュー110からデキューする。
プリエンプティブスケジュール部121は、ステップST341においてデキューしたプロセス(本実施形態では、プロセス番号1F)に、一定時間CPUを割り当てる(ステップST342)。割り当てられたCPUにてプロセス1Fが実行される。
プロセス1Fの実行が、上記一定時間の最後まで実施された場合、すなわちプロセス1Fの実行は中断も終了もしなかった場合(ステップST343においてNO)、プリエンプティブスケジュール部121は、CPUを割り当てたプロセス1Fを再びプリエンプションキュー110にエンキューする(ステップST344)。ここで、プロセスの実行の中断とは、ノンプリエンプション設定部102が動作した場合、すなわち当該プロセスからノンプリエンプティブ設定要求が生じた場合や、プロセスがファイル入出力などで待ち状態に遷移した場合を意味する。そして、ステップST340の実行からシェアインターバルの時間が経過している場合(ステップST345においてYES)、プリエンプティブスケジュール部121は、処理をステップST340に戻す。
一方、上記一定時間の最後まで実施されなかった場合、すなわちプロセス1Fの実行が中断または終了した場合(ステップST343においてYES)、かつステップST340の実行からシェアインターバルの時間が経過している場合(ステップST345においてYES)、プリエンプティブスケジュール部121は、処理をステップST340に戻す。一方、ステップST340の実行からシェアインターバルの時間が経過していない場合(ステップST343においてNO)、プリエンプティブスケジュール部121は、処理をステップST341に戻す。以上の動作により、プリエンプティブスケジューラ120は、プリエンプションのプロセスにCPUを割り当てる。
なお、プリエンプティブスケジューラ120がプロセスを割り当て可能なCPUが2台以上存在する場合、上記プリエンプティブスケジュール部121をCPU毎に実行させればよい。
図11は、ノンプリエンプティブスケジュール部141に含まれるCPUリソース調整プロセス141aの動作を示すフローチャートである。ここで、ノンプリエンプティブスケジュール部141は、CPUリソース調整プロセス141aとディスパッチプロセス141bとから構成される。CPUリソース調整プロセス141aは、OS210実行中常に動作しており、CPUリソースの管理のための監視プロセスである。図11を参照して、CPUリソース調整プロセス141aの動作について説明する。
CPUリソース調整プロセス141aは、CPUリソース管理情報(図10)から、目標実行比率を取得する(ステップST350)。CPUリソース調整プロセス141aは、プロセスグループ1、プロセスグループ2、プロセスグループ3の目標実行比率として、それぞれ40%、20%、40%を取得する。
CPUリソース調整プロセス141aは、ノンプリエンプションキュー130に格納されるプロセスグループ番号および予測処理時間をもとに、目標実行比率に近づくようにノンプリエンプションキュー130を入れ替える(ステップST351)。図12は、図4に示したノンプリエンプションキュー130を、CPUリソースが目標実行比率に近づくように入れ替えた後の状態を示す図である。例えば、図4においてプロセスグループ番号3に含まれるプロセスは後方にキューイングされているが、キュー入れ替え後の図12では、プロセスグループ番号3のプロセスは前方に移されている。
CPUリソース調整プロセス141aは、ノンプリエンプションキュー130が目標実行比率に近づくまでの時間(以降、この時間を「調整インターバル」と称する)と、調整インターバルにおけるCPU配分比率を計算する(ステップST352)。
図12に示す例では、ノンプリエンプションキュー130の1番目から5番目までを実行したときのプロセスグループ1、プロセスグループ2、プロセスグループ3の予測処理時間は、それぞれ22(ms:ミリ秒)、10(ms)、22(ms)である。このときのCPU配分比率は、それぞれ41%、18%、41%であり、最も目標実行比率に近い。このときの調整インターバルは、54(=22+10+22)(ms)である。
続いてCPUリソース調整プロセス141aは、ステップST352において計算したCPU配分比率をもとに、情報処理装置100全体のCPU使用率が目標実行比率となるように、プリエンプティブスケジューラ120のスケジューリング配分率を計算する(ステップST353)。
本実施形態では、プロセスグループ1、プロセスグループ2、プロセスグループ3に関するノンプリエンプティブスケジューラ140のCPU配分比率は、ステップST352にて計算したように、それぞれ41%、18%、41%である。また本実施形態では、ノンプリエンプティブスケジューラ140により実行するCPUが1台(CPU11)、プリエンプティブスケジューラ120により実行するCPUが10台(CPU1乃至10)である。
したがって、プロセスグループ1、プロセスグループ2、プロセスグループ3のプリエンプティブスケジューラ120のCPU配分比率は、それぞれ39.9%(=40−(1/10))、20.2%(=20+(2/10))、39.9%(=40−(1/10))となる。
CPUリソース調整プロセス141aは、ステップST352において計算されたノンプリエンプティブスケジューラ140のCPU配分比率、およびステップST353において計算されたプリエンプティブスケジューラ120のCPU配分比率を、CPUリソース管理情報格納領域150に設定する(ステップST354)。
本実施形態では、図13に示すように、プロセスグループ1、プロセスグループ2、プロセスグループ3に関するノンプリエンプションのスケジューリング配分率に、それぞれ41%、18%、41%が設定され、プリエンプションのスケジューリング配分率に、それぞれ39.9%、20.2%、39.9%が設定される。
CPUリソース調整プロセス141aは、ステップST352において計算した調整インターバル(本実施形態では、調整インターバルは54(ms))の経過後に、処理をステップST350に戻す(ステップST355)。以上の動作により、CPUリソース調整プロセス141aは、CPUリソースの管理を行う。
図14は、ノンプリエンプティブスケジュール部141に含まれるディスパッチプロセス141bの動作を示すフローチャートである。図14を参照して、ノンプリエンプティブスケジュール部141の動作について説明する。ディスパッチプロセス141bは、OS210実行中常に動作しており、ノンプリエンプディブで動作するプロセスを実行する。
ディスパッチプロセス141bは、ノンプリエンプティブキュー130に格納される先頭プロセスをデキューする(ステップST360)。続いてディスパッチプロセス141bは、デキューしたプロセスにCPUを割り当てる(ステップST361)。割り当てられたCPUにてプロセスが実行される。実行が中断または終了したら、ディスパッチプロセス141bは、処理をステップST360に戻す。なお、プロセスの実行の中断とは、プリエンプション設定部103が動作した場合、すなわち当該プロセスからプリエンプティブ設定要求が生じた場合や、プロセスがファイル入出力などで待ち状態に遷移した場合を意味する。
本実施形態では、ノンプリエンプティブスケジューラ140がプロセスを割り当て可能なCPUは1台(CPU11)であるが、2台以上存在してもよい。この場合、上記ノンプリエンプティブスケジュール部141をCPU毎に実行させればよい。
また、CPUの負荷状況に応じて、プリエンプティブスケジューラ120がプロセスを割り当て可能なCPUを、ノンプリエンプティブスケジューラ140がプロセスを割り当て可能なCPUに変更してもよい。あるいは、ノンプリエンプティブスケジューラ140がプロセスを割り当て可能なCPUを、プリエンプティブスケジューラ120がプロセスを割り当て可能なCPUに変更してもよい。この場合、変更後のCPU構成にあわせて、プリエンプティブスケジューラ120およびノンプリエンプティブスケジューラ140を、CPU毎に実行させればよい。
以上のように、本実施形態によれば、実行中のプロセスから、ノンプリエンプティブスケジューラ140とプリエンプティブスケジューラ120の切り替えを指示することができる。すなわち、プリエンプティブで動作するプロセスから、ノンプリエンプティブの動作に適した排他処理等をノンプリエンプティブで動作させることができる。
上記構成を採用することにより、本実施形態によれば、実行するプロセスにCPUを解放する処理を組み込むことなく、排他処理にかかる時間および排他解除待ちの時間が短縮されるので、ロックネックを防止できると共に、全体のスループットを向上することができるという効果が得られる。
また、排他処理中にプリエンプションが発生しないため、排他処理はその実行中にプロセッサのキャッシュを占有することができるので、キャッシュのヒット率が向上し、さらに排他時間を短縮することができるという効果が得られる。
第2の実施形態
図15は、第2の実施形態に係る情報処理装置400の構成を示すブロック図である。図15に示すように、情報処理装置400は、方式切替部401、第1のスケジューラ402および第2のスケジューラ403を備える。
方式切替部401は、第1の方式によって実行中のプロセスから第2の方式への切り替え指示を受けた場合には当該プロセスを前記第2の方式に関連付けられる第2の格納領域に格納し、前記第2の方式によって実行中のプロセスから前記第1の方式への切り替え指示を受けた場合には当該プロセスを前記第1の方式に関連付けられる第1の格納領域に格納する。
第1のスケジューラ402は、前記第2の方式への切り替え指示を行ったプロセスを中断すると共に、前記第1の格納領域に格納されるプロセスを前記第1の方式によってスケジューリングする。
第2のスケジューラ403は、前記第1の方式への切り替え指示を行ったプロセスを中断すると共に、前記第2の格納領域に格納されるプロセスを前記第2の方式によってスケジューリングする。
上記構成を採用することにより、本第2の実施形態によれば、実行するプロセスに特定の命令の組み込みを要することなく、スループットを向上させることができるという効果が得られる。
なお、図1、図15に示した情報処理装置100、400の各部は、図16に例示するハードウエア資源において実現される。すなわち、図16に示す構成は、CPU20、RAM(Random Access Memory)21、ROM(Read Only Memory)22、外部接続インタフェース23および記憶媒体24を備える。CPU20は、ROM22または記憶媒体24に記憶された各種ソフトウエア・プログラム(コンピュータ・プログラム)を、RAM21に読み出して実行することにより、情報処理装置100、400の全体的な動作を司る。すなわち、上記各実施形態において、CPU20は、ROM22または記憶媒体24を適宜参照しながら、情報処理装置100、400が備える各機能(各部)を実行するソフトウエア・プログラムを実行する。
また、上述した各実施形態では、図1、図15に示した情報処理装置100、400における各ブロックに示す機能を、図16に示すCPU20が実行する一例として、ソフトウエア・プログラムによって実現する場合について説明した。しかしながら、図1、図15に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
また、各実施形態を例に説明した本発明は、情報処理装置100、400に対して、上記説明した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、CPU20がRAM21に読み出して実行することによって達成される。
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ(一時記憶媒体)またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
本発明は、例えば、同時に複数の処理をこなすマルチタスク処理を実現するマルチプロセッサシステムの分野に適用できる。
20 CPU
21 RAM
22 ROM
23 外部接続インタフェース
24 記憶媒体
100、400 情報処理装置
101 プロセス開始部
102 ノンプリエンプション設定部
103 プリエンプション設定部
104 プロセス再開部
105 プロセススケジューラ
106 プロセス管理テーブル格納領域
110 プリエンプションキュー
120 プリエンプティブスケジューラ
121 プリエンプティブスケジュール部
130 ノンプリエンプションキュー
140 ノンプリエンプティブスケジューラ
141 ノンプリエンプティブスケジュール部
150 CPUリソース管理情報格納領域
210 OS
220 CPU
401 方式切替部
402 第1のスケジューラ
403 第2のスケジューラ

Claims (7)

  1. 第1の方式によって実行中のプロセスから第2の方式への切り替え指示を受けた場合には当該プロセスを前記第2の方式に関連付けられる第2の格納領域に格納し、前記第2の方式によって実行中のプロセスから前記第1の方式への切り替え指示を受けた場合には当該プロセスを前記第1の方式に関連付けられる第1の格納領域に格納する方式切替手段と、
    前記第2の方式への切り替え指示を行ったプロセスを中断すると共に、前記第1の格納領域に格納されるプロセスを前記第1の方式によってスケジューリングする第1のスケジューラと、
    前記第1の方式への切り替え指示を行ったプロセスを中断すると共に、前記第2の格納領域に格納されるプロセスを前記第2の方式によってスケジューリングする第2のスケジューラと
    を備え、
    前記第2のスケジューラは、1または複数のプロセスを含むプロセスグループに対して定められた目標プロセッサ配分率に従って各プロセスグループが実行されるように、前記第2の格納領域に格納されるプロセスを入れ替える
    情報処理装置。
  2. 前記第2のスケジューラは、前記入れ替え後のプロセスにプロセッサが割り当てられた場合の前記プロセスグループに関するプロセッサ使用率に基づいて、前記第1の方式によってスケジューリングされるプロセスを含む、前記プロセスグループに割り当てるプロセッサの割合を計算し、
    前記第1のスケジューラは、前記第1の方式によってスケジューリングしたプロセスを含む前記プロセスグループのプロセッサ使用率が、前記第2のスケジューラが計算したプロセッサの割合と比較して、最も低いプロセスグループに含まれるプロセスに、プロセッサを割り当てる
    請求項記載の情報処理装置。
  3. 前記第1のスケジューラまたは前記第2のスケジューラにより中断されたプロセスが実行可能となったことに応じて、当該プロセスを、それぞれ前記第1の格納領域または前記第2の格納領域に格納する再開手段
    をさらに備えた請求項1または2記載の情報処理装置。
  4. 前記第1のスケジューラが前記プロセスを割り当て可能な第1のプロセッサと、
    前記第2のスケジューラが前記プロセスを割り当て可能な第2のプロセッサと
    をさらに備えた請求項1ないしのいずれか1項記載の情報処理装置。
  5. 前記第1の方式はプリエンプティブ方式であり、前記第2の方式はノンプリエンプティブ方式である
    請求項1ないしのいずれか1項記載の情報処理装置。
  6. コンピュータによって、
    第1の方式によって実行中のプロセスから第2の方式への切り替え指示を受けた場合には当該プロセスを前記第2の方式に関連付けられる第2の格納領域に格納し、
    前記第2の方式によって実行中のプロセスから前記第1の方式への切り替え指示を受けた場合には当該プロセスを前記第1の方式に関連付けられる第1の格納領域に格納し、
    前記第2の方式への切り替え指示を行ったプロセスを中断すると共に、前記第1の格納領域に格納されるプロセスを前記第1の方式によってスケジューリングし、
    前記第1の方式への切り替え指示を行ったプロセスを中断すると共に、前記第2の格納領域に格納されるプロセスを前記第2の方式によってスケジューリングし、
    前記第2の格納領域に格納されるプロセスを前記第2の方式によってスケジューリングするにあたり、1または複数のプロセスを含むプロセスグループに対して定められた目標プロセッサ配分率に従って各プロセスグループが実行されるように、前記第2の格納領域に格納されるプロセスを入れ替える
    情報処理方法。
  7. 第1の方式によって実行中のプロセスから第2の方式への切り替え指示を受けた場合には当該プロセスを前記第2の方式に関連付けられる第2の格納領域に格納し、前記第2の方式によって実行中のプロセスから前記第1の方式への切り替え指示を受けた場合には当該プロセスを前記第1の方式に関連付けられる第1の格納領域に格納する処理と、
    前記第2の方式への切り替え指示を行ったプロセスを中断すると共に、前記第1の格納領域に格納されるプロセスを前記第1の方式によってスケジューリングする処理と、
    前記第1の方式への切り替え指示を行ったプロセスを中断すると共に、前記第2の格納領域に格納されるプロセスを前記第2の方式によってスケジューリングする処理と
    前記第2の格納領域に格納されるプロセスを前記第2の方式によってスケジューリングする処理にあたり、1または複数のプロセスを含むプロセスグループに対して定められた目標プロセッサ配分率に従って各プロセスグループが実行されるように、前記第2の格納領域に格納されるプロセスを入れ替える処理
    をコンピュータに実行させるプログラム。
JP2014014349A 2014-01-29 2014-01-29 情報処理装置、情報処理方法およびプログラム Active JP6311330B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014014349A JP6311330B2 (ja) 2014-01-29 2014-01-29 情報処理装置、情報処理方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014014349A JP6311330B2 (ja) 2014-01-29 2014-01-29 情報処理装置、情報処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2015141584A JP2015141584A (ja) 2015-08-03
JP6311330B2 true JP6311330B2 (ja) 2018-04-18

Family

ID=53771881

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014014349A Active JP6311330B2 (ja) 2014-01-29 2014-01-29 情報処理装置、情報処理方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6311330B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6908676B2 (ja) * 2015-07-15 2021-07-28 株式会社Fuji 電気的特性取得方法および部品装着方法
US10572399B2 (en) * 2016-07-13 2020-02-25 Qualcomm Incorporated Memory request arbitration
KR101794765B1 (ko) 2016-08-03 2017-11-07 국방과학연구소 다중 데이터 링크 처리기 상에서 쓰레드 스케줄링 방법
JP7250651B2 (ja) * 2019-09-26 2023-04-03 日立建機株式会社 作業機械

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120198458A1 (en) * 2010-12-16 2012-08-02 Advanced Micro Devices, Inc. Methods and Systems for Synchronous Operation of a Processing Device

Also Published As

Publication number Publication date
JP2015141584A (ja) 2015-08-03

Similar Documents

Publication Publication Date Title
JP5324934B2 (ja) 情報処理装置および情報処理方法
CA2704269C (en) Uniform synchronization between multiple kernels running on single computer systems
KR100628492B1 (ko) 실시간 동작 수행방법 및 시스템
US9417920B2 (en) Method and apparatus for dynamic resource partition in simultaneous multi-thread microprocessor
US8695004B2 (en) Method for distributing computing time in a computer system
KR101827289B1 (ko) 실시간 운영체제에서 태스크 스케줄링 방법
JP5173714B2 (ja) マルチスレッドプロセッサ及びその割り込み処理方法
KR20050016170A (ko) 실시간 동작 수행방법 및 시스템
KR20050011689A (ko) 실시간 동작 수행방법 및 시스템
US20080235695A1 (en) Resource allocation system for jobs, resource allocation method and resource allocation program for jobs
US20080040578A1 (en) Multi-thread processor with multiple program counters
JP6311330B2 (ja) 情報処理装置、情報処理方法およびプログラム
US10271326B2 (en) Scheduling function calls
WO2023246044A1 (zh) 调度方法及装置、芯片、电子设备及存储介质
JP2011059777A (ja) タスクスケジューリング方法及びマルチコアシステム
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
CN108804212B (zh) 用于将任务安排成循环的进度表的方法和装置
JP5726006B2 (ja) タスクおよびリソースのスケジューリング装置及びその方法並びに制御装置
JP2000056992A (ja) タスクスケジューリングシステム、方法及び記録媒体
Völp et al. On the expressiveness of fixed-priority scheduling contexts for mixed-criticality scheduling
JP5299869B2 (ja) コンピュータマイクロジョブ
JP2000020323A (ja) スケジュ―リング装置及び方法並びに記録媒体
JP2014225137A (ja) タスクスケジューラ,マイクロプロセッサ及びタスクスケジューリング方法
WO2022168661A1 (ja) スケジューラ、スケジューリング方法、及び、コンピュータ読み取り可能な記憶媒体
Afshar et al. Towards resource sharing under multiprocessor semi-partitioned scheduling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171010

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171211

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180305

R150 Certificate of patent or registration of utility model

Ref document number: 6311330

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150