(57)【特許請求の範囲】
【請求項１】
最悪実行時間の算出が必要な入出力処理が格納され、格納された複数の入出力処理の順序が変更不能に構成された第１キューと、
最悪実行時間の算出が不要な入出力処理が格納され、格納された複数の入出力処理の順序が変更可能に構成された第２キューと、
前記第２キューに格納された前記複数の入出力処理を、処理時間が短縮されるように並べ替えるオーダリング部と、
入出力処理を取り出すアクセス先を前記第１のキューまたは前記第２のキューのいずれかに決定するための条件を定めた切り替え条件を保持する切り替え条件保持部と、
前記切り替え条件に基づいて、前記第１キューまたは前記第２キューから入出力処理を取得して実行する実行部と、を備え、
入出力処理は優先順位に従って入力されるものである入出力制御装置。
【請求項２】
前記第１キューは、確実に時間制約を厳守して処理を終了する必要があるハードリアルタイムアプリケーションからの入出力処理と、時間制約を厳守して処理を終了する必要はないが、その処理の価値が、処理終了時間が長くなるにつれて下がるソフトリアルタイムアプリケーションからの入出力処理と、を格納し、
前記第２キューは、時間制約を厳守して処理を終了する必要が無い非リアルタイムアプリケーションからの入出力処理を格納することを特徴とする請求項１に記載の入出力制御装置。
【請求項３】
前記第１キューから取り出して実行した入出力処理の状態である第１キュー実行状態を保持する第１キュー状態保持部を備え、
前記実行部は、前記切り替え条件と、前記第１キュー実行状態と、に基づいて、前記第１キューまたは前記第２キューから入出力処理を取得して実行することを特徴とする請求項１または請求項２に記載の入出力制御装置。
【請求項４】
前記第１キュー状態保持部は、連続して前記第１キューから取り出して実行した入出力処理の数である第１キュー連続処理数を保持し、
前記切り替え条件は、前記第１キュー連続処理数の上限値である閾値であり、
前記実行部は、前記第１キュー連続処理数が前記閾値未満である場合には前記第１キューから入出力処理を取得して実行し、前記第１キュー連続処理数が前記閾値に達した場合には前記第２キューから入出力処理を取得して実行することを特徴とする請求項３に記載の入出力処理装置。
【請求項５】
前記切り替え条件保持部は、入出力処理を送信する送信装置からの切り替え条件変更要求に応じて保持する前記切り替え条件を変更することを特徴とする請求項１乃至請求項４のいずれか１項に記載の入出力装置。
【請求項６】
前記第１キュー状態保持部は、前記ハードリアルタイムアプリケーションからの入出力処理が前記入出力処理装置に入力されている間は、前記第１キュー連続処理数を増加させないことを特徴とする請求項４または請求項５に記載の入出力処理装置。
【請求項７】
前記オーダリング部は、前記第２キューに格納された前記複数の入出力処理を、処理時間が最短となるように並べ替えることを特徴とする請求項１乃至請求項６のいずれか１項に記載の入出力処理装置。
【請求項８】
請求項１に記載の前記入出力処理装置と、入出力処理を送信する送信装置と、を備える情報記憶システムであって、
前記送信装置は、各アプリケーションの実行状態をモニタリングし、そのモニタリングの結果に応じて前記切り替え条件を変更する要求を前記入出力処理装置に送信することを特徴とする入出力処理システム。
【請求項９】
最悪実行時間の算出が必要な処理タスクが格納され、格納された複数の処理タスクの順序が変更不能に構成された第１キューと、
最悪実行時間の算出が不要な処理タスクが格納され、格納された複数の処理タスクの順序が変更可能に構成された第２キューと、
前記第２キューに格納された前記複数の処理タスクを、処理時間が短縮されるように並べ替えるオーダリング部と、
処理タスクを取り出すアクセス先を前記第１のキューまたは前記第２のキューのいずれかに決定するための条件を定めた切り替え条件を保持する切り替え条件保持部と、
前記切り替え条件に基づいて、前記第１キューまたは前記第２キューから処理タスクを取得して実行する実行部と、を備え、
処理タスクが優先順位に従って入力される情報処理装置。
【請求項１０】
入出力処理が優先順位に従って入力され、
入力データの並べ替えが出来ないように構成された第１キューに最悪実行時間の算出が必要な入出力処理を格納し、
入力データの並べ替えが出来るように構成された第２キューに最悪実行時間の算出が不要な入出力処理を格納し、
入出力処理を取り出すアクセス先を前記第１のキューまたは前記第２のキューのいずれかに決定するための条件を定めた切り替え条件を記憶し、
前記第２キューに格納された前記複数の入出力処理を、処理時間が短縮されるように並べ替え、
前記切り替え条件に基づいて、前記第１キューまたは前記第２キューから入出力処理を取得して実行する入出力処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は入出力制御装置及び入出力制御方法に関する。
【背景技術】
【０００２】
現在、ＳＡＴＡ（Serial Advanced Technology Attachment）ディクス等の二次記憶装置は、コマンドを効率的に処理するためのコマンドキューイング機能を備えるものが多い。コマンドキューイング機能とは、キューに入れられたコマンドの発行順序にかかわらず、最適な処理効率となるようにコマンドを並べ替えた後に処理する機能である。コマンドキューイング機能が有効な二次記憶装置に対し、入出力手段（ディスクデバイスドライバ）は複数個の入出力処理を同時に発行することができる。二次記憶装置は、有限の深さをもつキューを備え、入出力手段から受け取った入出力処理をキューに格納する。二次記憶装置内のファームウェアは、ディスクのシークタイムが最小となるようにキュー内の入出力処理を並べ替えた後に入出力処理を実行する。
【０００３】
二次記憶装置は、一般に自己のコマンドキューイング機能を有効にするか否かを設定できる。コマンドキューイング機能を有効にした場合、入出力処理が二次記憶装置のファームウェアにより並べ替えられてしまうため、実行順序をコントロールできなくなる。一方、コマンドキューイング機能を無効にした場合、ディスクのシークタイムを短縮することができなくなる。よって、一般的な二次記憶装置によっては、リアルタイム性が必要とされる入出力処理の実行と、コマンドキューイング機能による入出力処理の最適化と、の両立ができなかった。
【０００４】
特許文献１では、優先順位に基づいて、入力されたコマンドを適宜並べ替えて実行する入出力制御装置に関する技術が開示されている。当該入出力制御装置は、上位装置からの入出力処理の処理順序を複数のデバイス毎に管理するＤＡキューと、各デバイスへの入出力を管理するデバイスキューとを備える。当該入出力制御装置は、ＤＡキュー及びデバイスキューを優先順位に応じて並べ替えることにより、優先順位の高い処理を素早く処理することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−００６１３５号公報
【特許文献２】特開２００９−１８１４７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の入出力制御装置によっては、入出力処理の最悪実行時間を算出できないという問題がある。当該問題について以下に説明する。
【０００７】
最悪実行時間とは、ある計算タスクを入力してから完了するまでにかかる時間のうち、最長の時間（最悪のケースの時間）を指す。最悪実行時間を知ることは、リアルタイム性の要求される各アプリケーションのタイミング解析にとって最重要とされる。
【０００８】
特許文献１に記載の入出力制御装置は、キューに処理が入れられるたびに、優先度に応じてキュー内の処理の順序を頻繁に変更する。キューに入れられた処理順序が頻繁に変更されることにより、ある処理をキューに入力した時点から、当該処理を終了するまでの時間が算出できない。すなわち、各処理を入力してから終了するまでの最悪実行時間を算出できない。
【０００９】
つまり、特許文献１に記載の入出力装置によっては、コマンドキューイングによる処理高速化が図れるものの、リアルタイム性の要求される入出力処理の最悪実行時間が把握できない。
【００１０】
本発明はこのような問題を解決するためになされたものであり、リアルタイム性の要求される入出力処理の最悪実行時間を把握でき、かつ、リアルタイム性の要求されない入出力処理の処理時間の最適化を図れる入出力制御装置及び入出力制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明にかかる入出力制御装置の一態様は、最悪実行時間の算出が必要な入出力処理が格納され、格納された複数の入出力処理の順序が変更不能に構成された第１キューと、最悪実行時間の算出が不要な入出力処理が格納され、格納された複数の入出力処理の順序が変更可能に構成された第２キューと、前記第２キューに格納された前記複数の入出力処理を、処理時間が短縮されるように並べ替えるオーダリング部と、入出力処理を取り出すアクセス先を前記第１のキューまたは前記第２のキューのいずれかに決定するための条件を定めた切り替え条件を保持する切り替え条件保持部と、前記切り替え条件に基づいて、前記第１キューまたは前記第２キューから入出力処理を取得して実行する実行部と、を備え、入出力処理は優先順位に従って入力されるものである。
【００１２】
本発明にかかる入出力制御方法の一態様は、入出力処理が優先順位に従って入力され、入力データの並べ替えが出来ないように構成された第１キューに最悪実行時間の算出が必要な入出力処理を格納し、入力データの並べ替えが出来るように構成された第２キューに最悪実行時間の算出が不要な入出力処理を格納し、入出力処理を取り出すアクセス先を前記第１のキューまたは前記第２のキューのいずれかに決定するための条件を定めた切り替え条件を記憶し、前記第２キューに格納された前記複数の入出力処理を、処理時間が短縮されるように並べ替え、前記切り替え条件に基づいて、前記第１キューまたは前記第２キューから入出力処理を取得して実行するものである。
【００１３】
本発明にかかる情報処理装置の一態様は、最悪実行時間の算出が必要な処理タスクが格納され、格納された複数の処理タスクの順序が変更不能に構成された第１キューと、最悪実行時間の算出が不要な処理タスクが格納され、格納された複数の処理タスクの順序が変更可能に構成された第２キューと、前記第２キューに格納された前記複数の処理タスクを、処理時間が短縮されるように並べ替えるオーダリング部と、処理タスクを取り出すアクセス先を前記第１のキューまたは前記第２のキューのいずれかに決定するための条件を定めた切り替え条件を保持する切り替え条件保持部と、前記切り替え条件に基づいて、前記第１キューまたは前記第２キューから処理タスクを取得して実行する実行部と、を備え、
処理タスクが優先順位に従って入力されるものである。
【００１４】
本発明にかかる入出力処理システムの一態様は、前記入出力処理装置と、前記送信装置と、を備える情報記憶システムであって、前記送信装置は、各アプリケーションの実行状態をモニタリングするモニタリング部を備え、前記モニタリングの結果に応じて前記切り替え条件変更要求を送信することを特徴とするものである。
【発明の効果】
【００１５】
本発明によれば、リアルタイム性の要求される入出力処理の最悪実行時間を把握でき、かつ、リアルタイム性の要求されない入出力処理の処理時間の最適化を図れる入出力制御装置及び入出力制御方法を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１にかかる入出力処理システムのブロック図である。
【図２】実施の形態１にかかる入出力処理分別部１０１の動作を示すフローチャートである。
【図３】実施の形態１にかかる入出力実行部１０８の入出力処理の実行動作を示したフローチャートである。
【図４】実施の形態１にかかる入出力処理システムのブロック図である。
【発明を実施するための形態】
【００１７】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１は本実施の形態にかかる入出力処理システムの構成を示すブロック図である。入出力処理システム１は、二次記憶装置１０と、オペレーティングシステム２００と、特権領域管理部２１０と、ハードリアルタイムアプリケーション２２０と、ソフトリアルタイムアプリケーション２３０と、非リアルタイムアプリケーション２４０と、を備える。
【００１８】
二次記憶装置１０は、入出力処理分別部１０１と、特権領域用キュー１０２と、非特権領域用キュー１０３と、オーダリング部１０４と、特権領域情報１０５と、閾値保持部１０６と、特権領域連続処理数保持部１０７と、入出力実行部１０８と、を備える。
【００１９】
入出力分別部１０１は、入力された入出力処理の種別に応じて、当該入力された入出力処理を特権領域用キュー１０２と、非特権領域用キュー１０３とに振り分けて入力する処理部である。入力された入出力処理が特権領域に対するものである場合、入出力分別部１０１は、当該入出力処理を特権領域用キュー１０２に入力する。特権領域に対する処理は、ハードリアルタイムアプリケーション２２０及びソフトリアルタイムアプリケーション２３０から出力された入出力処理である。特権領域とは、最悪実行時間の算出が必要な入出力処理が行われる領域である。一方、入力された入出力処理が非特権領域に対するものである場合、入出力分別部１０１は、当該入出力処理を非特権領域用キュー１０３に入力する。非特権領域に対する処理は、非リアルタイムアプリケーション２４０から出力された入出力処理である。非特権領域とは、最悪実行時間の算出が不要な入出力処理が行われる領域である。
【００２０】
特権領域用キュー１０２は、ハードリアルタイムアプリケーション２２０及びソフトリアルタイムアプリケーション２３０から出力された入出力処理が格納されるキューである。特権領域用キュー１０２に格納される入出力処理は、最悪実行時間の算出が必要な入出力処理である。特権領域用キュー１０２に格納された入出力処理の順序は並び変えられることが無いＦＩＦＯ（First In, First Out）キューであり、有限の深さを持つ。すなわち、特権領域用キュー１０２に格納された入出力処理は、キューに入れられた順序のまま処理が行われる。
【００２１】
非特権領域用キュー１０３は、非リアルタイムアプリケーション２４０から出力された入出力処理が格納されるキューである。非特権領域用キュー１０３は有限の深さを持つキューである。非特権領域用キュー１０３に格納される入出力処理は、最悪実行時間の算出が不要な入出力処理である。非特権領域用キュー１０３に格納された入出力処理の順序は、オーダリング部１０４により並べ替えられる。
【００２２】
オーダリング部１０４は、非特権領域用キュー１０３に格納された入出力処理を処理時間が短縮されるように並べ替える処理部である。本例では、オーダリング部１０４は、既存のコマンドキューイングにおけるリオーダリング機能を実現する処理部である。オーダリング部１０４は、二次記憶装置１０内のディスク（不図示）のシークタイムが最短となるように、非特権領域用キュー１０３内の入出力処理を並べ替える。
【００２３】
特権領域情報１０５は、二次記憶装置１０内の特権領域に関する情報を保持したファイルである。たとえば、特権領域情報１０５には、入出力実行部１０８が入出力処理を行う二次記憶装置１０内の各ディスクが特権領域にかかるものであるか否かという情報を保持する。
【００２４】
閾値保持部１０６は、入出力処理を取り出すアクセス先を特権領域用キュー１０２または非特権領域用キュー１０３のいずれかに決定するための条件を定めた切り替え条件を保持する。本例では、閾値保持部１０６は、連続して特権領域用キュー１０２から取り出して実行した入出力処理の数の閾値として保持する。すなわち、閾値保持部１０６は、特権領域への入出力を連続して最大何回まで許可するかという情報を保持する。
【００２５】
閾値を超えない場合には、特権領域用キュー１０２に格納された入出力処理が実行される。閾値に達した場合には、非特権領域用キュー１０３に格納された入出力処理が実行される。たとえば、閾値保持部１０６が閾値として"１０"を保持していた場合、特権領域連続処理数保持部１０７の保持する値が"１０"となった後に、非特権領域用キュー１０３から１個の入出力処理が取り出され、実行される。
【００２６】
なお、閾値保持部１０６の保持する値を無限大と設定することも可能である。この場合、特権領域用キュー１０２に入出力処理が１つでも格納されている場合には、特権領域用キュー１０２から入出力処理が取り出されて実行されることになる。
【００２７】
当該閾値は、システム構成を行う際（システムのインストール等の処理を行う際）に特権領域管理部２１０により設定される。また、当該閾値は後述するモニタリング部２０２による変更要求に応じて変更されうる。
【００２８】
特権領域連続処理数保持部１０７は、特権領域用キュー１０２から取り出して実行した入出力処理の状態（本例では、連続して特権領域用キュー１０２から取り出して実行した入出力処理の数）を保持する処理部である。特権領域連続処理数保持部１０７の保持する値は、入出力実行部１０８の更新要求により変更される。ただし、ハードリアルタイムアプリケーション２２０からの入出力が処理されている間には、特権領域連続処理数保持部１０７は保持する値を変更しないように制御する。特権領域連続処理数保持部１０７が保持する値を変更しないことにより、ハードリアルタイムアプリケーション２２０が動作している間には、特権領域連続処理数保持部１０７の保持する値が閾値に達することはない。閾値に達することが無いため、ハードリアルタイムアプリケーション２２０が動作している間は、常に特権領域用キュー１０２内の入出力処理が実行される。
【００２９】
入出力実行部１０８は、特権領域用キュー１０２または非特権領域用キュー１０３から入出力処理を取り出して実行する処理部である。特権領域連続処理数保持部１０７が保持する値が閾値保持部１０６の保持する閾値に達しておらず、かつ、特権領域用キュー１０２が空ではない場合、入出力実行部１０８は特権領域用キュー１０２から入出力処理を取り出して実行する。特権領域用キュー１０２から入出力処理を取り出して実行した後に、入出力実行部１０８は、特権領域連続処理数保持部１０７の保持する値のインクリメント（"１"増加させる）するための要求を特権領域連続処理数保持部１０７に出力する。
【００３０】
一方、特権領域連続処理数保持部１０７が保持する値が閾値保持部１０６の保持する閾値に達した場合、または、特権領域用キュー１０２が空の場合、入出力実行部１０８は非特権領域用キュー１０３から入出力処理を取り出して実行する。非特権領域用キュー１０３からから入出力処理を取り出して実行した後に、入出力実行部１０８は、特権領域連続処理数保持部１０７の保持する値を"０"に設定するための要求を特権領域連続処理数保持部１０７に出力する。
【００３１】
オペレーティングシステム２００は、入出力部２０１と、モニタリング部２０２と、を備える。オペレーティングシステム２００は、コンピュータ等の情報処理装置において、ハードウェアを抽象化したインターフェイスをアプリケーションソフトウェアに提供するソフトウェアであり、基本ソフトウェアの一種である。
【００３２】
入出力部２０１は、二次記憶装置１０とのインターフェイスとなる処理部である。入出力部２０１は、各アプリケーション（２２０〜２４０）から入力された入出力処理を二次記憶装置１０の入出力処理分別部１０１に入力する。この際、入出力部２０１は、オペレーティングシステム２００のスケジューラ機能等により、特権領域に対する入出力処理を優先度に応じた順序に並べ替えた後に入出力処理分別部１０１に入力する。
【００３３】
モニタリング部２０２は、各アプリケーション（２２０〜２４０）から生成されたプロセスの処理状態等をモニタリングする処理部である。モニタリング部２２０は、オペレーティングシステム２００内において常時稼働する処理部であり、各アプリケーション（２２０〜２４０）の動作状態を監視する。モニタリング部２０２は当該監視により、非リアルタイムアプリケーションであっても長時間二次記憶装置２０への入出力処理が終了していないアプリケーションがあるか否かを検出する。このようなアプリケーションが検出された場合、モニタリング部２０２は閾値保持部１０６に対して閾値を下げるような変更を要求する。
【００３４】
またモニタリング部２０２は、ハードリアルタイムアプリケーション２２０の動作状況をモニタリングし、当該動作状況を特権領域連続処理数保持部１０７に通知する。具体的には、モニタリング部２０２は、ハードリアルタイムアプリケーション２２０が動作開始状態になったことを特権領域連続処理数保持部１０７に通知する。また、ハードリアルタイムアプリケーション２２０の処理が終了したことを検知した場合、モニタリング部２０２は、停止状態になったことを特権領域連続処理数保持部１０７に通知する。当該通知に応じて、特権領域連続処理数保持部１０７は、保持する値をインクリメントするか否かを決定する。
【００３５】
特権領域管理部２１０は、入出力処理システム１のシステム構成時に二次記憶装置１０における各ディスクの状態を設定する処理部である。すなわち、特権領域管理部２１０は二次記憶装置１０の各ディスクが特権領域であるか、非特権領域であるかを設定するための管理部である。特権領域管理部が設定した設定内容は、特権領域情報１０５として保存される。
【００３６】
ハードリアルタイムアプリケーション２２０は、確実に時間制約を厳守して処理を終了する必要がある処理を行うアプリケーションである。ソフトリアルタイムアプリケーション２３０は、時間制約を厳守して処理を終了する必要がないが、その処理の価値が、処理終了時間が長くなるにつれて下がるアプリケーションである。ハードリアルタイムアプリケーション２２０及びソフトリアルタイムアプリケーション２３０から出力された入出力処理は、二次記憶装置１０に送信された後に特権領域用キュー１０２に格納される。
【００３７】
非リアルタイムアプリケーション２４０は、時間制約を厳守して処理を終了する必要が無い処理を行うアプリケーションである。非リアルタイムアプリケーション２４０から出力された入出力処理は、二次記憶装置１０に送信された後に非特権領域用キュー１０３に格納される。
【００３８】
次に本実施の形態にかかる入出力処理システム１のシステム構成を決定する際の各処理部の動作について説明する。システムを構成する（システムをインストールする）際に、ユーザは特権領域及び非特権領域を考慮して二次記憶装置１０の設定を行う。すなわち、ユーザはインストール時に二次記憶装置１０のどのディスクを特権領域または非特権領域にするかを指定する。たとえば、ユーザは二次記憶装置１０の１枚目のプラッタの表裏両面を特権領域と定めて、この領域にパーティション１を作成する。続いてユーザは、残りの領域を用いてパーティション２〜Ｎを作成して非特権領域とする。また、システムインストール時に、特権領域連続処理数保持部１０７の保持する値を"０"に設定する。
【００３９】
システムインストールの終了後、すなわちオペレーティングシステム２００のインストール及び特権領域／非特権領域の設定が終わった後に、ユーザは特権領域管理部２１０に閾値保持部１０６の閾値を決めるための指示を行う。特権領域管理部２１０は、閾値保持部１０６が保持する閾値を設定する。この閾値は、特権領域への入出力を連続して最大何回まで許可するかを定める。
【００４０】
続いて、本実施の形態にかかる入出力処理システム１による入出力処理の制御について図１〜図３を用いて説明する。図２は、入出力処理分別部１０１の動作を示すフローチャートである。まず、入出力処理分別部１０１の動作について説明する。
【００４１】
各アプリケーション（２２０〜２４０）が出力した入出力処理は、入出力部２０１に入力される。この際、各アプリケーションが出力した入出力処理が二次記憶装置１０のどのディスクに対する処理であるかは、例えばオペレーティングシステム２００の機能により認識可能である。入出力処理は、オペレーティングシステム２００のスケジューラ機能により処理の優先度が高い順序に並べ替えられる。入出力処理部２０１は、当該順序に並び変えられた入出力処理を入出力処理分別部１０１に入力する。
【００４２】
入出力処理分別部１０１は、入出力処理を受信する（Ｓ１０１）。入出力処理分別部１０１は、受信した入出力処理が特権領域への入出力であるか否かを判定する（Ｓ１０２）。特権領域への入出力である場合（Ｓ１０２：Ｙｅｓ）、入出力処理分別部１０１は特権領域用キュー１０２に空きがあるかを判定する（Ｓ１０３）。
【００４３】
特権領域用キュー１０２に空きがある場合（Ｓ１０３：Ｙｅｓ）、入出力処理分別部１０１は、当該入出力処理を特権領域用キュー１０２に格納する（Ｓ１０４）。一方、特権領域用キュー１０２に空きがない場合（Ｓ１０３：Ｎｏ）、入出力処理分別部１０１は、特権領域用キュー１０２に空きが無い旨を入出力部２０１に通知する（Ｓ１０５）。
【００４４】
一方、入力された入出力処理が非特権領域への入出力である場合（Ｓ１０２：Ｎｏ）、入出力処理分別部１０１は非特権領域用キュー１０３に空きがあるかを判定する（Ｓ１０６）。
【００４５】
非特権領域用キュー１０３に空きがある場合（Ｓ１０６：Ｙｅｓ）、入出力処理分別部１０１は、当該入出力処理を非特権領域用キュー１０３に格納する（Ｓ１０７）。一方、非特権領域用キュー１０３に空きがない場合（Ｓ１０６：Ｎｏ）、入出力処理分別部１０１は、非特権領域用キュー１０３に空きが無い旨を入出力部２０１に通知する（Ｓ１０８）。
【００４６】
次に、入出力処理の実行動作について図３を用いて説明する。図３は、入出力処理の実行動作を示したフローチャートである。
【００４７】
入出力実行部１０８は、特権領域連続処理数保持部１０７が保持する特権領域連続処理数を読み込む。そして、入出力実行部１０８は特権領域連続処理数と、閾値保持部１０６から読み込んだ閾値を比較する（Ｓ２０１）。
【００４８】
特権領域連続処理数が閾値を超えていない場合（Ｓ２０１：Ｎｏ）、入出力実行部１０８は特権領域用キュー１０２が空か否かを判定する（Ｓ２０２）。特権領域用キュー１０２が空ではない場合（Ｓ２０２：Ｎｏ）、入出力実行部１０８は特権領域用キュー１０２から入出力処理を取り出して実行する（Ｓ２０３）。そして、入出力実行部１０８は特権領域連続処理数のインクリメントを特権領域連続処理数保持部１０７に要求する。ハードリアルタイムアプリケーション２２０が稼働中ではない場合（Ｓ２０４：Ｎｏ）、特権領域連続処理数保持部１０７は特権領域連続処理数のインクリメント処理を行う（Ｓ２０５）。ハードリアルタイムアプリケーション２２０が稼働中である場合（Ｓ２０４：Ｙｅｓ）、特権領域連続処理数保持部１０７は特権領域連続処理数のインクリメント処理を行わない。
【００４９】
一方、特権領域用キュー１０２が空の場合（Ｓ２０２：Ｙｅｓ）、または、特権領域連続処理数が閾値に達している場合（Ｓ２０１：Ｙｅｓ）、入出力実行部１０８は非特権領域用キュー１０３が空か否かを判定する（Ｓ２０６）。非特権領域用キュー１０３が空である場合（Ｓ２０６：Ｙｅｓ）、入出力処理部１０８はＳ２０１の処理から再度処理を行う。
【００５０】
非特権領域用キュー１０３が空ではない場合（Ｓ２０６：Ｎｏ）、入出力実行部１０８は非特権領域用キュー１０３から入出力処理を取り出して実行する（Ｓ２０７）。ここで、非特権領域用キュー１０３に格納された入出力処理はオーダリング部１０４により処理時間が最適となる順序に並び変えられている。入出力処理の実行後、入出力実行部１０８は特権領域連続処理数を"０"に設定するための要求を特権領域連続処理数保持部１０７に出力する。特権領域連続処理数保持部１０７は、特権領域連続処理数を"０"に設定する（Ｓ２０８）。
【００５１】
次に本実施の形態にかかる入出力処理システムにおけるハードリアルタイプアプリケーション２２０の最悪実行時間の算出概念について説明する。各アプリケーション（２２０〜２４０）からの入出力処理の要求時に、オペレーティングシステム２００はスケジューラ機能を用いて入出力処理の優先順位になるように入出力処理を並び変える。その後、入出力部２０１は、優先順位の順序に並び変えられた入出力処理を二次記憶装置１０に入力する。特権領域用キュー１０２に格納された入出力処理はキューに入力された順序から並び変えられることなく実行される。
【００５２】
１つの入出力処理の完了にかかる時間は、ディスクのシークタイムと、入出力ブロックの読み込みまたは書き込みにかかる時間と、の加算により算出できる。一般にディスクのシークタイムはディスク１回転以内の時間と考えられるため、ディスク性能等から算出可能である。また、入出力処理にかかるブロックサイズは例えば特許文献２に開示の技術により計算可能である。よって、入出力ブロックの読み込みまたは書き込みにかかる時間も算出可能となる。ディスクのシークタイムと、入出力ブロックの読み込みまたは書き込みにかかる時間と、がわかることにより、１つの入出力処理の完了にかかる時間が算出できる。
【００５３】
処理中または処理に取り掛かろうとしている非特権領域への入出力処理の有無、及び特権領域用キュー１０２に格納されている入出力処理数の２点は二次記憶装置１０の一般的機能により算出可能である。すなわち、二次記憶装置１０に入力するハードリアルタイムアプリケーション２２０の入出力処理が処理される前に実行される入出力処理の数と、１つの入出力処理の実行にかかる処理時間が算出可能である。そのため、ハードリアルタイムアプリケーション２２０による入出力処理の最悪実行時間が算出できる。
【００５４】
また、ソフトリアルタイムアプリケーション２３０の入出力処理の最悪実行時間も、閾値と、特権領域連続処理数と、の関係をさらに考慮することにより算出可能である。
【００５５】
続いて、本実施の形態にかかる入出力処理システムの効果について説明する。上述のようにオペレーティングシステム２００は、優先順位に応じて入出力処理を並び変えた後に入出力処理を特権領域用キュー１０２（第１キュー）または非特権領域キュー１０３（第２キュー）に入力する。非特権領域キュー１０３には、最悪実行時間が不要な処理が入力されるため、オーダリング部１０４は処理時間が短縮するようにキュー内の並べ替えを行う。この並べ替えにより、コマンドキューイングの効果を得ることが出来る。
【００５６】
また、最悪実行時間の算出が必要なリアルタイムアプリケーション２２０の入出力処理は、特権用領域キュー１０２に入れられた後に並び変えられることはない。そのため、上述したように、入力された段階でのキューの状況から最悪実行時間を算出することが可能になる。そのため、リアルタイムアプリケーション２２０のタイミング解析が容易となる。
【００５７】
また、上述のように連続して特権領域用キュー１０２から取り出して実行した処理の数である特権領域連続処理数（第１キュー連続処理数）を保持する。当該処理の数と、閾値と比較することにより、適切なタイミングで非リアルタイムアプリケーション２４０の入出力処理の実行も確保できる。当該閾値は、各アプリケーションの入出力処理の実行状況に応じて変更可能である。
【００５８】
さらにまた、確実に時間制約を厳守して処理を終了する必要があるハードリアルタイムアプリケーション２２０の動作中には上述の特権領域連続処理数のインクリメントを停止させる。これにより、ハードリアルタイムアプリケーション２２０のリアルタイム性を確保できる。
【００５９】
本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。たとえば、上述の例では、二次記憶装置における入出力処理についての説明を行ったが、本発明はコマンドキューイング機能を備え、任意の処理タスクを処理する情報処理装置においても適用することが可能である。
【００６０】
なお、本実施の形態１にかかる二次記憶装置（入出力制御装置）の最小構成を図４に示す。二次記憶装置１０（入出力処理装置）は、特権領域用キュー１０２（第１キュー）と、非特権領域用キュー１０３（第２キュー）と、オーダリング部１０４と、閾値保持部１０６（切り替え条件保持部）と、入出力実行部１０８と、を備える。
【００６１】
二次記憶装置１０には、入出力処理が優先順位の順序に並び変えられて入力される。特権領域用キュー１０２には、入力された入出力処理のうち、最悪実行時間の算出が必要な入出力処理が格納される。特権領域用キュー１０２はデータの並び変えを生じないＦＩＦＯキューである。一方、非特権領域用キュー１０３には、入力された入出力処理のうち、最悪実行時間の算出が不要な入出力処理が格納される。
【００６２】
オーダリング部１０４は、非特権領域用キュー１０３に入力された入出力処理を処理時間が短縮されるように並び変える。
【００６３】
閾値保持部１０６は、特権領域用キュー１０２または非特権領域用キュー１０３のどちらから入出力処理を取り出すかを定める条件を保持する。入出力実行部１０８は、閾値保持部１０６の保持する値に基づいてキューにアクセスし、入出力処理を実行する。
【００６４】
上記の図４の構成によっても、オーダリング部１０４による並び変え処理によりコマンドキューイングの効果を享受できる。また、特権領域用キュー１０２に入力された入出力処理の最悪実行時間は、入力された段階でのキューの状況と、閾値の条件から算出可能である。
【００６５】
上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００６６】
（付記１）
最悪実行時間の算出が必要な入出力処理が格納され、格納された複数の入出力処理の順序が変更不能に構成された第１キューと、
最悪実行時間の算出が不要な入出力処理が格納され、格納された複数の入出力処理の順序が変更可能に構成された第２キューと、
前記第２キューに格納された前記複数の入出力処理を、処理時間が短縮されるように並べ替えるオーダリング部と、
入出力処理を取り出すアクセス先を前記第１のキューまたは前記第２のキューのいずれかに決定するための条件を定めた切り替え条件を保持する切り替え条件保持部と、
前記切り替え条件に基づいて、前記第１キューまたは前記第２キューから入出力処理を取得して実行する実行部と、を備え、
入出力処理は優先順位に従って入力されるものである入出力制御装置。
【００６７】
（付記２）
前記第１キューは、確実に時間制約を厳守して処理を終了する必要があるハードリアルタイムアプリケーションからの入出力処理と、時間制約を厳守して処理を終了する必要はないが、その処理の価値が、処理終了時間が長くなるにつれて下がるソフトリアルタイムアプリケーションからの入出力処理と、を格納し、
前記第２キューは、時間制約を厳守して処理を終了する必要が無い非リアルタイムアプリケーションからの入出力処理を格納することを特徴とする付記１に記載の入出力制御装置。
【００６８】
（付記３）
前記第１キューから取り出して実行した入出力処理の状態である第１キュー実行状態を保持する第１キュー状態保持部を備え、
前記実行部は、前記切り替え条件と、前記第１キュー実行状態と、に基づいて、前記第１キューまたは前記第２キューから入出力処理を取得して実行することを特徴とする付記１または付記２に記載の入出力制御装置。
【００６９】
（付記４）
前記第１キュー状態保持部は、連続して前記第１キューから取り出して実行した入出力処理の数である第１キュー連続処理数を保持し、
前記切り替え条件は、前記第１キュー連続処理数の上限値である閾値であり、
前記実行部は、前記第１キュー連続処理数が前記閾値未満である場合には前記第１キューから入出力処理を取得して実行し、前記第１キュー連続処理数が前記閾値に達した場合には前記第２キューから入出力処理を取得して実行することを特徴とする付記３に記載の入出力処理装置。
【００７０】
（付記５）
前記切り替え条件保持部は、入出力処理を送信する送信装置からの切り替え条件変更要求に応じて保持する前記切り替え条件を変更することを特徴とする付記１乃至付記４のいずれか１項に記載の入出力装置。
【００７１】
（付記６）
前記第１キュー状態保持部は、前記ハードリアルタイムアプリケーションからの入出力処理が前記入出力処理装置に入力されている間は、前記第１キュー連続処理数を増加させないことを特徴とする付記４または付記５に記載の入出力処理装置。
【００７２】
（付記７）
前記オーダリング部は、前記第２キューに格納された前記複数の入出力処理を、処理時間が最短となるように並べ替えることを特徴とする付記１乃至付記６のいずれか１項に記載の入出力処理装置。
【００７３】
（付記８）
前記入出力処理装置と、前記送信装置と、を備える情報記憶システムであって、
前記送信装置は、各アプリケーションの実行状態をモニタリングするモニタリング部を備え、
前記モニタリングの結果に応じて前記切り替え条件変更要求を送信することを特徴とする入出力処理システム。
【００７４】
（付記９）
最悪実行時間の算出が必要な処理タスクが格納され、格納された複数の処理タスクの順序が変更不能に構成された第１キューと、
最悪実行時間の算出が不要な処理タスクが格納され、格納された複数の処理タスクの順序が変更可能に構成された第２キューと、
前記第２キューに格納された前記複数の処理タスクを、処理時間が短縮されるように並べ替えるオーダリング部と、
処理タスクを取り出すアクセス先を前記第１のキューまたは前記第２のキューのいずれかに決定するための条件を定めた切り替え条件を保持する切り替え条件保持部と、
前記切り替え条件に基づいて、前記第１キューまたは前記第２キューから処理タスクを取得して実行する実行部と、を備え、
処理タスクが優先順位に従って入力される情報処理装置。
【００７５】
（付記１０）
入出力処理が優先順位に従って入力され、
入力データの並べ替えが出来ないように構成された第１キューに最悪実行時間の算出が必要な入出力処理を格納し、
入力データの並べ替えが出来るように構成された第２キューに最悪実行時間の算出が不要な入出力処理を格納し、
入出力処理を取り出すアクセス先を前記第１のキューまたは前記第２のキューのいずれかに決定するための条件を定めた切り替え条件を記憶し、
前記第２キューに格納された前記複数の入出力処理を、処理時間が短縮されるように並べ替え、
前記切り替え条件に基づいて、前記第１キューまたは前記第２キューから入出力処理を取得して実行する入出力処理方法。
【００７６】
（付記１１）
前記第１キューは、確実に時間制約を厳守して処理を終了する必要があるハードリアルタイムアプリケーションからの入出力処理と、時間制約を厳守して処理を終了する必要はないが、その処理の価値が、処理終了時間が長くなるにつれて下がるソフトリアルタイムアプリケーションからの入出力処理と、を格納し、
前記第２キューは、時間制約を厳守して処理を終了する必要が無い非リアルタイムアプリケーションからの入出力処理を格納することを特徴とする付記１０に記載の入出力処理方法。
【００７７】
（付記１２）
前記第１キューから取り出して実行した入出力処理の状態である第１キュー実行状態を保持し、
前記入出力処理を取得して実行する処理では、前記切り替え条件と、前記第１キュー実行状態と、に基づいて、前記第１キューまたは前記第２キューから入出力処理を取得して実行することを特徴とする付記１０または付記１１に記載の入出力処理方法。
【００７８】
（付記１３）
連続して前記第１キューから取り出して実行した入出力処理の数である第１キュー連続処理数を前記第１キュー実行状態として保持し、
前記切り替え条件は、前記第１キュー連続処理数の上限値である閾値であり、
前記入出力処理を取得して実行する処理では、前記第１キュー連続処理数が前記閾値未満である場合には前記第１キューから入出力処理を取得して実行し、前記第１キュー連続処理数が前記閾値に達した場合には前記第２キューから入出力処理を取得して実行することを特徴とする付記１２に記載の入出力処理方法。
【００７９】
（付記１４）
入出力処理を送信する送信装置からの切り替え条件変更要求に応じて保持する前記切り替え条件を変更することを特徴とする付記１０乃至付記１３のいずれか１項に記載の入出力処理方法。
【００８０】
（付記１５）
前記ハードリアルタイムアプリケーションからの入出力処理が前記入出力処理装置に入力されている間は、前記第１キュー連続処理数を増加させないことを特徴とする付記１３または付記１４に記載の入出力処理方法。
【００８１】
（付記１６）
前記第２キューに格納された前記複数の入出力処理を並べ替える処理では、前記第２キューに格納された前記複数の入出力処理を、処理時間が最短となるように並べ替えることを特徴とする付記１０乃至付記１５のいずれか１項に記載の入出力処理方法。
【符号の説明】
【００８２】
１      入出力処理システム
１０    二次記憶装置
１０１  入出力処理分別部
１０２  特権領域用キュー
１０３  非特権領域用キュー
１０４  オーダリング部
１０５  特権領域情報
１０６  閾値保持部
１０７  特権領域連続処理数保持部
１０８  入出力実行部
２００  オペレーティングシステム
２０１  入出力部
２０２  モニタリング部
２１０  特権領域管理部
２２０  ハードリアルタイムアプリケーション
２３０  ソフトリアルタイムアプリケーション
２４０  非リアルタイムアプリケーション
【図１】
0005521610.tif 000002
【図２】
0005521610.tif 000003
【図３】
0005521610.tif 000004
【図４】
0005521610.tif 000005