JP5540799B2 - データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置 - Google Patents

データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置 Download PDF

Info

Publication number
JP5540799B2
JP5540799B2 JP2010064417A JP2010064417A JP5540799B2 JP 5540799 B2 JP5540799 B2 JP 5540799B2 JP 2010064417 A JP2010064417 A JP 2010064417A JP 2010064417 A JP2010064417 A JP 2010064417A JP 5540799 B2 JP5540799 B2 JP 5540799B2
Authority
JP
Japan
Prior art keywords
output
data input
thread
input
asynchronous
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010064417A
Other languages
English (en)
Other versions
JP2011198063A (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.)
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 JP2010064417A priority Critical patent/JP5540799B2/ja
Publication of JP2011198063A publication Critical patent/JP2011198063A/ja
Application granted granted Critical
Publication of JP5540799B2 publication Critical patent/JP5540799B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は,アプリケーションにおける非同期入出力文に応じたデータの入出力処理を制御するデータ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置に関するものである。
例えば,プログラミング言語のFortranには,非同期なデータの入出力処理を指定する非同期入出力文がある。このような非同期入出力文で指定されたデータ入出力処理の実行モデルとしては,例えば,OS(Operating System)などのシステムが提供するシステムコールやシステムライブラリなどを利用したデータ入出力モデルや,スレッドを利用したデータ入出力モデルなどがある。なお,非同期入出力文は,CやC++などのプログラミング言語にもある。
システムが提供するシステムコールやシステムライブラリなどを利用したデータ入出力モデルでは,例えば多重I/O(Input/Output)や非同期I/O(AIO:Asynchronous Input/Output )の技術を利用し,非同期なデータ入出力を実現する。また,スレッドを利用したデータ入出力モデルでは,例えばアプリケーションのメインスレッドとは別にサブスレッドを生成し,生成したサブスレッドを用いて並列にデータ入出力を実行する。
なお,プログラムで1つのサブタスク(プロセス)を生成し,生成したプロセスで非同期入出力文を実行する技術が知られている。また,ファイルごとに新規のスレッドを生成して,非同期入出力文を実行させる技術が知られている。また,キーアクセスされる頻度を管理し,頻度の高い順にデータをバッファリングして,システムコールの発行回数を減少させる非同期入出力の技術が知られている。
特許第2585797号公報 特開2000―194574号公報 特開平4―342011号公報
上述のシステムが提供するシステムコールやシステムライブラリなどを利用したデータ入出力において,多重I/Oでは,ブロッキングによる待ちの問題がある。また,非同期I/Oでは,システムリソースを他のアプリケーションと共有するため,他のアプリケーションの動作によっては性能劣化を余儀なくされる可能性がある。スレッドを利用したデータ入出力では,スレッドの生成コストの問題や,スレッドの立て過ぎによるリソースの枯渇という問題がある。
アプリケーションの非同期入出力文で指定されたデータ入出力を高速に実行するためには,システムリソースを効率的に利用することや,状況に応じた効率的なデータ入出力処理を実行することが要求される。
本発明は,上記の問題の解決を図り,システムリソースを効率的に使用し,状況に応じた効率的なデータ入出力処理を実行することにより,アプリケーションの非同期入出力文に対応するデータ入出力を高速に実行することが可能となる技術を提供することを目的とする。
プログラミング言語の非同期入出力文を含むソースプログラムによって作成されたアプリケーションの非同期入出力文に対応する処理を実行するデータ入出力制御方法は,スレッド生成部が,アプリケーションの実行開始の際に,アプリケーションの実行に使用する所定数のスレッドを生成し,スレッド管理情報記憶部が,生成したスレッドを管理する管理情報を記使用データ入出力決定部が,アプリケーションにおける非同期入出力文に対応するデータ入出力処理の開始の際に,管理情報を参照して,生成したスレッド中に未使用状態のスレッドがある場合には,非同期入出力文に対応するデータ入出力処理としてスレッド利用データ入出力処理を行うと決定し,生成したスレッド中に未使用状態のスレッドがない場合には,非同期入出力文に対応するデータ入出力処理として非同期I/O利用データ入出力処理を行うと決定スレッド利用入出力処理部が,管理情報においてデータ入出力処理に利用する未使用状態のスレッドの状態をデータ入出力処理が終了するまで使用状態に設定し,未使用状態のスレッドを利用するデータ入出力処理であるスレッド利用データ入出力処理を実行システム利用入出力処理部が,システムコールまたはシステムライブラリにより提供される非同期I/Oを利用するデータ入出力処理である非同期I/O利用データ入出力処理を実行すことを特徴とする。
上記の技術によって,データ入出力処理の実行時に,適切な実行モデルを判断することで,アプリケーションの非同期入出力文の実行において,高速にデータ入出力を実行することが可能となる。
データ入出力のモデルの分類例を示す図である。 多重I/Oを説明する図である。 非同期I/Oを説明する図である。 非同期I/O時のデータのバッファリングを説明する図である。 本実施の形態によるコンピュータシステムの構造を示す図である。 CPUの例を示す図である。 本実施の形態によるコンパイルを説明する図である。 非同期入出力文を含むソースプログラムの例を示す図である。 本実施の形態によるデータ入出力制御機能を説明する機能構成例を示す図である。 本実施の形態のスレッド管理情報記憶部に格納された情報の例を示す図である。 本実施の形態のバッファ管理情報記憶部に格納された情報の例を示す図である。 本実施の形態の使用データ入出力決定部による使用データ入出力決定処理フローチャートである。 本実施の形態による既生成スレッドを利用するデータ入出力処理の例を説明する図である。 本実施の形態のスレッド利用入出力処理部によるスレッド利用データ入出力処理フローチャートである。 本実施の形態によるシステムの非同期I/Oを利用したデータ入力処理の例を説明する図である。 本実施の形態によるシステムの非同期I/Oを利用したデータ出力処理の例を説明する図である。 本実施の形態のシステム利用入出力処理部によるシステム利用データ入出力処理フローチャートである。
以下,本実施の形態について,図を用いて説明する。
まず,本実施の形態によるデータ入出力制御の技術を説明する前に,一般的なデータ入出力の技術について,簡単に説明する。
図1は,データ入出力のモデルの分類例を示す図である。
一般的なデータ入出力のモデルは,例えば図1に示すように,同期(synchronous )か非同期(asynchronous)か,またはブロッキング(blocking)が行われるか行われないかで分類することができる。
同期のデータ入出力モデルには,例えば,readやwrite などのシステムコールを用いたデータ入出力のモデルがある。同期のデータ入出力モデルでは,アプリケーションのスレッドは,カーネルへのI/Oリクエスト発行後に,カーネルからの応答を待つ。このような同期のデータ入出力モデルには,カーネルでの入出力処理が完了するまでアプリケーションのスレッドがブロックされるブロッキングのモデルと,カーネルでの入出力が完了しなくてもアプリケーションのスレッドに処理が返される非ブロッキング(non-blocking)のモデルとがある。
非同期のデータ入出力モデルには,例えば,ブロッキングを行う多重I/Oや,ブロッキングを行わない非同期I/Oなどがある。
図2は,多重I/Oを説明する図である。
図2において,アプリケーション500は,データ入出力処理が含まれるユーザプログラムである。カーネル600は,OSの中核として,コンピュータのハードウェアリソースの管理・制御や,ハードウェア−ソフトウェア間のやり取りの制御,プロセス間通信などの基本機能を提供する。
多重I/Oは,単一のスレッドによって,read/writeでブロックすることなく,複数のI/Oを同時に扱う技術である。多重I/Oでは,アプリケーション500は,select(2) ,poll(2) ,epoll(2)などのシステムコールを実行し,カーネル600からのI/O実行可能状態の通知を待つ。
例えば,図2に示すように,アプリケーション500がreadまたはwrite を実行し(S900),カーネル600からEAGAINでエラー復帰する(S901)。なお,EAGAINは,read/writeの非ブロッキングのデータ入出力において,読み取り/書き込みの準備ができたデータがないことを示す。アプリケーション500は,システムコールのselect()を発行し(S902),カーネル600からのI/O実行可能状態の通知を待つ。アプリケーション500は,カーネル600からのI/O実行可能状態の通知を受けた後(S903),readまたはwrite によりデータ転送を行う(S904)。
このように,多重I/Oでは,アプリケーション500は,I/O実行可能状態の通知待ちの間にブロックされ,他の処理が一切行えない。そのため,通知の待ち時間が無駄になり,データ入出力の性能向上が望めない。
図3は,非同期I/Oを説明する図である。
図3において,システムライブラリ700は,OSによって提供される関数のライブラリである。システムライブラリ700に含まれる非同期I/Oの関数としては,例えば,POSIX(Portable Operating System Interface )のAIO関数などがある。なお,POSIXは,登録商標である。
非同期I/Oでは,AIO関連のシステムコールやPOSIXのAIO関数などを使用し,ブロッキングすることなしに,データ入出力が実行される。ブロッキングしないため,アプリケーション500がread/write発行後も他の処理を並列に行えることが特徴である。非同期I/Oには,例えば,システムで共通にサポートされるPOSIXの非同期I/Oや,Linuxカーネルがサポートする非同期I/Oなどがある。なお,Linuxは,登録商標である。
図3において,アプリケーション500は,システムライブラリ700のAIO関数を呼び出す(S910)。システムライブラリ700では,AIO関数によって,カーネル600に対するデータ入出力のシステムコールが発行される(S911)。なお,このときアプリケーション500では,AIO関数の呼び出しによって処理がブロックされないため,カーネル600でのデータ入出力処理と並行に,他の処理が実行可能となる。
カーネル600でのデータ入出力処理が完了すると,カーネル600からシステムライブラリ700にI/O完了通知が送られ(S912),システムライブラリ700からアプリケーション500に処理が返される(S913)。
このように,非同期I/Oでは,ブロッキングせずにデータの入出力を行うことが可能であるため,データ入出力処理の性能は向上する。
ただし,非同期I/Oでは,同時に待ち行列に入れる非同期I/Oの操作数や非同期I/O転送中にロック可能な最大メモリ容量制限が,システム全体で適用される値に依存する。非同期I/Oでは,システムリソースを他のアプリケーションと共有しているため,並行に動作する他のアプリケーションの動作によっては,待ち行列やロック可能な最大メモリ容量が制限を超えて待ち状態となり,データ入出力の性能劣化が余儀なくされる可能性がある。
図4は,非同期I/O時のデータのバッファリングを説明する図である。
データのバッファリングは,カーネル600とアプリケーション500との間でデータのやり取りを行う場合に,データをアプリケーション500側が保持するバッファに一旦コピーして,いくつかのデータをまとめる方法である。この方法を行うことにより,システムコールの発行回数を減らすことができる。
例えば,図4において,アプリケーション500は,バッファリング処理により,ファイルに出力するデータを,メモリ領域からバッファに転送する(S920)。
ファイルに出力するデータがバッファにまとめられたところで,アプリケーション500は,システムライブラリ700のAIO関数を呼び出す(S921)。システムライブラリ700では,AIO関数によって,カーネル600に対するデータ入出力のシステムコールが発行される(S922)。カーネル600の処理によって,バッファのデータがファイルに出力される。
カーネル600でのデータ出力処理が完了すると,カーネル600からシステムライブラリ700にI/O完了通知が送られ(S923),システムライブラリ700からアプリケーション500に処理が返される(S924)。
このようなバッファリング処理によって,システムコールの発行回数を減らすことにより,システムコールの待ち行列を減らすことができる。ただし,非同期I/Oにおいてバッファリング処理を行う場合には,I/Oを発行してから完了待ちまでの時間が無駄になる可能性がある。
以下では,これらのようなデータ入出力技術の問題の解決を図った,本実施の形態のデータ入出力制御の技術について,説明する。
図5は,本実施の形態によるコンピュータシステムの構造を示す図である。
コンピュータ1は,CPU(Central Processing Unit )31,RAM(Random Access Memory)やROM(Read Only Memory)などのメモリ32,HDD(Hard Disk Drive )などのディスク33等のハードウェア30を備える。
図5において,システム領域20は,OS21などのシステムが稼動する領域である。図5に示すシステム領域20には,OS21が提供する関数のライブラリであるシステムライブラリ22が用意されている。システム領域20のプログラムは,ハードウェア30を利用して実行される。
図5において,ユーザ領域10は,ユーザがアプリケーション11の稼動に利用できる領域である。また,図5に示すユーザ領域10では,プログラミング言語で書かれたアプリケーション11のソースプログラムから,実行形式のプログラムを作成するソフトウェアのパッケージであるコンパイラ/ライブラリ12が稼動する。本実施の形態では,コンパイラ/ライブラリ12は,Fortranでプログラミングされたソースプログラムから実行形式のプログラムを作成するコンパイラのパッケージであるものとする。ユーザ領域10のプログラムは,システム領域20のOS21等を介することにより,ハードウェア30を利用して実行される。
図6は,CPUの例を示す図である。
本実施の形態のCPU31は,例えば,図6に示すようなCPUチップ310で提供される。CPUチップ310は,CPU31の物理的なパッケージである。CPUチップ310は,複数のCPUコア311を持つマルチコアプロセッサである。また,システムが提供するマルチスレッド機構により,ソフトウェアプログラムからは,1つのCPUコア311が複数の論理CPU312に見える。
図7は,本実施の形態によるコンパイルを説明する図である。
ここでは,図5に示すアプリケーション11のソースプログラム111を,図5に示すコンパイラ/ライブラリ12を用いてコンパイルし,アプリケーション11の実行形式プログラム114を生成する例を説明する。なお,図7において,コンパイラ121,アセンブラ122,リンカ123と,実行時ライブラリ124の一部とは,図5に示すコンパイラ/ライブラリ12に含まれる。
実行時ライブラリ124は,ユーザ領域10で実行されるアプリケーション11で汎用的に用いられるプログラムの集合である。図7に示す本実施の形態の実行時ライブラリ124には,OS21が提供するシステムライブラリ22や,コンパイラ/ライブラリ12にパッケージされた言語提供ライブラリ,ユーザが過去に作成したプログラムで汎用的に使用するために保持されたアプリケーションライブラリ等が含まれる。
なお,本実施の形態のデータ入出力制御機能を提供するプログラムは,実行時ライブラリ124に含まれる。例えば,本実施の形態のデータ入出力制御機能を提供するプログラムは,コンパイラ/ライブラリ12にパッケージされた言語提供ライブラリにより提供される。
ソースプログラム111は,アプリケーション11のソースコードである。本実施の形態では,ソースプログラム111は,Fortranでプログラミングされており,Fortranの非同期入出力文を含んでいるものとする。なお,Fortranは,科学技術計算向きに開発された手続き型のプログラミング言語である。
本実施の形態では,ソースプログラム111のコンパイルが実行されると,コンパイラ121は,ソースプログラム111を,中間的にアセンブラソース112に変換する。アセンブラ122は,アセンブラソース112をアセンブルし,オブジェクトコード113を生成する。リンカ123は,アプリケーション11のオブジェクトコード113に対して,実行時ライブラリ124に含まれる必要な関数等のプログラムをリンクし,アプリケーション11の実行形式プログラム114を生成する。
なお,本実施の形態では,リンクとして,動的リンクが用いられているものとする。すなわち,本実施の形態では,リンカ123は,オブジェクトコード113に対して,実行時ライブラリ124に含まれる必要なプログラムへの呼び出し解決を行い,実行形式プログラム114を生成する。実行時ライブラリ124のプログラムは,アプリケーション11の実行形式プログラム114の実行時に,ユーザ領域10のメモリ領域上に呼び出される。
図8は,非同期入出力文を含むソースプログラムの例を示す図である。
図8に示すソースプログラム111は,Fortranで記述されており,データの非同期入出力を指定する非同期入出力文を含んでいる。
図8に示すソースプログラム111において,“PROGRAM MAIN”の次の2行は,変数の宣言が記述された部分である。その次の4行は,変数の初期化が記述された部分である。さらに次のOPEN文からCLOSE文までの5行が,データ入出力が記述された部分である。
図8に示すソースプログラム111のデータ入出力の部分において,OPEN文,WRITE文,READ文に記述された“ASYNCHRONOUS='YES'”が,データの非同期入出力を指定する記述である。すなわち,図8に示すソースプログラム111において,“ASYNCHRONOUS='YES'”を含む入出力文が,非同期入出力文となる。
図9は,本実施の形態によるデータ入出力制御機能を説明する機能構成例を示す図である。
コンピュータ1において,アプリケーション11のソースプログラム111は,コンパイラ121,リンカ123等により,アプリケーション11の実行形式プログラム114に変換される。このとき,アプリケーション11の実行形式プログラム114から実行時ライブラリ124の呼び出しに必要なインタフェースの生成などが行われる。また,実行形式プログラム114を起動するための実行コマンドも生成される。
実行時ライブラリ124では,アプリケーション11の実行形式プログラム114から呼び出される関数等のプログラムによって,スレッド生成部125,使用データ入出力決定部126,スレッド利用入出力処理部127,システム利用入出力処理部128が実現される。本実施の形態によるデータ入出力制御機能を提供するこれらの各機能部は,コンピュータ1が備えるCPU31,メモリ32,ディスク33等のハードウェア30と,ソフトウェアプログラムとによって実現される。
実行コマンドによって,アプリケーション11の実行形式プログラム114が起動されると,実行開始処理が行われる。実行形式プログラム114の実行開始処理において,実行時ライブラリ124のスレッド生成部125は,アプリケーション11の実行で利用する,所定数のスレッドを生成する。
ユーザは,ソースプログラム111のコンパイル時に,アプリケーション11をマルチスレッドで実行するか,シングルスレッドで実行するかを指定する。スレッド生成部125は,コンパイル時にマルチスレッドが指定されている場合に,複数スレッドの生成を行う。スレッド生成部125により生成するスレッドの数は,CPU31やメモリ32の性能等を鑑みて妥当とされる数があらかじめ設定されている。本実施の形態では,アプリケーション11の実行形式プログラム114の実行開始処理において,スレッド生成部125によって生成するスレッドの数は,アプリケーション11のメインスレッドを含めて8個に設定されているものとする。なお,例えば実行形式プログラム114の実行時などにユーザが生成するスレッド数を指定できるようにしてもよい。
スレッド生成部125は,アプリケーション11の実行で利用するスレッドの管理情報を生成し,スレッド管理情報記憶部131に記憶する。スレッド管理情報記憶部131は,アプリケーション11の実行で利用するスレッドの管理情報を記憶する,コンピュータ1がアクセス可能な記憶装置である。スレッド管理情報記憶部131には,実行されたアプリケーション11のプロセスID,アプリケーション11の実行に利用するために生成されたスレッドの数,各スレッドの状態などの情報が記憶されている。
アプリケーション11の実行において並列処理が必要な場合には,原則として,スレッド生成部125により生成されたスレッドを利用して処理を実行する。このとき,並列処理を行うプログラムは,スレッド管理情報記憶部131に記憶されたスレッドの管理情報を参照し,未使用のスレッドを選択して並列処理を行う。このとき利用するスレッドについては,スレッド管理情報記憶部131に記憶されたスレッドの管理情報において,使用状態に設定する。例えば,図8に示すソースプログラム111において4行目〜6行目のDOループ文に対応する処理で,既生成スレッドを利用した並列処理が行われる。
アプリケーション11の実行形式プログラム114による非同期データ入出力開始処理において,実行時ライブラリ124の使用データ入出力決定部126は,使用するデータ入出力ロジックを決定する。本実施の形態では,データ入出力ロジックとして,スレッド利用入出力処理部127による既生成スレッドを利用するロジックと,システム利用入出力処理部128によるシステムコールまたはシステムライブラリの非同期I/Oを利用するロジックとが,実行時ライブラリ124で提供されている。非同期データ入出力開始処理は,例えば図8に示すソースプログラム111のOPEN文に応じた処理である。
アプリケーション11の実行形式プログラム114による非同期データ入出力実行処理において,実行時ライブラリ124のスレッド利用入出力処理部127またはシステム利用入出力処理部128は,データ入出力処理を実行する。
スレッド利用入出力処理部127は,スレッド生成部125によりすでに生成されているスレッドに空きがある場合に,その空き状態のスレッドを利用するデータ入出力処理を実行する。
システム利用入出力処理部128は,システムコールまたはシステムライブラリによって提供される非同期I/Oを利用するデータ入出力処理を実行する。
バッファ管理情報記憶部132は,ユーザ領域10に用意されたバッファの管理情報を記憶する,コンピュータ1がアクセス可能な記憶装置である。スレッド利用入出力処理部127またはシステム利用入出力処理部128によるデータ入出力処理において,ユーザ領域10に用意されたバッファを使用する場合がある。このとき,スレッド利用入出力処理部127やシステム利用入出力処理部128は,バッファ管理情報記憶部132に記憶されたバッファの管理情報を参照しながら,ユーザ領域10のバッファを使用する。
図10は,本実施の形態のスレッド管理情報記憶部に格納された情報の例を示す図である。
図10に示すスレッド管理テーブル135は,スレッド管理情報記憶部131に記憶された,アプリケーション11の実行のために生成されたスレッドの管理情報の例である。図10に示すスレッド管理テーブル135では,プロセスIDが“01”で,生成されたスレッドの数がメインスレッドを含めてN個であるアプリケーション11についてのスレッドの情報が管理されている。なお,プロセスIDは,プロセスを一意に識別する識別情報である。
スレッド管理テーブル135は,スレッド番号,スレッド状態などの情報を持つ。スレッド番号は,スレッドを一意に識別する識別情報である。スレッド状態は,スレッドが実行状態か,待ち状態かまたは未使用状態かを示す情報である。図10に示すスレッド管理テーブル135において,スレッド状態が“未使用”であるスレッドが,空き状態のスレッドである。
図11は,本実施の形態のバッファ管理情報記憶部に格納された情報の例を示す図である。
図11に示すバッファ管理テーブル136は,バッファ管理情報記憶部132に記憶された,アプリケーション11が利用可能なユーザ領域10のバッファを管理する情報の例である。図11に示すバッファ管理テーブル136では,M個のバッファの情報が管理されている。
バッファ管理テーブル136は,バッファ番号,バッファ使用状況などの情報を持つ。バッファ番号は,バッファを一意に識別する識別情報である。バッファ使用状況は,バッファが使用中であるか否かを示す情報である。図11に示すバッファ管理テーブル136のバッファ使用状況において,“ON”が使用中を示し,“OFF”が使用していないことを示す。
図12は,本実施の形態の使用データ入出力決定部による使用データ入出力決定処理フローチャートである。
使用データ入出力決定部126は,ソースプログラム111の非同期入出力文に対応したデータ入出力処理の実行開始時に,使用するデータ入出力ロジックを決定する。例えば,図8に示すソースプログラム111では,OPEN文に非同期入出力を示す“ASYNCHRONUS='YES' ”が設定されている。このような“ASYNCHRONUS='YES' ”が設定されたOPEN文に対応した処理として,使用データ入出力決定部126は,使用するデータ入出力ロジックを決定する。
使用データ入出力決定部126は,上述したように,既生成スレッドを利用するデータ入出力のロジックと,システムコールまたはシステムライブラリ22の非同期I/Oを利用するデータ入出力のロジックとから,使用するデータ入出力ロジックを決定する。以下,図12のフローチャートを用いて,使用データ入出力決定部126による使用データ入出力決定処理の一例を説明する。
使用データ入出力決定部126は,スレッド管理情報記憶部131に記憶された,スレッド管理テーブル135等のスレッドの管理情報を参照する(ステップS10)。使用データ入出力決定部126は,処理の並列実行が可能であるかを判定する(ステップS11)。ここでは,使用データ入出力決定部126は,例えば,複数スレッドが生成されているかなどを判定する。また,使用データ入出力決定部126は,空き状態のスレッドがあるかを判定する(ステップS12)。ここでは,使用データ入出力決定部126は,例えば,図10に示すスレッド管理テーブル135において,スレッド状態が“未使用”であるスレッドがあるかを判定する。
並列実行が可能であり(ステップS11のYES),かつ空き状態のスレッドがあれば(ステップS12のYES),使用データ入出力決定部126は,使用するデータ入出力ロジックとして,スレッド利用データ入出力処理を決定する(ステップS13)。このとき,使用データ入出力決定部126は,スレッド利用データ入出力処理を実現するモジュールのアドレス登録を行う。スレッド利用データ入出力処理は,スレッド利用入出力処理部127による既生成スレッドを利用するデータ入出力処理である。使用データ入出力決定部126は,空き状態のスレッドからデータ入出力に利用するスレッドを決定し,スレッド管理情報記憶部131に記憶されたスレッド管理テーブル135において,該当スレッドの状態を使用状態に設定する(ステップS14)。なお,スレッドを利用するデータ入出力処理の場合には,図8に示すソースプログラム111のCLOSE文に対応する処理の実行時に,スレッド管理情報記憶部131に記憶されたスレッド管理テーブル135において,該当スレッドの状態が未使用状態に戻される。
並列実行が不可能である(ステップS11のNO),または空き状態のスレッドがない場合には(ステップS12のNO),使用データ入出力決定部126は,使用するデータ入出力処理ロジックとして,システム利用データ入出力処理を決定する(ステップS15)。このとき,使用データ入出力決定部126は,システム利用データ入出力処理を実現するモジュールのアドレス登録を行う。システム利用データ入出力処理は,システム利用入出力処理部128によるシステムコールまたはシステムライブラリ22の非同期I/Oを利用するデータ入出力処理である。
本実施の形態では,既生成スレッドに空き状態のスレッドがあれば,優先的に,スレッド利用入出力処理部127によるスレッド利用データ入出力処理を選択する。データ入出力処理に利用する既生成スレッドは,自身のアプリケーション11の処理実行用に生成されたスレッドである。
上述したように,システムライブラリ22やシステムコールの非同期I/Oを利用するデータ入出力処理では,同時に待ち行列に入れる非同期I/Oの操作数や非同期I/O転送中にロック可能な最大メモリ容量制限が,システム全体で適用される値に依存する。そのため,他のアプリケーションの動作によっては,待ち行列やロック可能な最大メモリ容量が制限を超えて待ち状態となり,データ入出力の性能劣化が余儀なくされる可能性がある。
これに対して,アプリケーション11の処理実行用に生成されたスレッドを利用したデータ入出力処理では,ロック可能な最大メモリ容量などをアプリケーション11側で管理できる。そのため,ロック可能な最大メモリ容量が制限を超えて待ち状態となってしまうことを回避でき,また処理性能が他のアプリケーションの動作に左右されることが少ない。このように,既生成スレッドに空き状態のスレッドがある場合に,そのスレッドを利用してデータ入出力を優先することで,データ入出力の性能向上を図れる。
図13,図14を用いて,使用データ入出力決定部126によりスレッド利用データ入出力処理が決定された場合の,スレッド利用入出力処理部127による既生成スレッドを利用するデータ入出力処理の例を説明する。
図13は,本実施の形態による既生成スレッドを利用するデータ入出力処理の例を説明する図である。
図13において,メインスレッド115は,アプリケーション11のメインスレッドを示す。サブスレッドA116,サブスレッドB117,サブスレッドC118は,アプリケーション11の実行開始時に生成され,データ入出力処理の開始段階で,空き状態であったスレッドである。カーネル211は,OS21の中核として,コンピュータ1のハードウェア30の管理・制御や,ハードウェア30−ユーザ領域10間のやり取りの制御,プロセス間通信などの基本機能を提供する。なお,ユニットはファイルを示す。
ユニットAに対する非同期入出力処理が実行されるときに,スレッド利用入出力処理部127は,メインスレッド115ではなく,空きスレッドであるサブスレッドA116を利用して,データ入出力を行う。
アプリケーション11のサブスレッドA116は,システムライブラリ22のデータ入出力処理を行う関数を呼び出す(S100)。ここでは,システムライブラリ22に含まれる同期入出力処理の関数が呼び出される。呼び出された同期入出力処理の関数によって,ユニットAに対するデータ入出力のシステムコールが発行される(S101)。
ユニットAに対するデータ入出力処理は,サブスレッドA116によって実行されるので,アプリケーション11のメインスレッド115は,サブスレッドA116によるデータ入出力処理とは並列に,他の処理が実行できる。なお,図13に示す例ではサブスレッドA116でデータ入出力処理を行っているが,メインスレッド115でデータ入出力処理を行い,サブスレッドA116で他の処理を実行するようにしてもよい。
同様に,ユニットBに対する非同期入出力処理,ユニットCに対する非同期入出力処理が実行される場合に,空き状態のサブスレッドB117,サブスレッドC118があれば,スレッド利用入出力処理部127は,サブスレッドB117,サブスレッドC118を利用してデータ入出力を行う。すなわち,アプリケーション11のサブスレッドB117は,システムライブラリ22に含まれる同期入出力処理の関数を呼び出す(S102)。呼び出されたシステムライブラリ22に含まれる同期入出力処理の関数によって,ユニットBに対するデータ入出力のシステムコールが発行される(S103)。同様に,アプリケーション11のサブスレッドC118は,システムライブラリ22に含まれる同期入出力処理の関数を呼び出す(S104)。呼び出されたシステムライブラリ22に含まれる同期入出力処理の関数によって,ユニットCに対するデータ入出力のシステムコールが発行される(S105)。
サブスレッドA116,サブスレッドB117,サブスレッドC118によってデータ入出力処理を行っている間に,アプリケーションのメインスレッド115は,それらのデータ入出力処理とは並列に,他の処理が実行できる。
また,データ入出力処理に,ユーザ領域10に用意されたバッファを使用してもよい。例えば,サブスレッドA116は,出力データが記憶されたアプリケーション11のメモリ領域からバッファに転送する。サブスレッドA116は,システムライブラリ22のデータ出力処理の関数を呼び出して,バッファからファイルAへのデータ出力処理を行う。サブスレッドA116は,メモリ領域上のすべての該当データを出力するまで,これらの処理を繰り返す。なお,バッファを複数個用意して,それらの複数のバッファを交互に使用しながら,バッファへのデータ転送とシステムライブラリ22の関数の呼び出しとを実行するようにしてもよい。
図14は,本実施の形態のスレッド利用入出力処理部によるスレッド利用データ入出力処理フローチャートである。
スレッド利用入出力処理部127は,図14に示すフローチャートによる処理を,データ入出力処理の実行に割り当てられた,空き状態の既生成スレッドに実行させる。ここでは,データ入出力処理の実行に割り当てられたスレッドを,データ入出力用スレッドと呼ぶものとする。なお,実行時ライブラリ124に含まれるスレッド利用入出力処理部127を実現するプログラムは,引数として,入出力を行うメモリ領域上のデータまたは変数領域のアドレス,入出力するデータの長さ,入出力する変数の数等を受ける。
実行する処理がデータ入力処理であれば(ステップS20の入力),データ入出力用スレッドは,システムコールまたはシステムライブラリ22により,ディスク33からユーザ領域10のバッファへのデータ読み出しを行う(ステップS21)。データ入出力用スレッドは,バッファ上にあるデータを,アプリケーション11のメモリ領域に転送する(ステップS22)。データ入出力用スレッドは,ステップS21,S22の処理を,全入力変数について終了するまで繰り返す(ステップS23)。
実行する処理がデータ出力処理であれば(ステップS20の出力),データ入出力用スレッドは,アプリケーション11のメモリ領域上の出力対象となるデータを,ユーザ領域10のバッファに転送する(ステップS24)。データ入出力用スレッドは,システムコールまたはシステムライブラリ22により,バッファからディスク33へのデータ書き出しを行う(ステップS25)。データ入出力用スレッドは,ステップS24,S25の処理を,メモリ領域上の出力対象となる全データについて終了するまで繰り返す(ステップS26)。
本実施の形態では,スレッドを利用したデータ入出力処理の開始時に,スレッドの生成を行わない。データ入出力処理に利用するスレッドは,アプリケーション11の実行開始時に,アプリケーション11の実行で汎用的に使用するためにスレッド生成部125によって生成されたスレッドのうちの,空き状態のスレッドである。データ入出力処理の開始時に,データ入出力のためのスレッドを生成するコストが省けるため,データ入出力処理実行時の性能が向上する。また,スレッドを利用したデータ入出力処理を行うのは,既生成スレッドに空き状態のスレッドがある場合のみであり,データ入出力処理のために新たなスレッドを増やさない。そのため,データ入出力のためにスレッドを増やし過ぎて,処理性能が劣化することはない。
図15〜図17を用いて,使用データ入出力決定部126によりシステム利用データ入出力処理が決定された場合の,システム利用入出力処理部128によるシステムコールまたはシステムライブラリ22の非同期I/Oを利用するデータ入出力の例を説明する。
本実施の形態のシステム利用入出力処理部128によるシステム利用データ入出力処理では,OS21等のシステム側から提供されるシステムコールやシステムライブラリ22がサポートする非同期I/Oを利用したデータ入出力が行われる。
ただし,本実施の形態のシステム利用入出力処理部128は,データの入力と出力とで,ユーザ領域10のバッファの使用と不使用とを使い分ける。すなわち,システムが提供する非同期I/Oを利用したデータ入力処理では複数のバッファを使用し,システムが提供する非同期I/Oを利用したデータ出力処理ではバッファを使用しない。
システムコールやシステムライブラリ22の非同期I/Oを利用したデータ入出力処理において,データ入力とデータ出力とで,ユーザ領域10のバッファの使用と不使用とを切り替えることで,より高速なデータ入出力が可能となる。
図15は,本実施の形態によるシステムの非同期I/Oを利用したデータ入力処理の例を説明する図である。
図15に示す非同期I/Oを利用したデータ入力処理では,システムライブラリ22が提供するAIO関数と,M個のバッファとを利用することにより,バッファへのデータ入力と,バッファからアプリケーション11のメモリ領域へのデータ転送とを,並行して行う。バッファは,バッファ管理情報記憶部132に記憶されたバッファ管理テーブル136によって管理されている。
バッファ#0を指定した非同期入力が実行されると,アプリケーション11は,システムライブラリ22のデータ入力処理を行うAIO関数を呼び出す(S110)。呼び出されたデータ入力処理を行うAIO関数によって,データ入力のシステムコールが発行される(S111)。なお,非同期I/Oなので,アプリケーション11は,バッファ#0へのデータ入力の完了を待たずに,別の処理を実行できる。
同様に,バッファ#1〜バッファ#M−1を指定した非同期入力が順に実行されると,アプリケーション11からシステムライブラリ22のデータ入力処理を行うAIO関数の呼び出し(S112,... S114),AIO関数からデータ入力のシステムコールの発行(S113,... ,S115)が行われる。
バッファ#0へのデータ入力が完了すると,カーネル211は,システムライブラリ22のAIO関数にバッファ#0についてのI/O完了通知を返す(S116)。システムライブラリ22のAIO関数は,アプリケーション11に処理を返す(S117)。
バッファ#0へのデータ入力完了を受けたアプリケーション11は,他のバッファへのデータ入力処理と並行に,バッファ#0からアプリケーション11のメモリ領域へのデータ転送の処理を実行する。なお,他のバッファにも収まらない入力データがまだある場合には,バッファ#0からメモリ領域へのデータ転送完了後,バッファ#0を指定した次のデータの非同期入力が実行される。
同様に,バッファ#1へのデータ入力が完了すると,カーネル211は,システムライブラリ22のAIO関数にバッファ#1についてのI/O完了通知を返し(S118),AIO関数はアプリケーション11に処理を返す(S119)。バッファ#1へのデータ入力完了を受けたアプリケーション11は,他のバッファへのデータ入力処理と並行に,バッファ#1からアプリケーション11のメモリ領域へのデータ転送の処理を実行する。以下,バッファ#2以降も,同様の処理が行われる。
このように,本実施の形態のシステムライブラリ22の非同期I/Oを利用したデータ入力では,一度にできるだけ多くのデータをアプリケーション11側で処理するために,複数のバッファを交互に用いたデータの入力を行う。アプリケーション11はシステムライブラリ22のAIO関数に対して必要な分だけの入力要求を行い,データがバッファに転送された時点で,アプリケーション11側でデータの処理を実施することができる。これにより,例えばディスク33からバッファへのデータ入力と,アプリケーション11での入力したデータの処理とを,並列に実行することができる。そのため,システムの非同期I/Oを用いたデータ入力時の性能が,向上する。
図16は,本実施の形態によるシステムの非同期I/Oを利用したデータ出力処理の例を説明する図である。
図16に示す非同期I/Oを利用したデータ出力処理では,バッファを使用せずに,アプリケーション11のメモリ領域上の出力対象となるデータを,システムライブラリ22が提供するAIO関数を利用して出力する。ここでは,入力変数X,Y,Zのそれぞれについて,非同期I/Oを利用したデータ出力を行うものとする。
入力変数Xについての非同期出力が実行されると,アプリケーション11は,システムライブラリ22のデータ出力処理を行うAIO関数を呼び出す(S120)。このとき,データ出力処理を行うAIO関数には,出力対象となるデータが記憶されているメモリ領域のアドレスや出力対象となるデータの長さ等の情報が渡される。呼び出されたデータ出力処理を行うAIO関数によって,データ出力のシステムコールが発行される(S121)。なお,非同期I/Oなので,アプリケーション11は,入力変数Xについてのデータ出力の完了を待たずに,別の処理を実行できる。
同様に,入力変数Y,入力変数Zについての非同期出力が順に実行されると,アプリケーション11からシステムライブラリ22のデータ出力処理を行うAIO関数の呼び出し(S122,... S123),AIO関数からデータ出力のシステムコールの発行(S124,... ,S125)が行われる。
入力変数Xについてのデータ出力が完了すると,カーネル211は,システムライブラリ22のAIO関数に入力変数XについてのI/O完了通知を返す(S126)。システムライブラリ22のAIO関数は,アプリケーション11に処理を返す(S127)。
同様に,入力変数Y,入力変数Zについてのデータ出力が完了すると,カーネル211は,システムライブラリ22のAIO関数に入力変数Y,入力変数ZについてのI/O完了通知を返し(S128,S130),AIO関数はアプリケーション11に処理を返す(S129,S131)。
このように,本実施の形態のシステムライブラリ22の非同期I/Oを利用したデータ出力では,バッファを使用せずに,アプリケーション11のメモリ領域上にあるデータをそのまま出力する。非同期I/Oを利用したデータ出力では,バッファにデータをコピーすると,コピーしたデータをシステムコールに渡す間に,待ち状態が発生する。バッファを使用せずに,アプリケーション11のメモリ領域から直接にシステムライブラリ22にデータを渡すことにより,アプリケーション11の処理待ちの状態を減らすことができる。
図17は,本実施の形態のシステム利用入出力処理部によるシステム利用データ入出力処理フローチャートである。
実行する処理がデータ入力処理であれば(ステップS30の入力),システム利用入出力処理部128は,バッファ管理情報記憶部132に記憶されたバッファ管理テーブル136を参照し,バッファ使用状況がOFFのバッファごとに,以下のステップS31〜S34の処理を繰り返す。
システム利用入出力処理部128は,システムコールまたはシステムライブラリ22により,ディスク33からユーザ領域10の該当バッファへのデータ読み出しを行う(ステップS31)。システム利用入出力処理部128は,バッファ管理情報記憶部132に記憶されたバッファ管理テーブル136において,該当バッファのバッファ使用状況をONに設定する(ステップS32)。システム利用入出力処理部128は,バッファ上にあるデータを,アプリケーション11のメモリ領域に転送する(ステップS33)。システム利用入出力処理部128は,I/O完了通知受領後,バッファ管理情報記憶部132に記憶されたバッファ管理テーブル136において,該当バッファのバッファ使用状況をOFFに設定する(ステップS34)。
システム利用入出力処理部128は,ステップS31〜S34のバッファごとの処理を,全入力変数について終了するまで繰り返す(ステップS35)。
実行する処理がデータ出力処理であれば(ステップS30の出力),システム利用入出力処理部128は,システムコールまたはシステムライブラリ22により,アプリケーション11のメモリ領域にあるデータをディスク33に書き出す(ステップS36)。システム利用入出力処理部128は,ステップS36の処理を,メモリ領域上の出力対象となる全データについて終了するまで繰り返す(ステップS37)。
以上説明した,本実施の形態の非同期入出力文に対応するデータ入出力制御の技術によって,データ入出力処理開始時に適切な実行モデルを判断して,高速にデータ入出力を実行することが可能となる。
以上説明した本実施の形態のアプリケーション11または実行時ライブラリ124による処理は,コンピュータが備えるCPU31,メモリ32等のハードウェア30とソフトウェアプログラムとにより実現することができ,そのプログラムをコンピュータ読み取り可能な記録媒体に記録することも,ネットワークを通して提供することも可能である。
以上,本実施の形態について説明したが,本発明はその主旨の範囲において種々の変形が可能であることは当然である。
1 コンピュータ
10 ユーザ領域
11 アプリケーション
111 ソースプログラム
112 アセンブラソース
113 オブジェクトコード
114 実行形式プログラム
12 コンパイラ/ライブラリ
121 コンパイラ
122 アセンブラ
123 リンカ
124 実行時ライブラリ
125 スレッド生成部
126 使用データ入出力決定部
127 スレッド利用入出力処理部
128 システム利用入出力処理部
131 スレッド管理情報記憶部
132 バッファ管理情報記憶部
20 システム領域
21 OS
211 カーネル
22 システムライブラリ
30 ハードウェア
31 CPU
32 メモリ
33 ディスク

