(57)【要約】【課題】ユーザプログラムへのＣＰＵの割り当てに際して、ユーザプログラムの動作傾向に応じてＣＰＵの切り替え頻度を低減する。【解決手段】ユーザプログラム統計手段４１は、ユーザプログラム１から連続動作時間Ｔ３の通知を受け取る。ユーザプログラム制御手段４２は、ユーザプログラム統計手段４１により受け取られた当該ユーザプログラムの連続動作時間Ｔ３に基づいてユーザプログラム１のＣＰＵ割り当て時間Ｔ２を決定する。ＣＰＵ割り当て時間変更手段４３は、ユーザプログラム１のＣＰＵ割り当て時間Ｔ２をユーザプログラム制御手段４２により決定されたＣＰＵ割り当て時間Ｔ２に変更する。【選択図】図１
2004272323.tif 000002
【特許請求の範囲】
【請求項１】
複数のユーザプログラムの実行を制御するオペレーティングシステムのスケジューリング機構において、
ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段と、
前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段と、
前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段と
を有することを特徴とするプログラム切り替え頻度低減スケジューリング方式。
【請求項２】
複数のユーザプログラムの実行を制御するオペレーティングシステムにおいて、
各ユーザプログラムが保持している累積実行時間とＣＰＵ割り当て時間とを比較し、累積実行時間がＣＰＵ割り当て時間を超過している場合には、ＣＰＵ上で実行しているユーザプログラムの切り替えを指示するスケジューリング機構と、
前記スケジューリング機構からのユーザプログラムの切り替え指示に従ってＣＰＵ上で実行している当該ユーザプログラムを停止させ、実行可能だがＣＰＵを割り当てられていなかった別ユーザプログラムを選定して、選定された別ユーザプログラムに当該ＣＰＵを割り当てて実行させるＣＰＵ群管理機構と、
ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段と、
前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段と、
前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段と
を有することを特徴とするプログラム切り替え頻度低減スケジューリング方式。
【請求項３】
複数のユーザプログラムの実行を制御するオペレーティングシステムにおいて、
各ユーザプログラムが保持している累積実行時間とＣＰＵ割り当て時間とを比較し、累積実行時間がＣＰＵ割り当て時間を超過している場合には、ＣＰＵ上で実行しているユーザプログラムの切り替えを指示するスケジューリング機構と、
前記スケジューリング機構からのユーザプログラムの切り替え指示に従ってＣＰＵ上で実行している当該ユーザプログラムを停止させ、実行可能だがＣＰＵを割り当てられていなかった別ユーザプログラムを選定して、選定された別ユーザプログラムに当該ＣＰＵを割り当てて実行させるＣＰＵ群管理機構と、
各ユーザプログラムの動作特性を記述するプログラム動作情報と、
ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段と、
前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間および前記プログラム動作情報に記述された当該ユーザプログラムの動作特性に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段と、
前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段と
を有することを特徴とするプログラム切り替え頻度低減スケジューリング方式。
【請求項４】
前記スケジューリング機構が、一定の起動時間間隔で起動され、その度にすべてのＣＰＵについて、実行中のユーザプログラムの累積実行時間に自身の起動時間間隔と同等の時間を加算し、累積実行時間とＣＰＵ割り当て時間との比較を行い、累積実行時間がＣＰＵ割り当て時間より大きくなっていた場合には、ＣＰＵ上で実行しているユーザプログラムの切り替えを指示することを繰り返すことを特徴とする請求項２または請求項３記載のプログラム切り替え頻度低減スケジューリング方式。
【請求項５】
前記ユーザプログラム統計手段が、ユーザプログラムから連続動作時間の通知を受け取ると起動され、通知された連続動作時間が所定時間範囲内にあるかどうかを判定し、連続動作時間が所定時間範囲内にない場合にはそのまま当該ユーザプログラムに制御を戻し、連続動作時間が所定時間範囲内にある場合には当該ユーザプログラムの連続動作時間を前記ユーザプログラム制御手段に渡すことを特徴とする請求項１，請求項２または請求項３記載のプログラム切り替え頻度低減スケジューリング方式。
【請求項６】
前記ユーザプログラム制御手段が、今回の連続動作時間を次回のＣＰＵ割り当て時間に決定することを特徴とする請求項１または請求項２記載のプログラム切り替え頻度低減スケジューリング方式。
【請求項７】
前記ユーザプログラム制御手段が、今回の連続動作時間のＡ％と今回のＣＰＵ割り当て時間のＢ（ただし、Ａ＋Ｂ＝１００）％との和を次回のＣＰＵ割り当て時間に決定することを特徴とする請求項１または請求項２記載のプログラム切り替え頻度低減スケジューリング方式。
【請求項８】
前記ユーザプログラム制御手段が、前記プログラム動作情報に当該ユーザプログラムの動作特性が記述されていない場合には次回のＣＰＵ割り当て時間を中に決定し、前記プログラム動作情報に当該ユーザプログラムの動作特性が長時間連続動作と記述されている場合には次回のＣＰＵ割り当て時間を大に決定し、前記プログラム動作情報に当該ユーザプログラムの動作特性が応答性が必要と記述されている場合には次回のＣＰＵ割り当て時間を小に決定することを特徴とする請求項３記載のプログラム切り替え頻度低減スケジューリング方式。
【請求項９】
前記ユーザプログラム制御手段が、前記プログラム動作情報に当該ユーザプログラムの動作特性が記述されていない場合には今回の連続動作時間を次回のＣＰＵ割り当て時間に決定し、前記プログラム動作情報に当該ユーザプログラムの動作特性が長時間連続動作と記述されている場合には今回の連続動作時間のＡ（Ａ＞１００）％を次回のＣＰＵ割り当て時間に決定し、前記プログラム動作情報に当該ユーザプログラムの動作特性が応答性が必要と記述されている場合には今回の連続動作時間のＢ（Ｂ＜１００）％を次回のＣＰＵ割り当て時間に決定することを特徴とする請求項３記載のプログラム切り替え頻度低減スケジューリング方式。
【請求項１０】
ユーザプログラム統計手段が、ユーザプログラムから連続動作時間の通知を受け取る工程と、
ユーザプログラム制御手段が、前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定する工程と、
ＣＰＵ割り当て時間変更手段が、前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更する工程と
を含むことを特徴とするＣＰＵ割り当て時間設定方法。
【請求項１１】
ユーザプログラム統計手段が、ユーザプログラムから連続動作時間の通知を受け取る工程と、
ユーザプログラム制御手段が、前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間およびプログラム動作情報に記述された当該ユーザプログラムの動作特性に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定する工程と、
ＣＰＵ割り当て時間変更手段が、前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更する工程と
を含むことを特徴とするＣＰＵ割り当て時間設定方法。
【請求項１２】
コンピュータを、ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段，前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段，および前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段として動作させるためのスケジューリングプログラム。
【請求項１３】
コンピュータを、各ユーザプログラムが保持している累積実行時間とＣＰＵ割り当て時間とを比較し、累積実行時間がＣＰＵ割り当て時間を超過している場合にはＣＰＵ上で動作しているユーザプログラムの切り替えを指示するスケジューリング機構，前記スケジューリング機構からのユーザプログラムの切り替え指示に従ってＣＰＵ上で実行している当該ユーザプログラムを停止させ、実行可能だがＣＰＵを割り当てられていなかった別ユーザプログラムを選定して、選定された別ユーザプログラムに当該ＣＰＵを割り当てて実行させるＣＰＵ群管理機構，ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段，前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段，および前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段として動作させるためのスケジューリングプログラム。
【請求項１４】
コンピュータを、各ユーザプログラムが保持している累積実行時間とＣＰＵ割り当て時間とを比較し、累積実行時間がＣＰＵ割り当て時間を超過している場合にはＣＰＵ上で動作しているユーザプログラムの切り替えを指示するスケジューリング機構，前記スケジューリング機構からのユーザプログラムの切り替え指示に従ってＣＰＵ上で実行している当該ユーザプログラムを停止させ、実行可能だがＣＰＵを割り当てられていなかった別ユーザプログラムを選定して、選定された別ユーザプログラムに当該ＣＰＵを割り当てて実行させるＣＰＵ群管理機構，各ユーザプログラムの動作特性を記述するプログラム動作情報，ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段，前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間および前記プログラム動作情報に記述された当該ユーザプログラムの動作特性に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段，ならびに前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段として動作させるためのスケジューリングプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はプログラム切り替え頻度低減スケジューリング方式に関し、特に複数のユーザプログラムの実行を制御するオペレーティングシステムにおけるプログラム切り替え頻度低減スケジューリング方式に関する。
【０００２】
【従来の技術】
従来のＵＮＩＸ（登録商標）等の時分割システムにおいては、長時間動作するプロセスに低い優先度を割り当て、対話的な処理を優先するようなスケジューリングを行っていた。
【０００３】
ところが、大規模な数値計算等の非対話的な処理を行う場合には、ユーザプログラムの切り替えが多くなるために、上記のようなスケジューリングでは効率が悪くなってしまうという欠点があった。
【０００４】
このような問題に対処するために、従来のスケジューリング方式は、音声，画像処理などの実時間処理において、そのサービスの品質（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）を保つために、ユーザプログラムがあらかじめ予測した必要処理時間を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）割り当て時間として固定的に指定できるようにしていた（例えば、特許文献１参照）。
【０００５】
【特許文献１】
特開平１０−２９３６９４号公報（第４−５頁、図６）
【０００６】
【発明が解決しようとする課題】
しかし、この従来技術には、次のような問題点があった。
【０００７】
第１の問題点は、ユーザプログラムによっては、その必要とするＣＰＵ割り当て時間を必ずしも予測できないということである。
【０００８】
第２の問題点は、必要なＣＰＵ割り当て時間を予測できたとしても、ユーザプログラムの変更が必要となってしまい、またＣＰＵ割り当て時間の予測値を計算するために不必要なオーバヘッドが発生するということである。
【０００９】
本発明の目的は、複数のユーザプログラムの実行を制御するオペレーティングシステムにおいて、ユーザプログラムの傾向に応じて当該ユーザプログラムのＣＰＵ割り当て時間を設定することにより、ユーザプログラムの切り替え頻度を低減できるようにしたプログラム切り替え頻度低減スケジューリング方式を提供することにある。
【００１０】
また、本発明の他の目的は、複数のユーザプログラムの実行を制御するオペレーティングシステムにおいて、ユーザプログラムの動作の履歴に見合ったＣＰＵ割り当て時間を設定することにより、ユーザプログラムの切り替え頻度を低減できるようにしたプログラム切り替え頻度低減スケジューリング方式を提供することにある。
【００１１】
さらに、本発明の別の目的は、複数のユーザプログラムの実行を制御するオペレーティングシステムにおいて、指定されたユーザプログラムの動作特性に見合ったＣＰＵ割り当て時間を設定することにより、ユーザプログラムの切り替え頻度を低減できるようにしたプログラム切り替え頻度低減スケジューリング方式を提供することにある。
【００１２】
【課題を解決するための手段】
本発明のプログラム切り替え頻度低減スケジューリング方式は、複数のユーザプログラムの実行を制御するオペレーティングシステムのスケジューリング機構において、ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段と、前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段と、前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段とを有することを特徴とする。
【００１３】
また、本発明のプログラム切り替え頻度低減スケジューリング方式は、複数のユーザプログラムの実行を制御するオペレーティングシステムにおいて、各ユーザプログラムが保持している累積実行時間とＣＰＵ割り当て時間とを比較し、累積実行時間がＣＰＵ割り当て時間を超過している場合には、ＣＰＵ上で実行しているユーザプログラムの切り替えを指示するスケジューリング機構と、前記スケジューリング機構からのユーザプログラムの切り替え指示に従ってＣＰＵ上で実行している当該ユーザプログラムを停止させ、実行可能だがＣＰＵを割り当てられていなかった別ユーザプログラムを選定して、選定された別ユーザプログラムに当該ＣＰＵを割り当てて実行させるＣＰＵ群管理機構と、ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段と、前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段と、前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段とを有することを特徴とする。
【００１４】
また、本発明のプログラム切り替え頻度低減スケジューリング方式は、複数のユーザプログラムの実行を制御するオペレーティングシステムにおいて、各ユーザプログラムが保持している累積実行時間とＣＰＵ割り当て時間とを比較し、累積実行時間がＣＰＵ割り当て時間を超過している場合には、ＣＰＵ上で実行しているユーザプログラムの切り替えを指示するスケジューリング機構と、前記スケジューリング機構からのユーザプログラムの切り替え指示に従ってＣＰＵ上で実行している当該ユーザプログラムを停止させ、実行可能だがＣＰＵを割り当てられていなかった別ユーザプログラムを選定して、選定された別ユーザプログラムに当該ＣＰＵを割り当てて実行させるＣＰＵ群管理機構と、各ユーザプログラムの動作特性を記述するプログラム動作情報と、ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段と、前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間および前記プログラム動作情報に記述された当該ユーザプログラムの動作特性に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段と、前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段とを有することを特徴とする。
【００１５】
さらに、本発明のプログラム切り替え頻度低減スケジューリング方式は、前記スケジューリング機構が、一定の起動時間間隔で起動され、その度にすべてのＣＰＵについて、実行中のユーザプログラムの累積実行時間に自身の起動時間間隔と同等の時間を加算し、累積実行時間とＣＰＵ割り当て時間との比較を行い、累積実行時間がＣＰＵ割り当て時間より大きくなっていた場合には、ＣＰＵ上で実行しているユーザプログラムの切り替えを指示することを繰り返すことを特徴とする。
【００１６】
さらにまた、本発明のプログラム切り替え頻度低減スケジューリング方式は、前記ユーザプログラム統計手段が、ユーザプログラムから連続動作時間の通知を受け取ると起動され、通知された連続動作時間が所定時間範囲内にあるかどうかを判定し、連続動作時間が所定時間範囲内にない場合にはそのまま当該ユーザプログラムに制御を戻し、連続動作時間が所定時間範囲内にある場合には当該ユーザプログラムの連続動作時間を前記ユーザプログラム制御手段に渡すことを特徴とする。
【００１７】
また、本発明のプログラム切り替え頻度低減スケジューリング方式は、前記ユーザプログラム制御手段が、今回の連続動作時間を次回のＣＰＵ割り当て時間に決定することを特徴とする。
【００１８】
さらに、本発明のプログラム切り替え頻度低減スケジューリング方式は、前記ユーザプログラム制御手段が、今回の連続動作時間のＡ％と今回のＣＰＵ割り当て時間のＢ（ただし、Ａ＋Ｂ＝１００）％との和を次回のＣＰＵ割り当て時間に決定することを特徴とする。
【００１９】
さらにまた、本発明のプログラム切り替え頻度低減スケジューリング方式は、前記ユーザプログラム制御手段が、前記プログラム動作情報に当該ユーザプログラムの動作特性が記述されていない場合には次回のＣＰＵ割り当て時間を中に決定し、前記プログラム動作情報に当該ユーザプログラムの動作特性が長時間連続動作と記述されている場合には次回のＣＰＵ割り当て時間を大に決定し、前記プログラム動作情報に当該ユーザプログラムの動作特性が応答性が必要と記述されている場合には次回のＣＰＵ割り当て時間を小に決定することを特徴とする。
【００２０】
また、本発明のプログラム切り替え頻度低減スケジューリング方式は、前記ユーザプログラム制御手段が、前記プログラム動作情報に当該ユーザプログラムの動作特性が記述されていない場合には今回の連続動作時間を次回のＣＰＵ割り当て時間に決定し、前記プログラム動作情報に当該ユーザプログラムの動作特性が長時間連続動作と記述されている場合には今回の連続動作時間のＡ（Ａ＞１００）％を次回のＣＰＵ割り当て時間に決定し、前記プログラム動作情報に当該ユーザプログラムの動作特性が応答性が必要と記述されている場合には今回の連続動作時間のＢ（Ｂ＜１００）％を次回のＣＰＵ割り当て時間に決定することを特徴とする。
【００２１】
一方、本発明のＣＰＵ割り当て時間設定方法は、ユーザプログラム統計手段が、ユーザプログラムから連続動作時間の通知を受け取る工程と、ユーザプログラム制御手段が、前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定する工程と、ＣＰＵ割り当て時間変更手段が、前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更する工程とを含むことを特徴とする。
【００２２】
また、本発明のＣＰＵ割り当て時間設定方法は、ユーザプログラム統計手段が、ユーザプログラムから連続動作時間の通知を受け取る工程と、ユーザプログラム制御手段が、前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間およびプログラム動作情報に記述された当該ユーザプログラムの動作特性に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定する工程と、ＣＰＵ割り当て時間変更手段が、前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更する工程とを含むことを特徴とする。
【００２３】
他方、本発明のスケジューリングプログラムは、コンピュータを、ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段，前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段，および前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段として動作させることを特徴とする。
【００２４】
また、本発明のスケジューリングプログラムは、コンピュータを、各ユーザプログラムが保持している累積実行時間とＣＰＵ割り当て時間とを比較し、累積実行時間がＣＰＵ割り当て時間を超過している場合にはＣＰＵ上で動作しているユーザプログラムの切り替えを指示するスケジューリング機構，前記スケジューリング機構からのユーザプログラムの切り替え指示に従ってＣＰＵ上で実行している当該ユーザプログラムを停止させ、実行可能だがＣＰＵを割り当てられていなかった別ユーザプログラムを選定して、選定された別ユーザプログラムに当該ＣＰＵを割り当てて実行させるＣＰＵ群管理機構，ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段，前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段，および前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段として動作させることを特徴とする。
【００２５】
さらに、本発明のスケジューリングプログラムは、コンピュータを、各ユーザプログラムが保持している累積実行時間とＣＰＵ割り当て時間とを比較し、累積実行時間がＣＰＵ割り当て時間を超過している場合にはＣＰＵ上で動作しているユーザプログラムの切り替えを指示するスケジューリング機構，前記スケジューリング機構からのユーザプログラムの切り替え指示に従ってＣＰＵ上で実行している当該ユーザプログラムを停止させ、実行可能だがＣＰＵを割り当てられていなかった別ユーザプログラムを選定して、選定された別ユーザプログラムに当該ＣＰＵを割り当てて実行させるＣＰＵ群管理機構，各ユーザプログラムの動作特性を記述するプログラム動作情報，ユーザプログラムから連続動作時間の通知を受け取るユーザプログラム統計手段，前記ユーザプログラム統計手段により受け取られた当該ユーザプログラムの連続動作時間および前記プログラム動作情報に記述された当該ユーザプログラムの動作特性に基づいて当該ユーザプログラムのＣＰＵ割り当て時間を決定するユーザプログラム制御手段，ならびに前記ユーザプログラム制御手段により決定されたＣＰＵ割り当て時間を用いて当該ユーザプログラムのＣＰＵ割り当て時間を変更するＣＰＵ割り当て時間変更手段として動作させることを特徴とする。
【００２６】
本発明によれば、ＣＰＵでのユーザプログラムの切り替えには多大な処理時間が一般に必要であるため、長時間連続動作する傾向があるユーザプログラムの場合には、ＣＰＵ割り当て時間を延長することでＣＰＵでのユーザプログラムの切り替え頻度が低減され、より高い処理性能を得ることができる。また、外部事象への応答が重要で、頻繁にＣＰＵを解放する傾向のあるユーザプログラムの場合には、ＣＰＵ割り当て時間を短縮することで、より高いＣＰＵ使用率を得ることができる。
【００２７】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００２８】
図１を参照すると、本発明の第１の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式は、ユーザプログラム１と、ユーザプログラム１を解釈して実行するＣＰＵ２と、複数のＣＰＵ２を管理し各ＣＰＵ２に割り当てられるユーザプログラム１の切り替えを行うＣＰＵ群管理機構３と、ＣＰＵ群管理機構３と協調してＣＰＵ２のユーザプログラム１への割り当てを制御するスケジューリング機構４とから、その主要部が構成されている。
【００２９】
各ユーザプログラム１は、オペレーティングシステム（図示せず）によって管理され、ＣＰＵ２のいずれかによって実行される。
【００３０】
各ＣＰＵ２は、ＣＰＵ群管理機構３によって管理されている。
【００３１】
ＣＰＵ群管理機構３は、スケジューリング機構４の指示に従って各ＣＰＵ２に対してユーザプログラム１の割り当てを行う。
【００３２】
スケジューリング機構４は、各ユーザプログラム１対応に、累積実行時間Ｔ１と、ＣＰＵ割り当て時間Ｔ２と、連続動作時間Ｔ３とを管理している。スケジューリング機構４は、各ユーザプログラム１が保持している累積実行時間Ｔ１と、ＣＰＵ割り当て時間Ｔ２とを検査し、前者が後者を超過している場合には、ユーザプログラム１の切り替えをＣＰＵ群管理機構３に指示する。
【００３３】
累積実行時間Ｔ１は、スケジューリング機構４が一定の起動時間間隔で起動される度に、この起動時間間隔に相当する時間が累積される実行時間であり、ユーザプログラム１のＣＰＵ割り当て時間Ｔ２以下の値をとる。累積実行時間Ｔ１は、累積実行時間Ｔ１がＣＰＵ割り当て時間Ｔ２を超過したとき，およびユーザプログラム１が割り当てられたＣＰＵ２を自発的に解放したときに値０にリセットされる。
【００３４】
ＣＰＵ割り当て時間Ｔ２は、ユーザプログラム制御手段４２により決定され、ＣＰＵ割り当て時間変更手段４３によって変更される、ＣＰＵ２にユーザプログラム１を割り当て可能な最大時間である。ＣＰＵ割り当て時間Ｔ２は、ＣＰＵ割り当て時間変更手段４３から明示的に指定されない限り、そのユーザプログラム１から起動された子プログラムにも引き継がれる。
【００３５】
連続動作時間Ｔ３は、ＣＰＵ２を自発的に解放すること無く連続して動作した時間である。連続動作時間Ｔ３は、ユーザプログラム１がＣＰＵ割り当て時間Ｔ２を使い切ってＣＰＵ２が解放されるときにＣＰＵ割り当て時間Ｔ２を加算され、またユーザプログラム１がＣＰＵ２を自発的に解放するときに累積実行時間Ｔ１を加算される。ユーザプログラム１がＣＰＵ２を自発的に解放することなくＣＰＵ割り当て時間Ｔ２を超えて連続して動作する場合、複数の累積実行時間Ｔ１が組み合わされて連続動作時間Ｔ３を構成することになる。
【００３６】
スケジューリング機構４は、ユーザプログラム統計手段４１と、ユーザプログラム制御手段４２と、ＣＰＵ割り当て時間変更手段４３とを含んで構成されている。スケジューリング機構４は、短い一定時間間隔で起動され、起動されるたびにすべてのＣＰＵ２で実行中のユーザプログラム１の累積実行時間Ｔ１とＣＰＵ割り当て時間Ｔ２とを比較し、前者が後者を超過している場合には、ユーザプログラム１の切り替えをＣＰＵ群管理機構３に指示する。
【００３７】
ユーザプログラム統計手段４１は、ユーザプログラム１から累積実行時間Ｔ１の通知を受け取ると起動され、通知された連続動作時間Ｔ３が所定時間範囲内にあるかどうかを判定し、所定時間範囲外にあるときには、そのままユーザプログラム１に制御を戻す。これは、通知された連続動作時間Ｔ３があまりにも短いまたはあまりにも長い場合には、統計的に有意でない値を採用することによる極端なＣＰＵ割り当て時間Ｔ２の変化を回避するための措置である。
【００３８】
ユーザプログラム制御手段４２は、ユーザプログラム統計手段４１から各ユーザプログラム１の連続動作時間Ｔ３を取得し、連続動作時間Ｔ３に応じて当該ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を決定し、ＣＰＵ割り当て時間Ｔ２の変更をＣＰＵ割り当て時間変更手段４３に指示する。
【００３９】
ＣＰＵ割り当て時間変更手段４３は、ユーザプログラム制御手段４２からのＣＰＵ割り当て時間Ｔ２の変更指示に応じてユーザプログラム１のＣＰＵ割り当て時間Ｔ２を更新する。
【００４０】
図２を参照すると、スケジューリング機構４の起動時の処理は、累積実行時間更新ステップＡ１と、累積実行時間のＣＰＵ割り当て時間超過判定ステップＡ２と、累積実行時間０リセットステップＡ３と、当該ユーザプログラム切り替え指示ステップＡ４と、当該ユーザプログラム停止ステップＡ５と、別ユーザプログラム選定ステップＡ６と、別ユーザプログラムへのＣＰＵ割り当てステップＡ７と、連続動作時間へのＣＰＵ割り当て時間加算ステップＡ８と、全ＣＰＵ実施判定ステップＡ９と、一定起動時間間隔休止ステップＡ１０とからなる。
【００４１】
図３を参照すると、ユーザプログラム１がＣＰＵ２を自発的に解放する場合の処理は、連続動作時間への累積実行時間加算ステップＢ１と、累積実行時間０リセットステップＢ２と、連続動作時間通知ステップＢ３と、ユーザプログラム統計手段起動ステップＢ４と、連続動作時間所定時間範囲内判定ステップＢ５と、連続動作時間通知ステップＢ６と、ＣＰＵ割り当て時間決定ステップＢ７と、ＣＰＵ割り当て時間変更ステップＢ８と、連続動作時間０リセットステップＢ９と、ＣＰＵ解放ステップＢ１０とからなる。
【００４２】
次に、このように構成された第１の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式の動作について、図１，図２および図３を参照して説明する。
【００４３】
起動されたユーザプログラム１は、図２に示すようにスケジューリング機構４によって制御される。
【００４４】
スケジューリング機構４は、一定の起動時間間隔で起動され、その度にすべてのＣＰＵ２について、以下の処理を繰り返す。
【００４５】
まず、スケジューリング機構４は、ＣＰＵ２上で実行中のユーザプログラム１の累積実行時間Ｔ１にスケジューリング機構４の起動時間間隔と同等の時間を加算して更新する（ステップＡ１）。
【００４６】
次に、スケジューリング機構４は、当該ユーザプログラム１の累積実行時間Ｔ１が当該ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を超過したかどうかを判定する（ステップＡ２）。
【００４７】
累積実行時間Ｔ１がＣＰＵ割り当て時間Ｔ２を超過していなかった場合には（ステップＡ２でノー）、スケジューリング機構４は、ステップＡ９に制御を移す。
【００４８】
累積実行時間Ｔ１がＣＰＵ割り当て時間Ｔ２を超過していた場合には（ステップＡ２でイエス）、スケジューリング機構４は、当該ユーザプログラム１の累積実行時間Ｔ１を０リセットした後に（ステップＡ３）、当該ユーザプログラム１の切り替えをＣＰＵ群管理機構３に指示する（ステップＡ４）。
【００４９】
ＣＰＵ群管理機構３は、スケジューリング機構４からのユーザプログラム１の切り替え指示に従って、ＣＰＵ２上で動作する当該ユーザプログラム１を停止させ（ステップＡ５）、実行可能だがＣＰＵ２を割り当てられていなかった別のユーザプログラム１（以下、別ユーザプログラム１という）を選定し（ステップＡ６）、選定された別ユーザプログラム１に当該ＣＰＵ２を割り当てて実行させる（ステップＡ７）。
【００５０】
次に、スケジューリング機構４は、当該ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を当該ユーザプログラム１の連続動作時間Ｔ３に加算する（ステップＡ８）。ここで、当該ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を当該ユーザプログラム１の連続動作時間Ｔ３に加算しているのは、当該ユーザプログラム１がＣＰＵ割り当て時間Ｔ２を使い切ったことを記録するためである。
【００５１】
続いて、スケジューリング機構４は、すべてのＣＰＵ２について繰り返したかどうかを判定し（ステップＡ９）、繰り返していなければ（ステップＡ９でノー）、ステップＡ１に制御を戻す。
【００５２】
すべてのＣＰＵ２について繰り返したならば（ステップＡ９でイエス）、スケジューリング機構４は、一定の起動時間間隔の休止をした後に（ステップＡ１０）、ステップＡ１に制御を戻す。
【００５３】
次に、ユーザプログラム１がＣＰＵ２を自発的に解放する場合の処理を、図１および図３を参照しながら説明する。
【００５４】
ＣＰＵ２を自発的に解放するユーザプログラム１は、当該ユーザプログラム１がそれまで実行した時間である累積実行時間Ｔ１を自ユーザプログラム１の連続動作時間Ｔ３に加算する（ステップＢ１）。これは、ＣＰＵ２を自発的に解放することに伴って、それまでの累積実行時間Ｔ１（これはＣＰＵ割り当て時間Ｔ２未満であることがありえる）を連続動作時間Ｔ３に記録するためである。
【００５５】
次に、ユーザプログラム１は、当該ユーザプログラム１の累積実行時間Ｔ１を０リセットした後に（ステップＢ２）、加算後の連続動作時間Ｔ３をスケジューリング機構４のユーザプログラム統計手段４１に通知する（ステップＢ３）。
【００５６】
ユーザプログラム統計手段４１は、連続動作時間Ｔ３の通知を受け取ると起動され（ステップＢ４）、通知された連続動作時間Ｔ３が所定時間範囲内にあるかどうかを判定する（ステップＢ５）。
【００５７】
連続動作時間Ｔ３が所定時間範囲外にある場合には（ステップＢ５でノー）、連続動作時間Ｔ３があまりにも短いまたはあまりにも長い統計的に有意でない値を採用することによる極端なＣＰＵ割り当て時間Ｔ２の変化を回避するために、そのままユーザプログラム１に制御を戻す。
【００５８】
一方、連続動作時間Ｔ３が所定時間範囲内にある場合には（ステップＢ５でイエス）、ユーザプログラム統計手段４１は、連続動作時間Ｔ３をユーザプログラム制御手段４２に通知する（ステップＢ６）。
【００５９】
ユーザプログラム制御手段４２は、通知された連続動作時間Ｔ３に基づいて次回のＣＰＵ割り当て時間Ｔ２を決定する（ステップＢ７）。ここで、次回のＣＰＵ割り当て時間Ｔ２を決定する方法としては、様々の方法を採用することができる。例えば、今回の連続動作時間Ｔ３を次回のＣＰＵ割り当て時間Ｔ２に決定して、単純に今回の連続動作時間Ｔ３を次回のＣＰＵ割り当て時間Ｔ２に反映させることができる。また、今回の連続動作時間Ｔ３の８０％と今回のＣＰＵ割り当て時間Ｔ２の２０％との和を次回のＣＰＵ割り当て時間Ｔ２に決定して、今回の連続動作時間Ｔ３の影響と今回のＣＰＵ割り当て時間Ｔ２の影響とを次回のＣＰＵ割り当て時間Ｔ２に反映させることもできる。
【００６０】
次に、ユーザプログラム制御手段４２は、ＣＰＵ割り当て時間変更手段４３を用いて当該ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を変更し（ステップＢ８）、ユーザプログラム１に制御を戻す。
【００６１】
ユーザプログラム統計手段４１またはユーザプログラム制御手段４２から制御が戻ると、当該ユーザプログラム１は、自ユーザプログラム１の連続動作時間Ｔ３を０にリセットし（ステップＢ９）、スケジューリング機構４を呼び出してＣＰＵ２を解放する（ステップＢ１０）。
【００６２】
第１の実施の形態によれば、長時間連続動作する傾向のあるユーザプログラム１に比較的長いＣＰＵ割り当て時間Ｔ２が与えられる結果、長時間連続動作する傾向のあるユーザプログラム１の切り替え頻度が下がり、ユーザプログラム１の処理性能が向上する。その理由は、ユーザプログラム１の切り替えに伴う、ＣＰＵ２に内蔵された高速な一次記憶（レジスタ，キャッシュメモリ等）の二次記憶への書き出しの頻度が下がるためであり、また長時間連続動作する傾向のあるユーザプログラム１は一次記憶上で大量の演算を行うことが多いためである。
【００６３】
また、長時間連続動作する傾向のあるユーザプログラム１であっても、その一連の動作の中には頻繁にＣＰＵ２を解放しながら動作するような部分が含まれることがあるが、そのような場合にも自動的に動作に追従してＣＰＵ割り当て時間Ｔ２を短縮することができる。
【００６４】
［第２の実施の形態］
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００６５】
図４を参照すると、本発明の第２の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式は、図１に示した第１の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式におけるユーザプログラム制御手段４２に対して、プログラム動作情報４４をもつ点だけが異なる。それゆえ、特に言及しない部分には同一符号を付して、それらの詳しい説明を省略する。
【００６６】
プログラム動作情報４４には、各ユーザプログラム１について、長時間連続動作する傾向がある，応答性が必要である等の動作特性を記述しておくことができる。
【００６７】
ユーザプログラム制御手段４２は、ユーザプログラム統計手段４１から通知された連続動作時間Ｔ３ばかりではなく、プログラム動作情報４４に記述された当該ユーザプログラム１の動作特性に合わせて、各ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を変化させる。このため、より詳細な調整が可能となる。
【００６８】
図５を参照すると、ユーザプログラム制御手段４２の処理は、プログラム動作情報入力ステップＣ１と、ユーザプログラム動作特性記述判定ステップＣ２と、長時間連続動作傾向判定ステップＣ３と、応答性必要判定ステップＣ４と、ＣＰＵ割り当て時間中決定ステップＣ５と、ＣＰＵ割り当て時間大決定ステップＣ６と、ＣＰＵ割り当て時間小決定テップＣ７と、ＣＰＵ割り当て時間変更ステップＣ８とからなる。
【００６９】
次に、このように構成された第２の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式の動作について、図１に示した第１の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式の動作との相違点を中心に説明する。
【００７０】
スケジューリング機構４の動作およびＣＰＵ２を自発的に解放するユーザプログラム１の動作は、図２および図３と同等であるため、説明を省略する。
【００７１】
ユーザプログラム統計手段４１から連続動作時間Ｔ３の通知を受け取ると（図３のステップＢ６）、ユーザプログラム制御手段４２は、当該ユーザプログラム１のプログラム動作情報４４を入力し（ステップＣ１）、当該ユーザプログラム１の動作特性が記述されているかどうかを判定する（ステップＣ２）。
【００７２】
当該ユーザプログラム１の動作特性が記述されていない場合には（ステップＣ２でノー）、ユーザプログラム制御手段４２は、当該ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を中に決定する（ステップＣ７）。例えば、今回の連続動作時間Ｔ３をそのまま次回のＣＰＵ割り当て時間Ｔ２に決定する。
【００７３】
当該ユーザプログラム１の動作特性が長時間連続動作する傾向があると記述されていた場合には（ステップＣ３でイエス）、ユーザプログラム制御手段４２は、当該ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を大に決定する（ステップＣ４）。例えば、今回の連続動作時間Ｔ３の１２０％を次回のＣＰＵ割り当て時間Ｔ２に決定する。
【００７４】
当該ユーザプログラム１の動作特性が応答性が必要であると記述されていた場合には（ステップＣ４でイエス）、ユーザプログラム制御手段４２は、当該ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を小に決定する（ステップＣ６）。例えば、今回の連続動作時間Ｔ３の８０％を次回のＣＰＵ割り当て時間Ｔ２に決定する。
【００７５】
次に、ユーザプログラム制御手段４２は、当該ユーザプログラム１のＣＰＵ割り当て時間Ｔ２をＣＰＵ割り当て時間変更手段４３により変更する（ステップＣ８）。
【００７６】
第２の実施の形態によれば、プログラム動作情報４４に各ユーザプログラム１について長時間連続動作する傾向がある，応答性が必要である等の動作特性を記述しておき、ユーザプログラム制御手段４２が、ユーザプログラム統計手段４１から通知された連続動作時間Ｔ３ばかりではなく、プログラム動作情報４４に記述されたユーザプログラム１の動作特性に合わせて、ユーザプログラム１のＣＰＵ割り当て時間Ｔ２を変化させるので、ユーザプログラム１の動作特性に合ったより詳細なＣＰＵ割り当て時間Ｔ２の調整が可能となる。
【００７７】
［第３の実施の形態］
図６は、本発明の第３の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式の構成を示すブロック図である。本実施の形態に係るプログラム切り替え頻度低減スケジューリング方式は、図１に示した第１の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式を搭載するコンピュータ１００に対してスケジューリングプログラム２００を付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付して、それらの詳しい説明を省略する。
【００７８】
スケジューリングプログラム２００は、コンピュータ１００に読み込まれ、コンピュータ１００の動作を、ユーザプログラム統計手段４１，ユーザプログラム制御手段４２，ＣＰＵ割り当て時間変更手段４３等として制御する。スケジューリングプログラム２００の制御によるコンピュータ１００の動作は、第１の実施の形態におけるプログラム切り替え頻度低減スケジューリング方式の動作と全く同様になるので、その詳しい説明を割愛する。
【００７９】
［第４の実施の形態］
図７は、本発明の第４の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式の構成を示すブロック図である。本実施の形態に係るプログラム切り替え頻度低減スケジューリング方式は、図４に示した第２の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式を搭載するコンピュータ３００に対してスケジューリングプログラム４００を付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付して、それらの詳しい説明を省略する。
【００８０】
スケジューリングプログラム４００は、コンピュータ３００に読み込まれ、コンピュータ３００の動作を、ユーザプログラム統計手段４１，ユーザプログラム制御手段４２，ＣＰＵ割り当て時間変更手段４３，プログラム動作情報４４等として制御する。スケジューリングプログラム４００の制御によるコンピュータ３００の動作は、第２の実施の形態におけるプログラム切り替え頻度低減スケジューリング方式の動作と全く同様になるので、その詳しい説明を割愛する。
【００８１】
【発明の効果】
第１の効果は、長時間連続動作する傾向のあるユーザプログラムに連続した処理時間が与えられる結果、そのようなユーザプログラムの切り替え頻度が下がり、ユーザプログラムの処理性能が向上する。その理由は、ユーザプログラムの切り替えに伴うＣＰＵに内蔵された高速な一次記憶（レジスタ，キャッシュメモリ等）の二次記憶への書き出しの頻度が下がるためであり、またそのようなユーザプログラムは一次記憶上で大量の演算を行うことが多いためである。
【００８２】
第２の効果は、長時間連続動作する傾向のあるユーザプログラムであっても、その一連の動作の中には頻繁にＣＰＵを解放しながら動作するような部分が含まれることがあるが、そのような場合にも自動的に動作に追従してＣＰＵ割り当て時間を短縮できることである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式の構成を示すブロック図である。
【図２】図１中のスケジューリング機構によるユーザプログラムの制御を示すフローチャートである。
【図３】図１中のユーザプログラムがＣＰＵを自発的に解放する場合の処理を示すフローチャートである。
【図４】本発明の第２の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式の構成を示すブロック図である。
【図５】図４中のユーザプログラム制御手段の処理を示すフローチャートである。
【図６】本発明の第３の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式の構成を示すブロック図である。
【図７】本発明の第４の実施の形態に係るプログラム切り替え頻度低減スケジューリング方式の構成を示すブロック図である。
【符号の説明】
１  ユーザプログラム
２  ＣＰＵ
３  ＣＰＵ群管理機構
４  スケジューリング機構
４１  ユーザプログラム統計手段
４２  ユーザプログラム制御手段
４３  ＣＰＵ割り当て時間変更手段
１００，３００  コンピュータ
２００，４００  スケジューリングプログラム
Ａ１  累積実行時間更新ステップ
Ａ２  累積実行時間のＣＰＵ割り当て時間超過判定ステップ
Ａ３  累積実行時間０リセットステップ
Ａ４  当該ユーザプログラム切り替え指示ステップ
Ａ５  当該ユーザプログラム停止ステップ
Ａ６  別ユーザプログラム選定ステップ
Ａ７  別ユーザプログラムへのＣＰＵ割り当てステップ
Ａ８  連続動作時間へのＣＰＵ割り当て時間加算ステップ
Ａ９  全ＣＰＵ実施判定ステップ
Ａ１０  一定起動時間間隔休止ステップ
Ｂ１  連続動作時間への累積実行時間加算ステップ
Ｂ２  累積実行時間０リセットステップ
Ｂ３  連続動作時間通知ステップ
Ｂ４  ユーザプログラム統計手段起動ステップ
Ｂ５  連続動作時間所定時間範囲内判定ステップ
Ｂ６  連続動作時間通知ステップ
Ｂ７  別ユーザプログラムへのＣＰＵ割り当て時間決定ステップ
Ｂ８  ＣＰＵ割り当て時間変更ステップ
Ｂ９  連続動作時間リセットステップ
Ｂ１０  ＣＰＵ解放ステップ
Ｃ１  プログラム動作情報入力ステップ
Ｃ２  ユーザプログラム動作特性記述判定ステップ
Ｃ３  長時間連続動作傾向判定ステップ
Ｃ４  応答性必要判定ステップ
Ｃ５  ＣＰＵ割り当て時間中決定ステップ
Ｃ６  ＣＰＵ割り当て時間大決定ステップ
Ｃ７  ＣＰＵ割り当て時間小決定テップ
Ｃ８  ＣＰＵ割り当て時間変更ステップ
Ｔ１  累積実行時間
Ｔ２  ＣＰＵ割り当て時間
Ｔ３  連続動作時間
【図１】
2004272323.tif 000003
【図２】
2004272323.tif 000004
【図３】
2004272323.tif 000005
【図４】
2004272323.tif 000006
【図５】
2004272323.tif 000007
【図６】
2004272323.tif 000008
【図７】
2004272323.tif 000009