JP5026494B2 - 高速で起動するコンピュータ - Google Patents

高速で起動するコンピュータ Download PDF

Info

Publication number
JP5026494B2
JP5026494B2 JP2009258469A JP2009258469A JP5026494B2 JP 5026494 B2 JP5026494 B2 JP 5026494B2 JP 2009258469 A JP2009258469 A JP 2009258469A JP 2009258469 A JP2009258469 A JP 2009258469A JP 5026494 B2 JP5026494 B2 JP 5026494B2
Authority
JP
Japan
Prior art keywords
boot
list
program
computer
suspended
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
JP2009258469A
Other languages
English (en)
Other versions
JP2011103093A (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 JP2009258469A priority Critical patent/JP5026494B2/ja
Priority to US12/910,980 priority patent/US8499143B2/en
Publication of JP2011103093A publication Critical patent/JP2011103093A/ja
Application granted granted Critical
Publication of JP5026494B2 publication Critical patent/JP5026494B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

本発明は、コンピュータのブート時間を短縮する技術に関し、さらに詳細にはコンピュータを起動したあとでユーザが利用できる環境を早期に実現する技術に関する。
コンピュータは電源が投入されると、ブート・ディスクでから所定のプログラム(以後、ブート・ファイルという。)をメイン・メモリに読み出す起動プロセス(ブート・ストラップまたはブートともいう。)を開始する。ユーザは一連のブート・ファイルがロードされてからアプリケーション・プログラム(以後、アプリケーションという。)を実行して作業をすることができるようになる。コンピュータの使用開始の時点ではブート・ファイルの量が比較的少ないためブートは短時間で終了する。しかし、コンピュータを長年使用している間に、ユーザはさまざまなプログラムを導入する。そして、それらのプログラムはユーザの認識していないところでブート・ファイルに組み込まれて自動起動されるようになりブート時間が長くなる。
特許文献1は、各サービス項目が選択されたとき、コンピュータ内において対応して起動されるべき装置、ドライバ、アプリケーションを定義し、いずれかのサービス項目が選択されると、コンピュータ内の選択されたサービス項目に対応する装置、ドライバ、アプリケーションのみを起動することで簡易ブートを実現する技術を開示する。特許文献2は、複数の起動モードの中のいずれか一つを選択してシステムを起動させてシステムが起動するために必要な時間を起動モードにより最小化させる技術を開示する。同文献には、メイン・オペレーティング・システムと、DVDの再生等を行う複数の補助オペレーティング・システムを有しており、ジョグレバーの操作により、それらを選択して起動することが記載されている。
特開2007−323629号公報 特開2005−332405号公報
ところで、ユーザはコンピュータを起動する際に、メールの確認、Webサイトの閲覧、あるいは文書作成といったように特定された作業をいち早く実行できることを望んでいる。しかし、長期間使用されたコンピュータだけでなく使用開始直後のコンピュータであっても、ブート・ファイルはユーザが必要とする動作環境を実現するために必要な最小限の範囲に限定されているとは限らない。図10は、コンピュータにおいてブート・ファイルをロードするときの一般的な様子を示す図である。Windows(登録商標)のオペレーティング・システム(OS)はブート時に、カーネル、サービス1、2、サブシステム1などのモジュールを所定の順番で自動的にロードするように構成されている。また、OSのエクスプローラは、スタート・アップやレジストリに登録されたアプリケーション1を自動的にロードする。OSのモジュールおよびエクスプローラは、親プロセスとなってロードするモジュールのプロセスを生成する。
アプリケーション1が実行される際に、サービス1、2が呼び出されて実行される。ブートが完了すると、ユーザはアイコンをクリックしてエクスプローラを通じてアプリケーション2を実行する。アプリケーション2の実行に伴ってサブシステム1、2が呼び出されて実行される。サブシステム1はシャットダウンされるまでどのモジュールからも利用されない。ここで、ユーザがコンピュータを起動した目的が、自ら実行の操作を行った文書作成のアプリケーション2の利用であったとする。ところが、サービス1、2およびアプリケーション1はアプリケーション2の実行とは無関係であり、サブシステム1はアプリケーション2の実行時に実行できればよいので、ブート・ファイルから除外できる可能性がある。ブート・ファイルの量を削減するとブート時間が短くなるが、不用意にコンピュータにより設定されたブート・ファイルからその一部を除去するとコンピュータが動作を停止したり、動作が不安定になったりする可能性がある。したがって、ブートを高速で完了することができ、かつ、コンピュータの動作に支障をきたさないようなブート・システムが望まれる。
そこで、本発明の目的は、短時間でブートできる動作環境が構築されたコンピュータ・システムを提供することにある。さらに本発明の目的は、電源の起動後にユーザが必要とする動作環境を短時間で構築するコンピュータ・システムを提供することにある。さらに本発明の目的はコンピュータ・システムに実装してそのような動作環境を実現できるコンピュータ・プログラムを提供することにある。
ブート時に自動的に実行されるブート・ファイルは、OSの仕組みとしてあるいはユーザがインストールしたプログラムのインストーラにより構成される。ブート・ファイルの一部をブート時にロードしないでブート時間を短縮することも考えられるが、コンピュータが正常に動作するために自動的にロードすることが必須のブート・ファイルも存在する。本発明では、ブート・ファイルをロードするためのプロセスはすべて生成するが、そのプロセスの一部をブート中に停止しておき、後にオンデマンドで実行できるような環境を構築することでブート時間の短縮とプログラムの実行保証の両立を図る。本発明では、ブート・ファイルをロードするプロセスに対して、サスペンド/実行の制御を行って実質的にロードされるブート・ファイルの数を減らすとともに、サスペンドしたプロセスが他のプロセスから呼び出されたときにはオンデマンドでレジュームして実行できるようにする。
本発明の一の態様では、ブート時に実行するプロセスを登録したラン・プロセス・リストを使用する。プリエンプティブなOSは、実行されたプロセスを実行状態と実行可能状態の間で遷移させる。制御手段は、ブート・ファイルをロードするプロセスをラン・プロセス・リストに基づいて制御する。制御手段はラン・プロセス・リストに登録されたプロセスの実行は許可し、登録されていないプロセスはサスペンドする。実行を許可することは、制御手段はOSのプロセス制御にまかせることを意味する。サスペンドされたプロセスは、何らかのトリガがないと実行されない。サスペンドするプロセスが増えるほどブート時間は短縮する。そして制御手段は、サスペンドされたプロセスがアプリケーション・プログラムを実行するプロセスから呼び出されたときにレジュームさせる。
レジュームは、サスペンドしたプロセスがアプリケーション・プログラムを実行するプロセスから呼び出されたことをプロセス間通信の監視により検知したときに行うことができる。レジュームしたプロセスは、OSにより実行可能状態に遷移し、やがて実行状態に遷移する。さらに、コンピュータの使用の間に発生したプロセス間通信の履歴に基づいて、呼び出し元のプロセスと呼び出し先のプロセスの依存関係を記述したプロセス間通信リストを用意することができる。制御手段は、サスペンドされたプロセスがアプリケーション・プログラムを実行するプロセスから呼び出されたときにプロセス間通信リストに基づいて当該プロセスをレジュームする。プロセス間通信リストを使用することで、実際にプロセス間通信が行われる前にサスペンドしたプロセスをレジュームすることができる。
ラン・プロセス・リストには、コンピュータに導入された実行可能なプログラムに対応する全プロセスから、コンピュータの動作時にロードはされたが実行されなかったりロードされなかったりした未実行のプロセスを削除したり、さらに、ユーザ操作に基づいて実行されたプログラムにより呼び出されたプログラムを実行するためのプロセスを削除したりした残りのプロセスを登録することで作成することができる。したがってラン・プロセス・リストには、最小限ブートする必要のあるプログラムのプロセスだけが登録されることになる。
本発明の他の態様では、ブート時にサスペンドするプロセスを登録したサスペンド・プロセス・リストを使用する。制御手段は、ブート・ファイルをロードするプロセスをサスペンド・プロセス・リストに基づいて実行またはサスペンドする。サスペンド・プロセス・リストには、コンピュータに導入された実行可能なプログラムに対応する全プロセスの中でコンピュータの動作時にロードはされたが実行されなかったりロードされなかったりした未実行のプロセスと、ユーザ操作に基づいて実行されたプログラムにより呼び出されたプログラムを実行するためのプロセスが登録される。したがって、サスペンド・プロセス・リストには、最小限ブートする必要のあるプログラムを除いたプロセスが登録される。
本発明により、短時間でブートできる動作環境が構築されたコンピュータ・システムを提供することができた。さらに本発明により、電源の起動後にユーザが必要とする動作環境を短時間で構築するコンピュータ・システムを提供することができた。さらに本発明によりコンピュータ・システムに実装してそのような動作環境を実現できるコンピュータ・プログラムを提供することができた。
本実施の形態にかかるコンピュータ・システムの主要なハードウエア構成を示す機能ブロック図である。 本実施の形態にかかる動作環境を構築するためのソフトウエアの構成を示す機能ブロック図である。 コンピュータで生成されたプロセスが消滅するまでの間にプロセス管理部で制御されて遷移する様子を示す図である。 RPLを作成する手順を示すフローチャートである。 実行可能な全プロセスからRPLを作成するために不要なプロセスを削除する様子を示す図である。 RPLを利用したプロセス制御の手順を示すフローチャートである。 SPLを用いて動作環境を構築するためのソフトウエアの構成を示す機能ブロック図である。 SPLを作成する手順を示すフローチャートである。 SPLを利用したプロセス制御の手順を示すフローチャートである。 コンピュータにおいてブート・ファイルをロードするときの様子を示す図である。
[コンピュータ・システムの構成]
図1は、本実施の形態にかかるコンピュータ・システム10の主要なハードウエア構成を示す機能ブロック図である。コンピュータ・システム10は、それぞれバス23に接続されたCPU11、メイン・メモリ13、入力デバイス15、ハード・ディスク・ドライブ(HDD)17、液晶表示装置(LCD)19、およびBIOS_ROM21などを含んでいる。HDD17は、ブート・ファイルを格納したブート・ディスクである。これらのハードウエア・デバイスの機能は、本実施の形態に関しては周知であるため説明は省略する。
[定義]
最初に本明細書において使用する用語を定義する。ブート・ファイルとは、コンピュータの電源が起動されてから自動的にメイン・メモリにロードされて実行されるプログラム、プログラム・モジュール、コードまたはファイルなどをいう。ここにブートの完了は、コンピュータ全体のCPU使用率が所定値まで下がったことで判断することができる。コンピュータ全体のCPU使用率Yは、アイドル・プロセスのユーザ・モード時間をUi、アイドル・プロセスのカーネル・モード時間をKi、経過時間をEtとしたときに次の式で所定のプログラムが計算することができる。
Y=(1−(Ui+Ki)/Et)×100%
プロセスの実行とは、プリエンプティブなマルチタスキングを行うOSにおいて、当該プログラムを実行するためのプロセスが実行状態または実行可能状態の間を遷移している状態をいう。プロセスのサスペンド状態とは、当該プログラムを実行するためのプロセスが特定のAPI関数が呼び出されることで実行されている状態から外れ、レジュームするための特定のAPI関数が呼び出されない限り実行可能状態に遷移しない状態をいう。未実行のプロセスとは、当該プログラムをロードするために未だ生成されていないプロセスおよび当該プログラムはロードされているが実行するために生成されていないプロセスをいう。サスペンド状態のプロセスも未実行のプロセスもともに実行されていないが、サスペンド状態のプロセスは一旦は実行され他のプロセスから呼び出されたときにプロセス間通信を監視してレジュームすることができる点で、未実行のプロセスと区別することができる。
[ソフトウエアの構成]
図2は、本実施の形態にかかる動作環境を構築するためのソフトウエアの構成を示す機能ブロック図である。図2のブロック図では、OSとしてWindows(登録商標)を例示して、発明の説明に必要なソフトウエアの機能だけを示している。ただし、本発明はOSをWindowsに限定する必要はなく、本発明の実現に必要なAPI関数を備えた他のマルチタスクOSに適用することもできる。図2に示した各構成要素の機能は、HDD17に格納されブート時にメイン・メモリ13にロードされたプログラムがCPU11で実行されることによりコンピュータ10において実現される。
図2において、ブート管理部101は、ブート・システム100の一部であり、ブート・システム100以外の要素は周知である。システム・プロセス51は、セッション・マネージャ、Winlogon、サービス・コントロール・マネージャなどを含む。サービス53は、ユーザの操作を介さないでバックグラウンドで動作するプロセスで、Service.exe、SpoolSv.exe、WinMgt.exeなどを含む。アプリケーション55は、ユーザ・アプリケーション、エクスプローラ、およびタスク・マネージャなどを含む。
サブシステム57は、環境サブシステム・プロセス、カーネルモード・デバイス・ドライバ、サブシステムDLLなどで構成されている。NTDLL.DLL59は、サブシステムDLLを使用するための関数を提供するサポート・ライブラリで、ユーザ・モードから呼び出すことができるインターフェース機能(System Service Dispatch Stub)と、サブシステムDLLが使用する内部サポート関数で構成されている。カーネル61は、OSの基本コンポーネントで、プロセス管理部63、ファイル・システム71、構成マネージャ73、共有資源管理部75、およびハードウエア抽象化層77などを含んでいる。
プロセス管理部63は、プロセス・リスト65およびプロセス・スケジューラ67を含み、プロセスとスレッドの生成、実行、待機および消滅などの管理を行う。プロセス・リスト65は、コンピュータ10に現在生成されているプロセスのリストを提供する。プロセス・スケジューラ67は、生成されたプロセスを所定のアルゴリズムに基づいて実行状態(RUN)と実行可能状態(WAIT)との間で遷移させてプリエンプティブなタスク・スイッチを行う。
ファイル・システム71は、FAT(File Allocation Table)およびディレクトリを作成してHDD17に関するファイルの記録、読み取り、削除、または移動などを管理する。ファイル・システム71は、最近参照されたHDD17のデータをメイン・メモリ13に格納しておき、後続のI/O処理を高速化するキャッシュ・マネージャを含む。構成マネージャ73は、システム・レジストリとスタート・アップを管理する。システム・レジストリには、ブート時にユーザの操作を介在しないで自動的に実行するプロセスの情報が登録されている。スタート・アップにはユーザが起動の実行または停止を選択したOSのコンポーネントが登録されている。レジストリおよびスタート・アップに登録されたプロセスは、OS Shell Startupによりブート時に自動起動(AutoRun)される。
共有資源管理部75は、プロセス間通信に利用する共有リソースを管理する。プロセス間通信とは、固有の仮想アドレス空間を備える各プロセスの間で情報のやりとりを行うための仕組みで、メッセージ・キュー、ソケット、パイプ、共有メモリなどのさまざまな方法を採用することができる。共有リソースは、たとえば、CreatePipe関数で形成されたメイン・メモリの共有領域に、あるプロセスがWriteFile関数を呼んで書き込んだデータを他のプロセスがReadFile関数を呼んで読み取るといったようにして構築することができる。ハードウエア抽象化層77は、ハードウエア・プラットフォームの差異を吸収し抽象化する。
ブート・システム100は、ブート管理部101、プロセス制御部103、実行プロセス・リスト105、ラン・プロセス・リスト(RPL)107、プロセス間通信監視部109、プロセス間通信リスト111、およびRPL管理部113で構成されている。ブート管理部101は、ユーザ・アプリケーション55の一部を構成し、ユーザに対して実行されるプロセスに関する情報の提供とRPL107を編集するための設定画面を提供する。プロセス制御部103は、RPL107に登録されていないプロセスをプロセス・リスト65から検出したときには、API関数を呼び出してプロセス・スケジューラ67を通じて当該プロセスをサスペンドさせる。プロセス制御部103はプロセス間通信監視部109から通知があったプロセスについてAPI関数を呼び出してサスペンドしていたプロセスをレジュームさせる。プロセス制御部103は、サスペンドしていたプロセスを実行させるプロセスを検出したときには、それをレジュームさせる。
実行プロセス・リスト105は、コンピュータ10で実行されたすべてのプロセスのリストである。実行されたプロセスは、実行状態と実行可能状態の間を遷移する。実行プロセス・リスト105は、プログラムが導入されてから一度も実行されないプロセスまたは導入直後に実行されただけのプロセス、直近の1週間の間に一度も実行されないプロセス、および直近の10回のブートで一度も起動されないプロセスなどの種別ごとのリストを構成することができる。RPL107は、ブート・ファイルをロードする複数のプロセスの中で実行を許可するまたはサスペンドしないプロセスの識別子を登録したリストである。RPLを作成する方法は、図4を参照して詳しく説明する。
プロセス間通信監視部109は、共有資源管理部75を通じて行われるプロセス間通信を監視して、呼び出し元のプロセスと呼び出し先のプロセスからなるプロセスの依存関係をプロセス間通信リスト111に登録する。プロセスの依存関係とは、たとえばプロセスAが実行されるときにプロセスB、C、Dを呼び出すときはプロセスAとプロセスB、C、Dの実行の連携を示す情報である。プロセスの依存関係を登録しておくことで、後に説明するようにプロセスB、C、Dがサスペンドされているときに、プロセスAが実行されたときには共有資源管理部75でプロセスB、C、Dを呼び出すプロセス間通信が行われたことを検出しないでも、いち早くプロセスB、C、Dをレジュームさせて実行時間を短縮することができる。RPL管理部113は、ユーザによるコンピュータ10の実際の使用を通じてOSをブートさせるのに最低限必要なプロセスをRPL107に登録する作業をする。
[プロセス遷移]
図3は、コンピュータ10で生成されたプロセスが消滅するまでの間にプロセス管理部63で制御されて遷移する様子を示す図である。プロセスはプロセス制御ブロック(PCB)というプロセッサ状態、プロセスの優先度、タイム・スライス情報、プロセスID、およびデバイス情報などを含むデータ構造体である。プロセッサ状態は、CPU11がプロセスを中断したときのレジスタ、スタック、およびプログラム・カウンタなどの状態に関する情報でコンテキストともいう。プロセスの優先度は、プロセス間におけるコンテキスト・スイッチの優先順位を示す情報である。タイム・スライス情報は、タイム・スライスの初期値や残り時間に関する情報である。タイム・スライスとはプロセスがCPU11に対する一度の実行権を獲得したときに許される最大実行時間をいう。プロセスIDは、各プロセスに割り当てられた一意の番号である。デバイス情報は、当該プロセスに割り当てられたデバイスの識別情報である。なお、PCBには、OSにより異なるその他のさまざまな情報が含まれる。
実行状態(RUN)は、現在プロセスがCPU11で実行されている状態であり、割り当てられたタイム・スライスを消費すると実行可能状態(READY)に移行する。実行可能状態(READY)は、プロセスが実行可能であり優先度の順番に実行されるのを待っている状態で、実行可能キューに登録されたPCBがプロセス・スケジューラ67により所定の順番でCPU11にディスパッチされる。実行待ち状態(WAIT)は、I/Oなどの何らかの条件が成立するまで自ら実行を中断する関数を呼んで実行を待っている状態である。サスペンド状態(SUSPEND)は、他のプロセスによって強制的に待ち状態にさせられた状態である。
あるプロセスが他のプロセスを実行状態または実行可能状態からサスペンド状態に移行させたり、サスペンド状態からレジュームして実行可能状態に移行させたりするには、特定のAPI関数を呼び出して行うことができる。このとき、OSがプロセスを直接サスペンドまたはレジュームをするためのAPI関数を提供していない場合は、当該プロセスにより生成されたすべてのスレッドをサスペンドまたはレジュームの対象にしたAPI関数を呼び出すことでサスペンド/レジューム実現することができる。
[RPLを作成する手順]
本実施の形態では、ブート・ファイルに含まれて自動的にロードされるプログラムのプロセスをRPL107に基づいてサスペンド/停止する。オンデマンドで実行できるプログラムおよびオンデマンドで実行するプログラムからだけ呼び出されるプログラムはブート時にサスペンドしておき、ブート後にオンデマンドでレジュームさせることでブート時間の短縮を図りながら、サスペンドしたプログラムの実行を保証している。ここにオンデマンドとは、ユーザの操作に基づいて実行されること、およびユーザの操作に基づいて実行されるプログラムから呼び出されて実行されることを意味しており、ブート時に自動的にロードされて実行されることと対照的である。表1には本実施の形態でサスペンド/レジュームの対象となるプログラムを示す。
Figure 0005026494
図2に示したプログラムは、表1のように5つのグループに分類することができる。表1では、5つのグループについてブート・ファイルに含まれるか否かの起動区分、サスペンド/レジュームの制御対象になるか否かの区分を示している。第1のグループに属するカーネルは、コンピュータ10を動作させるために必須のプログラムで構成されており、サスペンド/レジュームの制御対象から除外する。したがって、カーネルはブート時にOSで指定された順番でロードされる。第2のグループに属するOSのサービス、OSのデバイス・ドライバ、およびサブシステムの中で、ブート・ファイルに含まれて自動的にロードされるように設定されているプログラムはサスペンド/レジュームの制御対象とする。
また、第3のグループ3に属するOSのサービス、デバイス・ドライバ、およびサブシステムの中で、オンデマンドで実行されるように設定されているプログラムはサスペンド/レジュームの制御対象から除外する。第4のグループ4に属するアプリケーション、アプリケーション用のサービス、および後から導入されたデバイス・ドライバの中で自動的にロードされるように設定されているプログラムはサスペンド/レジュームの制御対象とする。第5のグループ5に属するアプリケーション、アプリケーション用のサービス、および後から導入されたデバイス・ドライバの中で、オンデマンドで実行されるように設定されているプログラムはサスペンド/レジュームの制御対象から除外する。
図4は、RPLを作成する手順を示すフローチャートである。RPL107は、ブート・ファイルをロードするプロセスのサスペンド/実行を制御するためにプロセス制御部103により参照される。ブロック201では、メイン・メモリ11にRPL107をロードする。RPL107は登録されるプロセスが少ないほど短時間でブートを完了して特定のアプリケーションの実行環境を構築することができるが、コンピュータの動作に必要なプロセスをRPL107から除外すると動作が停止したり不安定になったりあるいはブートが遅延したりするので、登録するプロセスを適切に選択する必要がある。本実施の形態では、コンピュータ10の使用に基づいて登録すべきプロセスを選択しながらRPL107を作成する。最初にプロセス制御部103はHDD17に格納され、構成マネージャ73のレジストリに登録された実行可能なプログラムに対応するすべてのプロセスをRPL107に登録する。ブロック203では、メイン・メモリ13にいずれのプロセスの依存関係も登録していない空白のプロセス間通信リスト111をロードする。

ブロック205では、コンピュータ10に電源を投入してブートを実行する。ブロック207では、ブート中に生成されたプロセスに対してRPL107に基づいてプロセス制御部103によりサスペンド/実行の制御が行われるが、その詳細は図6を参照して説明する。ブートが完了するとブロック209では、プロセス制御部103が今回のブート時間が前回のブート時間よりも所定時間以上長くなったか否かを判断する。ブートを複数回実行して図4の手順を繰り返すと、当初はブート時間が短くなり、ある時点でブート時間が長くなることが予想される。このときブート時間が長くなったということは、RPL107から登録しておくべきプロセスが削除されてブート時にサスペンドされたことを意味する。
ブート時間が遅延していない場合はブロック211に移行する。ブロック211では、ユーザがコンピュータを使用し始めるとブート後に新たに実行されるアプリケーションなどのプログラムに関連するプロセスが発生する。そのプロセスは、ユーザの操作によりプログラムを実行するためのプロセスおよび当該プロセスから呼び出されて実行されるプロセスを含んでいる。ブロック213ではプロセス制御部103はその時点までに実行されたすべてのプロセスをプロセス管理部63から取得して実行プロセス・リスト105に登録する。
ブロック215では、プロセス間通信監視部109は、共有資源管理部75からプロセス間通信に関する情報を取得し、呼び出し元のプロセスと呼び出し先のプロセスからなる依存関係がプロセス間通信リスト111に登録されているか否かを判断する。登録されていない場合は、ブロック217でプロセス間通信監視部109は、プロセスの依存関係をプロセス間通信リスト111に登録する。ブロック219では、コンピュータ10に入力デバイス15を通じてシャットダウンの指示が行われる。シャットダウンの指示に応じてRPL管理部113は、ブロック221でRPL107から削除するプロセスを選択する。RPL管理部113はHDD17に格納され構成マネージャ73のレジストリに登録された実行可能なすべてのプログラムに対応する全プロセスのリストを取得し実行プロセス・リスト105と対比して把握したいまだ実行されていない未実行のプログラムに対応する未実行のプロセスをRPL107から削除する。
未実行のプロセスは、ロードされたプログラムに対応するプロセスとロードされていないプログラムに対応するプロセスを含む。さらにRPL管理部113は、プロセス間通信リスト111と構成マネージャ73を参照し、自動起動の対象としてレジストリまたはスタート・アップに登録されておらず、かつ呼び出し元のプロセスがWindows(登録商標)のエクスプローラである呼び出し先のプロセスは、ユーザ操作に基づいて実行されたプログラムにより呼び出されたプログラムを実行するためのプロセスであると判断してそのようなプロセスをRPL107から削除する。したがって、RPL107に残るプロセスは、実行可能な全プロセスの中で主としてOSの仕組みとしてブートされて実行されたプログラムのプロセスおよび当該プロセスから呼び出されて実行されたプロセスとなり、オンデマンドで実行してもコンピュータ10の動作に支障がないようなプロセスは削除される。
このとき実行可能な全プロセスからRPL107を作成するために所定のプロセスを削除する様子を図5に示す。図5には、今回のブート時にレジストリに登録されている実行可能なすべてのプログラムに対応する全プロセスが、未実行のプロセス、自動起動の対象外でユーザ操作に起因して実行されたプロセスから呼び出されて実行されたプロセス、およびその他の実行されたプロセスで構成されることが示されている。ここでは「その他の実行されたプロセス」がRPL107に登録される。
ブロック209で今回のブート時間が遅い場合は、今回のブートに使用したRPL107から重要なプロセスが削除されてサスペンド状態になっているプロセスが実行できない状態が予想される。ブロック220では、RPL管理部113は前回のブートから今回のブートまでの間にRPL107から削除したプロセスをRPL107に復帰させる。そして、ブロック221ではRPL管理部113はこのようにして復帰させたプロセスは、次回以降のブートでは削除の対象から外すようにすることができる。なお、ユーザはブート管理部101を通じて、所定の数のOSのコア・プロセスを予めRPL107からの削除を禁止するプロセスとして設定しておくこともできる。
ブロック223では、ブート管理部101は所定の回数だけブートが行われたか否かを判断する。所定の回数は、Webサイトの閲覧、文書の作成、画像データの編集あるいは動画の再生といったようなユーザがコンピュータを利用する可能性のある動作環境をすべて含むようにして決定することが望ましい。所定の回数のブートが完了した場合は、RPL107にはユーザのいかなる使用環境に対しても対応できるブートをするのに最低限必要なプロセスが登録され、電源起動後はRPL107を使用して実行許可およびサスペンドの制御をすることでそのような動作環境に短時間で到達することができる。ブロック225でRPL管理部113はRPL107の編集を終了し、プロセス制御部103は編集されたRPL107を使用して次回のブート時のプロセス制御を実行する。プロセス制御の方法については、図6を参照して説明する。
ブロック227ではさらにRPL107の編集を続けるために、コンピュータ10をシャットダウンした後に次回のブートが行われる。そして、ブロック229ではコンピュータ10に新たなプログラムが導入されることもある。RPL管理部113は、RPL107の編集が終了したのちに新たに導入されたプログラムおよびそのプログラムからだけ呼び出されるサービス・プログラムはすべてRPL107に登録しないようにする。あるいは、RPL管理部113は、コンピュータ10にOSが導入された後に導入されたすべてのプログラムをRPL107に登録しないようにしてもよい。そのようなプログラムは、サスペンドしてもそれまで正常に動作していたOSのブートに支障をきたすことはなく、オンデマンドで実行すればよいからである。次回のブートでブロック229からブロック201に戻ることで、RPL管理部113は次回の動作環境の元でRPL107の編集を行う。
[RPLを使用したプロセス制御の手順]
図6は、図4の手順に従って作成したRPL107を利用してプロセス制御を行う手順を示すフローチャートである。ブロック301では図4の手順で前回のブートまでの間に作成されたRPL107がメイン・メモリ13にロードされる。RPL107には、ブート時に実行を許可するプロセスのリストが登録されている。ブロック303ではプロセス間通信リスト111がメイン・メモリ13にロードされる。プロセス間通信リスト111には、前回のシャットダウンまでの間にプロセス間通信を行った呼び出し元のプロセスと呼び出し先のプロセスの依存関係を示すリストが登録されている。ブロック305ではブートが開始される。
最初にBIOS_ROM21に格納されているBIOSのPOST(Power On Self Test)といわれる初期化プログラムがメイン・メモリ13に読み出されて実行される。初期化プログラムは、ブート・デバイスを診断したり初期化したりする。つぎにBIOSはブート・ファイルが格納されているHDD17を探す。ブート・ファイルは表1のグループ1、2、4のプログラムで構成されている。
BIOSは、HDD17の先頭セクタに格納されているMBR(Master Boot Record)をメイン・メモリ13にロードしてそれに制御を移す。MBRはディスクからブート可能なパーティションを探してその先頭セクタ(ブート・セクタ)にあるブート・ストラップ・ローダをメイン・メモリにロードしてそれに制御を移す。その後ブート・ストラップ・ローダにつづいてグループ1、2、4のプログラムが所定の順番でメイン・メモリ13に読み出される。プリエンプティブなマルチタスキングを行うOSは、ブート時もプリエンプティブなタスク・スイッチを行うようになっている。OSはブート時にHDD17からOSのプログラムを自動的にロードするために複数のプロセスを生成する。また、OSのエクスプローラもスタート・アップやレジストリに登録されたプログラムを自動的にロードするためのプロセスを生成する。プロセス・リスト65には、API関数を実行して生成されたプロセスのプロセスIDが書き込まれる。
生成されたプロセスは、プロセス・スケジューラ67により実行可能状態と実行状態の間で遷移しながら実行され、タイム・スライスごとに対応するプログラムのコードをロードしていく。プログラムはロードされると自動的に実行を開始したり、ロードされた状態で他のプロセスから呼び出されるのを待っていたりする。プロセス制御部103は、プログラムをブートするためのプロセスの生成については何ら制御を加えない。したがって、ブート・ファイルはすべてロードのためのプロセスが生成されるので、プロセス間通信に必要な共有リソースを確保することができる。共有リソースを確保したプロセスは、サスペンドされている間に他のプロセスから呼び出されたときは、プロセス間通信の発生をトリガにしてレジュームさせることができる。
ブロック305では、ブートの途中でブート・システム100がロードされて実行される。プロセス制御部103は、OSのプロセスが所定の数だけ生成された後に、ブロック306でRPL107を参照しながらプロセスの制御を開始する。プロセス制御部103は、RPL107に登録されたプロセスとプロセス・リスト65に記述されたプロセスを比較する。プロセス制御部103は、プロセス・リスト65の中にRPL107に登録されていないプロセスをみつけたときは、プロセス・スケジューラ67に対して特定のAPI関数を実行して当該プロセスをサスペンド状態に遷移させる。サスペンド状態に遷移したプロセスは、以後、プロセス制御部103がレジュームさせるAPI関数を実行しない限りその状態を持続する。
その結果、サスペンドされたプロセスは、生成されてからサスペンドされるまでの短い時間の間で割り当てられたタイム・スライス分だけ実行状態におかれ、プログラムの一部のコードだけがロードされた状態で停止する場合もある。予定する量のデータがすべてロードされないためそのようなプログラムは動作しない。プロセス制御部103は、プロセス・リスト65の中にRPL107に登録されたプロセスをみつけたときはなんら制御を加えない。したがって、RPL107に登録されたプロセスだけが実行状態と実行可能状態の間を遷移してブートが進行する。RPL107に登録されたプロセスの数はプロセス・リスト65に記述されたプロセスの数よりもはるかに少ないのでブート時間は短くなる。
ブロック307では、ブートが完了する前またはブートが完了した後にアプリケーションなどを実行するためのプロセス(呼び出し元のプロセス)が生成されて他のプロセス(呼び出し先のプロセス)を呼び出す。ブロック309でプロセス制御部103は、プロセス管理部63に呼び出し先のプロセスがサスペンドされているか否かを問い合わせる。呼び出し先のプロセスがサスペンドされていないときは、ブロック317に移行する。サスペンドされているときは、レジュームさせる必要があるのでブロック311に移行し、プロセス制御部103はプロセス間通信監視部109に呼び出し元のプロセスがプロセス間通信リスト111に登録されているか否かを問い合わせる。
呼び出し元のプロセスが、プロセス間通信リスト111に登録されていると判断した場合は、プロセス制御部103はブロック313でプロセス間通信リスト111に記述された対応する呼び出し先のプロセスを、プロセス間通信を待たないでレジュームさせる。レジュームしたプロセスはプロセス・スケジューラ67により実行可能状態に遷移させられる。その結果プロセス間通信によるオーバーヘッドを費やさないでサスペンドされたプロセスを実行することができる。ブロック311でプロセス間通信リスト111に登録されていないプロセスが呼び出されたと判断した場合は、ブロック315でプロセス制御部103は、プロセス間通信監視部109が呼び出し先のプロセスに対するプロセス間通信の発生を認識したことをトリガにして特定のAPI関数を実行し、プロセス・スケジューラ67に呼び出し先のプロセスをレジュームさせる。この場合は、ブロック313の手順に比べて、プロセス間通信の開始や共有資源管理部75へのアクセスのためにレジュームするまでの時間が長くなる。
ブロック317では、ユーザはブート管理部101が提供するインターフェース画面を通じて、RPL107の編集が必要か否かを判断する。ユーザはRPL107の編集が必要であると判断すると、ブート管理部101は実行プロセス・リスト105を通じて、RPL107に登録されたプロセスのなかで実行頻度の少ないプロセスを検索しブロック319でLCD19に表示する。表示の内容は、プログラムが導入されてから一度も実行されないプロセスまたは導入直後に実行されただけのプロセス、直近の1週間の間に一度も実行されないプロセス、および直近の10回のブートで一度も起動されないプロセスなどの種別ごとのリストとすることができる。ユーザが表示された内容に基づいて、RPL107から削除することができると判断したプロセスを選択すると、RPL管理部113はRPL107からそのプロセスを削除する。
[SPLによるプロセスの制御]
これまで、ブート時に実行を許可するプロセスを登録したRPL107作成してブート時のプロセスを制御する方法を説明してきたが、本発明は、ブート時にサスペンドさせるプロセスを登録したサスペンド・プロセス・リスト(SPL)を作成してプロセス制御を行うこともできる。図7はSPLを用いて動作環境を構築するためのソフトウエアの構成を示す機能ブロック図である。図7のブート・システム400は、図2のRPL107、RPL管理部113にそれぞれ代えてSPL407、SPL管理部413を設けている点が異なっている。ブート・システム400を構成する各要素の動作は、図8、図9のフローチャートを参照して説明する。
図8は、SPL407を作成する手順を示すフローチャートである。SPL407は、ブート・ファイルをロードするプロセスのサスペンド/実行を制御するためにプロセス制御部403により参照される。ブロック501では、メイン・メモリ13にSPL407をロードする。SPL407は登録されるプロセスが多いほど短時間でブートを完了して特定のアプリケーションの実行環境を構築することができるが、コンピュータの動作に必要なプロセスをSPL407に登録すると動作が停止したり不安定になったりあるいはブートが遅延したりするので、登録するプロセスを適切に選択する必要がある。本実施の形態では、コンピュータ10の使用に基づいて登録すべきプロセスを選択しながらSPL407を作成する。最初は、いずれのプロセスも登録さしない空白のSPL407を用意する。ブロック503では、メイン・メモリ13にいずれのプロセスの依存関係も登録していない空白のプロセス間通信リスト411をロードする。
ブロック505では、コンピュータ10に電源を投入してブートを実行する。ブロック507では、ブート・ファイルのプロセスに対するサスペンド/実行の制御が行われるが、その詳細は図9を参照して説明する。ブートが完了するとブロック509では、プロセス制御部403が今回のブート時間が前回のブート時間よりも所定時間以上長くなったか否かを判断する。ブートを複数回実行して図8の手順を繰り返すと、当初はブート時間が短くなり、ある時点でブート時間が長くなることが予想される。このときブート時間が長くなったということは、SPL407に登録すべきでないプロセスが登録されてブート時にサスペンドされたことを意味する。
ブート時間が遅延していない場合はブロック511に移行する。ブロック511では、ブート後に新たに実行されるプログラムに起因するプロセスが発生する。ブロック513ではプロセス制御部403はその時点までに実行された全プロセスを実行プロセス・リスト405に登録する。
ブロック515では、プロセス間通信監視部409は、共有資源管理部75からプロセス間通信に関する情報を取得し、呼び出し元のプロセスと呼び出し先のプロセスからなる依存関係がプロセス間通信リスト411に登録されているか否かを判断する。登録されていない場合は、ブロック517でプロセス間通信監視部409は、プロセスの依存関係をプロセス間通信リスト411に登録する。ブロック519では、コンピュータ10に入力デバイス15を通じてシャットダウンの指示が行われる。シャットダウンの指示に応じてSPL管理部413は、ブロック521でSPL407に追加するプロセスを選択する。SPL管理部413はHDD17に格納され構成マネージャ73のレジストリに登録された実行可能なすべてのプログラムに対応する全プロセスのリストを取得し実行プロセス・リスト405と対比して把握したいまだ実行されていない未実行のプログラムに対応する未実行のプロセスをSPL407に追加する。
未実行のプロセスは、ロードされたプログラムに対応するプロセスとロードされていないプログラムに対応するプロセスを含む。さらにSPL管理部413は、プロセス間通信リスト411と構成マネージャ73を参照し、自動起動の対象としてレジストリに登録されておらず、かつ呼び出し元のプロセスがWindows(登録商標)のエクスプローラである呼び出し先のプロセスは、ユーザ操作に基づいて実行されたプログラムにより呼び出されたプログラムを実行するためのプロセスであると判断してそのようなプロセスをSPL407に追加する。たとえば、プリンタ・スプーラ、アプリケーションのクイックランチャ、インターネット・エクスプローラ(登録商標)のフィルター、モデム・サービス、およびデータ・ベース・アクセスなどのサービスは、ブート完了後にオンデマンドで実行しても作業に始業がないのでSPL407に登録することになる。
ブロック509で今回のブート時間が遅い場合は、今回のブートに使用したSPL407に重要なプロセスが登録されてサスペンド状態になっているプロセスが実行できない状態が予想される。ブロック520では、SPL管理部413は前回のブートから今回のブートまでの間にSPL407に登録したプロセスをSPL407に復帰させる。そして、ブロック521ではSPL管理部413はこのようにして復帰させたプロセスは、次回以降のブートでは登録の対象から外すようにすることができる。なお、ユーザはブート管理部401を通じて、所定の数のOSのコア・プロセスを予めSPL407への登録を禁止するプロセスとして設定しておくこともできる。
ブロック523では、ブート管理部401は所定の回数だけブートが行われたか否かを判断する。所定の回数だけのブートが完了した場合は、SPL407には、いかなるユーザの使用環境に対しても対応できるブートをするために最低限必要なプロセスを除いたプロセスが登録され、電源起動後はSPL407に基づく実行許可およびサスペンドの制御によりそのような動作環境に短時間で到達することができる。ブロック525でSPL管理部413はSPL407の編集を終了し、プロセス制御部403は編集されたSPL407を使用して次回のブート時のプロセス制御を実行する。
ブロック527では、コンピュータ10をシャットダウンした後に次回のブートが行われる。そして、ブロック529ではコンピュータ10に新たなプログラムが導入されることもある。SPL管理部413は、SPL407の編集が終了したのちに新たに導入されたプログラムおよびそのプログラムだけから呼び出されるサービス・プログラムはすべてSPL407に登録する。あるいは、SPL管理部413は、コンピュータ10にOSが導入された後に導入されたすべてのプログラムをSPL407に登録してもよい。次回のブートでブロック529からブロック501に戻るときには、SPL管理部413は次回の動作環境の元でRPL107の編集を行う。
[SPLを使用したプロセス制御の手順]
図9は、図8の手順に従って作成したSPL407を利用してプロセス制御を行う手順を示すフローチャートである。ブロック601では図8の手順で前回のブートまでの間に作成したSPL407がメイン・メモリ10にロードされる。SPL407には、ブート時にサスペンドするプロセスのリストが登録されている。ブロック603ではプロセス間通信リスト411がメイン・メモリ13にロードされる。ブロック605ではブートが開始され、ブート・ファイルの一部としてブート・システム400がロードされて実行される。
プロセス制御部403は、OSのプロセスが所定の数だけ生成された後に、SPL407を参照しながらブロック606でプロセスの制御を開始する。プロセス制御部403は、SPL407に登録されたプロセスとプロセス・リスト65に記述されたプロセスを比較する。プロセス制御部403は、プロセス・リスト65の中にSPL407に登録されたプロセスをみつけたときは、プロセス・スケジューラ67に対してAPI関数を実行して当該プロセスをサスペンド状態に遷移させる。したがって、SPL407に登録されていないプロセスだけが実行状態と実行可能状態の間を遷移してブートが進行する。SPL407に登録されていないブート・ファイルをロードするプロセスの数はプロセス・リスト65に記述されたプロセスの数よりもはるかに少ないのでブート時間は短くなる。
ブロック607では、ブートが完了する前またはブートが完了した後にアプリケーションなどを実行するためのプロセス(呼び出し元のプロセス)が生成されて他のプロセス(呼び出し先のプロセス)を呼び出す。ブロック609でプロセス制御部403は、プロセス管理部63に呼び出し先のプロセスがサスペンドされているか否かを問い合わせる。呼び出し先のプロセスがサスペンドされていないときは、ブロック617に移行する。サスペンドされているときは、レジュームさせる必要があるのでブロック611に移行し、プロセス制御部403は呼び出し元のプロセスがプロセス間通信リスト411に登録されているか否かをプロセス間通信監視部409に問い合わせる。
呼び出し元のプロセスが、プロセス間通信リスト411に登録されていると判断した場合は、ブロック613でプロセス制御部403はプロセス間通信を待たないでAPI関数を通じて呼び出し先のプロセスをレジュームさせる。ブロック611でプロセス間通信リスト411に登録されていないプロセスが呼び出されたと判断した場合は、ブロック615でプロセス制御部403は、プロセス間通信監視部409が呼び出し先のプロセスに対するプロセス間通信の発生を認識したことをトリガにして特定のAPI関数を実行し、プロセス・スケジューラ67に呼び出し先のプロセスをレジュームさせる。
ブロック617では、ユーザはブート管理部401が提供するインターフェース画面を通じて、SPL407の編集が必要か否かを判断する。ユーザはSPL407の編集が必要であると判断すると、ブート管理部401は実行プロセス・リスト405を通じて、SPL407に登録されていないプロセスのなかで実行頻度の少ないプロセスを検索しブロック619でLCD19に表示する。表示の内容は、プログラムが導入されてから一度も実行されないプロセスまたは導入直後に実行されただけのプロセス、直近の1週間の間に一度も実行されないプロセス、および直近の10回のブートで一度も起動されないプロセスなどの種別ごとのリストとすることができる。ユーザが表示された内容に基づいて、SPL407に登録することができると判断したプロセスを選択すると、SPL管理部413はSPL407にそのプロセスを追加する。
図4のフローチャートではRPL107を作成する手順を説明し、図8のフローチャートではSPL407を作成する手順を説明したが、図4の手順でSPLを作成し、図9の手順でRPLを作成することもできる。この場合、図4の手順で作成したRPLに登録されたプロセスを構成マネージャのレジストリに登録されたすべての実行可能なプログラムに対応するプロセスから除いてSPLを作成し、図8の手順で作成したSPLに登録されたプロセスを構成マネージャのレジストリに登録されたすべての実行可能なプログラムに対応するプロセスから除いてRPLを作成することができる。
図4、図8の手順は、ユーザがいかなる使用環境で使用する場合でも、自動的にブートする必要のないプログラムはサスペンドしておき、必要なときにオンデマンドで実行するためのRPL107またはSPL407を作成したが、本発明では、Webサイトの閲覧、または動画の再生といったような特定の使用環境で使用する場合に特化したRPLまたはSPLを作成することができる。その場合は、図4のブロック223または図8のブロック523におけるブート回数を当該使用環境でのプロセスの実行状態を判断できる程度に選択すればよい。
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
10…コンピュータ
61…カーネル
100、400…ブート・システム

Claims (20)

  1. オペレーティング・システムを含むブート・ファイルを格納したブート媒体を備えるコンピュータに、
    ブート時に実行を許可するプロセスまたはサスペンドするプロセスのいずれかだけを登録したプロセス・リストを提供するステップと、
    前記コンピュータをブートするステップと、
    前記ブート・ファイルをロードするプロセスを前記プロセス・リストに基づいて、実行またはサスペンドするステップと、
    ブートの完了後にアプリケーション・プログラムを実行するステップと、
    前記アプリケーション・プログラムの実行に応じて前記サスペンドしたプロセスをレジュームするステップと
    を有する処理を実行させるコンピュータ・プログラム。
  2. プロセス間通信を監視するステップを有し、
    前記レジュームするステップが、前記サスペンドしたプロセスが前記アプリケーション・プログラムを実行するプロセスから呼び出されたことを前記プロセス間通信の監視により検知したときにレジュームするステップを含む請求項1に記載のコンピュータ・プログラム。
  3. 呼び出し元のプロセスと呼び出し先のプロセスの依存関係を記述したプロセス間通信リストを提供するステップを有し、
    前記レジュームするステップが、前記プロセス間通信リストを参照して前記サスペンドしたプロセスが前記アプリケーション・プログラムを実行するプロセスから呼び出されたことを認識してレジュームするステップを含む請求項2に記載のコンピュータ・プログラム。
  4. 前記コンピュータで実行されたプロセスの識別子を取得するステップを有し、
    前記プロセス・リストが、実行を許可するプロセスを登録するラン・プロセス・リストであり、
    前記プロセス・リストを提供するステップが、
    前記ブート媒体に格納された実行可能なプログラムに対応する全プロセスを前記ラン・プロセス・リストに登録するステップと、
    前記実行可能なプログラムの中で未実行のプログラムに対応するプロセスを前記ラン・プロセス・リストから削除するステップを
    含む請求項1から請求項3のいずれかに記載のコンピュータ・プログラム。
  5. ユーザ操作に基づいて実行されたプログラムにより呼び出されたプログラムを実行するためのプロセスをさらに前記ラン・プロセス・リストから除去するステップを有する請求項4に記載のコンピュータ・プログラム。
  6. ブートを複数回実行するステップと、
    ブート時間を計測するステップと、
    前回のブートより今回のブートのブート時間が遅延した場合に、前回のブート後に前記ラン・プロセス・リストから除去したプロセスを前記ラン・プロセス・リストに復帰させるステップと
    を有する請求項4または請求項5に記載のコンピュータ・プログラム。
  7. 前記ラン・プロセス・リストを作成してから導入されたプログラムおよび該プログラムからのみ呼び出されるプログラムに関連するプロセスを前記ラン・プロセス・リストに登録しない請求項4から請求項6のいずれかに記載のコンピュータ・プログラム。
  8. 前記コンピュータで実行されたプロセスの識別子を取得するステップを有し、
    前記プロセス・リストがサスペンドするプロセスを登録するサスペンド・プロセス・リストであり、
    前記プロセス・リストを提供するステップが、
    未登録の前記サスペンド・プロセス・リストを用意するステップと、
    前記ブート媒体に格納された実行可能なプログラムに対応する全プロセスのリストを取得するステップと、
    前記実行されたプロセスを前記全プロセスのリストから除去して残った未実行のプログラムに対応するプロセスを前記サスペンド・プロセス・リストに追加するステップと
    を含む請求項1から請求項3のいずれかに記載のコンピュータ・プログラム。
  9. ユーザ操作に基づいて実行されたプログラムにより呼び出されたプログラムを実行するためのプロセスをさらに前記サスペンド・プロセス・リストに追加するステップを有する請求項8に記載のコンピュータ・プログラム。
  10. ブートを複数回実行するステップと、
    ブート時間を計測するステップと、
    前回のブートより今回のブートのブート時間が遅延した場合に、前回のブート後に前記サスペンド・プロセス・リストに追加したプロセスを前記サスペンド・プロセス・リストから削除するステップと
    を有する請求項8または請求項9に記載のコンピュータ・プログラム。
  11. 前記サスペンド・プロセス・リストを作成してから導入されたプログラムおよび該プログラムからのみ呼び出されるプログラムに関連するプロセスを前記サスペンド・プロセス・リストに登録するステップを有する請求項8から請求項10のいずれかに記載のコンピュータ・プログラム。
  12. オペレーティング・システムを含むブート・ファイルを格納したブート媒体と、
    ブート時に実行するプロセスを登録したラン・プロセス・リストと、
    前記ブート・ファイルをロードするプロセスの中で前記ラン・プロセス・リストに登録されたプロセスを実行し登録されていないプロセスをサスペンドする制御手段とを有し、
    前記制御手段は、ブートの完了後に実行されたアプリケーション・プログラムが前記サスペンドしたプロセスを呼び出したときに前記サスペンドしたプロセスをレジュームするコンピュータ・システム。
  13. 前記制御手段は、サスペンドされたプロセスが前記アプリケーション・プログラムを実行するプロセスから呼び出されたことをプロセス間通信の監視により検知したときに前記サスペンドしたプロセスをレジュームする請求項12に記載のコンピュータ・システム。
  14. 呼び出し元のプロセスと呼び出し先のプロセスの依存関係を記述したプロセス間通信リストを有し、
    前記制御手段は、前記プロセス間通信リストを参照して前記サスペンドしたプロセスが前記アプリケーション・プログラムを実行するプロセスから呼び出されたことを認識してレジュームする請求項13に記載のコンピュータ・システム。
  15. 前記ラン・プロセス・リストには、前記コンピュータに導入された実行可能なプログラムに対応する全プロセスから、前記コンピュータの動作時に実行されないプログラムに対応するプロセスとユーザ操作に基づいて実行されたプログラムにより呼び出されたプログラムを実行するためのプロセスを削除した残りのプロセスが登録されている請求項12から請求項14のいずれかに記載のコンピュータ・システム。
  16. 前記制御手段は、前記オペレーティング・システムが前記コンピュータに導入されてから導入されたプログラムを実行するプロセスの前記ラン・プロセス・リストへの登録を排除する請求項12から請求項15のいずれかに記載のコンピュータ・システム。
  17. オペレーティング・システムを含むブート・ファイルを格納したブート媒体と、
    ブート時にサスペンドするプロセスを登録したサスペンド・プロセス・リストと、
    前記ブート・ファイルをロードするプロセスの中で前記サスペンド・プロセス・リストに登録されたプロセスをサスペンドし登録されていないプロセスを実行する制御手段とを有し、
    前記制御手段は、ブートの完了後に実行されたアプリケーション・プログラムが前記サスペンドしたプロセスを呼び出したときに前記サスペンドしたプロセスをレジュームするコンピュータ・システム。
  18. 前記制御手段は、サスペンドされたプロセスが前記アプリケーション・プログラムを実行するプロセスから呼び出されたことをプロセス間通信の監視により検知したときに前記サスペンドしたプロセスをレジュームする請求項17に記載のコンピュータ・システム。
  19. 前記サスペンド・プロセス・リストには、前記コンピュータの動作時に実行されないプログラムに対応するプロセスとユーザ操作に基づいて実行されたプログラムにより呼び出されたプログラムを実行するためのプロセスが登録されている請求項17または請求項18に記載のコンピュータ・システム。
  20. 前記サスペンド・プロセス・リストには、前記オペレーティング・システムが前記コンピュータに導入されてから導入されたプログラムを実行するプロセスが登録されている請求項17から請求項19のいずれかに記載のコンピュータ・システム。
JP2009258469A 2009-11-12 2009-11-12 高速で起動するコンピュータ Active JP5026494B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009258469A JP5026494B2 (ja) 2009-11-12 2009-11-12 高速で起動するコンピュータ
US12/910,980 US8499143B2 (en) 2009-11-12 2010-10-25 Method for shortening the boot time of a computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009258469A JP5026494B2 (ja) 2009-11-12 2009-11-12 高速で起動するコンピュータ

Publications (2)

Publication Number Publication Date
JP2011103093A JP2011103093A (ja) 2011-05-26
JP5026494B2 true JP5026494B2 (ja) 2012-09-12

Family

ID=43975022

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009258469A Active JP5026494B2 (ja) 2009-11-12 2009-11-12 高速で起動するコンピュータ

Country Status (2)

Country Link
US (1) US8499143B2 (ja)
JP (1) JP5026494B2 (ja)

Families Citing this family (11)

* 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
JP5385347B2 (ja) 2011-08-02 2014-01-08 レノボ・シンガポール・プライベート・リミテッド メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ
US9461887B2 (en) * 2012-12-05 2016-10-04 Cisco Technology, Inc. Stateless flexible boot control
CN103902326A (zh) * 2012-12-29 2014-07-02 鸿富锦精密工业(武汉)有限公司 电子装置及其开机时间侦测方法
US20140237475A1 (en) * 2013-02-15 2014-08-21 Apple Inc. Sleep/wake with suppression and donated importance
CN104969183B (zh) * 2013-03-14 2018-10-19 英特尔公司 用于多个并行处理线程间的任务的软件模块的并行操作的系统、方法和设备
US20140373027A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation Application lifetime management
US10114661B2 (en) * 2014-11-07 2018-10-30 Roku, Inc. System and method for fast starting an application
TWI709081B (zh) * 2018-01-29 2020-11-01 仁寶電腦工業股份有限公司 電子裝置及其快速開機方法
US11055110B2 (en) * 2018-06-05 2021-07-06 Microsoft Technology Licensing, Llc Operating system service for persistently executing programs
US11144326B2 (en) 2019-02-19 2021-10-12 Cisco Technology, Inc. System and method of initiating multiple adaptors in parallel

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181609B2 (en) * 2003-08-15 2007-02-20 Intel Corporation System and method for accelerated device initialization
KR100575156B1 (ko) 2004-05-19 2006-04-28 삼성전자주식회사 컴퓨터 시스템 및 그 제어방법
US7395422B2 (en) * 2005-04-13 2008-07-01 Hewlett-Packard Development Company, L.P. Method and system of changing a startup list of programs to determine whether computer system performance increases
JP2006323549A (ja) * 2005-05-18 2006-11-30 Hitachi Ltd システムの起動方法
US7783875B2 (en) * 2005-07-01 2010-08-24 Hewlett-Packard Development Company, L.P. System boot optimizer
US8010964B2 (en) * 2005-08-18 2011-08-30 Tellabs Operations, Inc. Methods for monitoring and managing processes
TWI317078B (en) * 2006-06-02 2009-11-11 Giga Byte Tech Co Ltd Energy-saving computer and a method making the same
JP2009217711A (ja) * 2008-03-12 2009-09-24 Mitsubishi Electric Corp 情報処理装置
US8060734B1 (en) * 2008-10-13 2011-11-15 Symantec Corporation Systems and methods for providing recommendations to improve boot performance based on community data
JP2010211596A (ja) * 2009-03-11 2010-09-24 Panasonic Corp マルチタスクシステムにおけるシステム起動方法

Also Published As

Publication number Publication date
JP2011103093A (ja) 2011-05-26
US8499143B2 (en) 2013-07-30
US20110113229A1 (en) 2011-05-12

Similar Documents

Publication Publication Date Title
JP5026494B2 (ja) 高速で起動するコンピュータ
EP1769351B1 (en) Method, software and apparatus for using application state history information when re-launching applications
JP5385347B2 (ja) メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ
JP5212360B2 (ja) 制御プログラム、制御システムおよび制御方法
USRE40092E1 (en) Method for quickly booting a computer system
US20010039612A1 (en) Apparatus and method for fast booting
US8661236B2 (en) Partial initialization of divided programs in response to pre-boot and post-boot activation events to rapidly boot a computer system
US20040030882A1 (en) Managed application pre-launching
US8131986B2 (en) System and method for boot loading of programs within a host operating environment having one or more linked guest operating systems
US7162629B2 (en) Method to suspend-and-resume across various operational environment contexts
JP2012220990A (ja) ハイパーバイザ置き換え方法および情報処理装置
TWI450090B (zh) 關於改變程式之啟動列表以判定電腦系統性能是否增進之方法及系統
JP2009245405A (ja) コンピュータおよびブート方法
US20110208955A1 (en) Machine-readable storage media for display of a basic input/output system (bios) productivity display
CN102043662A (zh) 多操作系统的数据修改方法
KR20100108578A (ko) 컴퓨팅 장치 셧다운 방법, 컴퓨팅 장치 및 컴퓨터 판독가능 저장 매체
US7412597B2 (en) Computer system and booting method thereof
KR100994723B1 (ko) 시스템에서 초기 구동시간을 단축시키는 선택적 서스펜드 리쥼 방법 및 그 기록매체
JP5335625B2 (ja) ブート時間を短縮するコンピュータ・プログラム
WO2008048581A1 (en) A processing device operation initialization system
JP2013522710A (ja) Itシステムの構成方法、そのコンピュータプログラムおよびitシステム
JP2023071103A (ja) プロセススケジュール方法
KR20210073200A (ko) 전자기기
JP2003242129A (ja) プロセッサ増減設方法及び計算機システム
JP2003345608A (ja) ファームウェアディスパッチ方式,方法,およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120517

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120620

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5026494

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150629

Year of fee payment: 3

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

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