JP5335625B2 - Computer program that reduces boot time - Google Patents
Computer program that reduces boot time Download PDFInfo
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
本発明は、コンピュータのブート時間を短縮する技術に関し、特にブート時にブート媒体から大量のファイルを読み出すプログラムが存在する場合にブート時間を短縮する技術に関する。 The present invention relates to a technique for reducing the boot time of a computer, and more particularly to a technique for reducing the boot time when there is a program that reads a large number of files from a boot medium at the time of booting.
コンピュータは電源が投入されると、ブート・ディスクまたはブート媒体からブート・ファイルを読み出す起動プロセス(ブート・ストラップまたはブートともいう。)を開始する。最初にBIOS_ROMに格納されているBIOSのPOST(Power On Self Test)といわれる初期化プログラムがメイン・メモリに読み出されて実行される。初期化プログラムは、ブート・デバイスを診断したり初期化したりする。つぎにBIOSはブート・ファイルが格納されているブート・ディスクを探す。ブート・ファイルはオペレーティング・システム、デバイス・ドライバ、およびアプリケーション・プログラムなどを含む。ブート・ディスクとしては通常ハード・ディスク・ドライブ(HDD)が使用される。 When the computer is turned on, it starts a boot process (also called boot strap or boot) that reads a boot file from a boot disk or boot medium. First, an initialization program called POST (Power On Self Test) stored in the BIOS_ROM is read into the main memory and executed. The initialization program diagnoses and initializes the boot device. Next, the BIOS searches for a boot disk in which a boot file is stored. The boot file includes an operating system, device drivers, application programs, and the like. A hard disk drive (HDD) is usually used as the boot disk.
BIOSは、HDDの先頭セクタに格納されているMBR(Master Boot Record)をメイン・メモリにロードしてそれに制御を移す。MBRはディスクからブート可能なパーティションを探してその先頭セクタ(ブート・セクタ)にあるブート・ストラップ・ローダをメイン・メモリにロードしてそれに制御を移す。その後ブート・ストラップ・ローダにつづいてブート・ファイルが順番にメイン・メモリに読み出される。プリエンプティブなマルチタスキングを行うオペレーティング・システム(OS)は、ブート時もプリエンプティブなタスク・スイッチを行うようになっている。OSはブート時にHDDからブート・ファイルを読み出すために複数のプロセスやスレッドを生成する。 The BIOS loads an MBR (Master Boot Record) stored in the head sector of the HDD into the main memory and transfers control to it. The MBR searches the disk for a bootable partition, loads the bootstrap loader in the first sector (boot sector) into the main memory, and transfers control to it. After that, the boot file is sequentially read into the main memory following the boot strap loader. An operating system (OS) that performs preemptive multitasking performs preemptive task switching even at boot time. The OS generates a plurality of processes and threads to read a boot file from the HDD at the time of booting.
OSは、各プロセスを所定のアルゴリズムでプロセッサにディスパッチする。ディスパッチされたプロセスは、プロセッサにおいて所定のタイム・スライスの間だけ実行されたのちにプリエンプトされて後続のプロセスがディスパッチされる。ブートの後半になると同時に存在するプロセスの数が増大してHDDに多くのシーク時間が発生し、ブートの実行効率が低下してブート時間の遅延を招く。 The OS dispatches each process to the processor using a predetermined algorithm. The dispatched process is executed for a predetermined time slice in the processor and then preempted, and the subsequent process is dispatched. As the number of processes existing increases in the second half of booting, a lot of seek time occurs in the HDD, resulting in a decrease in boot execution efficiency and a delay in boot time.
余分なシークが発生しないようにHDDに単一のブート・イメージを格納して短時間でブートを完了する方法もあるが特殊なOSに限定されている。また、SSD(Solid State Drive)をブート・デバイスとして利用する方法もあるが、容量およびコストに限界がある。さらに、HDDに記憶されたブート・ファイルに対してデフラグを実行してシークが発生しにくいように並べ替える方法もある。Windows(登録商標)では、無駄なページ・フォルトやシークを省略して起動時間を短縮するためにプリフェッチという機能を導入している。 There is a method of completing a boot in a short time by storing a single boot image in the HDD so that an unnecessary seek does not occur, but it is limited to a special OS. Also, there is a method of using an SSD (Solid State Drive) as a boot device, but there is a limit in capacity and cost. Further, there is a method of rearranging the boot files stored in the HDD so that seeks are not likely to occur by performing defragmentation. Windows (registered trademark) introduces a function called prefetch in order to shorten use time by omitting useless page faults and seeks.
これは前回までのブート時に、ブート中のプログラムの動作をトレースして、HDDに対するファイルのアクセス状況を調べておき、その結果に基づいて次回以降のブート時に所定のファイルを先読みしておくという機能である。アクセス・ログはファイルごとに記録されて所定のディレクトリに格納される。各ファイルには、それぞれのプログラムごとのHDDに対するアクセス・パターンのデータが記録されており、ブート時にはこのアクセス・ログに基づいてファイルがメイン・メモリに先読みされる。 This is a function of tracing the operation of the program being booted at the time of the previous boot, checking the access status of the file to the HDD, and prefetching a predetermined file at the next boot based on the result It is. The access log is recorded for each file and stored in a predetermined directory. In each file, data of an access pattern for the HDD for each program is recorded, and the file is prefetched into the main memory based on the access log at the time of booting.
特許文献1は、特定のアプリケーションを起動するプロセスのプロセッサ資源、I/O資源またはメモリ資源などに対する優先順位を低くするために、スタートアップリケーションの数が増大することによる起動時間の遅延問題を解決する発明を開示する。特許文献2は、所定のプロセスが起動したことを検知してシステム全体のCPU使用率を測定し、CPU使用率に基づいて当該プロセスの停止と実行再開を制御することで、ファイルアクセスにおけるレスポンスの悪化を抑制する発明を開示する。
ブート時には、多くのブート・ファイルが単一のHDDからメイン・メモリにロードされるため、HDDへのアクセス頻度が非常に高くなる。ところで、コンピュータに特定のアンチウイルス・プログラム(以下、AVプログラムという。)を導入すると起動時間が遅延することを観測することができる。AVプログラムは、比較的早い段階でロードされて実行を開始すると、ブート期間中にブート・ファイルに対するウイルス・チェックをする。その際に、AVプログラムは、独自にブート・ファイルをHDDから読み出してウイルス・チェックをするので、HDDに対して、プログラムの実行のためにメイン・メモリの実行領域にロードするための本来のアクセスとは別に、AVプログラムがウイルス・チェックのためにメイン・メモリの専用領域にロードするためのアクセスが発生する。 At boot time, since many boot files are loaded from a single HDD into the main memory, the access frequency to the HDD becomes very high. By the way, when a specific anti-virus program (hereinafter referred to as AV program) is introduced into a computer, it can be observed that the startup time is delayed. When the AV program is loaded at a relatively early stage and starts executing, the AV program is checked for viruses during the boot period. At that time, since the AV program independently reads the boot file from the HDD and checks for viruses, the original access for loading the HDD into the execution area of the main memory for executing the program is performed. Apart from this, an access for loading the AV program into a dedicated area of the main memory for virus checking occurs.
このように、AVプログラムがブート期間中にHDDにアクセスするためのプロセスが多数発生し、他のブート・ファイルをロードするためのプロセスがHDDにアクセスする頻度が低下したり、単一のHDDに対するアクセスが競合したりしてブート時間の遅延をもたらしている。特許文献2の発明のようにCPU使用率に基づいてAVプログラムの停止と実行再会を制御する方法では、AVプログラムの中にはその実行が停止されるとコンピュータ・ウイルスにより実行が停止されたと判断して、ユーザに警告をしたりブートを停止させたりするものがあるので採用できない。さらに特許文献2の発明はCPU使用率を増加させないで専らHDDに対するアクセスを頻繁に行うAVプログラム以外のプログラムに対しても有効性が低い。
As described above, a number of processes for the AV program to access the HDD during the boot period occur, and the frequency with which the process for loading other boot files accesses the HDD decreases. Access conflicts cause boot time delays. In the method of controlling the stop and execution reunion of the AV program based on the CPU usage rate as in the invention of
特許文献1の発明は、あらかじめ遅延させる対象となるアプリケーションを選定して優先順位を設定しておく必要がある。したがって、当該アプリケーションはシステム開発者があらかじめ選定してOSとともにシステムとして組み込んでいたアプリケーションには有効であるが、その後にユーザが導入したようなアプリケーションに適用することは困難である。
In the invention of
そこで、本発明の目的は、ブート時に大量のブート・ファイルを読み出すプログラムが存在するコンピュータのブート時間を短縮するコンピュータ・プログラムを提供することにある。さらに本発明の目的は、ブート遅延の原因となるプログラムをあらかじめ特定しないでブート時間を短縮することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、ブート遅延の原因となるプログラムの動作を停止しないでブート時間を短縮することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、ブート時にアプリケーション・プログラムをできるだけ早く動作可能な状態にすることができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、そのようなコンピュータ・プログラムを実装するコンピュータを提供することにある。 Accordingly, an object of the present invention is to provide a computer program that shortens the boot time of a computer in which a program for reading a large amount of boot files at the time of booting exists. It is another object of the present invention to provide a computer program that can shorten the boot time without specifying a program that causes a boot delay in advance. A further object of the present invention is to provide a computer program that can shorten the boot time without stopping the operation of the program causing the boot delay. It is a further object of the present invention to provide a computer program that can make an application program operable as soon as possible at the time of booting. It is a further object of the present invention to provide a computer that implements such a computer program.
本発明にかかるコンピュータ・プログラムは、ブート時にOSと協働して動作することでブート媒体からブート・ファイルをロードする時間を短縮する。ブートが開始されるとブート媒体からメイン・メモリの実行領域にブート・ファイルのロードが開始される。制御対象プログラムは、ブート媒体からメイン・メモリの自らの専用領域に所定の作業のためにブート・ファイルの読み出しを開始する。実行領域は、プロセッサがブート・ファイルを実行するための記憶領域であり、制御対象プログラムがその作業のためにブート・ファイルを読み出す専用領域とは異なる。したがって、コンピュータでは、ブート・ファイルの本来のロードに加えて、制御対象プログラムによる読み出しのためにブート媒体に対するアクセスが発生しブート時間が長くなる。 The computer program according to the present invention shortens the time for loading a boot file from the boot medium by operating in cooperation with the OS at the time of booting. When booting is started, loading of the boot file from the boot medium to the execution area of the main memory is started. The control target program starts reading the boot file from the boot medium to the dedicated area of the main memory for a predetermined work. The execution area is a storage area for the processor to execute the boot file, and is different from a dedicated area from which the control target program reads the boot file for the work. Therefore, in the computer, in addition to the original loading of the boot file, access to the boot medium occurs for reading by the control target program, resulting in a longer boot time.
つづいて、制御対象プログラムがブート媒体からブート・ファイルを読み出す読み取り速度が測定される。そして測定した読み取り速度に基づいて、ブート期間中に制御対象プログラムがブート・ファイルの読み出しのために生成したプロセスのキューイングを実行または解除する。その結果、実行領域にブート・ファイルをロードするためのプロセスに対してブート媒体へのアクセスが制御対象プログラムの読み取り速度に応じてダイナミックに割り当てられ、制御対象プログラムのプロセスを停止することなくブート時間を短縮させることができる。制御対象プログラムは典型的には、ウイルス対策プログラムとすることができる。ウイルス対策プログラムは、ブート時に読み出しのプロセスが停止されると警告したりブートを停止したりする場合があるが、本発明ではブート中にウイルス対策プログラムのプロセスの実行を遅延させるだけで停止させないのでそのような問題はない。 Subsequently, the reading speed at which the control target program reads the boot file from the boot medium is measured. Based on the measured reading speed, queuing of the process generated by the control target program for reading the boot file is executed or canceled during the boot period. As a result, access to the boot medium is dynamically assigned to the process for loading the boot file into the execution area according to the read speed of the controlled program, and the boot time without stopping the controlled program process. Can be shortened. The control target program can typically be an antivirus program. The anti-virus program may warn or stop booting when the reading process is stopped at the time of booting, but in the present invention, the execution of the anti-virus program process is only delayed and not stopped during booting. There is no such problem.
プロセスのキューイングを制御するために、開始速度閾値と開始速度閾値よりも小さい解除速度閾値を設定することができる。そして、読み取り速度が開始速度閾値以上になったときにプロセスのキューイングを開始し、読み取り速度が解除速度閾値未満まで低下したときにキューイングを解除することができる。制御対象プログラムのプロセスをキューイングする時間を徐々に長くしていった場合に、ある限度を越えるとブート完了時間が変化しない状態になる。一方、制御対象プログラム自体もできるだけ早く実行を開始することが望ましい。したがって、開始速度閾値と解除速度閾値にはブート完了時間の短縮に有効で全体のキューイング時間が最低になる状態としての最適値が存在する。 To control process queuing, a start speed threshold and a release speed threshold smaller than the start speed threshold can be set. Then, queuing of the process can be started when the reading speed becomes equal to or higher than the start speed threshold, and the queuing can be released when the reading speed falls below the release speed threshold. When the time for queuing the process of the control target program is gradually increased, the boot completion time does not change when a certain limit is exceeded. On the other hand, it is desirable to start the control target program itself as soon as possible. Therefore, the start speed threshold value and the release speed threshold value have optimum values as a state that is effective in shortening the boot completion time and has the minimum overall queuing time.
最適な開始速度閾値は、ブートごとに次回のブートにおける開始速度閾値を変更しながらブート完了時間を測定して決定することができる。ブートごとに開始速度閾値を低下させていくと、次第にブート完了時間は短縮していく。そして、ブート完了時間がある程度まで短縮するとブート開始速度閾値をそれ以上低下させてもブート時間が短縮しない状態になる。このときの開始速度閾値を最適値とすることができる。最適値を決定する直前には、今回の開始速度閾値に対して次回の開始速度閾値を若干増加させて確認することが望ましい。さらに、制御対象プログラムがブート完了までに読み出したブート・ファイルの総量に対する平均読み取り速度を測定し、平均読み取り速度を含めて開始速度閾値の最適値を決定することができる。 The optimum start speed threshold can be determined by measuring the boot completion time while changing the start speed threshold in the next boot for each boot. As the start speed threshold is decreased for each boot, the boot completion time is gradually shortened. When the boot completion time is shortened to some extent, the boot time is not shortened even if the boot start speed threshold is further reduced. The starting speed threshold at this time can be set to an optimum value. Immediately before determining the optimum value, it is desirable to confirm by slightly increasing the next start speed threshold with respect to the current start speed threshold. Furthermore, the average reading speed with respect to the total amount of boot files read by the control target program before the completion of booting can be measured, and the optimum value of the start speed threshold value including the average reading speed can be determined.
このときの開始速度閾値の最適値は、ブート完了時間が変化しない範囲において平均読み取り速度が最大になったときの値とすることができる。また、ブートごとに解除速度閾値を変更してブート完了時間を測定し最適な解除速度閾値を決定することができる。最適な開始速度閾値を決定する際に、最初にブート・ファイルの中で専用領域に読み出したブート・ファイルの総量が所定値を越えるプログラムを選定すると、早期に制御対象プログラムを特定してキューイングの制御をすることができる。また、開始速度閾値が設定されていないプロセスをキューイングしない通常処理をすることで、あらかじめ制御対象プログラムを特定しなくても、開始速度閾値が設定されたプロセスを生成したプログラムだけを制御対象プログラムとして扱うことができる。 The optimum value of the start speed threshold at this time can be a value when the average reading speed becomes maximum in a range where the boot completion time does not change. Further, it is possible to determine the optimum release speed threshold by changing the release speed threshold for each boot and measuring the boot completion time. When determining the optimal start speed threshold, if a program in which the total amount of boot files read into the dedicated area first exceeds the specified value is selected in the boot file, the control target program is identified and queued at an early stage. Can be controlled. In addition, by performing normal processing that does not queue a process for which the start speed threshold is not set, only the program that generated the process for which the start speed threshold is set can be controlled without specifying the control target program in advance. Can be treated as
本発明により、ブート時に大量のブート・ファイルを読み出すプログラムが存在するコンピュータのブート時間を短縮するコンピュータ・プログラムを提供することができた。さらに本発明により、ブート遅延の原因となるプログラムをあらかじめ特定しないでブート時間を短縮することができるコンピュータ・プログラムを提供することができた。さらに本発明により、ブート遅延の原因となるプログラムの動作を停止しないでブート時間を短縮することができるコンピュータ・プログラムを提供することができた。さらに本発明により、ブート時にアプリケーション・プログラムをできるだけ早く動作可能な状態にすることができるコンピュータ・プログラムを提供することができた。さらに本発明により、そのようなコンピュータ・プログラムを実装するコンピュータを提供することができた。 According to the present invention, it is possible to provide a computer program that shortens the boot time of a computer in which a program that reads a large amount of boot files at the time of booting exists. Furthermore, according to the present invention, it is possible to provide a computer program capable of shortening the boot time without specifying a program causing a boot delay in advance. Furthermore, according to the present invention, it is possible to provide a computer program that can shorten the boot time without stopping the operation of the program causing the boot delay. Furthermore, according to the present invention, it is possible to provide a computer program that can make an application program operable as soon as possible at the time of booting. Further, according to the present invention, a computer that implements such a computer program can be provided.
[コンピュータ・システムの構成]
図1は、本実施の形態にかかるコンピュータ・システム10の主要なハードウエア構成を示す機能ブロック図である。コンピュータ・システム10は、OSが導入されたサーバやクライアントなどである。コンピュータ・システム10は、それぞれバス23に接続されたCPU11、メイン・メモリ13、ネットワーク・カード15、HDD17、液晶表示装置(LCD)19、およびBIOS_ROM21などを含んでいる。HDD17は、ブート・ファイルを格納したブート・ディスクである。これらのハードウエア・デバイスの機能は、本実施の形態に関しては周知であるため説明は省略する。
[Computer system configuration]
FIG. 1 is a functional block diagram showing a main hardware configuration of a
[ソフトウエアの構成]
図2は、本実施の形態にかかる高速ブートを実現するためのプログラム・モジュールの構成を示す機能ブロック図である。図2のブロック図では、オペレーティング・システム(OS)としてWindows(登録商標)を例示して、ブートに関連する主要なソフトウエアだけを示している。ただし、本発明はOSをWindowsに限定する必要はなく、本発明の思想の範囲内で他の周知のOSに適用することもできる。
[Software configuration]
FIG. 2 is a functional block diagram showing a configuration of a program module for realizing high-speed boot according to the present embodiment. In the block diagram of FIG. 2, Windows (registered trademark) is illustrated as an operating system (OS), and only main software related to booting is shown. However, the present invention does not need to limit the OS to Windows, and can be applied to other known OSs within the scope of the idea of the present invention.
図2では、I/Oコントロール・サービス101、ブートI/Oデータ・ベース103、ブートI/Oログ105、I/Oドライバ107およびブート完了チェック・プログラム109以外のプログラム・モジュール(以下、モジュールという。)は周知である。また、AVプログラム53、スキャン・リスト59、フィルタ・ドライバ65以外はOSのモジュールである。ライン102より上側に記載されたモジュールはプロセッサ11のユーザ・モードで動作し、下側に記載されたモジュールはカーネル・モードで動作する。
In FIG. 2, program modules other than the I /
ブート・システム・コード51はブート・ファイルをブート・ディスクであるHDD17から順番にメイン・メモリ13の実行領域にロードしていくプログラムである。AVプログラム53は、ブート時間の遅延の原因となる制御対象プログラムの一例で、本発明によりブート時に実行が遅延される。ブートが開始されてOSの主要なモジュールがロードされると、AVプログラム53は比較的早い段階でロードされて実行を開始する。実行を開始したAVプログラム53は、ブート・システム・コード51がHDD17からブート・ファイルをロードするためにAPI関数を呼び出すプロセスをフックして、自らが読み出すブート・ファイルのリストをスキャン・リスト59に生成する。
The boot system code 51 is a program that loads a boot file from the
ここに、ブート・ファイルとは、コンピュータ10に電源が投入されてからブートが完了するまでにメイン・メモリ13の実行領域にロードされるデータである。実行領域とは、ブート・ファイルを実行するためにメイン・メモリ13に割り当てられた記憶領域である。AVプログラム53は、スキャン・リスト59に登録されたブート・ファイルを読み取るためのAPI関数を呼び出すプロセスを生成する。プロセスとはプログラムの実行単位のことで、本発明においてはOSがCPU11に処理を割り当てる単位であるスレッドも同じ意味として扱うことができる。フィルタ・ドライバ65は、ブート・システム・コード51がブート・ファイルをHDD17からメイン・メモリ13の実行領域にロードするタイミングとは非同期で、スキャン・リスト59に登録されたブート・ファイルをHDD17からメイン・メモリ13の専用領域に読み出す。専用領域とは、AVプログラム53が作業するためのメイン・メモリ上の記憶領域である。
Here, the boot file is data loaded into the execution area of the
AVプログラム53は、専用領域に読み出されたブート・ファイルのウイルス・チェックを行う。したがって、AVプログラム53は、ブート・システム・コード51がブート・ファイルをメイン・メモリ13の実行領域にロードするのとは別に、ウイルス・チェックのためにHDD17にアクセスして同じブート・ファイルを順次読み出すためブート遅延の原因になっている。なお、本発明においては、ブート時に実行される制御対象プログラムは1つである必要はなく、HDD17に対して独立して大量の読み取り要求をする複数のプログラムが存在していてもよい。
The
Kernel32.dll55は、Windows(登録商標)のサブシステムDLL(Dynamic Link Library)の一部であり、公開されているWindowsAPI関数を非公開のカーネル・モード・システム・サービスへの呼び出しに変換する。たとえば、先にロードされたブート・ファイルがつぎのブート・ファイルをHDD17からメイン・メモリ13に読み出すために、ReadFile APIというアプリケーションに公開されている関数を呼び出すと、それに応じて非公開のNtoskrnl63に実装されているNtReadFileという内部関数が呼び出されてHDD17からデータがロードされる。
The
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)するプログラムである。
The OS cache manager 69 is software provided by the OS in order to improve the performance of access to the
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についてはいずれの閾値も登録されていないことを示している。
The I /
ブート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が初期値としてのV0から最適値としてのVnまで変化し、解除速度閾値QRTは、開始速度閾値QSTから一定の値β0を減算した値が記録されている。
The boot I / O log 105 is queued by the boot I /
そして、4回目のブートのときに最適な開始速度閾値QSTがVnとして決定されている。4〜7回までは、最適な開始速度閾値QSTに対して変数である減分βが減算された解除速度閾値QRTが記録され、7回目のブートで最適な解除速度閾値QRTがSnとして記録されている。ブートI/Oドライバ107は、ブート・ファイルの読み出しを行う制御対象プログラムのプロセスをキューイングして実行を遅延させるプログラムである。ブートI/Oドライバ107は、I/Oコントロール・サービス101により設定された暫定のまたは最適な開始速度閾値QSTおよび解除速度閾値QRTに基づいて当該プロセスをキューイングする。
An optimum start speed threshold value QST is determined as V n at the time of the fourth boot. Until 4-7 times, release velocity threshold QRT to decrement β is subtracted a variable for the optimal starting velocity threshold QST is recorded, recorded as the optimal release velocity threshold QRT is S n at 7 th boot Has been. The boot I /
ブートI/Oドライバ107は、内部テーブルを備えている。図3(A)は、内部テーブル121のデータ構造を示す。内部テーブルは、制御対象プログラムのプロセスごとのプロセス名、制御対象プログラムのプロセスが現在読み出しているブート・ファイルの読み取り速度CVR、キューイング実行中フラグ、キューイングを開始する開始速度閾値QST、キューイングを解除する解除速度閾値QRT、およびブートI/Oドライバ107が測定した平均読み取り速度AVRを記録する。現在の読み取り速度CVRは、一例として1秒間に読み出すブート・ファイルのバイト数とする。なお、内部テーブル121には、一時的に制御対象プログラム以外のプログラムのプロセス名および現在の読み取り速度CVRも記録する。
The boot I /
ブート完了チェック・プログラム109はOS Shell Startup61のレジストリに登録されブート時に自動的に起動する。ブート完了チェック・プログラム109は、コンピュータ10のブート完了状態を検出してブート完了信号をI/Oコントロール・サービス101に送り、ブート完了時間を計測してブートI/Oログ105に記録するためのプログラムである。以上で説明した、図2のプログラム・モジュールの構成は一例であり、例示したモジュールを本発明の範囲で統合したり分割したりすることができる。また、図2に示したモジュールは、メイン・メモリ13にロードされてCPU11で実行されることにより、コンピュータ10に所定の機能を実現させる。
The boot completion check program 109 is registered in the registry of the
[制御対象プログラムの遅延処理の手順]
図4は、ブートI/Oドライバ107が実行する制御対象プログラムに対する遅延処理の手順を示すフローチャートである。ブロック201では、図5〜図7の手順で説明するように、I/Oコントロール・サービス101がブートI/Oドライバ107のレジストリに制御対象プログラムのプロセスに対する最適な閾値を決定するまでの暫定的なまたは最適な開始速度閾値QSTおよび解除速度閾値QRTを設定している。なお、図6で説明するように、I/Oコントロール・サービス101が、読み取り要求をするプロセスに対して最適な開始速度閾値QSTを決定するまでは、当該プログラムは制御対象プログラムの候補として扱う。
[Procedure for delayed processing of controlled programs]
FIG. 4 is a flowchart showing the procedure of the delay process for the control target program executed by the boot I /
コンピュータ10に電源が投入されてBIOSからOSに制御が移り順番にブート・ファイルがロードされていく。ブート・システム・コード51が動作し始めると、OS Shell Startup61が、ブート完了チェック・プログラム109を自動的に起動する。ブート完了チェック・プログラム109は、電源の起動からつねにほぼ一定の時間が経過したときに起動する。ブート完了チェック・プログラム109は、コンピュータ全体のCPU使用率を測定してブートの完了状態を検出する。コンピュータ全体のCPU使用率Yは、アイドル・プロセスのユーザ・モード時間をUi、アイドル・プロセスのカーネル・モード時間をKi、経過時間をEtとしたときに次の式で計算することができる。
Y=(1−(Ui+Ki)/Et)×100%
When the
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に記録する。
In
ブロック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以上であるか否かを検査する。
In
現在の読み取り速度CVRが開始速度閾値QST以上でない場合は今回のブートにおいてはキューイングをしないでブロック223で読み取り要求のプロセスをディスク・ドライバ71に渡して通常の処理をする。ブロック209で現在の読み取り速度CVRが開始速度閾値QST以上の場合は、ブートI/Oドライバ107はブロック211で、内部テーブル121にキューイング実行中フラグを設定し、ブロック213で当該プロセスの読み取り要求に対してキューイングを開始する。なお、キューイングされるプロセスは、制御対象プログラムまたは制御対象プログラムの候補が生成したプロセスであるが、これについては図5〜図7で説明する。プロセスがキューイングされている間は、制御対象プログラムの読み取り要求がディスク・ドライバ71に渡らないため、制御対象プログラムによりHDD17から読み出されるブート・ファイルの読み取り速度が遅くなる。
If the current read speed CVR is not equal to or higher than the start speed threshold QST, the process of the read request is passed to the disk driver 71 in
その後手順はブロック203に移行して、ブロック203での読み取り要求を確認後に、ブロック205に移行して、ブートI/Oドライバ107は、内部テーブル121の現在の読み取り速度CVRを更新する。ブロック207で内部テーブル121のキューイング実行中フラグがオンの場合は、ブロック215に移行して、ブートI/Oドライバ107は、内部テーブル121を参照して現在の読み取り速度CVRが、解除速度閾値QRT以下であるか否かを判断する。制御対象プログラムは、ブート・ファイルをHDD17から読み出すために複数のプロセスを生成する。キューイングが開始されたあとの制御対象プログラムのプロセスは、実行が遅延するため次第に現在の読み取り速度CVRが低下する。キューイングにより制御対象プログラムのプロセスがHDD17にアクセスする頻度が低下して、他のプログラムによるブート・ファイルのロードのためのHDD17に対するアクセスが円滑に進むことになる。
Thereafter, the procedure proceeds to block 203, and after confirming the read request in
ブロック215で現在の読み取り速度CVRが解除速度閾値QRT未満まで下がっていない場合は、キューイングされる以前のプロセスによりブート・ファイルが読み出されているために現在の読み取り速度CVRが十分に低下していないことになり、ブロック217でキューイングを継続しブロック203に移行する。ブロック215で現在の読み取り速度CVRが解除速度閾値QRT未満の場合は、ブロック219でキューイングしていた読み取り要求のプロセスをFIFO(First-In First-Out)方式でキューから取り出す。
If the current read speed CVR has not fallen below the release speed threshold QRT at
そしてブロック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を記録し、キューイング実行中フラグが当該ブートの間に一度でもオンに設定されたことがあることを示す情報も記録する。
In
図4による制御対象プログラムの遅延処理によれば、ブート時に制御対象プログラムがブート・ファイルを専用領域に読み出す時間は長くなり、ブート・システム・コード51がブート・ファイルをロードするまでの時間は短くなる。ブート完了の状態はブート開始後にユーザが利用するアプリケーションを支障なく実行できる状態と定義することができる。そして、制御対象プログラムに対する遅延処理によりユーザが従来よりも早くアプリケーションを実行できる環境を実現することができる。制御対象プログラムがAVプログラム53の場合は、ウイルス・チェックを完了する時間はプロセスがキューイングされている時間だけ遅れるが、新たなファイルをHDD17に格納する時点でもウイルス・チェックが行われるので、ロードされたブート・ファイルに対するウイルス・チェックの時間がその分遅延しても通常は問題がない。またプロセスのキューイングはプロセスの停止とは異なり、AVプログラム53は応答速度の遅いHDDにアクセスしておりプロセスはシステムにより正常に処理されていると判断するので、警告したりブートを停止したりするようなことは行わない。
According to the delay processing of the control target program shown in FIG. 4, the time for the control target program to read the boot file into the dedicated area at the time of booting is long, and the time until the boot system code 51 loads the boot file is short. Become. The boot completion state can be defined as a state in which an application used by the user can be executed without any trouble after the boot starts. An environment in which the user can execute the application earlier than before can be realized by the delay processing for the control target program. When the program to be controlled is the
ここで、ブート完了チェック・プログラム109によるブート完了信号の生成方法を図8のフローチャートで説明する。本実施の形態におけるブート完了時間は、ブート時に自動起動するブート完了チェック・プログラム109の起動後、全体のCPU使用率が連続して所定時間以上所定値以下になったときまでの経過時間と定義する。本実施の形態では所定時間として10秒間を設定し、所定値として15%を設定する。 Here, a method for generating a boot completion signal by the boot completion check program 109 will be described with reference to the flowchart of FIG. The boot completion time in this embodiment is defined as the elapsed time from when the boot completion check program 109 that is automatically started at the time of booting until the overall CPU usage rate continuously falls below a predetermined value for a predetermined time or more. To do. In the present embodiment, 10 seconds is set as the predetermined time, and 15% is set as the predetermined value.
ブロック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秒間継続するか否かを判断する。
When the boot completion check program is started at a predetermined stage of boot in
ブロック515で、CPU使用率と継続時間の条件が成立するとブート完了チェック・プログラム109は、ブロック519でブート完了信号をI/Oコントロール・サービス101に送り、ブート完了時間をブートI/Oログ105に記録してブロック521で終了する。上記の定義によるブート完了時間は、コンピュータ10の電源を投入してからアプリケーションが支障なく起動できる状態になるまでの時間ではない。アプリケーションはCPU使用率が15%以下になった時点で支障なく起動できるが、本実施の形態では、開始速度閾値QSTおよび解除速度閾値QRTの最適値を取得するために閾値を変更して実行したブートごとのブート完了時間の差が判明すればよいので、上記の定義を採用している。
When the CPU usage rate and duration conditions are satisfied at
[最適閾値の決定処理(全体)]
図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が記録されている。
[Optimum threshold determination process (overall)]
FIG. 5 to FIG. 7 are flowcharts showing processing procedures for determining the optimum values of the start speed threshold value QST and the release speed threshold value QRT for the control target program executed by the I /
ブロック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により最適な閾値に基づくキューイングの制御が行われる。
In
[最適閾値の決定処理(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を決定するために、各ブート・ファイルについて複数回のブートを繰り返す必要があり決定までに時間を費やす。
[Optimum threshold determination process (QST)]
Next, a process for determining the optimum value of the start speed threshold value QST will be described with reference to FIG. The
最適な閾値を決定して制御対象プログラムを早期に特定するために、ブロック353では、I/Oコントロール・サービス101が、ブートを数回実行して全ブート・ファイルの中で専用領域に読み出したブート・ファイルの総バイト数が所定値を越えるプログラムを制御対象プログラムの候補として設定する。読み出しの総バイト数は、ブートI/Oドライバ107が測定する。ブート時に読み出しのバイト数が大きなブート・ファイルは、他のブート・ファイルのロードを遅延させる原因となり易いので、最初に制御対象プログラムの候補として設定することで、I/Oコントロール・サービス101が制御対象プログラムを特定して最適な速度閾値を設定するまでの時間を短縮することができる。制御対象プログラムの候補はユーザが設定してもよい。
In order to determine the optimum threshold and identify the program to be controlled at an early stage, in
ブロック355で今回のブートが完了すると、I/Oコントロール・サービス101はブロック357でブートI/Oログ105を参照し、ブロック359で開始速度閾値QSTは最適値だったか否かを判断する。図3のブートI/Oログ105には、ブートごとに開始速度閾値QSTが初期値としてのV0からV1、V2・・・と最適値であるVnまで変化している様子を示している。初期値V0はI/Oコントロール・サービス101が保有している。1回目から4回目までのブートでは、解除速度閾値QRTは開始速度閾値QSTから一定値であるβ0だけ小さい値として設定されている。そしてブートI/Oログ105には、各ブートが完了したときのブート完了時間BCTと平均読み取り速度AVRが記録されている。
When the current boot is completed in
ブートI/Oログ105には、I/Oコントロール・サービス101が、初回のブートでは開始速度閾値QSTを初期値である最大値V0に設定し、2回目のブートではV1=V0−α0に設定し、さらに3回目のブートではV2=V1−α1として設定したことが記録されている。開始速度閾値QSTを低下させてブートを繰り返していくと、制御対象プログラムが読み取るブート・ファイルの平均読み取り速度AVRが低下しブート完了時間BCTが短縮していくが、開始速度閾値QSTを低下させてもHDD17のファイル転送速度に支配されてそれ以上はブート完了時間BCTが短縮方向に変化しない状態になる。
In the boot I / O log 105, the I /
I/Oコントロール・サービス101は開始速度閾値QSTの最適値を、ブート完了時間BCTが変化しない範囲で平均読み取り速度AVRが最大になるときの値Vnとして決定する。I/Oコントロール・サービス101は、開始速度閾値QSTの最適値を決定するために、ブートI/Oログ105を参照して最適化処理の当初は今回ブート時の開始速度閾値QSTから比較的大きな変化分αを減算した値を次回のブート時の開始速度閾値QSTに設定するが、ブート回数が多くなるにしたがって、ブート完了時間BCTの短縮の程度が小さくなるので減算する変化分αを小さくしていく。I/Oコントロール・サービス101は、変化分αを次第に小さくしながら、今回の開始速度閾値QSTに対して変化分αを加算したり減算したりして次回の開始速度閾値QSTを設定し、最終的に最適な開始速度閾値Vnを決定する。
The I /
I/Oコントロール・サービス101が最適な開始速度閾値QSTを決定するまでの手順は、図6においてブロック357、359、361、363、365に示している。ブロック359では、I/Oコントロール・サービス101は、最適な開始速度閾値QSTを決定していないと判断するとブロック360に移行して、今回のブートで設定した開始速度閾値QSTを変化させて生成した次回のブートの開始速度閾値QSTが最低値以上であるか否かを判断する。I/Oコントロール・サービス101は、開始速度閾値QSTが最低値未満になってもブート完了時間が短縮しないようなプログラムはブロック364で制御対象プログラムから除外してブロック365に移行する。
The procedure until the I /
ブロック360で次回のブートに対して設定する開始速度閾値QSTが最低値以上の場合は、ブロック361で変化させた開始速度閾値QSTをブートI/Oドライバ107のレジストリに設定し、ブロック363でブートI/Oドライバ107のレジストリにQRT=QST−βを設定する。ここに変化分βは、開始速度閾値QSTと解除速度閾値QRTの間にヒステリシスをもたせるための定数である。本実施の形態ではI/Oコントロール・サービス101は、開始速度閾値QSTを決定するまで変化分βを定数β0に設定する。そして、ブロック365で次回のブートが行われる。
If the start speed threshold value QST set for the next boot in
ブロック363からブロック365を経由してブロック353に戻るときは、I/Oコントロール・サービス101は最適な開始速度閾値QSTを決定するまで当該プログラムを制御対象プログラムの候補として設定する。ブロック364からブロック365を経由してブロック353に戻るときは、I/Oコントロール・サービス101は、ブロック353で当該プログラムを除いた他のプログラムを制御対象プログラムの候補として設定する。
When returning from the
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の決定処理を終了する。
If the I /
[最適閾値の決定処理(QRT)]
つぎに図7に基づいて、解除速度閾値QRTの最適値を決定する処理を説明する。図7のブロック401、413は、それぞれ図5のブロック313、311に対応し、図7のブロック407からブロック419への移行は、図5のブロック315からブロック317への移行に対応する。解除速度閾値QRTは、現在の読み取り速度CVRが一旦開始速度閾値QSTを越えてプロセスのキューイングが開始されその後、現在の読み取り速度CVRが低下したときにキューイングを解除するための閾値である。
[Optimum threshold determination processing (QRT)]
Next, a process for determining the optimum value of the release speed threshold QRT will be described with reference to FIG. The
したがって、解除速度閾値QRTは、つねに開始速度閾値QSTよりも小さくなり、開始速度閾値QSTに対する差が大きくなるほどキューイングの時間は長くなる。解除速度閾値QRTの最適値も開始速度閾値QSTの最適値と同様に、ブート完了時間BCTが変化しない範囲で平均読み取り速度AVRを最大にするときの値Snとして決定する。ブロック403で最適な開始速度閾値QSTが設定されて行われた今回のブートが完了すると、I/Oコントロール・サービス101はブロック405でブートI/Oログ105を参照し、ブロック407で解除速度閾値QRTは最適値だったか否かを判断する。図3のブートI/Oログ105には、4回目のブートで開始速度閾値QSTが最適値Vnに設定され、4回目のブートから7回目のブートまでブートごとに解除速度閾値QRTが初期値としてのS0からS1、S2・・・と最適値であるSnまで変化している様子を示している。また、ブートI/Oログ105には各ブートにおけるブート完了時間BCTと平均読み取り速度AVRが記録されている。解除速度閾値QRTは、開始速度閾値QSTから減分βを減算した値を設定する。
Therefore, the release speed threshold value QRT is always smaller than the start speed threshold value QST, and the queuing time becomes longer as the difference with respect to the start speed threshold value QST becomes larger. Optimal value of the release velocity threshold QRT likewise the optimum value of the start speed threshold QST, determined as the value S n of time to maximize the average read speed AVR scope boot completion time BCT does not change. Upon completion of the current boot performed with the optimal start speed threshold value QST set in
ブロック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であるVnを設定する。そして、ブロック413で次回のブートが行われる。
In
I/Oコントロール・サービス101は、ブロック407で最適な解除速度閾値QRTを決定したと判断すると、ブロック415で最適な解除速度閾値QRTをブートI/Oデータ・ベース103に登録し、かつ、最適化完了フラグをオンに設定する。I/Oコントロール・サービス101は、ブロック419で最適な開始速度閾値QRTをブートI/Oドライバ107のレジストリに設定して、ブロック419で解除速度閾値QRTの決定処理を終了する。
If the I /
これまでブート・ディスクとして、HDDを例示して説明したが、ブート・ディスクは、フラッシュ・ドライブ(SSD)または、光学ディスク・ドライブ(ODD)であってもよい。また、ブート・ディスクはコンピュータ10の構成要素である必要はなく、ネットワークを通じて図2のモジュールが実装されたコンピュータと接続されるものであってもよい。
Although the HDD has been described as an example of the boot disk so far, the boot disk may be a flash drive (SSD) or an optical disk drive (ODD). Further, the boot disk does not have to be a component of the
図4〜図7では、ブートI/Oドライバ107が現在の読み取り速度CVRに基づいて、キューイングの実行および解除をしている。本発明は、キューイングの実行および解除の判断を現在の読み取り速度CVR以外のパラメータで行うこともできる。たとえば、ブート段階ではコンピュータ10が起動してから時間が経過して多くのプログラムがロードされるとそれらが他のファイルを読み出し始めるので、ロードするブート・ファイルの転送速度がより遅くなる。したがって、あるブートの初期の段階では、制御対象プログラムをキューイングしないでブート・ファイルをロードし、制御対象プログラムが読み出したブート・ファイルの総量が一定の量に到達した以降はブート完了まで制御対象プログラムのプロセスをキューイングすることもできる。この場合は、キューイングを開始する閾値に読み取ったブート・ファイルの総バイト数を設定して図4〜図6の手順と同様の手順で最適値を決定してキューイングすることもできる。なおこの場合のキューイングはブート完了信号で解除するので、キューイングを解除する閾値を設定する必要はない。
4 to 7, the boot I /
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。 Although the present invention has been described with the specific embodiments shown in the drawings, the present invention is not limited to the embodiments shown in the drawings, and is known so far as long as the effects of the present invention are achieved. It goes without saying that any configuration can be adopted.
103…ブートI/Oデータ・ベース
105…ブートI/Oログ
121…ブートI/Oドライバ107の内部テーブル
103 ... Boot I /
Claims (17)
前記ブート媒体からメイン・メモリの実行領域に前記ブート・ファイルのロードを開始するステップと、
制御対象プログラムが前記ブート媒体から前記メイン・メモリの専用領域に前記ブート・ファイルの読み出しを開始するステップと、
前記制御対象プログラムが前記ブート・ファイルを読み出す読み取り速度を測定するステップと、
前記読み取り速度に基づいて、ブート期間中に前記制御対象プログラムが前記ブート・ファイルの読み出しのために生成したプロセスのキューイングを実行または解除するステップと
を有する処理を実行させるコンピュータ・プログラム。 In cooperation with the operating system on a computer with a boot medium storing a boot file,
Initiating loading of the boot file from the boot medium into an execution region of main memory;
A control target program starts reading the boot file from the boot medium to a dedicated area of the main memory; and
Measuring a reading speed at which the control target program reads the boot file;
A computer program for executing a process having a step of executing or canceling queuing of a process generated for reading of the boot file by the control target program during a boot period based on the reading speed.
前記読み取り速度が前記開始速度閾値以上のときに前記プロセスをキューイングするステップと、
前記読み取り速度が前記解除速度閾値未満まで低下したときに前記キューイングを解除するステップと
を有する請求項1または請求項2にコンピュータ・プログラム。 Setting a start speed threshold that controls queuing of the process and a release speed threshold that is less than the start speed threshold;
Queuing the process when the read speed is greater than or equal to the start speed threshold;
The computer program according to claim 1, further comprising a step of releasing the queuing when the reading speed falls below the release speed threshold.
前記ブート媒体からメイン・メモリの実行領域に前記ブート・ファイルのロードを開始するステップと、
前記制御対象プログラムが前記ブート媒体から前記メイン・メモリの専用領域に前記ブート・ファイルの読み出しを開始するステップと、
前記制御対象プログラムが前記ブート媒体から読み出した前記ブート・ファイルの総量を測定するステップと、
前記制御対象プログラムが前記ブート・ファイルの読み出しのために生成したプロセスのキューイングを制御する総量閾値を設定するステップと、
前記測定したブート・ファイルの総量が前記総量閾値以上のときに前記プロセスをキューイングするステップと
を有する処理を実行させるコンピュータ・プログラム。 In cooperation with an operating system on a computer having a boot medium storing a boot file containing a control target program,
Initiating loading of the boot file from the boot medium into an execution region of main memory;
The control target program starts reading the boot file from the boot medium to a dedicated area of the main memory; and
Measuring the total amount of the boot file read from the boot medium by the control target program;
Setting a total amount threshold value for controlling queuing of a process generated by the control target program for reading the boot file;
And queuing the process when the measured total amount of boot files is equal to or greater than the total amount threshold.
実行領域と専用領域を備えるメイン・メモリと、
前記コンピュータに前記ブート・ディスクから前記実行領域に前記ブート・ファイルのロードを開始する機能を実現させるブート・システム・コードと、
制御対象プログラムが前記ブート・ディスクから前記専用領域に前記ブート・ファイルを読み出す読み取り速度を測定する速度測定手段と、
前記読み取り速度に基づいて、ブート期間中に前記制御対象プログラムが前記ブート・ファイルの読み出しのために生成したプロセスのキューイングを実行または解除する制御手段と
を有するコンピュータ。 A computer capable of booting from a boot disk containing a boot file,
Main memory with an execution area and a dedicated area;
Boot system code for causing the computer to implement a function to start loading the boot file from the boot disk to the execution region;
Speed measuring means for measuring a reading speed at which the control target program reads the boot file from the boot disk to the dedicated area;
A computer having control means for executing or canceling queuing of a process generated by the control target program for reading the boot file during a boot period based on the reading speed.
実行領域と専用領域を備えるメイン・メモリと、
前記コンピュータに前記ブート・ディスクから前記実行領域に前記ブート・ファイルのロードを開始する機能を実現させるブート・システム・コードと、
制御対象プログラムが前記ブート・ディスクから前記専用領域に読み出した前記ブート・ファイルの総量を測定する総量測定手段と、
前記測定したブート・ファイルの総量に基づいて、ブート期間中に前記制御対象プログラムが前記ブート・ファイルの読み出しのために生成したプロセスのキューイングを実行する制御手段と
を有するコンピュータ。 A computer capable of booting from a boot disk containing a boot file,
Main memory with an execution area and a dedicated area;
Boot system code for causing the computer to implement a function to start loading the boot file from the boot disk to the execution region;
A total amount measuring means for measuring a total amount of the boot file read by the control target program from the boot disk to the dedicated area;
A computer having control means for queuing a process generated by the control target program for reading the boot file during a boot period based on the measured total amount of the boot file;
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2009202140A JP5335625B2 (en) | 2009-09-02 | 2009-09-02 | Computer program that reduces boot time |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2009202140A JP5335625B2 (en) | 2009-09-02 | 2009-09-02 | Computer program that reduces boot time |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2011053908A JP2011053908A (en) | 2011-03-17 |
| JP5335625B2 true JP5335625B2 (en) | 2013-11-06 |
Family
ID=43942843
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2009202140A Active JP5335625B2 (en) | 2009-09-02 | 2009-09-02 | Computer program that reduces boot time |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP5335625B2 (en) |
Families Citing this family (3)
| 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 (en) * | 2017-08-07 | 2021-08-18 | 富士通株式会社 | Judgment program, information processing device, and judgment method |
| US11392418B2 (en) * | 2020-02-21 | 2022-07-19 | International Business Machines Corporation | Adaptive pacing setting for workload execution |
Family Cites Families (2)
| 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 (en) * | 1997-05-27 | 2002-06-17 | 株式会社エヌイーシー情報システムズ | Computer system with tamper detection function |
-
2009
- 2009-09-02 JP JP2009202140A patent/JP5335625B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| JP2011053908A (en) | 2011-03-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4795378B2 (en) | Computer and boot method | |
| JP5385347B2 (en) | Method and computer for enlarging free memory in main memory | |
| JP6646114B2 (en) | Dynamic virtual machine sizing | |
| JP7087029B2 (en) | Improved functional callback mechanism between the central processing unit (CPU) and the auxiliary processor | |
| CN103477324B (en) | Processor and method for Logic Core to be dynamically remapped to physical core | |
| US8499143B2 (en) | Method for shortening the boot time of a computer system | |
| JP5212360B2 (en) | Control program, control system, and control method | |
| US7882285B2 (en) | Buffer cache management to prevent deadlocks | |
| US20080209198A1 (en) | Boot Acceleration For Computer Systems | |
| CN103810009B (en) | A kind of method and apparatus of computer operating system Acceleration of starting | |
| EP2798489A1 (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 (en) | Method and computer for processing a specific process in a short time | |
| 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 (en) | Computer program that reduces boot time | |
| CN103677900B (en) | A kind of method and apparatus of computer equipment system Acceleration of starting | |
| EP3572940A1 (en) | Method and device for scheduling vcpu thread | |
| CN1973265B (en) | Method and device for selecting a virtualization algorithm in virtual machine environments | |
| EP2869189A1 (en) | Boot up of a multiprocessor computer | |
| JP6645348B2 (en) | Information processing apparatus, information processing program, and information processing method | |
| KR20140018134A (en) | Fast booting method of operating system from off state | |
| JP5737087B2 (en) | Virtual machine control device, virtual machine control program, and virtual machine control method | |
| US7577814B1 (en) | Firmware memory management |
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 |