(57)【要約】  コンピュータ処理ジョブをマイクロジョブに分割し、必要とされるリソースが１つ以上の遊休基準に準拠する時間に当該マイクロジョブの実行を割当てるための方法、システムおよび装置を提供する。マイクロジョブは、継続的に、但しマイクロジョブが必要とするリソースを他のジョブが必要としない場合にのみ実行される。この方法を用いるソフトウェアプログラムは、常に動作可能であり、コンピュータは、そのコンピュータシステム上で動作している他のソフトウェアプログラムの性能に影響を及ぼすことなく起動される。
2009541848.tif 000002
【特許請求の範囲】
【請求項１】
機械によって実現される方法であって、
複数のマイクロジョブの各々について、
特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの利用が１つ以上の遊休基準にいつ準拠するかを判断するステップと、
前記特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの前記利用が１つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて、前記特定のマイクロジョブを実行させるステップとを含む、方法。
【請求項２】
コンピュータ処理ジョブを前記複数のマイクロジョブに分割するステップをさらに含む、請求項１に記載の方法。
【請求項３】
コンピュータ処理ジョブを前記複数のマイクロジョブに分割するステップは、前記コンピュータ処理ジョブを開始するアプリケーションプログラムによって実行される、請求項２に記載の方法。
【請求項４】
コンピュータ処理ジョブを複数のマイクロジョブに分割するステップは、前記コンピュータ処理ジョブを開始するアプリケーションプログラム以外のソフトウェアプロセスによって実行される、請求項２に記載の方法。
【請求項５】
特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの利用が１つ以上の遊休基準にいつ準拠するかを判断するステップは、オペレーティングシステムによって実行される、請求項１に記載の方法。
【請求項６】
特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの利用が１つ以上の遊休基準にいつ準拠するかを判断するステップは、オペレーティングシステムの外部でマイクロジョブスケジューラによって実行される、請求項１に記載の方法。
【請求項７】
各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも１つの実行を遅らせるステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記待ち時間を指定するアプリケーションプログラムをさらに含む、請求項７に記載の方法。
【請求項９】
前記待ち時間を指定するステップは、前記マイクロジョブのうち異なるマイクロジョブのために異なる最小限の時間量を指定するステップを含む、請求項８に記載の方法。
【請求項１０】
前記１つ以上の遊休基準は１つ以上のリソース利用閾値に基づく、請求項１に記載の方法。
【請求項１１】
前記１つ以上のリソース利用閾値を指定するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記マイクロジョブのうち異なるマイクロジョブのために異なるリソース利用閾値を指定するステップをさらに含む、請求項１０に記載の方法。
【請求項１３】
前記特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの前記利用が１つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイク
ロジョブを実行するステップは、さらに、他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの数を制限することに基づいている、請求項１に記載の方法。
【請求項１４】
実行可能にされるマイクロジョブの数を制限することは、前記アプリケーションプログラム以外のプロセスによってコンピュータリソース利用を調べることによって決定される、請求項１３に記載の方法。
【請求項１５】
前記コンピュータ処理ジョブを開始するアプリケーションに割当てるべきメモリの量を決定するステップをさらに含み、前記メモリの量を決定するステップは、全体として前記アプリケーションについてのメモリ要件に基づくのではなく、前記アプリケーションのマイクロジョブを実行するのに必要な、はるかに少ないメモリの量に基づいている、請求項１に記載の方法。
【請求項１６】
メモリの量を決定するステップはさらに、前記コンピュータシステムにおいて利用可能な前記メモリの量に基づいている、請求項１５に記載の方法。
【請求項１７】
前記マイクロジョブはコンピュータプロセスの一部であり、各マイクロジョブの実行は、前記コンピュータプロセスの残りの部分の結果に影響を及ぼすことなく遅らせることができる、請求項１に記載の方法。
【請求項１８】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
複数のマイクロジョブの各々について、
特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの利用が１つ以上の遊休基準にいつ準拠するかを判断するステップと、
前記特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの前記利用が１つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイクロジョブを行なうステップとを実行させる、コンピュータ読取可能媒体。
【請求項１９】
前記１つ以上のプロセッサによって実行されると、コンピュータ処理ジョブを前記複数のマイクロジョブに分割するステップを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項１８に記載のコンピュータ読取可能媒体。
【請求項２０】
前記１つ以上のプロセッサによって実行されると、各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも１つの実行を遅らせるステップを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項１８に記載のコンピュータ読取可能媒体。
【請求項２１】
各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも１つの実行を遅らせるための前記命令は、前記マイクロジョブのうち異なるマイクロジョブのために異なる最小限の時間量を指定するステップを実行するための命令を含む、請求項２０に記載のコンピュータ読取可能媒体。
【請求項２２】
特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの利用が１つ以上の遊休基準にいつ準拠するかを判断するステップを実行するための前記命令は、特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの利用が１つ以上のリソース利用閾値に基づいて１つ以上の遊休基準にいつ準拠するかを判断するステップを実行するための命令を含む、請求項１８に記載のコンピュータ読取可能媒体。
【請求項２３】
前記１つ以上のプロセッサによって実行されると、前記１つ以上のリソース利用閾値を指定するステップを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項２２に記載のコンピュータ読取可能媒体。
【請求項２４】
前記１つ以上のプロセッサによって実行されると、前記マイクロジョブのうち異なるマイクロジョブについて異なるリソース利用閾値を指定するステップを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項２２に記載のコンピュータ読取可能媒体。
【請求項２５】
前記特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの前記利用が１つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイクロジョブを行なうステップを実行するための前記命令は、他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの数を制限することにさらに基づいて、前記特定のマイクロジョブを行なうステップを実行するための命令を含む、請求項１８に記載のコンピュータ読取可能媒体。
【請求項２６】
前記１つ以上のプロセッサによって実行されると、アプリケーション以外のプロセスによってコンピュータリソース利用を調べることにより他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの前記数を制限することを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項２５に記載のコンピュータ読取可能媒体。
【請求項２７】
前記１つ以上のプロセッサによって実行されると、前記アプリケーションに割当てるべきメモリの量を決定するステップを前記１つ以上のプロセッサに実行させる命令をさらに含み、メモリの量を決定するステップは、前記アプリケーションのマイクロジョブを実行するための最小限のメモリ要件に基づいている、請求項１８に記載のコンピュータ読取可能媒体。
【請求項２８】
メモリの量を決定する前記ステップを実行するための前記命令は、前記コンピュータシステムにおいて利用可能な前記メモリの量に基づいてメモリの量を決定する前記ステップを実行するための命令をさらに含む、請求項２７に記載のコンピュータ読取可能媒体。
【請求項２９】
前記マイクロジョブはコンピュータプロセスの一部であり、各マイクロジョブの実行は、前記コンピュータプロセスの残りの部分の結果に影響を及ぼすことなく遅らせることができる、請求項１８に記載のコンピュータ読取可能媒体。
【請求項３０】
システムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサに通信可能に結合されたコンピュータ読取可能媒体とを含み、前記コンピュータ読取可能媒体は、前記１つ以上のプロセッサによって実行されると、
複数のマイクロジョブの各々について、
特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの利用が１つ以上の遊休基準にいつ準拠するかを判断するステップと、
前記特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの前記利用が１つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイクロジョブを実行するステップとを、
前記１つ以上のプロセッサに実行させる命令の１つ以上の記憶されたシーケンスが記憶されている、システム。
【請求項３１】
前記コンピュータ読取可能媒体は、前記１つ以上のプロセッサによって実行されると、
コンピュータ処理ジョブを前記複数のマイクロジョブに分割するステップを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項３０に記載のシステム。
【請求項３２】
前記コンピュータ読取可能媒体は、前記１つ以上のプロセッサによって実行されると、各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも１つの実行を遅らせるステップを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項３０に記載のシステム。
【請求項３３】
各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも１つの実行を遅らせるための前記命令は、前記マイクロジョブのうち異なるマイクロジョブのために異なる最小限の時間量を指定するステップを実行するための命令を含む、請求項３２に記載のシステム。
【請求項３４】
特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの利用が１つ以上の遊休基準にいつ準拠するかを判断するステップを実行するための前記命令は、１つ以上のリソース利用閾値に基づいて、特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの利用が１つ以上の遊休基準にいつ準拠するかを判断するステップを実行するための命令を含む、請求項３０に記載のシステム。
【請求項３５】
前記コンピュータ読取可能媒体は、前記１つ以上のプロセッサによって実行されると、前記１つ以上のリソース利用閾値を指定するステップを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項３４に記載のシステム。
【請求項３６】
前記コンピュータ読取可能媒体は、前記１つ以上のプロセッサによって実行されると、前記マイクロジョブのうち異なるマイクロジョブのために異なるリソース利用閾値を指定するステップを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項３４に記載のシステム。
【請求項３７】
前記特定のマイクロジョブを動作させるのに必要な１つ以上のリソースの前記利用が１つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイクロジョブを実行するステップを実行させるための前記命令は、他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの数を制限することにさらに基づいて前記特定のマイクロジョブを行なうステップを実行するための命令を含む、請求項３０に記載のシステム。
【請求項３８】
前記コンピュータ読取可能媒体は、前記１つ以上のプロセッサによって実行されると、アプリケーション以外のプロセスによってコンピュータリソース利用を調べることにより他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの数を制限するステップを前記１つ以上のプロセッサに実行させる命令をさらに含む、請求項３７に記載のシステム。
【請求項３９】
前記コンピュータ読取可能媒体は、前記１つ以上のプロセッサによって実行されると、前記アプリケーションに割当てるべきメモリの量を決定するステップを前記１つ以上のプロセッサに実行させる命令をさらに含み、メモリの量を決定するステップは、前記アプリケーションのマイクロジョブを実行するための最小限のメモリ要件に基づいている、請求項３０に記載のシステム。
【請求項４０】
メモリの量を決定する前記ステップを実行するための前記命令は、前記コンピュータシステムにおいて利用可能な前記メモリの量に基づいてメモリの量を決定する前記ステップを実行するための命令をさらに含む、請求項３９に記載のシステム。
【請求項４１】
前記マイクロジョブはコンピュータプロセスの一部であり、各マイクロジョブの実行は、前記コンピュータプロセスの残りの部分の結果に影響を及ぼすことなく遅らせることができる、請求項３０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は、コンピュータ処理環境でソフトウェアアプリケーションを実行することに関する。特に、この発明の実施例は、マイクロジョブの実行が他のアプリケーションおよびジョブの性能に重大な影響を与えないように、アプリケーションのコンピュータ処理または入出力ジョブをマイクロジョブに分割すること、ならびに、マイクロジョブの実行を低いコンピュータリソース利用の期間に割当てることに関する。
【背景技術】
【０００２】
背景
初期のメインフレームコンピュータにおいては、ジョブのバッチでソフトウェアプログラムを動作させるという概念は標準的なものであった。コンピュータの数が制限されていたため、ユーザは、コンピュータが他の何らかのより重要なジョブに用いられていないときにジョブをコンピュータ上で動作させるようスケジュールしなければならなかった。このようなシステムにおいては、各々のジョブは、中断することなく次のジョブを続けてコンピュータ上で走って（ｒｕｎ）完了するようスケジュールされていた。利用可能なコンピュータ時間が限られているので、優先順位のより高いアプリケーションを遅らせることのないように、優先順位のより低いジョブを「時間外」に動作させる必要があった。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
最近になって、マルチタスクコンピュータシステムにより、単一のＣＰＵにより２つ以上のジョブを並行してまたはインタリーブで実行させることが可能となった。マルチタスクコンピュータシステムにより、その全体的な期間に多くのアプリケーションを実行させることが可能となる。典型的には、マルチタスクシステムは複雑な内部スケジューリングアルゴリズムを有しており、プロセスは、割当てられた優先順位に従ってスケジュールされる。しかしながら、アプリケーションは依然としてコンピュータ処理リソースを取り合っている。リソースの取り合いを軽減するために、マルチタスクシステムにおけるアプリケーションは、オペレータによるスケジュールに基づいて「時間外」に動作してもよい。
【０００４】
時間外に動作するアプリケーションは、バックアップ、索引付け、ソフトウェア更新、ウイルスおよび有害ソフトスキャン、ならびにフラグメンテーション解消などのメンテナンスジョブを含み得る。時間外の処理についての候補としては、また、リポートを実行したり、財務計算を行なったりするソフトウェアアプリケーションが含まれてもよい。しかしながら、索引付けなどのいくつかのアプリケーションは生産時間中に動作させなければならない。したがって、すべてのアプリケーションが時間外での実行にとって優れた候補になるわけではない。
【０００５】
ジョブを時間外に動作させるようスケジュールする場合の別の問題は、ジョブを動作させるようスケジュールした時間にコンピュータがオフにされる可能性があることである。さらに別の問題は、いくつかの機械が時間外を明確に識別しないことである。たとえば、重要であるため実質的な期間にわたってその活動を中断すべきでないとみなされるコンピュータ処理活動のために、多くのコンピュータシステムが１日２４時間にわたって用いられる。したがって、ジョブをスケジュールするための「時間外」がなくなってしまう。さらに別の問題は、典型的に、ジョブをいつ時間外のコンピュータ処理用にスケジュールすべきかをユーザが決定しなければならないことである。このため、スケジュールの設定に
ユーザの時間が取られてしまい、ユーザがエラーを起こしやすくなる。
【０００６】
上述の通り、コンピュータ処理ジョブの動作は、コンピュータを使用するユーザの能力を妨害する可能性があり、他の、場合によってはより緊急のアプリケーションおよびジョブからリソースを奪ってしまう可能性がある。スロットリング（throttling）は、これらの悪影響を最小限にするための技術である。スロットリングにより、アプリケーションまたはジョブが割当てられたリソース量以上を使用してしまうことが防止される。スロットリングの種類には、ディスクＩ／Ｏスロットリング、ＣＰＵスロットリングおよびネットワークスロットリングが含まれる。たとえば、ＣＰＵスロットリングは、アプリケーションについて目標となるＣＰＵ利用限度を設定し、アプリケーションが目標限度を上回った場合にアプリケーションの作業を停止させることを含み得る。スロットリングは、時として、メンテナンスアプリケーションまたは重要性の低いコンピュータ処理ジョブのためにコンピュータリソースに適用される。スロットリングには利点があるが、コンピュータ処理ジョブのリソースの使用は、他のジョブおよびアプリケーションにとって完全に透明ではない。
【０００７】
同時に、緊急で最優先のジョブの処理中であってもかなりのコンピュータ処理リソースが使用されないままになることが観察できる。ＣＰＵ、メモリ、ディスクドライブおよびネットワークの速度の差が大きいために、典型的に、これらの構成要素のうちの１つ以上が遊休状態になり、他の構成要素のうちの１つが十分に消費される。３ギガヘルツのＣＰＵは、たとえば、ディスクドライブがミリ秒で測定された平均アクセス時間でデータを検索するのを待つ間、しばしば遊休状態になる。
【０００８】
これらの失われたリソースを回復させて利用するために、他のジョブまたはアプリケーションに重大な影響を与えることなくコンピュータシステムにおいて１つ以上のジョブを実行することを可能にする技術が必要とされる。この技術は、ジョブをスケジュールする際にユーザの時間を消費するものであってはならず、また、ジョブの動作時におけるコンピュータシステムとのユーザの対話に悪影響を及ぼすものであってはならない。当該技術は、ジョブを時間外に動作させるようスケジュールする必要があるものであってはならない。当該技術は、時間外には使えないコンピュータシステムが利用可能なものでなければならず、かつ当該コンピュータシステムにとって有利なものでなければならない。
【０００９】
この段落に記載される方策は、追求可能な方策であるが、必ずしも以前に想到または追及された方策である必要はない。したがって、特に指定のない限り、この段落に記載される方策はいずれも、単にこの段落における記載によって先行技術と見なされるものと想定されるべきではない。
【００１０】
この発明は、同様の参照番号が同様の要素を指す添付の図面において、限定的ではなく例示的に図示される。
【図面の簡単な説明】
【００１１】
【図１】この発明の実施例に従った、マイクロジョブを実行するためのアーキテクチャを示す図である。
【図２】この発明の実施例に従った、アプリケーションメモリフットプリントと比較された従来のアプリケーションメモリフットプリントの比較例を示す図である。
【図３】この発明の実施例に従った、マイクロジョブを用いてマイクロジョブスケジューラ対応のアプリケーションを実行するプロセスのステップを示すフローチャートである。
【図４】この発明の実施例に従った、マイクロジョブを用いて記憶媒体をデフラグするプロセスのステップを示す図である。
【図５】この発明の実施例が実現され得るコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【００１２】
詳細な説明
以下の記載においては、この発明を完全に理解できるようにするために、説明の目的で、多数の具体的な詳細が提供される。しかしながら、これらの具体的な詳細なしにこの発明が実施可能であることが明らかとなるだろう。他の例においては、周知の構造および装置は、この発明を不必要に曖昧にすることを避けるために、ブロック図の形で示される。
【００１３】
概要
大多数のコンピュータは、常にそれら自体のリソース容量のすべてを利用しているとは限らない。これは典型的には、１日２４時間、週７日にわたり使用頻度が高いように見えるコンピュータ、および毎日わずかな間しか立ち上げられないコンピュータについても当てはまる。したがって、コンピュータ時間およびリソースが無駄になる。たとえば、２４時間にわたって、かなり多用され、かつ活動時に短時間のスパイクを有し得るコンピュータシステムは、平均して約５〜２０パーセントのリソースしか使用していない可能性がある。
【００１４】
コンピュータ処理ジョブをマイクロジョブに分割し、マイクロジョブを動作させるための所望のリソースが遊休状態であるときにマイクロジョブを実行することにより、これらの未使用のコンピュータリソースを利用するための方法、システムおよび装置がこの明細書中に開示される。この明細書で用いられるように、マイクロジョブという語はコンピュータプロセスの一部であり、その実行は、プロセスの残りの部分の結果に影響を及ぼすことなく遅らせることができる。この明細書中で用いられるように、「遊休リソース」、「遊休時間」などの語は、リソースの利用が１００％未満である時間を指している。すなわち、利用されていないリソースの一部が、当該リソースの他の何らかの部分が利用されている場合であっても「遊休状態」であると見なされる。
【００１５】
このため、マイクロジョブは継続的に実行されるが、可能な限り迅速にコンピュータ処理ジョブを完了させようとしなくてもよい。この方法を利用するソフトウェアプログラムは、コンピュータの起動時でも常に動作可能であり、同じコンピュータ上で同時に動作している他のソフトウェアプログラムの性能に与える影響はごくわずかなものであり、結果として、単位時間当たりに行なわれる作業が実質的にさらに一層有用になり得る。
【００１６】
現在のリソース制約を考慮してジョブを可能な限り迅速に動作させようと試みること、または他のジョブおよびアプリケーションに重大な影響を与えるのを避けるためにジョブを「時間外」に動作させるようスケジュールすることとは異なり、ジョブは継続的にコンピュータ上で動作するが、あまりに微小であるため、ユーザまたは他のコンピュータジョブには感知不可能であり得る。したがって、ジョブは、ユーザならびに他のジョブおよびアプリケーションにとって完全に透明であり得る。ユーザはジョブをスケジュールする必要はなく、この方法を用いれば、ジョブは性能臨界時間中を含み、いつでも動作可能である。
【００１７】
この記載全体を通じて用いられるように、他のジョブ、プロセスおよびアプリケーションに関する「透明な」という語は、マイクロジョブの実行に起因する性能に対する重大な悪影響を被ることなく他のジョブおよびアプリケーションが実行可能となることを意味する。悪影響は、テストジョブが単独で動作するのにどれくらいかかるかと、マイクロジョブに分割されるコンピュータ処理ジョブが実行されている期間とを比較することによって決定され得る。これらの２つの場合について、テストジョブの動作時間に大きな違いはな
いはずである。
【００１８】
マイクロジョブスケジューラ（ＭＪＳ）は、この発明の実施例に従って、マイクロジョブがいつ実行されるべきかを決定する。一実施例において、アプリケーションプログラムがそのコンピュータ処理ジョブを複数のマイクロジョブに分割する。この明細書中で用いられるように、複数という語は、１よりも大きな任意の数を意味する。ＭＪＳは、マイクロジョブがいつ実行されるべきかを決定する。この明細書中では、ＭＪＳとともに作動可能なアプリケーションをＭＪＳ対応のアプリケーションと称する。
【００１９】
一実施例においては、ＭＪＳはメモリマネージャを有する。ＭＪＳ対応のアプリケーションは、オペレーティングシステムからのメモリの要求とは対照的に、ＭＪＳメモリマネージャからのメモリを要求する。一実施例においては、ＭＪＳ対応のアプリケーションは、極めて小さなメモリ内フットプリントを有する（これは、ＭＪＳ対応のアプリケーションに割当てられたメモリの量を意味し、そこからＭＪＳ対応のアプリケーションが実行される）。小さなフットプリントを実現するために、ＭＪＳを使用するプログラムが利用するメモリの量が制限される。
【００２０】
別の実施例においては、コンピュータリソース利用が監視および分析されて、リソース利用が１つ以上の遊休基準に準拠しているかどうかが判断される。ＭＪＳは、１つ以上の遊休基準が満たされるとマイクロジョブを実行させる。特定のマイクロジョブを実行させるのに必要な時間が、特定のマイクロジョブによって用いられるリソースについての遊休時間の典型的なウインドウよりも小さいので、リソースは、別のジョブによって必要とされる前に放棄される。このため、マイクロジョブによるリソース利用は気づかれない可能性があり、マイクロジョブはそのアプリケーションの環境にとって不可視となる可能性がある。
【００２１】
ＭＪＳ対応のアプリケーションは、この発明の実施例に従って、リソース利用閾値パラメータをＭＪＳに送信し、そのリソース利用が得られるべき状況を規定する。これらのリソースは、ディスクＩ／Ｏ、ＣＰＵおよびネットワーク利用を含むがこれらに限定されない。たとえば、ＭＪＳ対応のアプリケーションは、上述の３つのリソースのいずれかの組合せについての最小閾値レベルが得られるまで、マイクロジョブの実行を要求することができる。
【００２２】
一実施例においては、アプリケーションは記憶媒体のデフラグ用プログラムである。デフラグ用プログラムは、毎日のスケジュールされたデフラグジョブを完了するのに、壁掛け時計の時間で１２分かかる。ＭＪＳ対応のデフラグ用プログラムはデフラグジョブを多くのマイクロジョブに分割する。これは、一度に数ミリ秒実行可能であり、デフラグ用プログラムが必要とするリソースが、他のいずれかのジョブまたはアプリケーションによって使用されていない時間を選択し得る。ＭＪＳ対応のデフラグ用プログラムは、コンピュータシステムがオンであれば常に動作可能であり、１２分のジョブを、より長期間にわって実行されるマイクロジョブに分割し得る。
【００２３】
特別な例として、ＭＪＳ対応のデフラグ用プログラムは、第１のマイクロジョブを実行して、ファイルを断片化するかどうかを判断する。第１のマイクロジョブを実行すると、他の遊休状態のリソースだけが消費される。すなわち、その利用が１つ以上の遊休基準に準拠しているリソースである。結果として、マイクロジョブの実行は他のアプリケーションにとって透明になる。さらに、メモリ利用が低く維持され、デフラグ用プログラムに関連するメモリ割当をマイクロジョブの実行前または実行後に変更する必要がなくなる。
【００２４】
各々のマイクロジョブの実行前に、ＭＪＳ対応のデフラグ用プログラムは、コンピュー
タリソース利用が１つ以上の遊休基準に準拠しているかどうか判断する。こうして、ＭＪＳ対応のデフラグ用プログラムは、コンピュータリソース利用がそれまでのところ、マイクロジョブを進めることができるほど十分に低いかどうかを判断した。リソース利用が高すぎる場合、マイクロジョブの実行は延期される。第１のマイクロジョブが実行された後、ＭＪＳ対応のデフラグ用プログラムは、必ずしも第２のマイクロジョブを直ちに実行する必要はない。逆に、次のマイクロジョブの実行は、他のアプリケーションが同じリソースを必要とする場合、時間の経過とともに分散する可能性がある。
【００２５】
アーキテクチャ概要
図１は、この発明の実施例に従った、マイクロジョブを実行するためのアーキテクチャ１００を示す図である。各々のＭＪＳ対応のアプリケーション１１５（１）〜１１５（ｎ）は、そのコンピュータ処理ジョブ（またはジョブ）をマイクロジョブ１２５に分割して実行する。たとえば、アプリケーションプログラマは、実際にはコンピュータ処理ジョブが分割されたものであるマイクロジョブ１２５を実行する許可をＭＪＳ１１０に要求する呼出をアプリケーションコードにおける適切な位置で行い得る。マイクロ−コンピュータ処理ジョブは、一実施例に従って、次のマイクロジョブ１２５が実行されるまでの実行の一時休止を安全に可能にしつつ単一の単位として完了され得る、実質的により小さい（たとえば最小の）作業単位である。実行の一時休止を安全に可能にするというのは、特定のマイクロジョブの実行を、すべてのマイクロジョブの実行から生じる結果に影響を及ぼすことなく遅らせることができるという意味である。マイクロジョブ１２５を小さく維持することにより、ＭＪＳ対応のアプリケーション１１５は一度に少量のコンピュータリソースしか使用できなくなる。このため、マイクロジョブ１２５を実行すると、この発明の一実施例に従って、コンピュータシステムにおける他のアプリケーションの性能に重大な影響を及ぼさないように、十分に少量のリソースが消費される。たとえば、ＭＪＳ対応のアプリケーション１１５（１）〜１１５（ｎ）は、バックアップ、索引付け、ソフトウェア更新、ウイルスおよび有害ソフトスキャン、ならびにフラグメンテーション解消などのメンテナンスを実行し得る。しかしながら、ＭＪＳ対応のアプリケーション１１５（１）〜１１５（ｎ）はメンテナンス以外のソフトウェアであってもよい。
【００２６】
マイクロジョブスケジューラ（ＭＪＳ）１１０は、いつマイクロジョブ１２５が実行可能であるかを判断する。この実施例では、ＭＪＳ１１０は、特定のＭＪＳ対応のアプリケーション（たとえば１１５（１））が、１つ以上のマイクロジョブ１２５を実行可能にする要求を行なえるようにするためのアプリケーションプログラムインターフェイス（ＡＰＩ）１３０を有する。ＡＰＩ１３０はまた、以下により十分に説明されるように、ＭＪＳ対応のアプリケーション１１５が、マイクロジョブ１２５がどれだけ分散され得るかを指定できるようにする。例示的なＡＰＩが以下の明細書中に含まれる。しかしながら、アーキテクチャ１００はこの例示的なＡＰＩに限定されない。
【００２７】
マイクロジョブスケジューラ１１０は、次にどのマイクロジョブ１２５を実行可能にすべきかを判断できるように、マイクロジョブ待ち行列を維持する。マイクロジョブの実行は、他のアプリケーションに対する影響が無視できるものとなるようにＭＪＳ１１０によってタイミングが取られる。一実施例においては、ＭＪＳ１１０は、マイクロジョブが遊休リソースしか利用しないようにマイクロジョブをスケジュールする。ＭＪＳ１１０は、リソース利用が１つ以上の遊休基準に準拠しているかどうかを判断してスケジューリング決定を下す。すなわち、ＭＪＳ１００はこの実施例においてはリソースベースである。マイクロジョブの実行は、アプリケーションとＭＪＳとの間のＡＰＩの呼出しまたは他の通信方法において、ＭＪＳ対応のアプリケーションによって指定され得る。次のマイクロジョブ１２５が他のジョブに影響を与えることなく実行可能であるとスケジューラ１０５が判断すると、ＭＪＳ１１０は、ＭＪＳ対応のアプリケーション１１５（１）にマイクロジョブ１２５を実行するよう命令することによって、ＭＪＳ対応のアプリケーション１１５
に応答する。ＭＪＳの判断は、一実施例においては、リソース利用に基づいたジョブのスケジュールをいつ行なうかに基づいている。一例として、ＭＪＳはディスク使用率を分析し得る。マイクロジョブを有するアプリケーション以外のアプリケーションがそのディスクを使用している場合、ＭＪＳは、当該他のアプリケーションが終わるのを待ってからマイクロジョブをスケジュールする。ＭＪＳはディスクＩ／Ｏ利用を監視し続け、ディスクＩ／Ｏへのアクセスを求めている他のアプリケーションがなければ、別のマイクロジョブをスケジュールできるようにする。しかしながら、別のアプリケーションがディスクＩ／Ｏの利用を求めている場合、ＭＪＳは別のマイクロジョブをスケジュールできないようにする。このとき、当該他のアプリケーションはディスクＩ／Ｏを利用することができる。
【００２８】
別の例として、ＭＪＳはネットワーク使用率を分析し得る。ネットワークトラフィックが高すぎる場合、ＭＪＳはトラフィックが遅くなるまでいずれのマイクロジョブもスケジュールしないこととなる。ネットワークトラフィックが十分低い場合、ＭＪＳはマイクロジョブの実行をスケジュールする。ＭＪＳは、ネットワークトラフィックが十分に低いままであることを確認し続ける。ネットワークトラフィックが十分に低いままであれば、別のマイクロジョブがスケジュールされ得る。しかしながら、トラフィックが高くなりすぎると、マイクロジョブの実行はそれ以上スケジュールされない。
【００２９】
ＭＪＳは、いずれかの種類のコンピュータ処理リソースおよびリソースのいずれかの組合せに基づいて、リソースに基づいたスケジューリング決定を下し得る。一実施例においては、ＭＪＳには、実行の許可を待っているマイクロジョブの複数の待ち行列がある。各待ち行列は特定のリソースに対応し得る。たとえば、ディスクＩ／Ｏを利用する必要があるマイクロジョブの待ち行列、ネットワークを利用する必要があるマイクロジョブの待ち行列、ＣＰＵを利用する必要があるマイクロジョブの待ち行列などがあり得る。リソースの組合せを利用するマイクロジョブに対する１つ以上の待ち行列もあり得る。ＭＪＳは、特定のリソースまたはリソースの組合せが利用可能であればマイクロジョブを配布する。特定のマイクロジョブは２つのリソースの使用を必要とし得る。たとえば、特定のマイクロジョブは、ネットワークリソースおよびディスクリソースの使用を必要とし得る。しかしながら、この特定のマイクロジョブはＣＰＵリソースを必要としない。ＣＰＵリソース利用が現在高いとしても、この特定のマイクロジョブをなおもスケジュールし、実行することができる。
【００３０】
ＭＪＳ１１０は、ＭＪＳ対応のアプリケーション１１５とは別個のプログラムとして図１に示されており、ＭＪＳ１１０は、ＭＪＳ対応のアプリケーション１１５に統合され得る。このため、ＭＪＳ１１０は、一実施例に従って、ＭＪＳ対応のアプリケーション１１５（１）に応答を送信することなくマイクロジョブ１２５を実行させることができる。したがって、ＡＰＩ１３０は任意となる。
【００３１】
一実施例においては、ＭＪＳ１１０はオペレーティングシステムの一部である。別の実施例においては、ＭＪＳ１００はオペレーティングシステムの外部で実行される。ＭＪＳは、一実施例において、オペレーティングシステムの外部で実行される場合、それ自体のリソース利用を自主制限する。たとえば、ＭＪＳ１１０は、それ自体のリソース利用を監視し、それ自体のリソース利用が高くなりすぎると、ある期間にわたってＭＪＳ１１０のスケジュールを停止するようオペレーティングシステムに要求する。
【００３２】
ＭＪＳ対応のアプリケーション１１５は、この発明の実施例に従って、ＭＪＳ１１０にパラメータを送ってリソース利用を制御する。リソース利用の制御は、ディスクＩ／Ｏ、ＣＰＵおよびネットワークを含むが、これらに限定されない。たとえば、ＭＪＳ対応のアプリケーション１１５は、上述の３つのリソースの閾値レベルのいずれかの組合せが得られるまでは、マイクロジョブの実行を要求することができる。さらに、ＭＪＳ対応のアプ
リケーション１１５は、異なるマイクロジョブ１２５に異なるリソース閾値レベルを指定することができる。たとえば、ＭＪＳ対応のアプリケーション１１５は、一実施例に従って、各マイクロジョブ１２５で異なるリソース閾値レベルを指定する。したがって、細分化されたリソース管理が可能である。ＭＪＳ１１０がリソース利用を計算する場合、この発明の一実施例に従うと、測定されるのは、ＭＪＳ対応のアプリケーション以外のプロセスのリソース利用である。ＣＰＵ利用閾値が２０パーセントに設定される以下の例を用いて説明する。ＭＪＳ対応のアプリケーションを実行可能にする前にＣＰＵ利用が２０パーセント未満である場合、ＣＰＵ利用は、マイクロジョブが実行されると２０パーセント超まで増加し得る。この２０パーセントを超える増加は、この例ではＣＰＵリソース利用違反とはみなされない。同様の原理がネットワークおよびディスクＩ／Ｏリソースに当てはまる。
【００３３】
ＭＪＳ１１０はまた、一実施例においてはメモリマネージャ１４０を有する。ＭＪＳ１１０は初期化されると、オペレーティングシステムによってメモリが割当てられ、そのうちのいくらかをそれ自体の目的のために使用し、そのうちのいくらかをＭＪＳ対応のアプリケーション１１５に割当てる。ＭＪＳ対応のアプリケーション１１５（１）は起動すると、ＭＪＳ１１０からのメモリ割当てを要求する。ＭＪＳ１１０は、すべてのプロセスによる現在のコンピュータシステムメモリ利用およびＭＪＳ対応のアプリケーション１１５（１）のニーズなどの要因に基づいて、どれくらいのメモリをＭＪＳ対応のアプリケーション１１５（１）に割当てるべきかを判断し得る。メモリ要件は、各ＭＪＳ対応のアプリケーション１１５に特定的であってもよいし、コンピュータソフトウェアプログラマによってＭＪＳ対応のアプリケーション１１５にプログラムされてもよい。
【００３４】
図２は、この発明の一実施例に従った、ＭＪＳ対応のアプリケーションメモリフットプリント２０４（１）〜２０４（ｎ）と比較された、従来のアプリケーションメモリフットプリント２０２の比較例を示す。ＭＪＳ対応のアプリケーション１１５（１）がマイクロジョブ１２５を実行するので、メモリ割当２０４（１）が極めて小さくなり得る。さらに、メモリ割当２０４（１）が小さすぎるので、ＭＪＳ対応のアプリケーション１１５（１）がその割当てられたメモリ２０４（１）を放棄する必要がなくなるかもしれない。したがって、ＭＪＳ対応のアプリケーション１１５は頻繁なメモリ割当およびメモリ割当解除を引起こさない。メモリ割当がこのように低減するかまたはなくなる１つの理由として、ＭＪＳ対応のアプリケーション１１５が他のアプリケーションおよびジョブに重大な影響を及ぼさないことが挙げられる。
【００３５】
プロセスフロー
図３は、この発明の一実施例に従った、マイクロジョブを用いてＭＪＳ対応のアプリケーションを実行するためのプロセス３００のステップを示すフローチャートである。ステップ３０１において、ＭＪＳ対応のアプリケーションプログラムが起動される。一実施例においては、コンピュータシステムが立ち上がるとＭＪＳ対応のアプリケーションプログラムが起動される。ＭＪＳ対応のアプリケーションは、実行すべきジョブを有していない場合、動作させるべきジョブを有するまで遊休状態のままとなる。この遊休状態では、ＭＪＳ対応のアプリケーションは、時折の監視などのいくつかの機能を果たし得る。ステップ３０２において、ＭＪＳ対応のアプリケーションは、記憶媒体のデフラグ、またはウイルススキャンなどの実行すべきジョブを有する。ジョブは、単一のディスクおよびそこに記憶されるファイルをデフラグすることであってもよく、ＭＪＳ対応のアプリケーションは継続的にそのディスクをデフラグする。
【００３６】
ＭＪＳ対応のアプリケーションは、起動されると少量のメモリが割当てられる。ＭＪＳ対応のアプリケーションは典型的に、１度に単一のマイクロジョブしか実行しようとしないため、割当てられる量は非常に少量であり得る。しかしながら、場合によっては、ＭＪ
Ｓ対応のアプリケーションは、実行すべき他のプロセスを待たずに複数のマイクロジョブを実行しようとし得る。たとえば、所要のコンピュータシステムリソースが遊休状態にあるとＭＪＳ１１０が判断した場合、ＭＪＳは、複数のマイクロジョブによって利用されるリソースを別のプロセスが利用することなく、ＭＪＳ対応のアプリケーションがその複数のマイクロジョブを続けて実行できるようにし得る。
【００３７】
ステップ３０４において、コンピュータ処理ジョブがマイクロジョブに分割される。マイクロジョブは、この発明の実施例に従って、マイクロジョブの実行が、コンピュータシステム内の他のジョブの性能に重大な影響を与えないよう十分に少量のリソースを利用するようなサイズである。コンピュータ処理ジョブのマイクロジョブへの分割は、ＭＪＳ対応のアプリケーション内の命令によって達成され得る。一般に、これらの命令は、ＭＪＳ対応のアプリケーション内の決定点である。たとえば、命令は、マイクロジョブを実行する許可を要求する、ＭＪＳへのＡＰＩの呼出しであり得る。しかしながら、ＭＪＳはＭＪＳ対応のアプリケーションに統合されてもよく、その場合、命令は、ＭＪＳ対応のアプリケーション内のスケジューリング機能への呼出しであり得る。他の技術を用いてコンピュータ処理ジョブをマイクロジョブに分割してもよい。
【００３８】
ステップ３０６において、マイクロジョブの各々について、特定のマイクロジョブが使用すべきコンピュータシステムの１つ以上のリソースの利用が１つ以上の遊休基準を満たすかどうかについての判断が下される。したがって、マイクロジョブが実行されるのは、マイクロジョブによって必要とされるコンピュータシステムのリソースが十分に遊休状態にある場合に限られる。遊休基準は一実施例においてはリソース閾値に基づく。たとえば、ＭＪＳ対応のアプリケーションのマイクロジョブが、他のプロセスによるリソース利用がそのＭＪＳ対応のアプリケーションによって指定される閾値未満である場合にのみ実行されるようなリソース閾値が使用され得る。以下に説明する例示的なＡＰＩは、いくつかのリソース閾値パラメータの一例を含む。しかしながら、プロセス３００はこれらのリソース閾値パラメータに限定されない。ステップ３０６は、各マイクロジョブが必要とするリソースの可用性に従ってマイクロジョブの実行を時間の経過とともに分散させる。したがって、マイクロジョブを実行しても、コンピュータシステムにおける他のジョブおよびアプリケーションの性能に重大な影響を及ぼさない。
【００３９】
特定のリソースについての遊休基準は１つ以上の要因に基づき得る。たとえば、一実施例においては、ＣＰＵリソース利用の遊休基準としてＣＰＵ利用が用いられる。
【００４０】
ステップ３０７において、マイクロジョブが実行される。一実施例においては、ＭＪＳは、特定のマイクロジョブの実行を可能にする許可をＭＪＳ対応のアプリケーションに与える。より多くのマイクロジョブを実行すべき場合、制御がステップ３０６に進められ、次のマイクロジョブが使用すべきコンピュータシステムの１つ以上のリソースの利用が１つ以上の遊休基準を満たすかどうかが判断される。
【００４１】
メンテナンスタイプの実施例においては、ＭＪＳ対応のアプリケーションは継続的に動作し、コンピュータシステムが立ち上がっているかぎり動作し続ける。したがって、ＭＪＳ対応のアプリケーションがそのジョブを完了したとしても、ステップ３０８で示されるように動作し続ける。したがって、ＭＪＳ対応のアプリケーションは、アプリケーションの起動に典型的な付加的なリソースを消費しない。ＭＪＳ対応のアプリケーションは、行うべき別のジョブを有すると判断した場合、ステップ３０４において新しいコンピュータ処理ジョブをマイクロジョブに分割し、ステップ３０６において、マイクロジョブが時間とともに実行される。
【００４２】
例示的なＡＰＩ
この発明の実施例は、ＭＪＳ対応のアプリケーションがＭＪＳとインターフェイス接続できるようにするためのＡＰＩである。例示的なＡＰＩは、ＣＰＵ、ディスクおよびネットワークについて以下のリソース閾値パラメータを有する。
【００４３】
・ＣＰＵ利用閾値
・保留ディスクＩ／Ｏカウント閾値
・ネットワーク利用閾値
各マイクロジョブについて上述のパラメータが指定され得る。換言すれば、異なるマイクロジョブには異なるリソース閾値パラメータを割振ることができる。たとえば、ネットワークを使用するマイクロジョブについては、ネットワーク閾値が使用され得る。しかしながら、ネットワークを使用しないマイクロジョブについては、ネットワーク閾値はゼロであり得る。したがって、この発明の実施例に従って、細分化されたリソース管理が提供される。
【００４４】
特定の例として、ＭＪＳ対応のアプリケーションは、ＣＰＵ利用が５０％未満であり、Ｉ／Ｏディスク利用が４０％未満であり、ネットワークトラフィックが６０％未満である場合にのみ特定のマイクロジョブの実行を要求し得る。全く何もない場合も含めて、リソース閾値因子のいずれかの組合せが用いられ得る。ＣＰＵ利用閾値は、この発明の実施例に従って、他のいずれかのジョブの利用閾値とは対照的に、ＭＪＳのＣＰＵの使用ごとに異なる。
【００４５】
以下の２つのパラメータを用いて、リソース利用をどれほど頻繁に測定すべきかを指定する。
【００４６】
・ＣＰＵ利用ウィンドウ
・ネットワーク利用ウィンドウ
ＣＰＵ利用ウィンドウパラメータが規定するタイムウィンドウにわたってＣＰＵ利用が計算される。たとえば、最新のｎミリ秒にわたるＣＰＵ利用が平均化される。ネットワーク利用ウィンドウが規定するタイムウィンドウにわたって、ネットワーク利用が計算される。これらのパラメータはＭＪＳに内在し得る。しかしながら、ＭＪＳ対応のアプリケーションはこれらのパラメータをオーバーライドし得る。保留ディスクＩ／Ｏはどの時点においても絶対的なものであるので、計算する必要はない。
【００４７】
必須の遊休時間パラメータがＭＪＳ対応のアプリケーションからＭＪＳエンジンに渡されて、マイクロジョブが時間の経過とともに如何に分散されるかを制御し得る。必須の遊休時間パラメータは任意である。さらに、使用時には、必須の遊休パラメータの値はゼロであり得る。
【００４８】
・必須の遊休時間
ＭＪＳは、すべてのマイクロジョブが実行された後のシステム遊休時間として規定される「遊休時間」を追跡する。上述のように、ＭＪＳ対応のアプリケーションは、ＭＪＳを用いてマイクロジョブを待ち行列に入れることができる。ＭＪＳ待ち行列にマイクロジョブがない場合、ＭＪＳは指定された必須の遊休時間だけ待ってから立上がり、ＭＪＳ対応のアプリケーションが付加的な作業を行なうことを認可する。たとえば、ＭＪＳ対応のデフラグ用プログラムは、最初にいくつかのマイクロジョブを実行してディスクドライブをデフラグし、次いでＭＪＳマイクロジョブスケジューラによって休止され得る。指定された必須の遊休時間の後、ＭＪＳは、ＭＪＳ対応のデフラグ用プログラムを呼出して付加的な作業を認可する。たとえば、ＭＪＳ対応のデフラグ用プログラムは、メモリの解放などのクリーンアップジョブを実行し得る。必須の遊休時間は、ＭＪＳ対応のアプリケーションによって調整され得るデフォルトパラメータであり得る。
【００４９】
以下のパラメータは、リソース利用が閾値を上回るときにマイクロジョブの実行を待つことに関連する。
【００５０】
・待ち時間
・最大待ち時間
リソース利用が現在高すぎてマイクロジョブを実行できないとＭＪＳが判断した場合、ＭＪＳは、指定された待ち時間だけ待ってから、リソース利用を再確認する。待ち時間パラメータは、リソース利用が高すぎるとＭＪＳが判断するたびに増加させることができる。たとえば、ＭＪＳは、最大待ち時間に達するまで待ち時間パラメータを増加させることができる。これらのパラメータは、ＭＪＳ対応のアプリケーションが最初に始動されるときにＭＪＳ対応のアプリケーションによって指定され得る。ＭＪＳ対応のアプリケーションは、動作時間中にこれらのパラメータを調整することができる。
【００５１】
デフラグ用プログラムの実施例
ＭＪＳ対応のアプリケーションは一実施例に従ったデフラグ用プログラムである。図４は、この発明の一実施例に従った、マイクロジョブを用いるＭＪＳデフラグ用プログラムのプロセス４００のステップを示す。プロセス４００は、デフラグ用プログラムの少なくとも一部がマイクロジョブの概念を使用することのできる一方法の例を示す。この例において、ＭＪＳ対応のアプリケーションは、ＡＰＩを介してＭＪＳとのインターフェイスを取る。しかしながら、上述のとおり、ＭＪＳはＭＪＳ対応のアプリケーションに統合されてもよく、ＡＰＩは不要となる。
【００５２】
デフラグのプロセスは、断片化されたファイルのためのディスクドライブのスキャンを含む。このスキャンは、ファイル記録を獲得し、ファイルを断片化するかどうかを判断する別個のマイクロジョブに分解され得る。ディスクドライブのスキャンは図４のステップ４０２〜４０８に示される。
【００５３】
ステップ４０２において、ＭＪＳ対応のデフラグ用プログラムはマイクロジョブＡＰＩを呼出して、マイクロジョブを実行する許可をＭＪＳに要求する。ＡＰＩは、このマイクロジョブのためのリソース利用閾値パラメータを指定し得る。代替的には、予め規定されたパラメータがこのマイクロジョブに適用され得る。要求の受信に応じて、ＭＪＳは、マイクロジョブがいつ実行され得るかを決定する。この決定は、リソース利用閾値パラメータに基づき得る。
【００５４】
ステップ４０４において、ＭＪＳ対応のアプリケーションが許可を受取った後、ＭＪＳデフラグ用プログラムが、この場合、次のファイル記録を獲得するためにマイクロジョブを実行する。ステップ４０６において、ＭＪＳ対応のアプリケーションは再びマイクロジョブＡＰＩを呼出す。ＭＪＳ対応のアプリケーションがＭＪＳから実行の許可を受取ると、ＭＪＳ対応のアプリケーションは、ステップ４０４からのファイルが断片化されたかどうかを判断する。ファイルが断片化されていなければ、プロセス４００はステップ４０２に戻る。
【００５５】
ファイルが断片化されていれば、ステップ４１０〜４１６に記載されるように、ＭＪＳ対応のデフラグ用プログラムがファイルをデフラグし得る。ステップ４１０は、マイクロジョブＡＰＩへの呼出である。ステップ４１２では、ファイルのために空いたディスクスペースを見つけ出し、空いたスペースの割当を獲得する。
【００５６】
マイクロジョブＡＰＩを呼出すステップ４１４およびファイルの断片を移動させるステップ４１６は、ファイル全体が移動されるまで繰返される。たとえば、移動されるべきフ
ァイルは、他のアプリケーションの性能に重大な影響を及ぼさないほど十分に小さな断片にして移動され得る。
【００５７】
こうして、マイクロジョブの概念は、継続的に断片化を監視し、断片化が起こると直ちにファイルをデフラグする動的なデフラグ用プログラムを提供する。結果として、ＭＪＳ対応のデフラグ用プログラムは、スケジュールされたデフラグ実行時間を待たずに、断片化の発生直後に断片化されたファイルをデフラグすることとなる。したがって、ＭＪＳ対応のデフラグ用プログラムは、この発明の一実施例に従った実時間のデフラグ用プログラムである。
【００５８】
シェル・マイクロジョブ・スケジューラ
一実施例においては、ＭＪＳは、コンピュータ処理ジョブを自動的にマイクロジョブに分割する。たとえば、ＭＪＳは、ＭＪＳ対応でないアプリケーションプログラムに巻付けられたシェルとして作動する。したがって、シェルＭＪＳは完全なソフトウェアアプリケーションであり、それを通じて如何なる実行形式のファイルをも動作させることできる。シェルＭＪＳは、コンピュータ処理ジョブを実行形式のファイルからマイクロジョブに自動的に分割する。換言すれば、この実施例においては、アプリケーションプログラマはアプリケーションをマイクロジョブに分割する必要がない。
【００５９】
シェルＭＪＳは、一実施例においては、リソース利用に基づいてコンピュータ処理ジョブを実行形式のファイルからマイクロジョブに分割する。シェルＭＪＳは、アプリケーションと、そのアプリケーションがどのように動作するかとを分析して、そのアプリケーションがどのリソースを使用するかを調べ得る。たとえば、ＭＪＳは、アプリケーションがどのリソースを使用するか、および、そのアプリケーションがどの程度までリソースを使用するかを分析する。たとえば、ディスクデフラグ用プログラムが動作すると、シェルＭＪＳは、アプリケーションがどのリソースを使用するか（たとえばＣＰＵ、ネットワーク、ディスクＩ／Ｏ）を判断することができる。シェルＭＪＳは、一実施例においては、この分析に基づいてアプリケーションを如何にマイクロジョブに分割するかを自動的に判断する。シェルＭＪＳはまた、この分析に基づいて、マイクロジョブを如何にスケジュールするかを判断し得る。
【００６０】
シェルＭＪＳはさまざまなパラメータを使用して、コンピュータ処理ジョブを如何にマイクロジョブに分割するかを判断し得、および／または、マイクロジョブの実行を如何にスケジュールするかを判断し得る。これらのパラメータは、ユーザ入力に基づき得るか、またはシェルＭＪＳによって確立され得る。たとえば、ユーザは、特定のアプリケーションの優先順位が高くなるよう指定し得る。
【００６１】
ハードウェア概要
図５は、本発明の実施例が実現され得るコンピュータシステム５００を図示するブロック図である。プロセス３００およびプロセス４００のステップは、システム５００の１つ以上のコンピュータ読取可能媒体の命令として記憶され、コンピュータシステム５００のプロセッサ上で実行される。コンピュータシステム５００は、情報を通信するためのバス５０２または他の通信メカニズムと、バス５０２に結合され情報を処理するためのプロセッサ５０４とを含む。コンピュータシステム５００はまた、プロセッサ５０４によって実行されるべき情報および命令を記憶するための、バス５０２に結合されるランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置などのメインメモリ５０６を含む。メインメモリ５０６はまた、プロセッサ５０４によって実行されるべき命令の実行中に、一時変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム５００はさらに、バス５０２に結合される、プロセッサ５０４のための静的情報および命令を記憶するための読出専用メモリ（ＲＯＭ）５０８または他の静的記憶装置を含む。情報および命令
を記憶するための、磁気ディスクまたは光学ディスクなどの記憶装置５１０が設けられ、バス５０２に結合される。コンピュータシステム５００は、プロセッサ５０４をいくつ有していてもよい。たとえば、コンピュータシステム５００は一実施例においてはマルチプロセッサシステムである。プロセッサ５０４は、コアをいくつ有していてもよい。一実施例においては、プロセッサ５０４はマルチコアプロセッサ５０４である。コンピュータシステム５００は、ハイパースレッドマシン内で用いられ得る。
【００６２】
コンピュータシステム５００は、コンピュータユーザに情報を表示するための、陰極線管（ＣＲＴ）などのディスプレイ５１２にバス５０２を介して結合され得る。プロセッサ５０４に情報および指令選択を通信するための、英数字および他のキーを含む入力装置５１４がバス５０２に結合される。別の種類のユーザ入力装置は、プロセッサ５０４に方向情報および指令選択を通信するため、ならびにディスプレイ５１２上のカーソルの動きを制御するためのマウス、トラックボール、またはカーソル方向キーなどのカーソル制御部５１６である。この入力装置は、典型的には、第１の軸（たとえばｘ）および第２の軸（たとえばｙ）の２本の軸における２自由度を有しており、この装置が平面内の位置を指定することを可能にする。
【００６３】
本発明は、本明細書中において記載される技術を実現するためのコンピュータシステム５００の使用に関する。本発明の一実施例に従うと、それらの技術は、プロセッサ５０４がメインメモリ５０６に含まれる１つ以上の命令の１つ以上のシーケンスを実行することに応答して、コンピュータシステム５００によって実行される。このような命令は、記憶装置５１０などの別の機械読取可能媒体からメインメモリ５０６に読込まれ得る。メインメモリ５０６に含まれる命令のシーケンスを実行して、プロセッサ５０４に、本明細書中において記載されるプロセスステップを実行させる。代替的な実施例においては、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて、配線による回路構成を用いて本発明を実現してもよい。したがって、本発明の実施例は、ハードウェア回路構成およびソフトウェアのいずれの特定的な組合せにも限定されない。
【００６４】
本明細書中で用いられるような「機械読取可能媒体」という語は、特定的な態様で機械に操作させるデータを与えることに関与するいずれかの媒体を指す。コンピュータシステム５００を用いて実現される実施例においては、たとえばプロセッサ５０４に実行するよう命令を与える際に、さまざまな機械読取可能媒体が含まれる。このような媒体は、不揮発性媒体、揮発性媒体および送信媒体を含む多くの形態を取り得るがこれらに限定されない。不揮発性媒体は、たとえば、記憶装置５１０などの光学または磁気ディスクを含む。揮発性媒体は、メインメモリ５０６などの動的メモリを含む。送信媒体は、バス５０２を備える配線を含む、同軸ケーブル、銅線および光ファイバを含む。送信媒体はまた、電波および赤外線データ通信中に発生されるような音波または光波の形態を取り得る。すべてのこのような媒体は、媒体によって搬送される命令が、機械に命令を読込む物理メカニズムによって検出され得るように具体的でなければならない。
【００６５】
機械読取可能媒体の一般的な形態は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは他のいずれかの磁気媒体、ＣＤ−ＲＯＭ、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを有する他のいずれかの物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のいずれかのメモリチップもしくはカートリッジ、後で説明されるような搬送波、またはそこからコンピュータが読込可能な他のいずれかの媒体をも含む。
【００６６】
実行用の１つ以上の命令の１つ以上のシーケンスをプロセッサ５０４に搬送する際、さまざまな形態の機械読取可能媒体が含まれ得る。たとえば、命令は初め、リモートコンピュータの磁気ディスクで搬送され得る。リモートコンピュータは、その動的メモリに命令
をロードし、モデムを用いて電話線で命令を送ることができる。コンピュータシステム５００にローカルなモデムが電話線上のデータを受信し、赤外線送信機を用いてそのデータを赤外線信号に変換することができる。赤外線検出器は赤外線信号で搬送されるデータを受信することができ、適切な回路構成が当該データをバス５０２に乗せることができる。バス５０２は、データをメインメモリ５０６に搬送し、そこからプロセッサ５０４が命令を取出して実行する。メインメモリ５０６が受けた命令は、プロセッサ５０４による実行の前または後に、記憶装置５１０に任意で記憶され得る。
【００６７】
コンピュータシステム５００はまた、バス５０２に結合される通信インターフェイス５１８を含む。通信インターフェイス５１８は、ローカルネットワーク５２２に接続されるネットワークリンク５２０に双方向データ通信結合を与える。たとえば、通信インターフェイス５１８は、対応する種類の電話線にデータ通信接続を与えるための統合サービスデジタル網（ＩＳＤＮ）カードまたはモデムであり得る。別の例として、通信インターフェイス５１８は、互換性のあるＬＡＮにデータ通信接続を与えるためのローカルエリアネットワーク（ＬＡＮ）カードであり得る。無線リンクも実現され得る。このようないずれの実現例においても、通信インターフェイス５１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気、電磁または光学信号を送受信する。
【００６８】
ネットワークリンク５２０は典型的に、１つ以上のネットワークを通じて他のデータ装置にデータ通信を与える。たとえば、ネットワークリンク５２０は、ローカルネットワーク５２２を通じてホストコンピュータ５２４に、またはインターネットサービスプロバイダ（ＩＳＰ）５２６によって操作されるデータ機器に接続を提供し得る。ＩＳＰ５２６は次いで、現在一般的に「インターネット」５２８と称される広域パケットデータ通信網を通じてデータ通信サービスを提供する。ローカルネットワーク５２２およびインターネット５２８はともに、デジタルデータストリームを搬送する電気、電磁または光学信号を用いる。さまざまなネットワークを通る信号、ならびにコンピュータシステム５００との間でデジタルデータを搬送し合う通信インターフェイス５１８を通るネットワークリンク５２０上の信号は、情報を移送する搬送波の例示的な形態である。
【００６９】
コンピュータシステム５００は、ネットワーク、ネットワークリンク５２０および通信インターフェイス５１８を通じて、メッセージを送り、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ５３０が、インターネット５２８、ＩＳＰ５２６、ローカルネットワーク５２２および通信インターフェイス５１８を通じてアプリケーションプログラムについての要求コードを送信し得る。
【００７０】
受信されたコードは、その受信時にプロセッサ５０４によって実行され得、および／または、後で実行するために記憶装置５１０もしくは他の不揮発性記憶装置に記憶され得る。この態様で、コンピュータシステム５００は、アプリケーションコードを搬送波の形態で得ることができる。
【００７１】
上述の明細書においては、本発明の実施例が、実現例ごとに異なり得る多数の特定的な詳細を参照して説明された。したがって、発明であるもの、および出願人によって発明であると意図されるものを唯一および独占的に示すものは、いずれの後の訂正をも含む、この出願から生じる一組の請求項であり、そのような請求項が生じる特定的な形態におけるものである。そのような請求項に含まれる用語について本明細書中において明示的に記載されるいずれの定義も、請求項において用いられるようなそのような用語の意味を決定するものとする。したがって、請求項において明示的に列挙されていない限定、要素、性質、特徴、利点または属性は、そのような請求項の範囲を如何なる意味でも限定するものではない。したがって、明細書および図面は、限定的ではなく例示的に認識されるべきである。
【図１】
2009541848.tif 000003
【図２】
2009541848.tif 000004
【図３】
2009541848.tif 000005
【図４】
2009541848.tif 000006
【図５】
2009541848.tif 000007
【国際調査報告】
2009541848.tif 000008
2009541848.tif 000009
2009541848.tif 000010