JP2856003B2 - 非同期データ入出力方式 - Google Patents

非同期データ入出力方式

Info

Publication number
JP2856003B2
JP2856003B2 JP28237292A JP28237292A JP2856003B2 JP 2856003 B2 JP2856003 B2 JP 2856003B2 JP 28237292 A JP28237292 A JP 28237292A JP 28237292 A JP28237292 A JP 28237292A JP 2856003 B2 JP2856003 B2 JP 2856003B2
Authority
JP
Japan
Prior art keywords
asynchronous
input
output
processing
thread
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 - Lifetime
Application number
JP28237292A
Other languages
English (en)
Other versions
JPH06110813A (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
Nippon Electric Co 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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP28237292A priority Critical patent/JP2856003B2/ja
Publication of JPH06110813A publication Critical patent/JPH06110813A/ja
Application granted granted Critical
Publication of JP2856003B2 publication Critical patent/JP2856003B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はメモリと磁気ディスク装
置等の周辺装置との間に於ける非同期データ入出力方式
に関する。
【0002】
【従来の技術】メモリと各種周辺装置との間の入出力処
理は通常、同期型の入出力処理、つまり入出力処理が終
わるまで入出力処理を要求したプロセスの処理を中断さ
せ、入出力処理要求終了後に再開させるようにしてい
る。
【0003】即ち、図7に示すように、ユーザプロセス
からデータ入出力要求61が発生すると、カーネル空間
処理に移行し、周辺装置とメモリとの間でデータ転送処
理を開始する(62)。
【0004】要求されたデータ転送処理の終了63によ
り、カーネル空間処理からユーザ空間処理に制御が戻
り、次の処理ステップ64が行なわれる。
【0005】しかしながら、このような方式では周辺装
置の入出力速度の遅さにより、ユーザプロセス全体の処
理時間が長くなるという問題が発生する。
【0006】そこで、データ入出力処理を高速化するた
め、いくつかの手法が採用されている。
【0007】例えば、プロセスは書き込み時にメモリ上
の特定領域であるバッファ上にデータを転送しただけで
書き込み処理を終了し、実際の周辺装置への書き込みは
その後、適当なタイミングで別のプロセスにより行なう
遅延書き込み方式や、読み出しではそれ以前に同一デー
タへのアクセスがあり、メモリ上のバッファにキャッシ
ュとして残されていて、且つデータが有効な場合、それ
を利用するといった方式が採用されている。
【0008】更に、別のプロセスやスレッドにより、共
有メモリとセマフォ等の使用を通して入出力処理と他の
処理を重ねる非同期型の入出力処理も提案されている。
【0009】
【発明が解決しようとする課題】データ入出力処理に於
ける従来の高速化手法の内、遅延書き込み方式では、ブ
ロックの一部を書き換える場合は、プロセスが周辺装置
からバッファにそのブロックを読み込み、オペレーティ
ングシステムがバッファ上に於いて書き換えを行なうこ
とが必要になり、また、バッファへのデータ転送中にバ
ッファが満杯になった場合には、バッファから周辺装置
へデータが転送され、バッファに空き領域ができるのを
待たなければならない。このように、遅延書き込み方式
でも、プロセスが処理速度の遅い周辺装置との間でデー
タ転送を行なったり、バッファに空き領域ができるのを
待ったりしなければならない場合があるため、プロセス
全体の処理時間を短くすることが難しいという問題があ
った。
【0010】また、キャッシュの読み出しでは、バッフ
ァ内にデータが存在しない場合、効果がないという問題
がある。
【0011】更に、共有メモリとセマフォを用いる手法
は、複数の非同期入出力処理を行なう場合、その分の共
有メモリが必要となり、メモリの利用効率が悪いという
問題がある。
【0012】本発明は前述の如き問題点を解決したもの
であり、その目的は、メモリの利用効率を低下させるこ
となく、プロセス全体の処理時間を短くすることができ
る非同期データ入出力方式を提供することにある。
【0013】
【課題を解決するための手段】本発明は上記目的を達成
するため、プロセスと周辺装置との間でデータの入出力
を非同期で行なう非同期データ入出力方式に於いて、前
記プロセスは前記周辺装置に対するデータの非同期入出
力要求が発生することにより、カーネルにデータ領域が
自プロセスのデータ領域と共通なスレッドの生成を要求
し、前記カーネルによって生成されたスレッドは前記デ
ータ領域を使用して前記プロセスで発生した非同期入出
力要求を代行するようにしたものである。
【0014】
【作用】プロセスは周辺装置に対するデータの非同期入
出力要求が発生すると、カーネルに入出力処理を代行す
るスレッドの生成を要求する。このスレッドはプロセス
のデータ領域を共有し、プロセスで発生したデータ入出
力要求に従った処理を上記データ領域を使用して行な
う。スレッドが入出力処理を行なっている間、プロセス
は他の処理を行なうことが可能になる。
【0015】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
【0016】図1は本発明の実施例のブロック図であ
り、プロセス1と、スレッド2と、データ領域3と、テ
キスト領域4と、スタック領域5,6と、カーネル7
と、磁気ディスク装置8とから構成されている。
【0017】スレッド2はプロセス1に代わってデータ
入出力を代行するものであり、プロセス1がデータ領域
3に存在する非同期入出力ライブラリ中の非同期読み出
しライブラリ関数或いは非同期書き込みライブラリ関数
を読み出すことにより生成される。
【0018】生成されたスレッド2はプロセス1のデー
タ領域3,テキスト領域4を共有し、プロセス1の非同
期入出力要求に従い、カーネル7に対して通常の入出力
要求を行ない、磁気ディスク8とデータ領域3との間で
データ転送を実行する。即ち、プロセス1が他の処理を
行なっている間にスレッド2によって入出力処理が行な
われる。
【0019】図2は非同期入出力ライブラリ中の非同期
入出力ライブラリ関数の種類と、その処理内容を示した
ものである。
【0020】非同期入出力ライブラリ関数には非同期読
み出しライブラリ関数t_areadと、非同期書き込
みライブラリ関数t_awriteと、非同期入出力処
理終了待ちライブラリ関数t_aiowaitと、非同
期入出力処理キャンセルライブラリ関数t_acanc
e1とがある。
【0021】パラメータcreatethreadはス
レッドを新たに作成することを要求し、パラメータki
llthreadはスレッドの消滅を要求し、パラメー
タaiosetはカーネル内非同期入出力要求テーブル
の設定を要求し、パラメータaiocheckはその要
求テーブルの検査を要求し、パラメータaiodelは
そのテーブルをリストから取り除くことを要求するもの
である。
【0022】図3は非同期入出力要求発生時に設定する
非同期入出力要求テーブルと他のカーネルテーブルとの
関連を示した図である。
【0023】非同期入出力要求テーブル11〜13はプ
ロセス1が非同期読み出しライブラリ関数または非同期
書き込みライブラリ関数を呼び出すことにより設定され
るカーネルテーブルであり、プロセス1のプロセス管理
テーブル14からのリスト及び非同期入出力の対象とす
るファイルのファイル管理テーブル15,16からのリ
ストに接続される。この例は、非同期入出力要求テーブ
ル11,13がファイル管理テーブル15が管理してい
るファイルに対する入出力処理に対応し、非同期入出力
要求テーブル12がファイル管理テーブル16が管理し
ているファイルに対する入出力処理に対応していること
を示している。
【0024】各非同期入出力要求テーブル11〜13は
ファイル管理テーブル15,16からのリストポインタ
を格納するフィールド17と、プロセス管理テーブル1
4からのリストポインタを格納するフィールド18と、
プロセス1が入出力要求待ちであるか否かを示すフラグ
が設定されるフィールド19と、ユーザが入出力制御の
処理に使用する制御構造体へのポインタを格納するフィ
ールド20と、入出力処理を代行するスレッドの識別子
を格納するフィールド21とを含んでいる。尚、制御構
造体にはデータの入出力を行なうファイルの識別子,デ
ータの入出力を行なうファイルの先頭アドレス,転送デ
ータ量,入出力に使用されるデータ領域3のアドレス等
が設定される。
【0025】図4はプロセス1に入力要求,出力要求が
発生した場合の処理例を示すフローチャートである。
【0026】プロセス1は入力要求,出力要求が発生す
ると、発生した入力要求或いは出力要求に対応した制御
構造体をデータ領域3に設定すると共に、設定した制御
構造体のアドレスを渡してテキスト領域4に存在する非
同期入出力ライブラリ中の非同期読み出しライブラリ関
数t_aread或いは非同期書き込みライブラリ関数
t_awriteを呼び出す。
【0027】非同期読み出しライブラリ関数t_are
ad,非同期書き込みライブラリ関数t_awrite
はプロセス1から呼び出されると、カネール7を呼び出
し(システムコール)、スレッドの生成を要求するパラ
メータcreatethreadを渡す (ステップS3
1)。その際、制御構造体のアドレスも渡す。
【0028】これにより、カーネル7はスレッド2を生
成すると共に、スレッド識別子をスレッド2に返す (ス
テップS32)。
【0029】その後、プロセス1は次の処理ステップを
実行する (ステップS33がyes,ステップS3
4)。
【0030】一方、ステップS32で生成されたスレッ
ド2はカーネル7を呼び出し、非同期入出力要求テーブ
ルの設定を要求するパラメータaiosetを渡す (ス
テップS35)。
【0031】これにより、カーネル7はフィールド17
にステップS31でアドレスが渡された制御構造体が示
す入出力対象となるファイルを管理するファイル管理テ
ーブル15からのリストポインタを、フィールド18に
プロセス1を管理するプロセス管理テーブル14からの
リストポインタを、フィールド19に入出力要求待ち合
わせが行なわれていないことを示すフラグを、フィール
ド20にステップS31で渡された制御構造体のアドレ
スを、フィールド21にステップS32で生成したスレ
ッド2のスレッド識別子を設定した非同期入出力要求テ
ーブル11を作成する (ステップS36)。尚、既に非
同期入出力要求テーブルが存在する場合は、最後の非同
期入出力要求テーブルに作成した非同期入出力要求テー
ブルをつなぐ。
【0032】その後、スレッド2はカーネル7を呼び出
し、スレッド識別子を渡して入出力処理を行なうことを
要求する (ステップS37)。
【0033】これにより、カーネル7は渡されたスレッ
ド識別子がフィールド21に格納されている非同期入出
力要求テーブル(非同期入出力要求テーブル11とす
る)のフィールド20に格納されているアドレスが示す
制御構造体の内容に従った入出力処理を行なう (ステッ
プS38)。
【0034】入出力処理が終了すると、スレッド2はカ
ーネル7を呼び出し、スレッド識別子を渡してそのスレ
ッド識別子がフィールド21に格納されている非同期入
出力要求テーブル11をプロセス管理テーブル,ファイ
ル管理テーブルのリストから外すことを要求すると共
に、その終了を待って一時停止しているプロセスが存在
す場合はその一時停止を解除することを要求する (ステ
ップS39)。
【0035】これにより、カーネル7は非同期入出力要
求テーブル11をプロセス管理テーブル14,ファイル
管理テーブル15のリストから外し、また、非同期入出
力要求テーブル11のフィールド19に設定されている
フラグが非同期入出力処理終了待ちを行なっていること
を示している場合は、プロセス1の一時停止を解除する
(ステップS40)。
【0036】その後、スレッド2は該当する制御構造体
の内容を更新し、対応する入出力処理が終了したことを
表示する (ステップS41)。以上でスレッド2の処理
は終了したので、スレッド2は自身を消滅する (ステッ
プS42)。
【0037】図5はプロセス1に或るファイルに対する
非同期入出力処理終了待ち合わせが発生した場合の処理
例を示すフローチャートである。
【0038】プロセス1は或るファイルに対する非同期
入出力処理終了待ち合わせが発生すると、テキスト領域
4に存在する非同期入出力ライブラリ中の非同期入出力
処理終了待ちライブラリ関数t_aiowaitを呼び
出す。
【0039】非同期入出力処理終了待ちライブラリ関数
t_aiowaitはプロセス1から呼び出されると、
カーネル7を呼び出し、非同期入出力要求テーブル11
〜13のリストをロックすることを要求する (ステップ
S51)。
【0040】これにより、カーネル7は非同期入出力要
求テーブル11〜13のリストをロックし、非同期入出
力要求テーブルの作成,削除が行なえないようにする
(ステップS52)。
【0041】その後、プロセス1はユーザの記憶空間に
存在する制御構造体のエラーフィールドを検査し (ステ
ップS53)、待ち合わせが発生しているファイルに対
する入出力処理の内、既に終了したものがあるか否かを
判断する (ステップS54)。
【0042】そして、終了しているものがあると判断し
た場合は、カーネル7を呼び出し、ステップS52でロ
ックした非同期入出力要求テーブル11〜13を解除す
ることを要求し(ステップS55)、その後、次の処理
ステップを行なう (ステップS56)。
【0043】また、1つも終了していないと判断した場
合は、プロセス1は、システムコールを行ない、カーネ
ル7に非同期入出力処理終了待ちを行なっているファイ
ルのファイル識別子を渡し、上記ファイルに対する入出
力処理を示す非同期入出力要求テーブルのフィールド1
9にプロセス1が非同期入出力処理終了待ちをしている
ことを示すフラグを設定することを要求する (ステップ
S57)。
【0044】これにより、カーネル7は先ず、ステップ
S52でロックした非同期入出力要求テーブル11〜1
3を解除し (ステップS58)、次いでプロセス管理テ
ーブル14に接続された非同期入出力要求テーブル11
〜13のリストを探索し、プロセス1から渡されたファ
イル識別子と対応するファイル管理テーブルと接続され
ている非同期入出力要求テーブルのフラグ19にプロセ
ス1が非同期入出力処理終了待ちをしていることを示す
フラグを設定し (ステップS59)、その後、プロセス
1を一時停止させる (ステップS60)。今、例えば、
プロセス1からファイル管理テーブル15によって管理
されているファイルのファイル識別子が渡されたとする
と、カーネル7は非同期入出力要求テーブル11,13
のフィールド19にフラグを設定することになる。
【0045】一時停止状態にされたプロセス1は図4の
ステップS40で一時停止が解除されることにより、次
の処理ステップを実行する (ステップS61)。
【0046】図6はプロセス1に非同期入出力要求をキ
ャンセルする要求が発生した場合の処理例を示すフロー
チャートである。
【0047】プロセス1は或るファイルに対する非同期
入出力要求をキャンセルする場合、テキスト領域4中に
存在する非同期入出力ライブラリ中の非同期入出力処理
キャンセルライブラリ関数t_acancelを呼び出
す。その際、プロセス1はキャンセルする非同期入出力
要求が入出力の対象としているファイルのファイル識別
子を非同期入出力処理キャンセルライブラリ関数t_a
cancelに渡す。
【0048】非同期入出力処理キャンセルライブラリ関
数t_acancelはプロセス1から呼び出される
と、システムコールを行ない、カーネル7に上記ファイ
ル識別子を渡してそのファイルに対する非同期入出力処
理を示している非同期入出力要求テーブルの削除を要求
する (ステップS71)。
【0049】これにより、カーネル7は非同期入出力要
求テーブルをロックして操作権を占有した後、削除を要
求された非同期入出力要求テーブルをプロセス管理テー
ブル及びファイル管理テーブルからのリストから削除す
る (ステップS72)。例えば、ファイル管理テーブル
15が管理しているファイルのファイル識別子が渡され
た場合は、カーネル7は非同期入出力要求テーブル1
1,13を削除することになる。
【0050】その後、カーネル7はシステムコールから
の戻り値として、削除した非同期入出力要求テーブルの
フィールド21に設定されているスレッド識別子をプロ
セス1に返す (ステップS73)。
【0051】スレッド識別子が返されると、プロセス1
はシステムコールを行ない、カーネル7に上記スレッド
識別子を有するスレッドを強制終了させることを要求す
る (ステップS74)。
【0052】これにより、カーネル7は上記スレッド識
別子を有するスレッド2を強制終了させ、資源を解放す
る (ステップS75)。
【0053】また、スレッド2が強制終了させられる
と、プロセス1は次の処理ステップの処理を行なう (ス
テップS76)。
【0054】
【発明の効果】以上説明したように、本発明はプロセス
に周辺装置に対するデータの非同期入出力要求が発生し
た場合、その入出力処理を代行するスレッドを生成し、
スレッドによって入出力処理を行なわせるものであり、
その間、プロセスは他の処理を行なうことが可能になる
ので、プロセス全体の処理時間を短縮させることが可能
になる効果がある。また、スレッドはプロセスのデータ
領域を共有しており、そのデータ領域を用いてデータの
非同期入出力を行なうものであるので、共有メモリを使
用する方式に比較してメモリの使用効率を高いものにす
ることができる効果もある。
【図面の簡単な説明】
【図1】本発明の実施例のブロック図である。
【図2】非同期入出力ライブラリ中の非同期入出力ライ
ブラリ関数の種類と、その処理内容を示した図である。
【図3】非同期入出力要求テーブルの接続関係を示す図
である。
【図4】非同期読み出し時及び非同期書き込み時の処理
例を示すフローチャートである。
【図5】非同期入出力処理終了待ち時の処理例を示すフ
ローチャートである。
【図6】非同期入出力処理キャンセル時の処理例を示す
フローチャートである。
【図7】従来例の説明図である。
【符号の説明】
1…プロセス 2…スレッド 3…データ領域 4…テキスト領域 5,6…スタック領域 7…カーネル 8…磁気ディスク装置 11〜13…非同期入出力要求テーブル 14…プロセス管理テーブル 15,16…ファイル管理テーブル

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 プロセスと周辺装置との間でデータの入
    出力を非同期で行なう非同期データ入出力方式に於い
    て、 前記プロセスは前記周辺装置に対するデータの非同期入
    出力要求が発生することにより、カーネルにデータ領域
    が自プロセスのデータ領域と共通なスレッドの生成を要
    求し、 前記カーネルによって生成されたスレッドは前記データ
    領域を使用して前記プロセスで発生した非同期入出力要
    求を代行することを特徴とする非同期データ入出力方
    式。
JP28237292A 1992-09-28 1992-09-28 非同期データ入出力方式 Expired - Lifetime JP2856003B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28237292A JP2856003B2 (ja) 1992-09-28 1992-09-28 非同期データ入出力方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28237292A JP2856003B2 (ja) 1992-09-28 1992-09-28 非同期データ入出力方式

Publications (2)

Publication Number Publication Date
JPH06110813A JPH06110813A (ja) 1994-04-22
JP2856003B2 true JP2856003B2 (ja) 1999-02-10

Family

ID=17651551

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28237292A Expired - Lifetime JP2856003B2 (ja) 1992-09-28 1992-09-28 非同期データ入出力方式

Country Status (1)

Country Link
JP (1) JP2856003B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100714710B1 (ko) 2006-02-22 2007-05-04 삼성전자주식회사 입출력 작업에 의해 블로킹된 스레드를 강제 종료하는 장치및 방법
JP5540799B2 (ja) * 2010-03-19 2014-07-02 富士通株式会社 データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置

Also Published As

Publication number Publication date
JPH06110813A (ja) 1994-04-22

Similar Documents

Publication Publication Date Title
US5410700A (en) Computer system which supports asynchronous commitment of data
JP5142995B2 (ja) メモリページ管理
JP2586219B2 (ja) 高速媒体優先解放型排他方式
JP2856003B2 (ja) 非同期データ入出力方式
JP3882461B2 (ja) 記憶装置システム及びそのバックアップ取得方法
US5926835A (en) Method of isolating a memory location containing an obsolete value
JP3260399B2 (ja) 非同期i/oダイナミックプライオリティチェンジ方式
WO1993003436A1 (en) Method and apparatus for reducing lock period of shared buffer
JPH08202595A (ja) ファイルシステム
WO2022155937A1 (zh) 一种动态链接程序的安全控制方法
JP2574537B2 (ja) プロセス管理装置
JPH0337748A (ja) 主記憶を利用した外部記憶アクセス方式
JPH04148225A (ja) ファイルアクセス制御方式および装置
JPS592051B2 (ja) 相互排他要求選択装置
JP2967687B2 (ja) 事前バッファフラッシュシステム
JP2641399B2 (ja) フアイル管理装置
JPH0546641A (ja) オンラインデータ引継ぎ方式
JPH04361338A (ja) 取引ログデータ引継ぎ方式
JP2988048B2 (ja) 辞書情報常駐アクセス装置
JPH04638A (ja) システム立上げ方式
JPH0652028A (ja) ファイル管理装置
JPH1091464A (ja) 高速描画システム、高速描画方法および高速描画プログラムを記録した記録媒体
JPH05282773A (ja) 書換え型光ディスクシステム
JPH0658640B2 (ja) 電子計算機の制御方法
JPH05128004A (ja) マイグレーシヨン処理方式