Claims (4)

  1. プログラミング言語の非同期入出力文を含むソースプログラムによって作成されたアプリケーションの前記非同期入出力文に対応する処理を実行するデータ入出力制御方法であって,
    スレッド生成部が,前記アプリケーションの実行開始の際に,前記アプリケーションの実行に使用する所定数のスレッドを生成し,
    スレッド管理情報記憶部が,前記生成したスレッドを管理する管理情報を記
    使用データ入出力決定部が,前記アプリケーションにおける前記非同期入出力文に対応するデータ入出力処理の開始の際に,前記管理情報を参照して,前記生成したスレッド中に未使用状態のスレッドがある場合には,前記非同期入出力文に対応するデータ入出力処理としてスレッド利用データ入出力処理を行うと決定し,前記生成したスレッド中に未使用状態のスレッドがない場合には,前記非同期入出力文に対応するデータ入出力処理として非同期I/O利用データ入出力処理を行うと決定
    スレッド利用入出力処理部が,前記管理情報においてデータ入出力処理に利用する前記未使用状態のスレッドの状態をデータ入出力処理が終了するまで使用状態に設定し,前記未使用状態のスレッドを利用するデータ入出力処理である前記スレッド利用データ入出力処理を実行
    システム利用入出力処理部が,システムコールまたはシステムライブラリにより提供される非同期I/Oを利用するデータ入出力処理である前記非同期I/O利用データ入出力処理を実行す
    ことを特徴とするデータ入出力制御方法。
  2. 前記システムコールまたはシステムライブラリにより提供される非同期I/Oを利用するデータ入出力処理を実行する処理では,データ入力処理では前記コンピュータのユーザ領域に用意された複数のバッファを使用したデータの入力を行い,データ出力処理では前記コンピュータのユーザ領域に用意されたバッファを使用しないデータの出力を行う
    ことを特徴とする請求項1記載のデータ入出力制御方法。
  3. プログラミング言語の非同期入出力文を含むソースプログラムによって作成されたアプリケーションの前記非同期入出力文に対応する処理を,コンピュータに実行させるためのプログラムであって,
    前記コンピュータに,
    スレッド生成部が,前記アプリケーションの実行開始の際に,前記アプリケーションの実行に使用する所定数のスレッドを生成する手順と
    スレッド管理情報記憶部が,前記生成したスレッドを管理する管理情報を記憶する手順と,
    前記アプリケーションにおける前記非同期入出力文に対応するデータ入出力処理の開始の際に,前記管理情報を参照して,前記生成したスレッド中に未使用状態のスレッドがある場合には,前記非同期入出力文に対応するデータ入出力処理としてスレッド利用データ入出力処理を行うと決定し,前記非同期入出力文に対応するデータ入出力処理として前記生成したスレッド中に未使用状態のスレッドがない場合には,非同期I/O利用データ入出力処理を行うと決定する手順と,
    スレッド利用入出力処理部が,前記管理情報においてデータ入出力処理に利用する前記未使用状態のスレッドの状態をデータ入出力処理が終了するまで使用状態に設定し,前記未使用状態のスレッドを利用するデータ入出力処理である前記スレッド利用データ入出力処理を実行する手順と,
    システム利用入出力処理部が,システムコールまたはシステムライブラリにより提供される非同期I/Oを利用するデータ入出力処理である前記非同期I/O利用データ入出力処理を実行する手順とを
    実行させるためのデータ入出力制御プログラム。
  4. プログラミング言語の非同期入出力文を含むソースプログラムによって作成されたアプリケーションの前記非同期入出力文に対応する処理を実行するデータ入出力制御装置であって,
    前記アプリケーションの実行開始の際に,前記アプリケーションの実行に使用する所定数のスレッドを生成するスレッド生成部と,
    前記生成したスレッドを管理する管理情報を記憶するスレッド管理情報記憶部と,
    前記アプリケーションにおける前記非同期入出力文に対応するデータ入出力処理の開始の際に,前記管理情報を参照して,前記生成したスレッド中に未使用状態のスレッドがある場合には,前記非同期入出力文に対応するデータ入出力処理としてスレッド利用データ入出力処理を行うと決定し,前記生成したスレッド中に未使用状態のスレッドがない場合には,前記非同期入出力文に対応するデータ入出力処理として非同期I/O利用データ入出力処理を行うと決定する使用データ入出力決定部と,
    スレッド利用データ入出力処理を行うと決定した場合に,前記管理情報においてデータ入出力処理に利用する前記未使用状態のスレッドの状態をデータ入出力処理が終了するまで使用状態に設定し,前記未使用状態のスレッドを利用するデータ入出力処理を実行するスレッド利用入出力処理部と,
    非同期I/O利用データ入出力処理を行うと決定した場合に,システムコールまたはシステムライブラリにより提供される非同期I/Oを利用するデータ入出力処理を実行するシステム利用入出力処理部とを備える
    ことを特徴とするデータ入出力制御装置。
