[go: up one dir, main page]

JP5335625B2 - ブート時間を短縮するコンピュータ・プログラム - Google Patents

ブート時間を短縮するコンピュータ・プログラム Download PDF

Info

Publication number
JP5335625B2
JP5335625B2 JP2009202140A JP2009202140A JP5335625B2 JP 5335625 B2 JP5335625 B2 JP 5335625B2 JP 2009202140 A JP2009202140 A JP 2009202140A JP 2009202140 A JP2009202140 A JP 2009202140A JP 5335625 B2 JP5335625 B2 JP 5335625B2
Authority
JP
Japan
Prior art keywords
boot
speed threshold
program
computer
file
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.)
Active
Application number
JP2009202140A
Other languages
English (en)
Other versions
JP2011053908A (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.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte 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 Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Priority to JP2009202140A priority Critical patent/JP5335625B2/ja
Publication of JP2011053908A publication Critical patent/JP2011053908A/ja
Application granted granted Critical
Publication of JP5335625B2 publication Critical patent/JP5335625B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、コンピュータのブート時間を短縮する技術に関し、特にブート時にブート媒体から大量のファイルを読み出すプログラムが存在する場合にブート時間を短縮する技術に関する。
コンピュータは電源が投入されると、ブート・ディスクまたはブート媒体からブート・ファイルを読み出す起動プロセス(ブート・ストラップまたはブートともいう。)を開始する。最初にBIOS_ROMに格納されているBIOSのPOST(Power On Self Test)といわれる初期化プログラムがメイン・メモリに読み出されて実行される。初期化プログラムは、ブート・デバイスを診断したり初期化したりする。つぎにBIOSはブート・ファイルが格納されているブート・ディスクを探す。ブート・ファイルはオペレーティング・システム、デバイス・ドライバ、およびアプリケーション・プログラムなどを含む。ブート・ディスクとしては通常ハード・ディスク・ドライブ(HDD)が使用される。
BIOSは、HDDの先頭セクタに格納されているMBR(Master Boot Record)をメイン・メモリにロードしてそれに制御を移す。MBRはディスクからブート可能なパーティションを探してその先頭セクタ(ブート・セクタ)にあるブート・ストラップ・ローダをメイン・メモリにロードしてそれに制御を移す。その後ブート・ストラップ・ローダにつづいてブート・ファイルが順番にメイン・メモリに読み出される。プリエンプティブなマルチタスキングを行うオペレーティング・システム(OS)は、ブート時もプリエンプティブなタスク・スイッチを行うようになっている。OSはブート時にHDDからブート・ファイルを読み出すために複数のプロセスやスレッドを生成する。
OSは、各プロセスを所定のアルゴリズムでプロセッサにディスパッチする。ディスパッチされたプロセスは、プロセッサにおいて所定のタイム・スライスの間だけ実行されたのちにプリエンプトされて後続のプロセスがディスパッチされる。ブートの後半になると同時に存在するプロセスの数が増大してHDDに多くのシーク時間が発生し、ブートの実行効率が低下してブート時間の遅延を招く。
余分なシークが発生しないようにHDDに単一のブート・イメージを格納して短時間でブートを完了する方法もあるが特殊なOSに限定されている。また、SSD(Solid State Drive)をブート・デバイスとして利用する方法もあるが、容量およびコストに限界がある。さらに、HDDに記憶されたブート・ファイルに対してデフラグを実行してシークが発生しにくいように並べ替える方法もある。Windows(登録商標)では、無駄なページ・フォルトやシークを省略して起動時間を短縮するためにプリフェッチという機能を導入している。
これは前回までのブート時に、ブート中のプログラムの動作をトレースして、HDDに対するファイルのアクセス状況を調べておき、その結果に基づいて次回以降のブート時に所定のファイルを先読みしておくという機能である。アクセス・ログはファイルごとに記録されて所定のディレクトリに格納される。各ファイルには、それぞれのプログラムごとのHDDに対するアクセス・パターンのデータが記録されており、ブート時にはこのアクセス・ログに基づいてファイルがメイン・メモリに先読みされる。
特許文献1は、特定のアプリケーションを起動するプロセスのプロセッサ資源、I/O資源またはメモリ資源などに対する優先順位を低くするために、スタートアップリケーションの数が増大することによる起動時間の遅延問題を解決する発明を開示する。特許文献2は、所定のプロセスが起動したことを検知してシステム全体のCPU使用率を測定し、CPU使用率に基づいて当該プロセスの停止と実行再開を制御することで、ファイルアクセスにおけるレスポンスの悪化を抑制する発明を開示する。
特開2009−517784号公報 特開2007−18282号公報
ブート時には、多くのブート・ファイルが単一のHDDからメイン・メモリにロードされるため、HDDへのアクセス頻度が非常に高くなる。ところで、コンピュータに特定のアンチウイルス・プログラム(以下、AVプログラムという。)を導入すると起動時間が遅延することを観測することができる。AVプログラムは、比較的早い段階でロードされて実行を開始すると、ブート期間中にブート・ファイルに対するウイルス・チェックをする。その際に、AVプログラムは、独自にブート・ファイルをHDDから読み出してウイルス・チェックをするので、HDDに対して、プログラムの実行のためにメイン・メモリの実行領域にロードするための本来のアクセスとは別に、AVプログラムがウイルス・チェックのためにメイン・メモリの専用領域にロードするためのアクセスが発生する。
このように、AVプログラムがブート期間中にHDDにアクセスするためのプロセスが多数発生し、他のブート・ファイルをロードするためのプロセスがHDDにアクセスする頻度が低下したり、単一のHDDに対するアクセスが競合したりしてブート時間の遅延をもたらしている。特許文献2の発明のようにCPU使用率に基づいてAVプログラムの停止と実行再会を制御する方法では、AVプログラムの中にはその実行が停止されるとコンピュータ・ウイルスにより実行が停止されたと判断して、ユーザに警告をしたりブートを停止させたりするものがあるので採用できない。さらに特許文献2の発明はCPU使用率を増加させないで専らHDDに対するアクセスを頻繁に行うAVプログラム以外のプログラムに対しても有効性が低い。
特許文献1の発明は、あらかじめ遅延させる対象となるアプリケーションを選定して優先順位を設定しておく必要がある。したがって、当該アプリケーションはシステム開発者があらかじめ選定してOSとともにシステムとして組み込んでいたアプリケーションには有効であるが、その後にユーザが導入したようなアプリケーションに適用することは困難である。
そこで、本発明の目的は、ブート時に大量のブート・ファイルを読み出すプログラムが存在するコンピュータのブート時間を短縮するコンピュータ・プログラムを提供することにある。さらに本発明の目的は、ブート遅延の原因となるプログラムをあらかじめ特定しないでブート時間を短縮することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、ブート遅延の原因となるプログラムの動作を停止しないでブート時間を短縮することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、ブート時にアプリケーション・プログラムをできるだけ早く動作可能な状態にすることができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、そのようなコンピュータ・プログラムを実装するコンピュータを提供することにある。
本発明にかかるコンピュータ・プログラムは、ブート時にOSと協働して動作することでブート媒体からブート・ファイルをロードする時間を短縮する。ブートが開始されるとブート媒体からメイン・メモリの実行領域にブート・ファイルのロードが開始される。制御対象プログラムは、ブート媒体からメイン・メモリの自らの専用領域に所定の作業のためにブート・ファイルの読み出しを開始する。実行領域は、プロセッサがブート・ファイルを実行するための記憶領域であり、制御対象プログラムがその作業のためにブート・ファイルを読み出す専用領域とは異なる。したがって、コンピュータでは、ブート・ファイルの本来のロードに加えて、制御対象プログラムによる読み出しのためにブート媒体に対するアクセスが発生しブート時間が長くなる。
つづいて、制御対象プログラムがブート媒体からブート・ファイルを読み出す読み取り速度が測定される。そして測定した読み取り速度に基づいて、ブート期間中に制御対象プログラムがブート・ファイルの読み出しのために生成したプロセスのキューイングを実行または解除する。その結果、実行領域にブート・ファイルをロードするためのプロセスに対してブート媒体へのアクセスが制御対象プログラムの読み取り速度に応じてダイナミックに割り当てられ、制御対象プログラムのプロセスを停止することなくブート時間を短縮させることができる。制御対象プログラムは典型的には、ウイルス対策プログラムとすることができる。ウイルス対策プログラムは、ブート時に読み出しのプロセスが停止されると警告したりブートを停止したりする場合があるが、本発明ではブート中にウイルス対策プログラムのプロセスの実行を遅延させるだけで停止させないのでそのような問題はない。
プロセスのキューイングを制御するために、開始速度閾値と開始速度閾値よりも小さい解除速度閾値を設定することができる。そして、読み取り速度が開始速度閾値以上になったときにプロセスのキューイングを開始し、読み取り速度が解除速度閾値未満まで低下したときにキューイングを解除することができる。制御対象プログラムのプロセスをキューイングする時間を徐々に長くしていった場合に、ある限度を越えるとブート完了時間が変化しない状態になる。一方、制御対象プログラム自体もできるだけ早く実行を開始することが望ましい。したがって、開始速度閾値と解除速度閾値にはブート完了時間の短縮に有効で全体のキューイング時間が最低になる状態としての最適値が存在する。
最適な開始速度閾値は、ブートごとに次回のブートにおける開始速度閾値を変更しながらブート完了時間を測定して決定することができる。ブートごとに開始速度閾値を低下させていくと、次第にブート完了時間は短縮していく。そして、ブート完了時間がある程度まで短縮するとブート開始速度閾値をそれ以上低下させてもブート時間が短縮しない状態になる。このときの開始速度閾値を最適値とすることができる。最適値を決定する直前には、今回の開始速度閾値に対して次回の開始速度閾値を若干増加させて確認することが望ましい。さらに、制御対象プログラムがブート完了までに読み出したブート・ファイルの総量に対する平均読み取り速度を測定し、平均読み取り速度を含めて開始速度閾値の最適値を決定することができる。
このときの開始速度閾値の最適値は、ブート完了時間が変化しない範囲において平均読み取り速度が最大になったときの値とすることができる。また、ブートごとに解除速度閾値を変更してブート完了時間を測定し最適な解除速度閾値を決定することができる。最適な開始速度閾値を決定する際に、最初にブート・ファイルの中で専用領域に読み出したブート・ファイルの総量が所定値を越えるプログラムを選定すると、早期に制御対象プログラムを特定してキューイングの制御をすることができる。また、開始速度閾値が設定されていないプロセスをキューイングしない通常処理をすることで、あらかじめ制御対象プログラムを特定しなくても、開始速度閾値が設定されたプロセスを生成したプログラムだけを制御対象プログラムとして扱うことができる。
本発明により、ブート時に大量のブート・ファイルを読み出すプログラムが存在するコンピュータのブート時間を短縮するコンピュータ・プログラムを提供することができた。さらに本発明により、ブート遅延の原因となるプログラムをあらかじめ特定しないでブート時間を短縮することができるコンピュータ・プログラムを提供することができた。さらに本発明により、ブート遅延の原因となるプログラムの動作を停止しないでブート時間を短縮することができるコンピュータ・プログラムを提供することができた。さらに本発明により、ブート時にアプリケーション・プログラムをできるだけ早く動作可能な状態にすることができるコンピュータ・プログラムを提供することができた。さらに本発明により、そのようなコンピュータ・プログラムを実装するコンピュータを提供することができた。
本実施の形態にかかるコンピュータ・システムの主要なハードウエア構成を示す機能ブロック図である 本実施の形態にかかる高速ブートを実現するためのプログラム・モジュールの構成を示す機能ブロック図である。 ブートI/Oドライバの内部テーブル、ブートI/Oログ、およびブートI/Oデータ・ベースのデータ構造を示す図である。 ブートI/Oドライバが実行する制御対象プログラムに対する遅延処理の手順を示すフローチャートである。 I/Oコントロール・サービスが実行する制御対象プログラムに対する開始速度閾値QST、解除速度閾値QRTの最適値を決定する全体の処理の手順を示すフローチャートである。 I/Oコントロール・サービスが実行する制御対象プログラムに対する開始速度閾値QSTの最適値を決定する処理の手順を示すフローチャートである。 I/Oコントロール・サービスが実行する制御対象プログラムに対する解除速度閾値QRTの最適値を決定する処理の手順を示すフローチャートである。 ブート完了チェック・プログラムによるブート完了信号の生成方法を示すフローチャートである。
[コンピュータ・システムの構成]
図1は、本実施の形態にかかるコンピュータ・システム10の主要なハードウエア構成を示す機能ブロック図である。コンピュータ・システム10は、OSが導入されたサーバやクライアントなどである。コンピュータ・システム10は、それぞれバス23に接続されたCPU11、メイン・メモリ13、ネットワーク・カード15、HDD17、液晶表示装置(LCD)19、およびBIOS_ROM21などを含んでいる。HDD17は、ブート・ファイルを格納したブート・ディスクである。これらのハードウエア・デバイスの機能は、本実施の形態に関しては周知であるため説明は省略する。
[ソフトウエアの構成]
図2は、本実施の形態にかかる高速ブートを実現するためのプログラム・モジュールの構成を示す機能ブロック図である。図2のブロック図では、オペレーティング・システム(OS)としてWindows(登録商標)を例示して、ブートに関連する主要なソフトウエアだけを示している。ただし、本発明はOSをWindowsに限定する必要はなく、本発明の思想の範囲内で他の周知のOSに適用することもできる。
図2では、I/Oコントロール・サービス101、ブートI/Oデータ・ベース103、ブートI/Oログ105、I/Oドライバ107およびブート完了チェック・プログラム109以外のプログラム・モジュール(以下、モジュールという。)は周知である。また、AVプログラム53、スキャン・リスト59、フィルタ・ドライバ65以外はOSのモジュールである。ライン102より上側に記載されたモジュールはプロセッサ11のユーザ・モードで動作し、下側に記載されたモジュールはカーネル・モードで動作する。
ブート・システム・コード51はブート・ファイルをブート・ディスクであるHDD17から順番にメイン・メモリ13の実行領域にロードしていくプログラムである。AVプログラム53は、ブート時間の遅延の原因となる制御対象プログラムの一例で、本発明によりブート時に実行が遅延される。ブートが開始されてOSの主要なモジュールがロードされると、AVプログラム53は比較的早い段階でロードされて実行を開始する。実行を開始したAVプログラム53は、ブート・システム・コード51がHDD17からブート・ファイルをロードするためにAPI関数を呼び出すプロセスをフックして、自らが読み出すブート・ファイルのリストをスキャン・リスト59に生成する。
ここに、ブート・ファイルとは、コンピュータ10に電源が投入されてからブートが完了するまでにメイン・メモリ13の実行領域にロードされるデータである。実行領域とは、ブート・ファイルを実行するためにメイン・メモリ13に割り当てられた記憶領域である。AVプログラム53は、スキャン・リスト59に登録されたブート・ファイルを読み取るためのAPI関数を呼び出すプロセスを生成する。プロセスとはプログラムの実行単位のことで、本発明においてはOSがCPU11に処理を割り当てる単位であるスレッドも同じ意味として扱うことができる。フィルタ・ドライバ65は、ブート・システム・コード51がブート・ファイルをHDD17からメイン・メモリ13の実行領域にロードするタイミングとは非同期で、スキャン・リスト59に登録されたブート・ファイルをHDD17からメイン・メモリ13の専用領域に読み出す。専用領域とは、AVプログラム53が作業するためのメイン・メモリ上の記憶領域である。
AVプログラム53は、専用領域に読み出されたブート・ファイルのウイルス・チェックを行う。したがって、AVプログラム53は、ブート・システム・コード51がブート・ファイルをメイン・メモリ13の実行領域にロードするのとは別に、ウイルス・チェックのためにHDD17にアクセスして同じブート・ファイルを順次読み出すためブート遅延の原因になっている。なお、本発明においては、ブート時に実行される制御対象プログラムは1つである必要はなく、HDD17に対して独立して大量の読み取り要求をする複数のプログラムが存在していてもよい。
Kernel32.dll55は、Windows(登録商標)のサブシステムDLL(Dynamic Link Library)の一部であり、公開されているWindowsAPI関数を非公開のカーネル・モード・システム・サービスへの呼び出しに変換する。たとえば、先にロードされたブート・ファイルがつぎのブート・ファイルをHDD17からメイン・メモリ13に読み出すために、ReadFile APIというアプリケーションに公開されている関数を呼び出すと、それに応じて非公開のNtoskrnl63に実装されているNtReadFileという内部関数が呼び出されてHDD17からデータがロードされる。
Ntdll.dll57は、サブシステムDLLを使用するための関数を提供するサポート・ライブラリである。Ntdll.dll57は、ユーザ・モードから呼び出すことができるインターフェース機能(System Service Dispatch Stub)と、サブシステムDLLが使用するNtReadFile関数などの内部サポート関数で構成されている。Ntoskrnl63は、カーネル・モードで実行する内部関数、システム・サービス・ディスパッチャ、割り込みディスパッチ・テーブルなどを含む。ファイル・システム67は、HDD17に格納されているデータを管理するためにOSが提供するソフトウエアである。ファイル・システム67は、FAT(File Allocation Table)およびディレクトリを作成してHDD17に関するファイルの記録、読み取り、削除、または移動などを管理する。
OSキャッシュ・マネージャ69はHDD17に対するアクセスのパフォーマンスを向上させるためにOSが提供するソフトウエアである。OSキャッシュ・マネージャ69は、HDD17に対して、ReadFile API関数やWriteFile API関数が呼び出されたときに毎回HDD17にアクセスしないでも処理できるように、OSキャッシュ領域にデータをプリフェッチしてフィルする。OSキャッシュ・マネージャ69は、コンピュータ10で実行されるすべてのソフトウエアからのHDD17に対するアクセスを対象にして、独自のアルゴリズムに基づいてOSキャッシュ領域に対するファイルのフィルおよびフラッシュを管理する。ディスク・ドライバ71は、HDD17の動作およびデータ転送を制御するためのソフトウエアである。OS Shell Startup61は、レジストリに登録されたプログラムをブート時に自動起動(AutoRun)するプログラムである。
I/Oコントロール・サービス101は、ブートI/Oドライバ107に制御対象プログラムがHDD17に読み取り要求をするためのプロセスをキューイングするための閾値を設定したり、最適な閾値を決定したりするプログラムである。ブートI/Oデータ・ベース103は、ブート・ファイルの読み出しを行う制御対象プログラムのプロセスごとに、最適な閾値を登録するファイルである。図3(C)にブートI/Oデータ・ベース103のデータ構造を示す。ブートI/Oデータ・ベース103には、制御対象プログラムのプロセスごとにキューイングを開始する最適な閾値である開始速度閾値QSTとキューイングを解除する最適な閾値である解除速度閾値QRTと、それぞれが設定されたことを示す最適化完了フラグを登録することができる。図3(C)は一例として、プロセスAについては、最適な開始速度閾値QSTと最適な解除速度閾値QRTが登録され、プロセスBについては、最適な開始速度閾値QSTだけが登録され、プロセスCについてはいずれの閾値も登録されていないことを示している。
ブートI/Oログ105はブートごとに、制御対象プログラムがブート・ファイルの読み出しを行うプロセスに対する最適な閾値をI/Oコントロール・サービス101が決定するまで、ブートI/Oドライバ107がキューイングをするための暫定的な開始速度閾値QST、解除時間閾値QRT、ブートが完了するまでのブート完了時間BCTおよびブート完了まで制御対象プログラムのプロセスが読み取ったブート・ファイルの総バイト数に対する平均読み取り速度AVRを記録するファイルである。図3(B)にブートI/Oログ105のデータ構造を示す。図3(B)には、一例としてプロセスAについてブート回数が7回行われたときに、ブート回数1〜4回までは開始速度閾値QSTが初期値としてのVから最適値としてのVまで変化し、解除速度閾値QRTは、開始速度閾値QSTから一定の値βを減算した値が記録されている。
そして、4回目のブートのときに最適な開始速度閾値QSTがVとして決定されている。4〜7回までは、最適な開始速度閾値QSTに対して変数である減分βが減算された解除速度閾値QRTが記録され、7回目のブートで最適な解除速度閾値QRTがSnとして記録されている。ブートI/Oドライバ107は、ブート・ファイルの読み出しを行う制御対象プログラムのプロセスをキューイングして実行を遅延させるプログラムである。ブートI/Oドライバ107は、I/Oコントロール・サービス101により設定された暫定のまたは最適な開始速度閾値QSTおよび解除速度閾値QRTに基づいて当該プロセスをキューイングする。
ブートI/Oドライバ107は、内部テーブルを備えている。図3(A)は、内部テーブル121のデータ構造を示す。内部テーブルは、制御対象プログラムのプロセスごとのプロセス名、制御対象プログラムのプロセスが現在読み出しているブート・ファイルの読み取り速度CVR、キューイング実行中フラグ、キューイングを開始する開始速度閾値QST、キューイングを解除する解除速度閾値QRT、およびブートI/Oドライバ107が測定した平均読み取り速度AVRを記録する。現在の読み取り速度CVRは、一例として1秒間に読み出すブート・ファイルのバイト数とする。なお、内部テーブル121には、一時的に制御対象プログラム以外のプログラムのプロセス名および現在の読み取り速度CVRも記録する。
ブート完了チェック・プログラム109はOS Shell Startup61のレジストリに登録されブート時に自動的に起動する。ブート完了チェック・プログラム109は、コンピュータ10のブート完了状態を検出してブート完了信号をI/Oコントロール・サービス101に送り、ブート完了時間を計測してブートI/Oログ105に記録するためのプログラムである。以上で説明した、図2のプログラム・モジュールの構成は一例であり、例示したモジュールを本発明の範囲で統合したり分割したりすることができる。また、図2に示したモジュールは、メイン・メモリ13にロードされてCPU11で実行されることにより、コンピュータ10に所定の機能を実現させる。
[制御対象プログラムの遅延処理の手順]
図4は、ブートI/Oドライバ107が実行する制御対象プログラムに対する遅延処理の手順を示すフローチャートである。ブロック201では、図5〜図7の手順で説明するように、I/Oコントロール・サービス101がブートI/Oドライバ107のレジストリに制御対象プログラムのプロセスに対する最適な閾値を決定するまでの暫定的なまたは最適な開始速度閾値QSTおよび解除速度閾値QRTを設定している。なお、図6で説明するように、I/Oコントロール・サービス101が、読み取り要求をするプロセスに対して最適な開始速度閾値QSTを決定するまでは、当該プログラムは制御対象プログラムの候補として扱う。
コンピュータ10に電源が投入されてBIOSからOSに制御が移り順番にブート・ファイルがロードされていく。ブート・システム・コード51が動作し始めると、OS Shell Startup61が、ブート完了チェック・プログラム109を自動的に起動する。ブート完了チェック・プログラム109は、電源の起動からつねにほぼ一定の時間が経過したときに起動する。ブート完了チェック・プログラム109は、コンピュータ全体のCPU使用率を測定してブートの完了状態を検出する。コンピュータ全体のCPU使用率Yは、アイドル・プロセスのユーザ・モード時間をUi、アイドル・プロセスのカーネル・モード時間をKi、経過時間をEtとしたときに次の式で計算することができる。
Y=(1−(Ui+Ki)/Et)×100%
ブロック203でブートI/Oドライバ107は、HDD17にアクセスするプログラムが生成したプロセスが読み取り要求をしているか否かを判断する。なお、判断する対象となるプロセスは制御対象プログラムに限定せずすべてのプログラムを対象にする。書き込み要求や停止要求などのように読み取り要求以外のためのプロセスであれば、ブートI/Oドライバ107はディスク・ドライバ71に処理させる。読み取り要求のプロセスの場合は、ブロック205に移行して、ブートI/Oドライバ107は当該プロセスについて内部テーブル121にプロセス名と、当該プロセスの現在の読み取り速度CVRを記録する。ブートI/Oドライバ107は、当該プロセスに開始速度閾値QSTおよび解除速度閾値QRTが設定されている場合は、その値を内部テーブル121に記録する。
ブロック207では、ブートI/Oドライバ107は内部テーブル121を参照して、キューイング実行中フラグがオンになっているか否かを検査する。キューイング実行中フラグは、ブロック208、209、211、213を経由すれば今回のブートでオンになる。キューイング実行中フラグがオフの場合は、ブロック208に移行してブートI/Oドライバ107は当該プロセスに暫定的な値であるか最適な値であるかにかかわらず開始速度閾値QSTおよび解除速度閾値QRTが設定されているか否かを判断する。I/Oコントロール・サービス101により閾値が設定されていない場合は、ブロック223に移行してキューイングをしない通常の処理をする。閾値が設定されている場合は、ブロック209に移行してブートI/Oドライバ107は、当該プロセスによりHDD17から読み出されたブート・ファイルの現在の読み取り速度CVRが、開始速度閾値QST以上であるか否かを検査する。
現在の読み取り速度CVRが開始速度閾値QST以上でない場合は今回のブートにおいてはキューイングをしないでブロック223で読み取り要求のプロセスをディスク・ドライバ71に渡して通常の処理をする。ブロック209で現在の読み取り速度CVRが開始速度閾値QST以上の場合は、ブートI/Oドライバ107はブロック211で、内部テーブル121にキューイング実行中フラグを設定し、ブロック213で当該プロセスの読み取り要求に対してキューイングを開始する。なお、キューイングされるプロセスは、制御対象プログラムまたは制御対象プログラムの候補が生成したプロセスであるが、これについては図5〜図7で説明する。プロセスがキューイングされている間は、制御対象プログラムの読み取り要求がディスク・ドライバ71に渡らないため、制御対象プログラムによりHDD17から読み出されるブート・ファイルの読み取り速度が遅くなる。
その後手順はブロック203に移行して、ブロック203での読み取り要求を確認後に、ブロック205に移行して、ブートI/Oドライバ107は、内部テーブル121の現在の読み取り速度CVRを更新する。ブロック207で内部テーブル121のキューイング実行中フラグがオンの場合は、ブロック215に移行して、ブートI/Oドライバ107は、内部テーブル121を参照して現在の読み取り速度CVRが、解除速度閾値QRT以下であるか否かを判断する。制御対象プログラムは、ブート・ファイルをHDD17から読み出すために複数のプロセスを生成する。キューイングが開始されたあとの制御対象プログラムのプロセスは、実行が遅延するため次第に現在の読み取り速度CVRが低下する。キューイングにより制御対象プログラムのプロセスがHDD17にアクセスする頻度が低下して、他のプログラムによるブート・ファイルのロードのためのHDD17に対するアクセスが円滑に進むことになる。
ブロック215で現在の読み取り速度CVRが解除速度閾値QRT未満まで下がっていない場合は、キューイングされる以前のプロセスによりブート・ファイルが読み出されているために現在の読み取り速度CVRが十分に低下していないことになり、ブロック217でキューイングを継続しブロック203に移行する。ブロック215で現在の読み取り速度CVRが解除速度閾値QRT未満の場合は、ブロック219でキューイングしていた読み取り要求のプロセスをFIFO(First-In First-Out)方式でキューから取り出す。
そしてブロック223で、ブートI/Oドライバ107は、読み取り要求のプロセスをディスク・ドライバ71に渡してHDD17にアクセスさせる処理をする。ブロック225では、ブート完了チェック・プログラム109がCPU使用率に基づいてブートの完了状態を検知するとI/Oコントロール・サービス101にブート完了信号を送り、ブロック227でI/Oコントロール・サービス101はブートI/Oドライバ107の遅延処理を停止させて、それ以後の読み取り要求のプロセスを一切キューイングすることなくディスク・ドライバ71に渡す。また、ブート完了チェック・プログラム109は、ブート完了時間をブートI/Oログ105に記録する。さらに、ブートI/Oドライバ107は、内部テーブル121に平均読み取り速度AVRを記録し、キューイング実行中フラグが当該ブートの間に一度でもオンに設定されたことがあることを示す情報も記録する。
図4による制御対象プログラムの遅延処理によれば、ブート時に制御対象プログラムがブート・ファイルを専用領域に読み出す時間は長くなり、ブート・システム・コード51がブート・ファイルをロードするまでの時間は短くなる。ブート完了の状態はブート開始後にユーザが利用するアプリケーションを支障なく実行できる状態と定義することができる。そして、制御対象プログラムに対する遅延処理によりユーザが従来よりも早くアプリケーションを実行できる環境を実現することができる。制御対象プログラムがAVプログラム53の場合は、ウイルス・チェックを完了する時間はプロセスがキューイングされている時間だけ遅れるが、新たなファイルをHDD17に格納する時点でもウイルス・チェックが行われるので、ロードされたブート・ファイルに対するウイルス・チェックの時間がその分遅延しても通常は問題がない。またプロセスのキューイングはプロセスの停止とは異なり、AVプログラム53は応答速度の遅いHDDにアクセスしておりプロセスはシステムにより正常に処理されていると判断するので、警告したりブートを停止したりするようなことは行わない。
ここで、ブート完了チェック・プログラム109によるブート完了信号の生成方法を図8のフローチャートで説明する。本実施の形態におけるブート完了時間は、ブート時に自動起動するブート完了チェック・プログラム109の起動後、全体のCPU使用率が連続して所定時間以上所定値以下になったときまでの経過時間と定義する。本実施の形態では所定時間として10秒間を設定し、所定値として15%を設定する。
ブロック501でブート完了チェック・プログラムがブートの所定の段階で起動すると、ブロック503でOS Shell Startup61はブート完了チェック・プログラムがレジストリに登録されているか否かを判断する。登録されていない場合は、ブロック505でOS Shell Startup61に登録し、ブロック507で今回はブート完了信号の生成およびブート完了時間の計測をしないで終了する。ブロック503でブート完了チェック・プログラム109がOS Shell Startup61に登録されている場合は、ブロック509で変数COUNTDOWNを設定し、ブロック509、511、513、515、517により、CPU使用率が15%以下の状態が10秒間継続するか否かを判断する。
ブロック515で、CPU使用率と継続時間の条件が成立するとブート完了チェック・プログラム109は、ブロック519でブート完了信号をI/Oコントロール・サービス101に送り、ブート完了時間をブートI/Oログ105に記録してブロック521で終了する。上記の定義によるブート完了時間は、コンピュータ10の電源を投入してからアプリケーションが支障なく起動できる状態になるまでの時間ではない。アプリケーションはCPU使用率が15%以下になった時点で支障なく起動できるが、本実施の形態では、開始速度閾値QSTおよび解除速度閾値QRTの最適値を取得するために閾値を変更して実行したブートごとのブート完了時間の差が判明すればよいので、上記の定義を採用している。
[最適閾値の決定処理(全体)]
図5〜図7は、I/Oコントロール・サービス101が実行する制御対象プログラムに対する開始速度閾値QST、解除速度閾値QRTの最適値を決定する処理の手順を示すフローチャートである。図5は、全体の処理手順を示し、図6は最適な開始速度閾値QSTの決定処理の手順を示し、図7は最適な解除速度閾値QRTの決定処理の手順を示す。図5において、ブロック301では、ブートI/Oドライバ107が図4に示した手順を実行している。ブロック303で今回のブートが完了した時点では、ブートI/Oドライバ107の内部テーブル121には、前回のブートが終了したときの制御対象プログラムまたは制御対象プログラムの候補のプロセス名、開始速度閾値QST、解除速度QRTおよび平均読み取り速度AVRが記録され、ブートI/Oログ105にはブート完了時間BCTが記録されている。
ブロック305では、I/Oコントロール・サービス101が、ブートI/Oドライバ107に問い合わせて、内部テーブル121に記録された、今回のブート中にキューイング実行中フラグがオンになったことのある制御対象プログラムまたは制御対象プログラムの候補のプロセスに対する平均読み取り速度AVR、開始速度閾値QSTおよび解除速度QRTを取得してブートI/Oログ105に記録する。ブロック307では、開始速度閾値QSTの最適値の決定処理を行う。ブロック309では、I/Oコントロール・サービス101が今回のブートで開始速度閾値QSTの最適値を決定できたか否かを判断する。決定できないと判断した場合はブロック311に移行して最適値の決定を次回以降のブートに委ねる。ブロック309でI/Oコントロール・サービス101が開始速度閾値QSTの最適値を決定したと判断したときは、当該プロセスは制御対象プログラムにより生成されたものであると特定し、ブロック313に移行して解除速度閾値QRTの最適値の決定処理を行う。ブロック315では、I/Oコントロール・サービス101が今回のブートで解除速度閾値QRTの最適値を決定できたか否かを判断する。決定できないと判断した場合はブロック311に移行して最適値の決定を次回以降のブートに委ねる。ブロック315でI/Oコントロール・サービス101が解除速度閾値QRTの最適値を決定したと判断したときは、ブロック317で最適値の決定処理がすべて終了する。最適な閾値が決定されると、図4の手順でブートI/Oドライバ107により最適な閾値に基づくキューイングの制御が行われる。
[最適閾値の決定処理(QST)]
つぎに図6に基づいて、開始速度閾値QSTの最適値を決定する処理を説明する。図6のブロック351、365は、それぞれ図5のブロック307、311に対応し、図6のブロック359からブロック371への移行は、図5のブロック309からブロック313への移行に対応する。本実施の形態では、ブートI/Oドライバ107は、制御対象プログラムをあらかじめ認識しないでも開始速度閾値QSTおよび解除速度閾値QRTが設定されたプロセスに対して現在の読み取り速度CVRに基づいたキューイングを開始する。I/Oコントロール・サービス101は、ブートごとにブート完了時間BCTおよび平均読み取り速度AVRを測定して制御対象プログラムを特定し最適な開始速度閾値QSTおよび解除速度閾値QRTを決定するために、各ブート・ファイルについて複数回のブートを繰り返す必要があり決定までに時間を費やす。
最適な閾値を決定して制御対象プログラムを早期に特定するために、ブロック353では、I/Oコントロール・サービス101が、ブートを数回実行して全ブート・ファイルの中で専用領域に読み出したブート・ファイルの総バイト数が所定値を越えるプログラムを制御対象プログラムの候補として設定する。読み出しの総バイト数は、ブートI/Oドライバ107が測定する。ブート時に読み出しのバイト数が大きなブート・ファイルは、他のブート・ファイルのロードを遅延させる原因となり易いので、最初に制御対象プログラムの候補として設定することで、I/Oコントロール・サービス101が制御対象プログラムを特定して最適な速度閾値を設定するまでの時間を短縮することができる。制御対象プログラムの候補はユーザが設定してもよい。
ブロック355で今回のブートが完了すると、I/Oコントロール・サービス101はブロック357でブートI/Oログ105を参照し、ブロック359で開始速度閾値QSTは最適値だったか否かを判断する。図3のブートI/Oログ105には、ブートごとに開始速度閾値QSTが初期値としてのVからV、V・・・と最適値であるVまで変化している様子を示している。初期値VはI/Oコントロール・サービス101が保有している。1回目から4回目までのブートでは、解除速度閾値QRTは開始速度閾値QSTから一定値であるβだけ小さい値として設定されている。そしてブートI/Oログ105には、各ブートが完了したときのブート完了時間BCTと平均読み取り速度AVRが記録されている。
ブートI/Oログ105には、I/Oコントロール・サービス101が、初回のブートでは開始速度閾値QSTを初期値である最大値Vに設定し、2回目のブートではV=V−αに設定し、さらに3回目のブートではV=V−αとして設定したことが記録されている。開始速度閾値QSTを低下させてブートを繰り返していくと、制御対象プログラムが読み取るブート・ファイルの平均読み取り速度AVRが低下しブート完了時間BCTが短縮していくが、開始速度閾値QSTを低下させてもHDD17のファイル転送速度に支配されてそれ以上はブート完了時間BCTが短縮方向に変化しない状態になる。
I/Oコントロール・サービス101は開始速度閾値QSTの最適値を、ブート完了時間BCTが変化しない範囲で平均読み取り速度AVRが最大になるときの値Vとして決定する。I/Oコントロール・サービス101は、開始速度閾値QSTの最適値を決定するために、ブートI/Oログ105を参照して最適化処理の当初は今回ブート時の開始速度閾値QSTから比較的大きな変化分αを減算した値を次回のブート時の開始速度閾値QSTに設定するが、ブート回数が多くなるにしたがって、ブート完了時間BCTの短縮の程度が小さくなるので減算する変化分αを小さくしていく。I/Oコントロール・サービス101は、変化分αを次第に小さくしながら、今回の開始速度閾値QSTに対して変化分αを加算したり減算したりして次回の開始速度閾値QSTを設定し、最終的に最適な開始速度閾値Vを決定する。
I/Oコントロール・サービス101が最適な開始速度閾値QSTを決定するまでの手順は、図6においてブロック357、359、361、363、365に示している。ブロック359では、I/Oコントロール・サービス101は、最適な開始速度閾値QSTを決定していないと判断するとブロック360に移行して、今回のブートで設定した開始速度閾値QSTを変化させて生成した次回のブートの開始速度閾値QSTが最低値以上であるか否かを判断する。I/Oコントロール・サービス101は、開始速度閾値QSTが最低値未満になってもブート完了時間が短縮しないようなプログラムはブロック364で制御対象プログラムから除外してブロック365に移行する。
ブロック360で次回のブートに対して設定する開始速度閾値QSTが最低値以上の場合は、ブロック361で変化させた開始速度閾値QSTをブートI/Oドライバ107のレジストリに設定し、ブロック363でブートI/Oドライバ107のレジストリにQRT=QST−βを設定する。ここに変化分βは、開始速度閾値QSTと解除速度閾値QRTの間にヒステリシスをもたせるための定数である。本実施の形態ではI/Oコントロール・サービス101は、開始速度閾値QSTを決定するまで変化分βを定数βに設定する。そして、ブロック365で次回のブートが行われる。
ブロック363からブロック365を経由してブロック353に戻るときは、I/Oコントロール・サービス101は最適な開始速度閾値QSTを決定するまで当該プログラムを制御対象プログラムの候補として設定する。ブロック364からブロック365を経由してブロック353に戻るときは、I/Oコントロール・サービス101は、ブロック353で当該プログラムを除いた他のプログラムを制御対象プログラムの候補として設定する。
I/Oコントロール・サービス101は、ブロック359で最適な開始速度閾値QSTを決定したと判断すると当該プログラムを制御対象プログラムとして特定する。ブロック367で最適な開始速度閾値QSTをブートI/Oデータ・ベース103に登録し、かつ、最適化完了フラグをオンに設定する。I/Oデータ・ベースに最適化完了フラグが設定されている場合は、I/Oコントロール・サービス101は、当該プロセスに対してつねにブートI/Oドライバ107のレジストリに最適な開始速度閾値QSTを設定する。ブロック369でI/Oコントロール・サービス101は、最適な開始速度閾値QSTをブートI/Oドライバ107のレジストリに設定して、ブロック371で開始速度閾値QSTの決定処理を終了する。
[最適閾値の決定処理(QRT)]
つぎに図7に基づいて、解除速度閾値QRTの最適値を決定する処理を説明する。図7のブロック401、413は、それぞれ図5のブロック313、311に対応し、図7のブロック407からブロック419への移行は、図5のブロック315からブロック317への移行に対応する。解除速度閾値QRTは、現在の読み取り速度CVRが一旦開始速度閾値QSTを越えてプロセスのキューイングが開始されその後、現在の読み取り速度CVRが低下したときにキューイングを解除するための閾値である。
したがって、解除速度閾値QRTは、つねに開始速度閾値QSTよりも小さくなり、開始速度閾値QSTに対する差が大きくなるほどキューイングの時間は長くなる。解除速度閾値QRTの最適値も開始速度閾値QSTの最適値と同様に、ブート完了時間BCTが変化しない範囲で平均読み取り速度AVRを最大にするときの値Sとして決定する。ブロック403で最適な開始速度閾値QSTが設定されて行われた今回のブートが完了すると、I/Oコントロール・サービス101はブロック405でブートI/Oログ105を参照し、ブロック407で解除速度閾値QRTは最適値だったか否かを判断する。図3のブートI/Oログ105には、4回目のブートで開始速度閾値QSTが最適値Vに設定され、4回目のブートから7回目のブートまでブートごとに解除速度閾値QRTが初期値としてのSからS、S・・・と最適値であるSまで変化している様子を示している。また、ブートI/Oログ105には各ブートにおけるブート完了時間BCTと平均読み取り速度AVRが記録されている。解除速度閾値QRTは、開始速度閾値QSTから減分βを減算した値を設定する。
ブロック405ではI/Oコントロール・サービス101が、開始速度閾値QSTの最適値を取得した後の最初のブートでは最適な開始速度閾値QSTに対する減分βを比較的小さく設定し、次第に減分βを大きくしながら同時にブート完了時間BCTを観察する。そして、I/Oコントロール・サービス101はブート完了時間BCTがそれ以上は短縮しないと判断したときに、最適な解除速度閾値QRTを決定したと判断する。I/Oコントロール・サービス101が最適な解除速度閾値QRTを決定するまでの手順は、図7においてブロック407、409、411、413に示している。ブロック407でI/Oコントロール・サービス101は最適な解除速度閾値QRTを決定していないと判断すると、ブロック409で減少させた解除速度閾値QRTをブートI/Oドライバ107のレジストリに設定し、ブロック411でブートI/Oドライバ107のレジストリに最適な開始速度閾値QSTであるVを設定する。そして、ブロック413で次回のブートが行われる。
I/Oコントロール・サービス101は、ブロック407で最適な解除速度閾値QRTを決定したと判断すると、ブロック415で最適な解除速度閾値QRTをブートI/Oデータ・ベース103に登録し、かつ、最適化完了フラグをオンに設定する。I/Oコントロール・サービス101は、ブロック419で最適な開始速度閾値QRTをブートI/Oドライバ107のレジストリに設定して、ブロック419で解除速度閾値QRTの決定処理を終了する。
これまでブート・ディスクとして、HDDを例示して説明したが、ブート・ディスクは、フラッシュ・ドライブ(SSD)または、光学ディスク・ドライブ(ODD)であってもよい。また、ブート・ディスクはコンピュータ10の構成要素である必要はなく、ネットワークを通じて図2のモジュールが実装されたコンピュータと接続されるものであってもよい。
図4〜図7では、ブートI/Oドライバ107が現在の読み取り速度CVRに基づいて、キューイングの実行および解除をしている。本発明は、キューイングの実行および解除の判断を現在の読み取り速度CVR以外のパラメータで行うこともできる。たとえば、ブート段階ではコンピュータ10が起動してから時間が経過して多くのプログラムがロードされるとそれらが他のファイルを読み出し始めるので、ロードするブート・ファイルの転送速度がより遅くなる。したがって、あるブートの初期の段階では、制御対象プログラムをキューイングしないでブート・ファイルをロードし、制御対象プログラムが読み出したブート・ファイルの総量が一定の量に到達した以降はブート完了まで制御対象プログラムのプロセスをキューイングすることもできる。この場合は、キューイングを開始する閾値に読み取ったブート・ファイルの総バイト数を設定して図4〜図6の手順と同様の手順で最適値を決定してキューイングすることもできる。なおこの場合のキューイングはブート完了信号で解除するので、キューイングを解除する閾値を設定する必要はない。
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
103…ブートI/Oデータ・ベース
105…ブートI/Oログ
121…ブートI/Oドライバ107の内部テーブル

Claims (17)

  1. ブート・ファイルを格納したブート媒体を備えるコンピュータにオペレーティング・システムと協働して、
    前記ブート媒体からメイン・メモリの実行領域に前記ブート・ファイルのロードを開始するステップと、
    制御対象プログラムが前記ブート媒体から前記メイン・メモリの専用領域に前記ブート・ファイルの読み出しを開始するステップと、
    前記制御対象プログラムが前記ブート・ファイルを読み出す読み取り速度を測定するステップと、
    前記読み取り速度に基づいて、ブート期間中に前記制御対象プログラムが前記ブート・ファイルの読み出しのために生成したプロセスのキューイングを実行または解除するステップと
    を有する処理を実行させるコンピュータ・プログラム。
  2. 前記制御対象プログラムがウイルス対策プログラムである請求項1に記載のコンピュータ・プログラム。
  3. 前記プロセスのキューイングを制御する開始速度閾値と該開始速度閾値より小さい解除速度閾値を設定するステップと、
    前記読み取り速度が前記開始速度閾値以上のときに前記プロセスをキューイングするステップと、
    前記読み取り速度が前記解除速度閾値未満まで低下したときに前記キューイングを解除するステップと
    を有する請求項1または請求項2にコンピュータ・プログラム。
  4. ブートごとに次回のブートにおける前記開始速度閾値を変更してブート完了時間を測定し最適な開始速度閾値を決定するステップを有する請求項3に記載のコンピュータ・プログラム。
  5. 前記最適な開始速度閾値を決定するステップが、前記制御対象プログラムがブート完了までに読み出した前記ブート・ファイルの総量に対する平均読み取り速度を測定するステップを含む請求項4に記載のコンピュータ・プログラム。
  6. 前記最適な開始速度閾値が、ブート完了時間が変化しない範囲において前記平均読み取り速度が最大になったときの値である請求項5に記載のコンピュータ・プログラム。
  7. 前記最適な開始速度閾値を決定するステップが、前記最適な開始速度閾値を決定するまで前記開始速度閾値をブートごとに減少させるステップを含む請求項4から請求項6のいずれかに記載のコンピュータ・プログラム。
  8. ブートごとに次回のブートにおける前記解除速度閾値を変更してブート完了時間を測定し最適な解除速度閾値を決定するステップを有する請求項3から請求項7のいずれかに記載のコンピュータ・プログラム。
  9. 前記最適な開始速度閾値を決定するステップが、前記ブート・ファイルの中で前記専用領域に読み出したブート・ファイルの総量が所定値を越えるプログラムを選定するステップを含む請求項4から請求項8のいずれかに記載のコンピュータ・プログラム。
  10. 前記開始速度閾値が設定されていないときに前記プロセスに対してキューイングしない通常の処理をする請求項3から請求項9のいずれかに記載のコンピュータ・プログラム。
  11. 制御対象プログラムを含むブート・ファイルを格納したブート媒体を備えるコンピュータにオペレーティング・システムと協働して、
    前記ブート媒体からメイン・メモリの実行領域に前記ブート・ファイルのロードを開始するステップと、
    前記制御対象プログラムが前記ブート媒体から前記メイン・メモリの専用領域に前記ブート・ファイルの読み出しを開始するステップと、
    前記制御対象プログラムが前記ブート媒体から読み出した前記ブート・ファイルの総量を測定するステップと、
    前記制御対象プログラムが前記ブート・ファイルの読み出しのために生成したプロセスのキューイングを制御する総量閾値を設定するステップと、
    前記測定したブート・ファイルの総量が前記総量閾値以上のときに前記プロセスをキューイングするステップと
    を有する処理を実行させるコンピュータ・プログラム。
  12. ブート・ファイルを格納したブート・ディスクからブートすることが可能なコンピュータであって、
    実行領域と専用領域を備えるメイン・メモリと、
    前記コンピュータに前記ブート・ディスクから前記実行領域に前記ブート・ファイルのロードを開始する機能を実現させるブート・システム・コードと、
    制御対象プログラムが前記ブート・ディスクから前記専用領域に前記ブート・ファイルを読み出す読み取り速度を測定する速度測定手段と、
    前記読み取り速度に基づいて、ブート期間中に前記制御対象プログラムが前記ブート・ファイルの読み出しのために生成したプロセスのキューイングを実行または解除する制御手段と
    を有するコンピュータ。
  13. 前記制御対象プログラムは前記コンピュータに、前記ブート・ファイルの読み出しのために生成したプロセスの実行が停止されると警告を出す機能を実現させる請求項12に記載のコンピュータ。
  14. 前記コンピュータに、前記制御手段に対して前記キューイングの実行および解除に関する速度閾値を設定する機能を実現させるサービス・プログラムを有する請求項12または請求項13に記載のコンピュータ。
  15. 前記サービス・プログラムは前記コンピュータに、ブートごとに測定したブート完了時間に基づいて決定した次回のブートにおける前記速度閾値を前記制御手段に設定して前記速度閾値の最適値を決定する機能を実現させる請求項14に記載のコンピュータ。
  16. 前記サービス・プログラムはさらに前記コンピュータに、前記制御対象プログラムがブート完了までに読み出した前記ブート・ファイルの総量に対する平均読み取り速度に基づいて次回のブートにおける前記速度閾値を決定する機能を実現させる請求項15に記載のコンピュータ。
  17. ブート・ファイルを格納したブート・ディスクからブートすることが可能なコンピュータであって、
    実行領域と専用領域を備えるメイン・メモリと、
    前記コンピュータに前記ブート・ディスクから前記実行領域に前記ブート・ファイルのロードを開始する機能を実現させるブート・システム・コードと、
    制御対象プログラムが前記ブート・ディスクから前記専用領域に読み出した前記ブート・ファイルの総量を測定する総量測定手段と、
    前記測定したブート・ファイルの総量に基づいて、ブート期間中に前記制御対象プログラムが前記ブート・ファイルの読み出しのために生成したプロセスのキューイングを実行する制御手段と
    を有するコンピュータ。
JP2009202140A 2009-09-02 2009-09-02 ブート時間を短縮するコンピュータ・プログラム Active JP5335625B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009202140A JP5335625B2 (ja) 2009-09-02 2009-09-02 ブート時間を短縮するコンピュータ・プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009202140A JP5335625B2 (ja) 2009-09-02 2009-09-02 ブート時間を短縮するコンピュータ・プログラム

Publications (2)

Publication Number Publication Date
JP2011053908A JP2011053908A (ja) 2011-03-17
JP5335625B2 true JP5335625B2 (ja) 2013-11-06

Family

ID=43942843

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009202140A Active JP5335625B2 (ja) 2009-09-02 2009-09-02 ブート時間を短縮するコンピュータ・プログラム

Country Status (1)

Country Link
JP (1) JP5335625B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003175B2 (en) 2011-04-29 2015-04-07 Lenovo (Singapore) Pte. Ltd. System and method for accelerated boot performance
JP6919399B2 (ja) * 2017-08-07 2021-08-18 富士通株式会社 判定プログラム、情報処理装置、及び判定方法
US11392418B2 (en) * 2020-02-21 2022-07-19 International Business Machines Corporation Adaptive pacing setting for workload execution

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2303947A (en) * 1995-07-31 1997-03-05 Ibm Boot sector virus protection in computer systems
JP3293760B2 (ja) * 1997-05-27 2002-06-17 株式会社エヌイーシー情報システムズ 改ざん検知機能付きコンピュータシステム

Also Published As

Publication number Publication date
JP2011053908A (ja) 2011-03-17

Similar Documents

Publication Publication Date Title
JP4795378B2 (ja) コンピュータおよびブート方法
JP5385347B2 (ja) メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ
JP6646114B2 (ja) 動的仮想マシンサイジング
JP7087029B2 (ja) 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構
CN103477324B (zh) 用于将逻辑核动态地重新映射到物理核的处理器和方法
US8499143B2 (en) Method for shortening the boot time of a computer system
JP5212360B2 (ja) 制御プログラム、制御システムおよび制御方法
US7882285B2 (en) Buffer cache management to prevent deadlocks
US20080209198A1 (en) Boot Acceleration For Computer Systems
CN103810009B (zh) 一种计算机操作系统启动加速的方法和装置
WO2013097068A1 (en) Scheduling virtual central processing units of virtual machines among physical processing units
WO2019212696A1 (en) Multithread framework for use in pre-boot environment of a system-on-chip
JP5345990B2 (ja) 特定のプロセスを短時間で処理する方法およびコンピュータ
US20070118838A1 (en) Task execution controller, task execution control method, and program
US20160283250A1 (en) Boot controlling processing apparatus
CA2547078A1 (en) Memory management in a computer system using different swapping criteria
JP5335625B2 (ja) ブート時間を短縮するコンピュータ・プログラム
CN103677900B (zh) 一种计算机设备系统启动加速的方法和装置
EP3572940A1 (en) Method and device for scheduling vcpu thread
CN1973265B (zh) 用于在虚拟机环境中选择虚拟化算法的方法和装置
EP2869189A1 (en) Boot up of a multiprocessor computer
Russinovich Inside the windows vista kernel: Part 3
JP6645348B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
KR20140018134A (ko) 오프 상태로부터의 운영 체제의 고속 부팅이 가능한 임베디드 시스템 및 임베디드 시스템에서의 부팅 방법
JP5737087B2 (ja) 仮想マシン制御装置,仮想マシン制御プログラムおよび仮想マシン制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130708

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130731

R150 Certificate of patent or registration of utility model

Ref document number: 5335625

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250