JP2010064417A 2010-03-19 2010-03-19 データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置 Expired - Fee Related JP5540799B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010064417A JP5540799B2 (ja) 2010-03-19 2010-03-19 データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010064417A JP5540799B2 (ja) 2010-03-19 2010-03-19 データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置

Publications (2)

Publication Number Publication Date
JP2011198063A JP2011198063A (ja) 2011-10-06
JP5540799B2 true JP5540799B2 (ja) 2014-07-02

Family

ID=44876171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010064417A Expired - Fee Related JP5540799B2 (ja) 2010-03-19 2010-03-19 データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置

Country Status (1)

Country Link
JP (1) JP5540799B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102509988B1 (ko) * 2015-12-15 2023-03-14 삼성전자주식회사 커넥션 기반 로드 밸런싱을 위한 저장 시스템 및 방법
JP6774147B2 (ja) * 2016-12-27 2020-10-21 日立オートモティブシステムズ株式会社 制御装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0812610B2 (ja) * 1988-08-15 1996-02-07 富士通株式会社 プロセス割当制御方式
JP2856003B2 (ja) * 1992-09-28 1999-02-10 日本電気株式会社 非同期データ入出力方式

Also Published As

Publication number Publication date
JP2011198063A (ja) 2011-10-06

Similar Documents

Publication Publication Date Title
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
JP5658365B2 (ja) ハイブリッド・コンピューティング環境における高スループット・コンピューティングの方法、システム及びプログラム
JP5245722B2 (ja) スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
KR101640848B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
JP7030514B2 (ja) ワークスティーリングサポートを有する効率的同期バリア技術
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
JP7050957B2 (ja) タスクスケジューリング
JP5093509B2 (ja) Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
KR100883655B1 (ko) 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법
WO2016092856A1 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体
JP2022509170A (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
JP2015225396A (ja) 車両制御装置
JP5030647B2 (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
JP5540799B2 (ja) データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置
JP5195408B2 (ja) マルチコアシステム
JP2005129001A (ja) プログラム実行装置、マイクロプロセッサ及びプログラム実行方法
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP2008176804A (ja) タスクスケジューリングシステム、方法、およびプログラム
JP5678347B2 (ja) Itシステムの構成方法、そのコンピュータプログラムおよびitシステム
JP4017005B2 (ja) 演算装置
KR101332839B1 (ko) 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
Suzuki et al. Real-time GPU resource management with loadable kernel modules
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140217

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140421

R150 Certificate of patent or registration of utility model

Ref document number: 5540799

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees