情報処理装置及び情報処理方法
【課題】ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにする。
【解決手段】OSは、情報処理装置の起動に応じて、フルデバイスドライバのハードウェア制御部に相当する構成が含まれていないスケルトンドライバをHDDからDRAMへロードし(S802)、情報処理装置が起動した後に所定条件が満たされたことに応じてフルドライバをHDDからDRAMへロードする(S807)。
【解決手段】OSは、情報処理装置の起動に応じて、フルデバイスドライバのハードウェア制御部に相当する構成が含まれていないスケルトンドライバをHDDからDRAMへロードし(S802)、情報処理装置が起動した後に所定条件が満たされたことに応じてフルドライバをHDDからDRAMへロードする(S807)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【0002】
従来から、ハードウェアデバイスを有する情報処理装置において、情報処理装置上で動作するオペレーティングシステム(以下、OS)により、ハードウェアデバイス(以下、デバイス)を制御する技術が知られている。
【0003】
そして、OS上で動作するアプリケーションプログラムは、デバイスドライバを介してハードウェアデバイスを制御するのが一般的である。それは、OS上で動作するアプリケーションプログラムが、ハードウェアデバイスを直接制御することができるようにすると、複数のアプリケーションプログラムから同一のハードウェアデバイスに対して要求があった場合に矛盾が生じないようにするためである。
【0004】
そして、情報処理装置上で動作するOSは、情報処理装置の起動にあたってデバイスドライバを不揮発性記憶手段(ハードディスク等)から揮発性記憶手段(DRAM等)にロードし、ハードウェアデバイスを制御できるようにする(例えば、特許文献1参照。)。
【特許文献1】特開2001−34480号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ハードウェアデバイスを有する情報処理装置においては、情報処理装置の起動に要する時間を短縮することが求められている。そして、情報処理装置の起動にあたって、デバイスドライバを、デバイスドライバを動作させるための記憶領域(例えば、DRAM上の記憶領域)にロードする場合、デバイスドライバのロードに時間を有する。特に、複雑な機能を有するハードウェアデバイスに対応するデバイスドライバはデータサイズが大きく、ロードに要する時間が長い。
【0006】
この問題を解決するために、特許文献1では、情報処理装置上で動作するOSがロード可能な複数のデバイスドライバのうち、起動時にロードするデバイスドライバとロードしないデバイスドライバを予め設定しておく。そして、起動時にロードしないデバイスドライバは、そのデバイスドライバに対応するデバイスへのアクセスが発生した際にロードされるようにしておく。これにより、情報処理装置上で動作するOSがロード可能な複数のデバイスドライバの全てを情報処理装置の起動時にロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。
【0007】
しかし、特許文献1の方法では、OSにより管理されるアプリケーションプログラムから、デバイスドライバがロードされていないデバイスへのアクセスが発生した場合、対応するデバイスドライバをロードする。この場合、デバイスドライバのロードが終了するまでは、アプリケーションプログラムは、OSからの応答を待ちつづける状態となり、アプリケーションプログラムの処理が中断してしまう。特に、アプリケーションプログラムが、ハードウェアデバイスの構成を示す構成情報を取得する取得要求をしている場合、OSは構成情報をアプリケーションプログラムに取得させれば良い。しかし、ロードするデバイスドライバには、構成情報以外にも他の情報が含まれており、構成情報をロードした後に他の情報を更にロードした後でないと、アプリケーションプログラムへ構成情報を取得させることができない。
【0008】
本願発明は、以上の問題点を鑑みてなされたものであり、ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにすることを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本発明の情報処理装置は、ハードウェアデバイスを有する情報処理装置であって、前記ハードウェアデバイスを利用した動作を実行するための少なくとも1つのアプリケーションプログラムと、前記少なくとも1つのアプリケーションプログラムを管理するオペレーティングシステムと、前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第1デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスに関するデバイス情報を含むが、前記ハードウェア制御情報の少なくとも一部を含まない第2デバイスドライバと、前記第1デバイスドライバ及び前記第2デバイスドライバを記憶する第1記憶手段と、前記オペレーティングシステムを介して前記デバイスドライバを動作させるための記憶領域を含む第2記憶手段とを有し、前記オペレーティングシステムは、前記情報処理装置の起動に応じて前記第2デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードするよう前記第1記憶手段及び前記第2記憶手段を制御することを特徴とする。
【0010】
また、本発明の情報処理方法は、ハードウェアデバイスと、前記ハードウェアデバイスを利用した動作を実行するための少なくとも1つのアプリケーションプログラムと、前記少なくとも1つのアプリケーションプログラムを管理するオペレーティングシステムと、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第1デバイスドライバと、前記ハードウェアデバイスに関するデバイス情報を含むが前記ハードウェア制御情報の少なくとも一部を含まない第2デバイスドライバとを有する情報処理装置における情報処理方法であって、前記情報処理装置の起動に応じて、前記第2デバイスドライバを第1記憶手段から第2記憶手段の記憶領域へロードする第1工程と、前記情報処理装置が起動した後に所定条件が満たされたことに応じて、前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードする第2工程と、前記オペレーティングシステムの指示に基づいて、前記記憶領域にロードされた前記第1デバイスドライバ又は前記第2デバイスドライバの少なくともいずれかを動作させる第3工程とを有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにすることができる。
【発明を実施するための最良の形態】
【0012】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【0013】
<第1実施形態>
以下、添付図面を参照して本発明の第1実施形態を説明する。尚、本実施形態に係る情報処理装置は、コピー、FAX、プリンタ機能等の各種機能を有する複合機の場合で説明するが、本発明はこれに限定されるものでなく、PC等を含む一般的な情報処理装置にも適用できる。
【0014】
図2は、本実施の形態における情報処理装置のハードウェア構成を示すブロック図である。
【0015】
<ハードウェア構成>
CPU201はメモリコントローラ202と接続され、このメモリコントローラ202と接続されているDRAM203に格納されている各種プログラムを実行する。DRAM203は、このプログラム以外に、例えば演算データや各種データを格納できる。メモリコントローラ202は更に、LCDコントローラ204とバスコントローラ205とに接続される。バスコントローラ205には、シリアル通信コントローラであるSIO206とROM207が接続されている。またバスコントローラ205は、ハードディスクを接続するためのコネクタ(IDE PHY)210と、ネットワークケーブルを接続するためのコネクタ(Network PHY)208とを装備している。またバスコントローラ205は、ハードディスクコントローラやネットワークコントローラとしても動作する。LCDコントローラ204とSIO206は、利用者が、この情報処理装置を操作するためのLCDパネル(タッチパネル)を有する操作パネル220(図3)が接続されるパネルPHY209と接続されている。尚、この操作パネル220については後述する。ROM207には、この情報処理装置を動作させるための設定値や、この情報処理装置の起動に必要なブートプログラム等が含まれる。
【0016】
この情報処理装置は更にCPU217を有している。このCPU217は、バス212によってDRAM216と、各種ハードウェアデバイス(PHY)213〜215と接続されている。DRAM216は、CPU217で実行される各種プログラムや、各種データを格納する。バス212はバスブリッジ211を介してバスコントローラ205と接続されている。DRAM203に記憶される各種データは、バスコントローラ205、バスブリッジ211、バス212を経由してDRAM216に転送可能であり、またその逆方向へのデータ転送も可能である。またCPU201とCPU217は、バスブリッジ211を経由して互いに通信できる。これによりCPU201はCPU217と通信することで、各種ハードウェアデバイス(PHY)213乃至215に接続されるハードウェアユニットを制御できる。またCPU201は、コネクタ(IDE PHY)210に接続されるハードディスク(以下、HDD)からCPU217で実行するプログラムをDRAM216に書き込むことができる。なお、HDDは、不揮発性の第1記憶手段であり、DRAMは揮発性の第2記憶手段である。
【0017】
続いてパネルPHY209と接続される操作パネル220について説明する。
【0018】
図3は、本実施の形態に係る情報処理装置の操作パネル220の外観図である。
【0019】
301は、この情報処理装置のユーザが数値情報や電話番号等を入力するためのテンキーである。リセットボタン302は、この操作パネル220で行った設定情報をクリアするためのキーである。303はソフト電源ボタンで、ソフトウェア的に装置の電源のオン/オフを指示するためのボタンである。スタートボタン304は、ユーザがFAX転送やコピー等の各種機能の実行開始を指示するためのボタンである。ストップボタン305は、既に開始された各種機能の実行の中断をユーザが指示するためのボタンである。306は、この情報処理装置の電源状態を示すLEDである。LED310は、この情報処理装置で実行されているジョブの状態を示すLEDである。またLED311は、この情報処理装置で発生しているエラー状態を示すLEDである。これらLEDは、SIO206によるシリアル通信により、それぞれ無灯、緑点灯、緑点滅、橙色点灯の状態に設定できる。ガイドキー307は、この情報処理装置の各種説明画面を表示する。またユーザモードキー308は、この情報処理装置をユーザモードに移行させるためのキーである。309は液晶表示器を有するタッチパネルである。ユーザが、この操作パネル220の各種ボタンやタッチパネル309を操作すると、その操作情報はパネルPHY209とSIO206を経由してCPU201に通知される。CPU201はDRAM203に格納されたプログラムに従ってLCDコントローラ204を制御してタッチパネル309の画面の表示や更新を行う。またCPU201は、SIO206を制御することで各種LEDの点灯/消灯制御も行う。
【0020】
<機能説明>
次に本実施の形態に係る情報処理装置の各種機能について、各機能別に説明する。
【0021】
(コピー機能)
ユーザは、スキャナPHY215に接続されるスキャナユニット(不図示)に原稿をセットし、操作パネル220を操作してコピーに係る設定を行う。このコピーに係る設定とは、例えば部数の設定や出力のソート方法、或いは読み取り時の変倍率等を含む。これらの設定値はDRAM203に保存される。その後ユーザはスタートボタン304を押下する。これによりCPU201は、そのスタートボタン304の押下を検知し、CPU217に対してスキャナユニットの駆動を依頼する。このとき、変倍に係る設定値及び取得したイメージデータの転送先の情報が、駆動依頼と共にCPU217に通知される。スキャナユニットからのイメージデータの転送先は、DRAM203,DRAM216のいずれかに選択される。CPU217は、CPU201から受信した情報に従ってスキャナユニットをスキャナPHY215を経由して駆動する。
【0022】
このときスキャナユニットは、ユーザによってセットされた原稿を光学的に走査することによりイメージデータを形成する。こうしてスキャナユニットによって読み取られたイメージデータは、まずDRAM216に格納され、所定の画像処理が施された後、CPU201で指定されたイメージデータの転送場所に送られて格納される。このときCPU201は、イメージデータをIDE PHY210に接続されるハードディスクに格納してもよい。そしてCPU201は、その取得したイメージデータをプリンタPHY214に接続されるプリンタエンジン(不図示)で印刷するようにCPU217に対して指示する。これによりCPU217は、その指示されたイメージデータをプリンタエンジンで印刷するように、プリンタPHY214を経由してプリンタエンジンを制御する。プリンタエンジンはCPU217からの指示に従ってイメージデータをシート(用紙)上に印刷する。ここでプリンタエンジンに対して行う印刷指示は1ページ単位でなされるものとする。このため、スキャナユニットに複数ページの原稿がセットされた場合には、CPU201は複数回CPU217に対してイメージデータを印刷するように指示する。また、ユーザが操作パネル220を使用してソート方法を指示していた場合は、CPU201が印刷指示を行うイメージデータを、その指定されたソート方法に合わせて指定することによりソート機能を実現する。
【0023】
(ファックス機能)
次にファックス送信について説明する。ユーザは、スキャナPHY215に接続されるスキャナユニットに原稿をセットする。その後、操作パネル220を操作して、送信先の電話番号や読み取り時の設定等を入力する。そしてユーザがスタートボタン304を押下すると、それを検知したCPU201は、上述のコピー機能の動作と同様に、CPU217に対して原稿の読み取りを依頼する。ここでも同様に、その読み取られたイメージデータはDRAM203或はハードディスク、或いはDRAM216に格納される。続いてCPU201は、その格納されたイメージデータを、FAXPHY213に接続されるファックスユニット(不図示)を用いて、その指定された電話番号に対してファックス送信するようにCPU217に対して指示する。CPU217は、FAXPHY213を経由してファックスユニットを制御することにより、CPU201で指定されたイメージデータを、指定された電話番号に対してファックス送信する。
【0024】
続いてファックス受信の動作について説明する。ファックスユニットは、ファックスの着信があったことをCPU217に通知すると共に、通信先から伝送されたイメージデータをDRAM216に転送して格納する。CPU217はファックス受信があったことを、受信したイメージデータの情報と共にCPU201に通知する。その後、上述したコピー機能と同様に、CPU201は、その受信したイメージデータをプリンタエンジンで出力するようにCPU217に対して指示する。これによりファックスユニットで受信したイメージデータをプリンタエンジンで印刷する。
【0025】
(プリンタ機能)
ユーザが作成した文書データは、コネクタ208に接続されるネットワークを介して、この情報処理装置に伝送される。こうして転送される文書データは、例えばPDLデータである。このコネクタ208を介して受信した文書データは、一旦DRAM203に保存される。CPU201は、このDRAM203に保持された文書データを解釈してイメージデータに変換し、DRAM203に保存する。続いてCPU201は、このイメージデータを、上述したコピー機能と同様に、プリンタエンジンで出力するようにCPU217に対して指示する。これによりCPU217は、そのイメージデータを印刷するように、プリンタPHY214を通じてプリンタエンジンを制御する。
【0026】
(その他の機能)
上述したコピー機能やファックス機能、プリンタ機能で印刷するイメージデータは、全てIDE PHY210に接続されるハードディスクに格納してもよい。これにより、一度印刷したイメージデータを再利用することが可能になる。また複数のイメージデータを取り扱う場合に、DRAM203に保持されたイメージデータをハードディスクに転送して、DRAM203の、ハードディスクの転送済みのイメージデータを消去する。これにより、イメージデータの処理中に、他のイメージデータの読み取りや生成が行えるようになるので高速処理が可能になる。
【0027】
<ソフトウェア構成>
次にCPU201が実行するソフトウェアシステムの構成について図1を用いて説明する。図1は、情報処理装置のソフトウェア構成を示すブロック図である。
【0028】
図1は、本実施の形態に係る情報処理装置において、CPU201が実行するソフトウェアシステムの構成を説明するためのブロック図である。
【0029】
120はOS(オペレーティングシステム)で、ジョブを制御するジョブ制御部141がOS120上で動作する。また操作パネル220を制御するUI制御アプリケーションプログラム142がOS120上で動作する。またプリンタPHY214に接続されるプリンタエンジンを制御するプリント制御アプリケーションプログラム143がOS120上で動作する。また、上述したコピー動作を制御するコピー制御アプリケーションプログラム144がOS120上で動作する。また上述したプリンタ機能を制御するPDL制御アプリケーションプログラム145がOS120上で動作する。また上述したファックス機能を制御するFAX制御アプリケーションプログラム146がOS120上で動作する。
【0030】
またOS120は、例えばFATやEXT2等の各種ファイルシステムをサポートしている。ここでファイルシステムとは、ハードディスクにファイルを効率良く格納、或は取得するための仕組みである。OS120上で動作するアプリケーションプログラムは、OS120が公開するAPI(Application Interface)を操作して、このファイルシステムを利用できる。例えばコピー制御アプリケーションプログラム144は、このAPIを操作することにより、スキャナから得られたイメージデータを効率良くハードディスクに格納できる。このようにハードディスクに格納されたイメージデータを任意の順序で取得することで、様々なレイアウト(例えば逆順印刷やN−up印刷)で紙面に印刷することが可能になる。また、例えばFAX制御アプリケーションプログラム146は、このAPIを操作することにより、ファックスで受信したイメージデータをハードディスクに格納できる。これによりファックスで受信した画像を再利用することが可能になる。また、例えばPDL制御アプリケーションプログラム145は、このAPIを操作することにより、受信したイメージデータを解釈することによって得られるイメージデータをハードディスクに効率よく格納できる。通常、このように生成されたイメージデータは、プリンタエンジンに出力されるまで削除できない。このため、所定数の画像のイメージデータを生成した後、PDL制御アプリケーションプログラム145はプリンタエンジンによって、そのイメージデータが印刷されるまで解釈処理を中断しなければならない。しかし、イメージデータをハードディスクに格納することにより、同時に格納することができる画像の数が増大するので、PDL制御アプリケーションプログラム145による解釈処理を中断する頻度を低減できる。ファイルシステム121は、IDE PHY210に接続されるハードディスクを制御するバスコントローラ205に内蔵されるハードディスクコントローラを制御するハードディスクドライバ126を操作する。こうしてハードディスク(HDD)へのデータの送受信を行うことができる。
【0031】
またOS120は、例えばTCP/IPやUDP等の各種ネットワークプロトコルをサポートする。通常、OSがサポートするネットワークプロトコルは、OSI基本参照モデルのアプリケーション層未満である。プロトコルスタック122は、OS120上で動作するアプリケーションに対してIFを公開する。これらアプリケーションプログラムは、このIFを操作することにより、各種プロトコルで外部装置と通信することが可能になる。例えばPDL制御アプリケーションプログラム145は、外部から伝送される文書データを受信するために、このIFを利用する。またジョブ制御アプリケーションプログラム141は、SNMP(Simple Network Management Protocol)で外部装置と通信するためにこのIFを利用する。プロトコルスタック122は、バスコントローラ205に内蔵されているネットワークコントローラを制御するネットワークドライバ127を操作することで、コネクタ208で接続された外部装置と通信を行う。またUI制御アプリケーションプログラム142は、LCDコントローラ204とSIO206を制御するドライバ123を操作することによってタッチパネル309に画像を表示する。またUI制御アプリケーションプログラム142は、ユーザが操作パネル220に対して行った操作で入力されるコマンドを受信する。そして、そのユーザの操作に従った画面の更新や、またジョブ制御アプリケーションプログラム141に対して利用者が所望する動作の実行を指示する。またプリント制御アプリケーションプログラム143は、のプリンタPHY214に接続されるプリンタエンジンを制御するプリンタドライバ124を操作することで、各種イメージデータを紙面上に印刷する。ここで、印刷されるイメージデータはジョブ制御アプリケーションプログラム141で指定される。
【0032】
コピー制御アプリケーションプログラム144は、UI制御アプリケーションプログラム142からの指示に従って、スキャナPHY215に接続されるスキャナユニットを制御するスキャナドライバ125を操作する。そして、スキャナユニットにセットされた原稿を読み取ってイメージデータを生成する。またこのコピー制御アプリケーションプログラム144は、こうして得られたイメージデータを、ファイルシステム121を操作することによりハードディスクに書き込む。またコピー制御アプリケーションプログラム144は、そのイメージデータを、プロトコルスタック122を操作して外部の情報処理装置に伝送する。またコピー制御アプリケーションプログラム144は、そのイメージデータの印刷をジョブ制御部141に指示する。このときジョブ制御アプリケーションプログラム141は、プリント制御アプリケーションプログラム143に対して、その指定されたイメージデータを指定して印刷の実行を指示する。ここでコピー制御アプリケーションプログラム144は、このように原稿を読み取って得られたイメージデータをハードディスクに格納している。従って、印刷するイメージデータの順序を制御することにより、UI制御アプリケーションプログラム142からの指示に従ったソート順で印刷できる。
【0033】
PDL制御アプリケーションプログラム145は、受信したPDL等の各種文書データをプロトコルスタック122で解釈してイメージデータに変換した後、ジョブ制御アプリケーションプログラム141に対して、そのイメージデータの印刷を指示する。このときジョブ制御アプリケーションプログラム141は、プリント制御アプリケーションプログラム143に対して、その指定されたイメージデータを指定して印刷の実行を指示する。
【0034】
FAX制御アプリケーションプログラム146は、UI制御アプリケーションプログラム142からの指示、或いはFAXPHY213に接続されるファックスユニットを制御するFAXドライバ128から発行される着呼イベントに従って動作する。UI制御アプリケーションプログラム142からファックス送信が指示されると、スキャナPHY215に接続されるスキャナユニットを制御するスキャナドライバ125を操作して、そのスキャナユニットにセットされた原稿を読み取る。続いてFAX制御アプリケーションプログラム146は、その読み取って得られたイメージデータを、UI制御アプリケーションプログラム142で指定された番号に対してファックス送信する。この際、FAX制御アプリケーションプログラム146は、FAXPHY213に接続されるファックスユニットを制御するFAXドライバ128を操作する。
【0035】
一方、FAXドライバ128から着呼イベントが通知されると、FAX制御アプリケーションプログラム146は、その着呼したイメージデータを読み取り、そのイメージデータの印刷をジョブ制御アプリケーションプログラム141に指示する。このときジョブ制御アプリケーションプログラム141は、プリント制御アプリケーションプログラム143に対してFAX制御アプリケーションプログラム146から指定されたイメージデータを指定して印刷の実行を指示する。
【0036】
次に、一般的なデバイスドライバの内部構成について、図4を用いて説明する。図4は、デバイスドライバの内部構成を示す図である。
【0037】
図4で、ドライバI/F部401は、アプリケーションプログラムからの要求を受け付けるとともに、要求に対する応答をアプリケーションプログラムに取得させるためのインターフェースとして機能する。ドライバI/F部401は、デバイスドライバのオープンの手順、クローズの手順、ドライバに対する要求手順、データの読み出し/書き込みの手順等を規定するプログラムで構成される。
【0038】
また図4で、デバイス情報管理部402は、ハードウェアデバイスに関するデバイス情報を管理するためのプログラムで構成される。ここでいうデバイス情報は、デバイスドライバの管理下のハードウェアデバイスが、正常に動作する正常状態か、正常に動作しない(あるいは接続されていない)異常状態であるかを示す情報を含む。また、デバイス情報は、異常状態である場合に、その異常状態の種別を示す情報も含む。
【0039】
また図4で、ドライバ情報管理部403は、デバイスドライバの動作状態を示すドライバ情報を管理するためのプログラムで構成される。デバイスドライバの動作状態としては、デバイスドライバが既にオープンされて動作中であるか否かの状態や、アプリケーションプログラムとハードウェアデバイス間でのデータの転送状態(転送待ち、転送中等)が含まれる。
【0040】
また図4で、ハードウェア制御部404は、ドライバI/F部401を介して入力されるアプリケーションプログラムの要求を受け付け、その要求に基づいてハードウェアデバイスを制御するためのプログラムで構成される。そして、ハードウェア制御部404は、アプリケーションプログラムとハードウェアデバイス間でのデータの転送時に使用するバッファの管理を行う。また、ハードウェア制御部404は、複数のアプリケーションプログラムからハードウェアデバイスへの要求がされた場合に、いずれのアプリケーションプログラムからの要求を処理するかを排他的に選択する排他処理を実行する。また、ハードウェア制御部404は、デバイスドライバを初期化する際に、バッファのクリアや、排他処理で利用するソフトウェアリソースの初期化を実行する。なお、ソフトウェアリソースとしては、フラグやメッセージキューがある。
【0041】
また図4で、ハードウェアアクセス部405は、デバイス情報管理部402及びハードウェア制御部404からの要求に応答して、ハードウェアデバイスのレジスタにアクセスするためのプログラムで構成される。
【0042】
次に、第1実施形態におけるデバイスドライバの内部構成について、図5及び図6を用いて説明する。図5は、第2デバイスドライバとしてのスケルトンドライバ500の内部構成を示す図である。また図6は、第1デバイスドライバとしてのフルドライバ600の内部構成を示す図である。なお、第1実施形態では、スケルトンドライバ500又はフルドライバ600が、図1で説明したデバイスドライバ123〜128として動作する。
【0043】
なお、図5及び図6におけるアプリケーションプログラムとは、前述した142〜146のいずれかに相当する。また、図5及び図6におけるハードウェアデバイスは、前述したパネルPHY209、プリンタPHY214、スキャナPHY125、IDE PHY210、Network PHY208、FAX PHY213のいずれかに接続されるデバイス相当する。
【0044】
図5に示すスケルトンドライバ500が、図4で示す一般的なデバイスドライバと異なるのは、ハードウェア制御部404に相当する構成が含まれていない点である。一方、図6で示すフルドライバ600は、図4で示す一般的なデバイスドライバと異なるところは無く、ハードウェア制御部404に相当する構成として、ハードウェア制御部604を含む。従って、スケルトンドライバ500は、ハードウェア制御部を含まない分だけ、フルドライバ600に比べてデータサイズが小さい。
【0045】
なお、スケルトンドライバ500のドライバI/F部501とフルドライバ600のドライバI/F部601は図4のドライバI/F部401と同様なので説明を省略する。また、スケルトンドライバ500のデバイス情報管理部502とフルドライバ600のデバイス情報管理部602は図4のデバイス情報管理部402と同様なので説明を省略する。また、スケルトンドライバ500のドライバ情報管理部503とフルドライバ600のドライバ情報管理部603は図4のドライバ情報管理部403と同様なので説明を省略する。また、フルドライバ600のハードウェア制御部504と図4のハードウェア制御部404と同様なので説明を省略する。
【0046】
そして、スケルトンドライバ500は、後述するように、情報処理装置の起動時にHDDからDRAM203上の所定の記憶領域にロードされるものである。スケルトンドライバ500は、フルドライバ600よりデータサイズが小さいので、HDDからDRAM203にロードする際のロード時間が短くて済む。
【0047】
なお、スケルトンドライバ500は、ハードウェア制御部を含まないので、デバイス情報管理部502が、ハードウェアデバイスが正常に動作していることを示すデバイス情報を保持していたとしても、ハードウェアデバイスを制御することができない。そこで、ドライバ情報管理部503は、デバイス情報管理部502が、デバイス情報がハードウェアデバイスが正常に動作していることを示すとしても、デバイスドライバの動作状態が動作不可(初期化中)を示すドライバ情報を保持する。
【0048】
一方、スケルトンドライバ500とフルドライバ600は、デバイス情報管理部とドライバ情報管理部と共通して有する。従って、いずれのデバイスドライバも、アプリケーションプログラムからのハードウェアデバイスのデバイス情報の取得要求や、ドライバの動作状態の取得要求に対して応答することが可能である。
【0049】
次に、情報処理装置に電源が投入されて起動する際の動作について説明する。
【0050】
情報処理装置の操作者は、情報処理装置のメインスイッチ(不図示)を押下することにより、外部の商用電源から供給される交流電圧を情報処理装置が備える交流電圧/直流電圧変換部に供給する。この供給により、交流電圧/直流電圧変換部は、直流電圧を情報処理装置の各部に供給し、情報処理装置が起動する。
【0051】
図7は、情報処理装置に電源が投入された際(起動時)に、CPU201が実行する動作を示すフローチャートである。図7は、CPU201がOS120の実行を開始させるまでの動作を示すものである。
【0052】
ステップS701で、CPU201は、ROM204からDRAM203へ、BIOS(バイオス)をロードし、CPU201の初期化処理を行う。
【0053】
ステップS702で、CPU201は、DRAM203にロードされたBIOSを実行することによりROM204からブートローダをDRAM203へロードする。
【0054】
ステップS703で、CPU201は、DRAM203にロードされたブートローダを実行することにより、IDE PHY210を介してHDDにアクセスする。そして、CPU201は、HDDに格納されたOS120をDRAM203へロードする。
【0055】
ステップS704で、CPU201は、DRAM203へロードされたOS120の実行を開始させる。
【0056】
次に、図8を用いて、情報処理装置の起動時に、OS120が実行する動作について説明する。図8は、情報処理装置の起動時に、OS120が実行する動作を説明するフローチャートである。図8に示す動作は、CPU201がOS120の実行を開始させたことに応じて開始される。
【0057】
ステップS801で、OS120は、バスコントローラ205のハードウェア接続信号を確認することで、情報処理装置が備えるハードウェアデバイスを認識する。ここでいうハードウェアデバイスには、図2に示すパネルPHY209、プリンタPHY214、スキャナPHY125、IDE PHY210、Network PHY208、FAX PHY213のいずれかに接続されるデバイスが含まれる。
【0058】
ステップS802で、OS120は、スケルトンドライバ500をHDDからDRAM203にロードする。
【0059】
ステップS803で、OS120は、アプリケーションプログラムの実行を開始させる。S803で実行を開始させるアプリケーションプログラムとは、前述した142〜146を含む。なお、各アプリケーションプログラムは、HDDに格納されているので、OS120は、HDDに格納されたアプリケーションプログラムをDRAM203にロードする。なお、ステップS803により実行が開始されたアプリケーションプログラムの動作については、図9で追って説明する。
【0060】
ステップS804で、OS120は、ステップS803で実行が開始されたアプリケーションプログラムから、デバイスドライバに対する要求があるか否かを判定する。そして、デバイスドライバに対する要求があればステップS805へ進み、そうでなければステップS804を再び実行する。
【0061】
ステップS805で、OS120は、アプリケーションプログラムにより要求された内容が、ハードウェアデバイスを制御するための要求であるか否かを判定する。そして、デバイスドライバに対する要求の内容がハードウェアデバイスを制御するための要求であればステップS806へ進み、そうでなければステップS811へ進む。
【0062】
ステップS806で、OS120は、フルドライバ600をHDDからDRAM203にロード済みか否かを判定し、ロード済みであればステップS808へ進み、ロード済みでなければステップS807へ進む。
【0063】
ステップS807で、OS120は、フルドライバ600をHDDからDRAM203にロードする。フルドライバ600をロードするのは、スケルトンドライバ500には、ハードウェアデバイスを制御するためのハードウェア制御部が含まれていないからである。そして、OS120は、フルドライバ600がロードされたことに応じて、ハードウェアデバイスを制御するためのデバイスドライバを、スケルトンドライバ500からフルドライバ600に切り替える。
【0064】
ステップS808で、OS120は、フルドライバ600に含まれるハードウェア制御部604により、ステップS804で受け付けたアプリケーションプログラムからの要求に対する応答をする。例えば、ハードウェアデバイスがスキャナであり、アプリケーションプログラムがFAX制御アプリケーションプログラム146である場合を想定する。この場合、FAX制御アプリケーションプログラム146が、スキャナにより原稿を読み取らせるための要求を、スキャナドライバ125としてのフルドライバ600にする。そして、スキャナドライバ125は、FAX制御アプリケーションプログラム146からの要求に応答して、スキャナにより原稿を読み取らせるための指示をスキャナに対して行う。そして、スキャナドライバ125は、スキャナが原稿を読み取って得た画像データを、DRAM203へ格納する。その上で、スキャナドライバ125は、画像データをDRAM203に格納した旨を、FAX制御アプリケーションプログラム146に通知する。
【0065】
ステップS809で、OS120は、OS120に対するシャットダウン指示がなされているか否かを判定する。そして、シャットダウン指示がなされていると判定された場合はステップS810へ進み、そうでなければステップS804へ戻る。例えば、OS120は、情報処理装置の操作者によりソフト電源ボタン303が押下された場合に、シャットダウン指示がなされたものと判定する。
【0066】
ステップS810で、OS120は、OS120のシャットダウン処理を実行し、OS120の動作を停止させる。
【0067】
ここで、ステップS805でNOと判定された場合に実行されるステップS811〜S813について説明する。
【0068】
ステップS805でNOと判定される場合とは、アプリケーションプログラムからの要求が、ハードウェアデバイスを制御するための要求で無い場合である。具体的には、アプリケーションプログラムが、デバイス情報又はドライバ情報の取得要求を受け付けた場合である。
【0069】
ステップS811で、OS120は、アプリケーションプログラムからの要求が、デバイス情報の取得要求であるか否かを判定する。そして、デバイス情報の取得要求であればステップS812へ進み、そうでなければステップS813へ進む。
【0070】
ステップS812で、OS120は、アプリケーションプログラムからのデバイス情報の取得要求に応答して、デバイス情報管理部がアプリケーションにデバイス情報を取得させるように制御する。なお、ステップS812の処理を実行するデバイス情報管理部は、デバイスドライバとしてスケルトンドライバ500が動作している場合は、デバイス情報管理部502となる。一方、デバイスドライバとしてフルドライバ600が動作している場合は、デバイス情報管理部602となる。
【0071】
ステップS813で、OS120は、アプリケーションプログラムからの要求がドライバ情報の取得要求であることから、ドライバ情報管理部がアプリケーションにドライバ情報を取得させるように制御する。なお、ステップS813の処理を実行するドライバ情報管理部は、デバイスドライバとしてスケルトンドライバ500が動作している場合は、ドライバ情報管理部503となる。一方、デバイスドライバとしてフルドライバ600が動作している場合は、ドライバ情報管理部603となる。
【0072】
次に、アプリケーションプログラムが実行する動作について、図9を用いて説明する。図9は、情報処理装置の起動時に、アプリケーションプログラムが実行する動作を説明するフローチャートである。なお、ここでいうアプリケーションプログラムとは、前述した142〜146のいずれかであるものとする。
【0073】
ステップS901で、アプリケーションプログラムは、アプリケーションプログラムが利用するハードウェアデバイスに対応するデバイスドライバに対して、デバイス情報を取得するための要求をする。デバイス情報を取得するのは、アプリケーションプログラムが利用するハードウェアデバイスが、少なくとも正常に動作していることを確認するためである。
【0074】
ステップS902で、アプリケーションプログラムは、デバイスドライバからデバイス情報を取得したか否かを判定し、取得したと判定した場合はステップS903へ進む。
【0075】
ステップS903で、アプリケーションプログラムは、デバイスドライバから取得したデバイス情報を参照し、ハードウェアデバイスが動作可能か否かを判定し、動作可能であると判定した場合は、ステップS904へ進む。アプリケーションプログラムは、デバイス情報が、ハードウェアデバイスが正常に動作していることを示す情報である場合は、動作可能であると判定する。
【0076】
ステップS904で、アプリケーションプログラムは、アプリケーションプログラムが利用するハードウェアデバイスに対応するデバイスドライバに対して、ドライバ情報を取得するための要求をする。ドライバ情報を取得するのは、アプリケーションプログラムが利用するハードウェアデバイスに対応するデバイスドライバの動作状態を確認するためである。
【0077】
ステップS905で、アプリケーションプログラムは、デバイスドライバからドライバ情報を取得したか否かを判定し、取得したと判定した場合はステップS906へ進む。
【0078】
ステップS906で、アプリケーションプログラムは、デバイスドライバから取得したドライバ情報を参照し、デバイスドライバが動作可能か否かを判定し、動作可能であると判定した場合は、ステップS907へ進む。アプリケーションプログラムは、ドライバ情報が、デバイスドライバが既にオープンされており、データ待ち状態である場合にデバイスドライバが動作可能であると判定する。
【0079】
なお、アプリケーションプログラムは、ハードウェア情報及びドライバ情報を取得し、ハードウェアデバイスとデバイスドライバが動作可能であることを確認しないと、ステップS907移行の処理を実行できない。従って、OS120がデバイスドライバのロードを完了して、デバイス情報やドライバ情報をアプリケーションプログラムに取得させることができる状態となっていないと、ハードウェアデバイスを利用した処理を実行できない。つまり、アプリケーションプログラムがハードウェアデバイスを利用した処理を実行するには、デバイスドライバがロードされていることが条件となるので、デバイスドライバのロードに要する時間が、アプリケーションプログラムの起動時間に影響を与える。
【0080】
ステップS907で、アプリケーションプログラムは、ハードウェアデバイスを利用する処理を実行するためのハードウェア制御要求があるか否かを判定し、ハードウェア制御要求があればステップS908へ進む。例えば、アプリケーションプログラムが、FAX制御アプリケーションプログラム146である場合、スキャナに原稿を読み取らせるための要求をする場合に、ステップS907でYESと判定される。
【0081】
ステップS908で、アプリケーションプログラムは、ハードウェア制御要求を、デバイスドライバに対して通知する。
【0082】
ステップS909で、アプリケーションプログラムは、アプリケーションプログラムに対するシャットダウン指示がなされているか否かを判定する。そして、シャットダウン指示がなされていると判定された場合はステップS910へ進み、そうでなければステップS907へ戻る。例えば、アプリケーションプログラムは、OS120によりシャットダウン指示がされた場合に、シャットダウン指示がなされたものと判定する。
【0083】
以上説明したように、OS120は、情報処理装置の起動時にはハードウェアデバイスを制御するためのハードウェア制御情報を含まないスケルトンドライバ500をロードする。従って、ハードウェア制御情報を含むフルドライバ600をロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。一方で、OS120は、ハードウェアデバイスを制御するための要求がアプリケーションプログラムからなされた場合は、フルドライバ600をロードすることでアプリケーションプログラムからの要求に適切に応答することができる。つまり、ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにすることができる。
【0084】
なお、上記の説明では、スケルトンドライバ500は、ハードウェア制御情報を含まないものとしたが、ハードウェア制御情報の少なくとも一部を含まないものとしても良い。この場合、ハードウェア制御情報を含まない場合に比べて、スケルトンドライバ500のデータサイズは大きくなるが、フルドライバ600よりはデータサイズが小さい。従って、この場合であっても、フルドライバ600をロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。なお、ハードウェア制御情報の少なくとも一部としては、種々のものが挙げられる。例えば、OS120が、ハードウェアデバイスに対してハードウェアアクセス部を介してハードウェアデバイスの製造バージョンを問い合わせるための制御情報が挙げられる。
【0085】
なお、上記の説明では、フルドライバ600をロードするための所定条件は、アプリケーションプログラムからハードウェアデバイスを制御するための要求があったこととしたが、他の態様であっても良い。例えば、情報処理装置に、メインスイッチが操作者により押下されてからカウントを開始するタイマを設け、そのタイマが一定のカウント値をカウント(一定時間が経過)したことを条件としても良い。また、タイマを開始するタイミングは、メインスイッチが押下されたタイミング以外でも、例えば、ステップS802でスケルトンドライバのロードがされたタイミングであっても良い。
【0086】
<第2実施形態>
次に、本発明の第2実施形態を説明する。尚、本実施形態に係る情報処理装置は、コピー、FAX、プリンタ機能等の各種機能を有する複合機の場合で説明するが、本発明はこれに限定されるものでなく、PC等を含む一般的な情報処理装置にも適用できる。
【0087】
第1実施形態と第2実施形態は、あるハードウェアデバイスを管理するためのデバイスドライバとして、スケルトンドライバとフルドライバとを使用する点は共通している。一方、第1実施形態におけるフルドライバがデバイス情報管理部とドライバ情報管理部を有するのに対して、第2実施形態におけるフルドライバがそれらを有しない点が異なる。また、第1実施形態では、スケルトンドライバとフルドライバを切り替えていずれか一方を動作させるのに対して、第2実施形態ではスケルトンドライバを常に動作させつつ、必要に応じてフルドライバを更に動作させる点が異なる。
【0088】
なお、以下で特に説明しない部分については、第1実施形態で説明したものと同様であるので、説明を省略する。
【0089】
図10は、第2実施形態におけるスケルトンドライバ1000を示す図である。
【0090】
スケルトンドライバ1000が、図4で示す一般的なデバイスドライバと異なるのは、ハードウェア制御部404に相当する構成が含まれていない点である。
【0091】
図11は、第2実施形態におけるフルドライバ1100を示す図である。
【0092】
図11におけるハードウェア制御部1002は、第1実施形態のフルドライバ600におけるハードウェア制御部604と同様である。
【0093】
一方、図11におけるドライバI/F部1101は、フルドライバ600におけるドライバI/F部601とは異なり、アプリケーションプログラムと直接的にインターフェースするものではない。フルドライバ1100は、図12に示すようにスケルトンドライバ1000から呼び出されることで、スケルトンドライバ1000の一部として組み込まれるものである。そして、フルドライバ1100のドライバI/F部1101は、スケルトンドライバ1000とのインターフェースとして機能するプログラムで構成される。
【0094】
また、図11におけるハードウェアアクセス部1103は、フルドライバ600におけるハードウェアアクセス部603とは異なり、ハードウェアデバイスと直接的にインターフェースするものではない。フルドライバ1100は、図12に示すようにスケルトンドライバ1000から呼び出されることで、スケルトンドライバ1000の一部として組み込まれるものである。そして、フルドライバ1100のハードウェアアクセス部1103は、1000とのインターフェースとして機能するプログラムで構成される。
【0095】
以上のように、第2実施形態におけるフルドライバ1100は、アプリケーションプログラムやハードウェアデバイスと直接的なインターフェースを構成するものではなく、スケルトンドライバ1000と直接的なインターフェースを構成するものである。
【0096】
従って、OS120は、アプリケーションプログラムがアクセスすべきデバイスドライバを常にスケルトンドライバ1000としておけばよい。つまり、OS120は、スケルトンドライバとフルドライバとで切り替える必要がない。その代わり、スケルトンドライバ1000は、ハードウェアデバイスに対する制御要求がアプリケーションプログラムからなされた場合、フルドライバ1100を呼び出す。そして、フルドライバ1100のハードウェア制御部1102は、アプリケーションプログラムからのハードウェア制御要求に対する応答をする。
【0097】
以上説明したように、第1実施形態が奏する効果に加え、更なる効果を奏することができる。具体的には、フルドライバ1100はデバイス情報管理部とドライバ情報管理部を有しないので、第1実施形態におけるフルドライバ600よりもデータサイズが小さい。そうすると、第1実施形態に比べ、フルドライバ1100をロードするのに要する時間が短縮される。
【0098】
なお、上記の説明では、スケルトンドライバ1000は、ハードウェア制御情報を含まないものとしたが、ハードウェア制御情報の少なくとも一部を含まないものとしても良い。この場合、ハードウェア制御情報を含まない場合に比べて、スケルトンドライバ1000のデータサイズは大きくなるが、フルドライバ1100よりはデータサイズが小さい。従って、この場合であっても、フルドライバ1100をロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。なお、ハードウェア制御情報の少なくとも一部としては、種々のものが挙げられる。例えば、OS120が、ハードウェアデバイスに対してハードウェアアクセス部を介してハードウェアデバイスの製造バージョンを問い合わせるための制御情報が挙げられる。
【0099】
<第3実施形態>
次に、本発明の第3実施形態を説明する。尚、本実施形態に係る情報処理装置は、コピー、FAX、プリンタ機能等の各種機能を有する複合機の場合で説明するが、本発明はこれに限定されるものでなく、PC等を含む一般的な情報処理装置にも適用できる。
【0100】
第1実施形態と第3実施形態は、あるハードウェアデバイスを管理するためのデバイスドライバとして、フルドライバとを使用する点は共通している。一方、第1実施形態においては、スケルトンドライバを使用していたのに対し、第3実施形態においてはそれを使用しない点が異なる。
【0101】
情報処理装置で動作可能な全てのデバイスドライバを、情報処理装置の起動時にロードすると、起動に時間がかかってしまう。そこで、第3実施形態は、情報処理装置の起動時間を短縮するために、デバイスドライバをロードするタイミングを、適切に調整するものである。
【0102】
なお、以下で特に説明しない部分については、第1実施形態で説明したものと同様であるので、説明を省略する。
【0103】
図13は、情報処理装置で動作可能なハードウェアデバイスに対応するデバイスドライバ123〜128と、それらの待機時間との関係を示すテーブルである。ここで、待機時間とは、情報処理装置のメインスイッチが押下されてから、OS120がデバイスドライバを開始するまでの時間を示すものである。待機時間が0秒となっているデバイスドライバ123〜126は、情報処理装置の起動時にロードされる。一方、待機時間が20秒とされているネットワークドライバ127は、情報処理装置の起動が開始されてから、20秒が経過した後にロードが開始される。また、待機時間が25秒とされているFAXドライバ128は、情報処理装置の起動が開始されてから、25秒が経過した後にロードが開始される。
【0104】
このように、待機時間を20秒や25秒のように、一部のデバイスドライバをロードするタイミングをずらす。これにより、他のデバイスドライバがロードされてハードウェアデバイスが利用可能になる(起動状態となる)までの時間が短縮される。
【0105】
次に、図14及び図15を用いて、情報処理装置の起動時に、OS120が実行する動作を説明する。
【0106】
ステップS1401で、OS120は、情報処理装置が備えるハードウェアデバイスの認識がされる。ここでいうハードウェアデバイスには、図2に示すパネルPHY209、プリンタPHY214、スキャナPHY125、IDE PHY210、Network PHY208、FAX PHY213のいずれかに接続されるデバイスが含まれる。
【0107】
ステップS1402で、OS120は、アプリケーションプログラムの実行を開始させる。S1402で実行を開始させるアプリケーションプログラムとは、第1実施形態の142〜146を含む。なお、各アプリケーションプログラムは、HDDに格納されているので、OS120は、HDDに格納されたアプリケーションプログラムをDRAM203にロードする。なお、ステップS1302により実行が開始されたアプリケーションプログラムの動作については、第1実施形態の図9で説明した通りである。
【0108】
ステップS1403で、OS120は、図13のテーブルを参照し、LCDドライバ123について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1404へ進む。ステップS1404では、LCDドライバ123を、HDDからDRAM203にロードする。ここで、待機時間をカウントするために、情報処理装置に、メインスイッチが操作者により押下されてからカウントを開始するタイマを設けるものとする。そして、OS120は、タイマのカウント値に基づく経過時間と、図13のテーブルに示される待機時間に基づいて、待機時間が経過したか否かを判定する。
【0109】
ステップS1405で、OS120は、図13のテーブルを参照し、プリンタドライバ124について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1306へ進む。ステップS1406では、プリンタドライバ124を、HDDからDRAM203にロードする。
【0110】
ステップS1407で、OS120は、図13のテーブルを参照し、スキャナドライバ125について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1408へ進む。ステップS1308では、スキャナドライバ125を、HDDからDRAM203にロードする。
【0111】
ステップS1409で、OS120は、図13のテーブルを参照し、HDDドライバ126について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1410へ進む。ステップS1410では、HDDドライバ126を、HDDからDRAM203にロードする。
【0112】
ステップS1411で、OS120は、図13のテーブルを参照し、ネットワークドライバ127について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1412へ進む。ステップS1412では、ネットワークドライバ127を、HDDからDRAM203にロードする。
【0113】
ステップS1413で、OS120は、図13のテーブルを参照し、FAXドライバ128について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1414へ進む。ステップS1414では、FAXドライバ128を、HDDからDRAM203にロードする。
【0114】
ステップS1415で、OS120は、ステップS1402で実行が開始されたアプリケーションプログラムから、デバイスドライバに対する要求があるか否かを判定する。そして、デバイスドライバに対する要求があればステップS1416へ進み、そうでなければステップS1419へ進む。
【0115】
ステップS1416で、OS120は、ステップS1415で実行が要求されたデバイスドライバがロード済みであるか否かを判定し、ロード済みであればステップS1417へ進み、そうでなければステップS1418へ進む。
【0116】
ステップS1417で、OS120は、実行が要求されたデバイスドライバに含まれるハードウェア制御部604により、ステップS1415で受け付けたアプリケーションプログラムからの要求に対する応答をする。
【0117】
一方、ステップS1418で、OS120は、実行が要求されたデバイスドライバがロードされていない旨をアプリケーションプログラムに通知する。
【0118】
ステップS1419で、OS120は、OS120に対するシャットダウン指示がなされているか否かを判定する。そして、シャットダウン指示がなされていると判定された場合はステップS1420へ進み、そうでなければステップS1403へ戻る。例えば、OS120は、情報処理装置の操作者によりソフト電源ボタン303が押下された場合に、シャットダウン指示がなされたものと判定する。
【0119】
ステップS1420で、OS120は、OS120のシャットダウン処理を実行し、OS120の動作を停止させる。
【0120】
以上説明したように、第3実施形態によれば、情報処理装置にて動作可能な複数のデバイスドライバをロードするタイミングを、デバイスドライバ毎に設定することができる。従って、情報処理装置で動作可能な全てのデバイスドライバを、情報処理装置の起動時にロードする場合に比べて、一部のハードウェアデバイスがデバイスドライバにより利用可能となるまでの時間を短縮することができる。なお、図13は、デバイスドライバと待機時間の関係の一例を示したものに過ぎないので、各デバイスドライバに対応する待機時間は、任意に設定することができるようにしてもよい。
【0121】
<他の実施形態>
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給することによっても達成される。この場合、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行すること前述した実施形態の機能を実現する。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【図面の簡単な説明】
【0122】
【図1】情報処理装置のソフトウェア構成を示すブロック図である。
【図2】情報処理装置のハードウェア構成を示すブロック図である。
【図3】情報処理装置の操作パネル220の外観図である。
【図4】デバイスドライバの内部構成を示す図である。
【図5】スケルトンドライバ500の内部構成を示す図である。
【図6】フルドライバ600の内部構成を示す図である。
【図7】情報処理装置の起動時に、CPU201が実行する動作を示すフローチャートである。
【図8】情報処理装置の起動時に、OS120が実行する動作を説明するフローチャートである。
【図9】情報処理装置の起動時に、アプリケーションプログラムが実行する動作を説明するフローチャートである。
【図10】スケルトンドライバ1000の内部構成を示す図である。
【図11】フルドライバ1100の内部構成を示す図である。
【図12】スケルトンドライバ1000とフルドライバ1100の関係を示す図である。
【図13】デバイスドライバのロードを開始するまでの待機時間を示すテーブルである。
【図14】情報処理装置の起動時に、OS120が実行する動作を説明するフローチャートである。
【図15】情報処理装置の起動時に、OS120が実行する動作を説明するフローチャートである。
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【0002】
従来から、ハードウェアデバイスを有する情報処理装置において、情報処理装置上で動作するオペレーティングシステム(以下、OS)により、ハードウェアデバイス(以下、デバイス)を制御する技術が知られている。
【0003】
そして、OS上で動作するアプリケーションプログラムは、デバイスドライバを介してハードウェアデバイスを制御するのが一般的である。それは、OS上で動作するアプリケーションプログラムが、ハードウェアデバイスを直接制御することができるようにすると、複数のアプリケーションプログラムから同一のハードウェアデバイスに対して要求があった場合に矛盾が生じないようにするためである。
【0004】
そして、情報処理装置上で動作するOSは、情報処理装置の起動にあたってデバイスドライバを不揮発性記憶手段(ハードディスク等)から揮発性記憶手段(DRAM等)にロードし、ハードウェアデバイスを制御できるようにする(例えば、特許文献1参照。)。
【特許文献1】特開2001−34480号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ハードウェアデバイスを有する情報処理装置においては、情報処理装置の起動に要する時間を短縮することが求められている。そして、情報処理装置の起動にあたって、デバイスドライバを、デバイスドライバを動作させるための記憶領域(例えば、DRAM上の記憶領域)にロードする場合、デバイスドライバのロードに時間を有する。特に、複雑な機能を有するハードウェアデバイスに対応するデバイスドライバはデータサイズが大きく、ロードに要する時間が長い。
【0006】
この問題を解決するために、特許文献1では、情報処理装置上で動作するOSがロード可能な複数のデバイスドライバのうち、起動時にロードするデバイスドライバとロードしないデバイスドライバを予め設定しておく。そして、起動時にロードしないデバイスドライバは、そのデバイスドライバに対応するデバイスへのアクセスが発生した際にロードされるようにしておく。これにより、情報処理装置上で動作するOSがロード可能な複数のデバイスドライバの全てを情報処理装置の起動時にロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。
【0007】
しかし、特許文献1の方法では、OSにより管理されるアプリケーションプログラムから、デバイスドライバがロードされていないデバイスへのアクセスが発生した場合、対応するデバイスドライバをロードする。この場合、デバイスドライバのロードが終了するまでは、アプリケーションプログラムは、OSからの応答を待ちつづける状態となり、アプリケーションプログラムの処理が中断してしまう。特に、アプリケーションプログラムが、ハードウェアデバイスの構成を示す構成情報を取得する取得要求をしている場合、OSは構成情報をアプリケーションプログラムに取得させれば良い。しかし、ロードするデバイスドライバには、構成情報以外にも他の情報が含まれており、構成情報をロードした後に他の情報を更にロードした後でないと、アプリケーションプログラムへ構成情報を取得させることができない。
【0008】
本願発明は、以上の問題点を鑑みてなされたものであり、ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにすることを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本発明の情報処理装置は、ハードウェアデバイスを有する情報処理装置であって、前記ハードウェアデバイスを利用した動作を実行するための少なくとも1つのアプリケーションプログラムと、前記少なくとも1つのアプリケーションプログラムを管理するオペレーティングシステムと、前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第1デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスに関するデバイス情報を含むが、前記ハードウェア制御情報の少なくとも一部を含まない第2デバイスドライバと、前記第1デバイスドライバ及び前記第2デバイスドライバを記憶する第1記憶手段と、前記オペレーティングシステムを介して前記デバイスドライバを動作させるための記憶領域を含む第2記憶手段とを有し、前記オペレーティングシステムは、前記情報処理装置の起動に応じて前記第2デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードするよう前記第1記憶手段及び前記第2記憶手段を制御することを特徴とする。
【0010】
また、本発明の情報処理方法は、ハードウェアデバイスと、前記ハードウェアデバイスを利用した動作を実行するための少なくとも1つのアプリケーションプログラムと、前記少なくとも1つのアプリケーションプログラムを管理するオペレーティングシステムと、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第1デバイスドライバと、前記ハードウェアデバイスに関するデバイス情報を含むが前記ハードウェア制御情報の少なくとも一部を含まない第2デバイスドライバとを有する情報処理装置における情報処理方法であって、前記情報処理装置の起動に応じて、前記第2デバイスドライバを第1記憶手段から第2記憶手段の記憶領域へロードする第1工程と、前記情報処理装置が起動した後に所定条件が満たされたことに応じて、前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードする第2工程と、前記オペレーティングシステムの指示に基づいて、前記記憶領域にロードされた前記第1デバイスドライバ又は前記第2デバイスドライバの少なくともいずれかを動作させる第3工程とを有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにすることができる。
【発明を実施するための最良の形態】
【0012】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【0013】
<第1実施形態>
以下、添付図面を参照して本発明の第1実施形態を説明する。尚、本実施形態に係る情報処理装置は、コピー、FAX、プリンタ機能等の各種機能を有する複合機の場合で説明するが、本発明はこれに限定されるものでなく、PC等を含む一般的な情報処理装置にも適用できる。
【0014】
図2は、本実施の形態における情報処理装置のハードウェア構成を示すブロック図である。
【0015】
<ハードウェア構成>
CPU201はメモリコントローラ202と接続され、このメモリコントローラ202と接続されているDRAM203に格納されている各種プログラムを実行する。DRAM203は、このプログラム以外に、例えば演算データや各種データを格納できる。メモリコントローラ202は更に、LCDコントローラ204とバスコントローラ205とに接続される。バスコントローラ205には、シリアル通信コントローラであるSIO206とROM207が接続されている。またバスコントローラ205は、ハードディスクを接続するためのコネクタ(IDE PHY)210と、ネットワークケーブルを接続するためのコネクタ(Network PHY)208とを装備している。またバスコントローラ205は、ハードディスクコントローラやネットワークコントローラとしても動作する。LCDコントローラ204とSIO206は、利用者が、この情報処理装置を操作するためのLCDパネル(タッチパネル)を有する操作パネル220(図3)が接続されるパネルPHY209と接続されている。尚、この操作パネル220については後述する。ROM207には、この情報処理装置を動作させるための設定値や、この情報処理装置の起動に必要なブートプログラム等が含まれる。
【0016】
この情報処理装置は更にCPU217を有している。このCPU217は、バス212によってDRAM216と、各種ハードウェアデバイス(PHY)213〜215と接続されている。DRAM216は、CPU217で実行される各種プログラムや、各種データを格納する。バス212はバスブリッジ211を介してバスコントローラ205と接続されている。DRAM203に記憶される各種データは、バスコントローラ205、バスブリッジ211、バス212を経由してDRAM216に転送可能であり、またその逆方向へのデータ転送も可能である。またCPU201とCPU217は、バスブリッジ211を経由して互いに通信できる。これによりCPU201はCPU217と通信することで、各種ハードウェアデバイス(PHY)213乃至215に接続されるハードウェアユニットを制御できる。またCPU201は、コネクタ(IDE PHY)210に接続されるハードディスク(以下、HDD)からCPU217で実行するプログラムをDRAM216に書き込むことができる。なお、HDDは、不揮発性の第1記憶手段であり、DRAMは揮発性の第2記憶手段である。
【0017】
続いてパネルPHY209と接続される操作パネル220について説明する。
【0018】
図3は、本実施の形態に係る情報処理装置の操作パネル220の外観図である。
【0019】
301は、この情報処理装置のユーザが数値情報や電話番号等を入力するためのテンキーである。リセットボタン302は、この操作パネル220で行った設定情報をクリアするためのキーである。303はソフト電源ボタンで、ソフトウェア的に装置の電源のオン/オフを指示するためのボタンである。スタートボタン304は、ユーザがFAX転送やコピー等の各種機能の実行開始を指示するためのボタンである。ストップボタン305は、既に開始された各種機能の実行の中断をユーザが指示するためのボタンである。306は、この情報処理装置の電源状態を示すLEDである。LED310は、この情報処理装置で実行されているジョブの状態を示すLEDである。またLED311は、この情報処理装置で発生しているエラー状態を示すLEDである。これらLEDは、SIO206によるシリアル通信により、それぞれ無灯、緑点灯、緑点滅、橙色点灯の状態に設定できる。ガイドキー307は、この情報処理装置の各種説明画面を表示する。またユーザモードキー308は、この情報処理装置をユーザモードに移行させるためのキーである。309は液晶表示器を有するタッチパネルである。ユーザが、この操作パネル220の各種ボタンやタッチパネル309を操作すると、その操作情報はパネルPHY209とSIO206を経由してCPU201に通知される。CPU201はDRAM203に格納されたプログラムに従ってLCDコントローラ204を制御してタッチパネル309の画面の表示や更新を行う。またCPU201は、SIO206を制御することで各種LEDの点灯/消灯制御も行う。
【0020】
<機能説明>
次に本実施の形態に係る情報処理装置の各種機能について、各機能別に説明する。
【0021】
(コピー機能)
ユーザは、スキャナPHY215に接続されるスキャナユニット(不図示)に原稿をセットし、操作パネル220を操作してコピーに係る設定を行う。このコピーに係る設定とは、例えば部数の設定や出力のソート方法、或いは読み取り時の変倍率等を含む。これらの設定値はDRAM203に保存される。その後ユーザはスタートボタン304を押下する。これによりCPU201は、そのスタートボタン304の押下を検知し、CPU217に対してスキャナユニットの駆動を依頼する。このとき、変倍に係る設定値及び取得したイメージデータの転送先の情報が、駆動依頼と共にCPU217に通知される。スキャナユニットからのイメージデータの転送先は、DRAM203,DRAM216のいずれかに選択される。CPU217は、CPU201から受信した情報に従ってスキャナユニットをスキャナPHY215を経由して駆動する。
【0022】
このときスキャナユニットは、ユーザによってセットされた原稿を光学的に走査することによりイメージデータを形成する。こうしてスキャナユニットによって読み取られたイメージデータは、まずDRAM216に格納され、所定の画像処理が施された後、CPU201で指定されたイメージデータの転送場所に送られて格納される。このときCPU201は、イメージデータをIDE PHY210に接続されるハードディスクに格納してもよい。そしてCPU201は、その取得したイメージデータをプリンタPHY214に接続されるプリンタエンジン(不図示)で印刷するようにCPU217に対して指示する。これによりCPU217は、その指示されたイメージデータをプリンタエンジンで印刷するように、プリンタPHY214を経由してプリンタエンジンを制御する。プリンタエンジンはCPU217からの指示に従ってイメージデータをシート(用紙)上に印刷する。ここでプリンタエンジンに対して行う印刷指示は1ページ単位でなされるものとする。このため、スキャナユニットに複数ページの原稿がセットされた場合には、CPU201は複数回CPU217に対してイメージデータを印刷するように指示する。また、ユーザが操作パネル220を使用してソート方法を指示していた場合は、CPU201が印刷指示を行うイメージデータを、その指定されたソート方法に合わせて指定することによりソート機能を実現する。
【0023】
(ファックス機能)
次にファックス送信について説明する。ユーザは、スキャナPHY215に接続されるスキャナユニットに原稿をセットする。その後、操作パネル220を操作して、送信先の電話番号や読み取り時の設定等を入力する。そしてユーザがスタートボタン304を押下すると、それを検知したCPU201は、上述のコピー機能の動作と同様に、CPU217に対して原稿の読み取りを依頼する。ここでも同様に、その読み取られたイメージデータはDRAM203或はハードディスク、或いはDRAM216に格納される。続いてCPU201は、その格納されたイメージデータを、FAXPHY213に接続されるファックスユニット(不図示)を用いて、その指定された電話番号に対してファックス送信するようにCPU217に対して指示する。CPU217は、FAXPHY213を経由してファックスユニットを制御することにより、CPU201で指定されたイメージデータを、指定された電話番号に対してファックス送信する。
【0024】
続いてファックス受信の動作について説明する。ファックスユニットは、ファックスの着信があったことをCPU217に通知すると共に、通信先から伝送されたイメージデータをDRAM216に転送して格納する。CPU217はファックス受信があったことを、受信したイメージデータの情報と共にCPU201に通知する。その後、上述したコピー機能と同様に、CPU201は、その受信したイメージデータをプリンタエンジンで出力するようにCPU217に対して指示する。これによりファックスユニットで受信したイメージデータをプリンタエンジンで印刷する。
【0025】
(プリンタ機能)
ユーザが作成した文書データは、コネクタ208に接続されるネットワークを介して、この情報処理装置に伝送される。こうして転送される文書データは、例えばPDLデータである。このコネクタ208を介して受信した文書データは、一旦DRAM203に保存される。CPU201は、このDRAM203に保持された文書データを解釈してイメージデータに変換し、DRAM203に保存する。続いてCPU201は、このイメージデータを、上述したコピー機能と同様に、プリンタエンジンで出力するようにCPU217に対して指示する。これによりCPU217は、そのイメージデータを印刷するように、プリンタPHY214を通じてプリンタエンジンを制御する。
【0026】
(その他の機能)
上述したコピー機能やファックス機能、プリンタ機能で印刷するイメージデータは、全てIDE PHY210に接続されるハードディスクに格納してもよい。これにより、一度印刷したイメージデータを再利用することが可能になる。また複数のイメージデータを取り扱う場合に、DRAM203に保持されたイメージデータをハードディスクに転送して、DRAM203の、ハードディスクの転送済みのイメージデータを消去する。これにより、イメージデータの処理中に、他のイメージデータの読み取りや生成が行えるようになるので高速処理が可能になる。
【0027】
<ソフトウェア構成>
次にCPU201が実行するソフトウェアシステムの構成について図1を用いて説明する。図1は、情報処理装置のソフトウェア構成を示すブロック図である。
【0028】
図1は、本実施の形態に係る情報処理装置において、CPU201が実行するソフトウェアシステムの構成を説明するためのブロック図である。
【0029】
120はOS(オペレーティングシステム)で、ジョブを制御するジョブ制御部141がOS120上で動作する。また操作パネル220を制御するUI制御アプリケーションプログラム142がOS120上で動作する。またプリンタPHY214に接続されるプリンタエンジンを制御するプリント制御アプリケーションプログラム143がOS120上で動作する。また、上述したコピー動作を制御するコピー制御アプリケーションプログラム144がOS120上で動作する。また上述したプリンタ機能を制御するPDL制御アプリケーションプログラム145がOS120上で動作する。また上述したファックス機能を制御するFAX制御アプリケーションプログラム146がOS120上で動作する。
【0030】
またOS120は、例えばFATやEXT2等の各種ファイルシステムをサポートしている。ここでファイルシステムとは、ハードディスクにファイルを効率良く格納、或は取得するための仕組みである。OS120上で動作するアプリケーションプログラムは、OS120が公開するAPI(Application Interface)を操作して、このファイルシステムを利用できる。例えばコピー制御アプリケーションプログラム144は、このAPIを操作することにより、スキャナから得られたイメージデータを効率良くハードディスクに格納できる。このようにハードディスクに格納されたイメージデータを任意の順序で取得することで、様々なレイアウト(例えば逆順印刷やN−up印刷)で紙面に印刷することが可能になる。また、例えばFAX制御アプリケーションプログラム146は、このAPIを操作することにより、ファックスで受信したイメージデータをハードディスクに格納できる。これによりファックスで受信した画像を再利用することが可能になる。また、例えばPDL制御アプリケーションプログラム145は、このAPIを操作することにより、受信したイメージデータを解釈することによって得られるイメージデータをハードディスクに効率よく格納できる。通常、このように生成されたイメージデータは、プリンタエンジンに出力されるまで削除できない。このため、所定数の画像のイメージデータを生成した後、PDL制御アプリケーションプログラム145はプリンタエンジンによって、そのイメージデータが印刷されるまで解釈処理を中断しなければならない。しかし、イメージデータをハードディスクに格納することにより、同時に格納することができる画像の数が増大するので、PDL制御アプリケーションプログラム145による解釈処理を中断する頻度を低減できる。ファイルシステム121は、IDE PHY210に接続されるハードディスクを制御するバスコントローラ205に内蔵されるハードディスクコントローラを制御するハードディスクドライバ126を操作する。こうしてハードディスク(HDD)へのデータの送受信を行うことができる。
【0031】
またOS120は、例えばTCP/IPやUDP等の各種ネットワークプロトコルをサポートする。通常、OSがサポートするネットワークプロトコルは、OSI基本参照モデルのアプリケーション層未満である。プロトコルスタック122は、OS120上で動作するアプリケーションに対してIFを公開する。これらアプリケーションプログラムは、このIFを操作することにより、各種プロトコルで外部装置と通信することが可能になる。例えばPDL制御アプリケーションプログラム145は、外部から伝送される文書データを受信するために、このIFを利用する。またジョブ制御アプリケーションプログラム141は、SNMP(Simple Network Management Protocol)で外部装置と通信するためにこのIFを利用する。プロトコルスタック122は、バスコントローラ205に内蔵されているネットワークコントローラを制御するネットワークドライバ127を操作することで、コネクタ208で接続された外部装置と通信を行う。またUI制御アプリケーションプログラム142は、LCDコントローラ204とSIO206を制御するドライバ123を操作することによってタッチパネル309に画像を表示する。またUI制御アプリケーションプログラム142は、ユーザが操作パネル220に対して行った操作で入力されるコマンドを受信する。そして、そのユーザの操作に従った画面の更新や、またジョブ制御アプリケーションプログラム141に対して利用者が所望する動作の実行を指示する。またプリント制御アプリケーションプログラム143は、のプリンタPHY214に接続されるプリンタエンジンを制御するプリンタドライバ124を操作することで、各種イメージデータを紙面上に印刷する。ここで、印刷されるイメージデータはジョブ制御アプリケーションプログラム141で指定される。
【0032】
コピー制御アプリケーションプログラム144は、UI制御アプリケーションプログラム142からの指示に従って、スキャナPHY215に接続されるスキャナユニットを制御するスキャナドライバ125を操作する。そして、スキャナユニットにセットされた原稿を読み取ってイメージデータを生成する。またこのコピー制御アプリケーションプログラム144は、こうして得られたイメージデータを、ファイルシステム121を操作することによりハードディスクに書き込む。またコピー制御アプリケーションプログラム144は、そのイメージデータを、プロトコルスタック122を操作して外部の情報処理装置に伝送する。またコピー制御アプリケーションプログラム144は、そのイメージデータの印刷をジョブ制御部141に指示する。このときジョブ制御アプリケーションプログラム141は、プリント制御アプリケーションプログラム143に対して、その指定されたイメージデータを指定して印刷の実行を指示する。ここでコピー制御アプリケーションプログラム144は、このように原稿を読み取って得られたイメージデータをハードディスクに格納している。従って、印刷するイメージデータの順序を制御することにより、UI制御アプリケーションプログラム142からの指示に従ったソート順で印刷できる。
【0033】
PDL制御アプリケーションプログラム145は、受信したPDL等の各種文書データをプロトコルスタック122で解釈してイメージデータに変換した後、ジョブ制御アプリケーションプログラム141に対して、そのイメージデータの印刷を指示する。このときジョブ制御アプリケーションプログラム141は、プリント制御アプリケーションプログラム143に対して、その指定されたイメージデータを指定して印刷の実行を指示する。
【0034】
FAX制御アプリケーションプログラム146は、UI制御アプリケーションプログラム142からの指示、或いはFAXPHY213に接続されるファックスユニットを制御するFAXドライバ128から発行される着呼イベントに従って動作する。UI制御アプリケーションプログラム142からファックス送信が指示されると、スキャナPHY215に接続されるスキャナユニットを制御するスキャナドライバ125を操作して、そのスキャナユニットにセットされた原稿を読み取る。続いてFAX制御アプリケーションプログラム146は、その読み取って得られたイメージデータを、UI制御アプリケーションプログラム142で指定された番号に対してファックス送信する。この際、FAX制御アプリケーションプログラム146は、FAXPHY213に接続されるファックスユニットを制御するFAXドライバ128を操作する。
【0035】
一方、FAXドライバ128から着呼イベントが通知されると、FAX制御アプリケーションプログラム146は、その着呼したイメージデータを読み取り、そのイメージデータの印刷をジョブ制御アプリケーションプログラム141に指示する。このときジョブ制御アプリケーションプログラム141は、プリント制御アプリケーションプログラム143に対してFAX制御アプリケーションプログラム146から指定されたイメージデータを指定して印刷の実行を指示する。
【0036】
次に、一般的なデバイスドライバの内部構成について、図4を用いて説明する。図4は、デバイスドライバの内部構成を示す図である。
【0037】
図4で、ドライバI/F部401は、アプリケーションプログラムからの要求を受け付けるとともに、要求に対する応答をアプリケーションプログラムに取得させるためのインターフェースとして機能する。ドライバI/F部401は、デバイスドライバのオープンの手順、クローズの手順、ドライバに対する要求手順、データの読み出し/書き込みの手順等を規定するプログラムで構成される。
【0038】
また図4で、デバイス情報管理部402は、ハードウェアデバイスに関するデバイス情報を管理するためのプログラムで構成される。ここでいうデバイス情報は、デバイスドライバの管理下のハードウェアデバイスが、正常に動作する正常状態か、正常に動作しない(あるいは接続されていない)異常状態であるかを示す情報を含む。また、デバイス情報は、異常状態である場合に、その異常状態の種別を示す情報も含む。
【0039】
また図4で、ドライバ情報管理部403は、デバイスドライバの動作状態を示すドライバ情報を管理するためのプログラムで構成される。デバイスドライバの動作状態としては、デバイスドライバが既にオープンされて動作中であるか否かの状態や、アプリケーションプログラムとハードウェアデバイス間でのデータの転送状態(転送待ち、転送中等)が含まれる。
【0040】
また図4で、ハードウェア制御部404は、ドライバI/F部401を介して入力されるアプリケーションプログラムの要求を受け付け、その要求に基づいてハードウェアデバイスを制御するためのプログラムで構成される。そして、ハードウェア制御部404は、アプリケーションプログラムとハードウェアデバイス間でのデータの転送時に使用するバッファの管理を行う。また、ハードウェア制御部404は、複数のアプリケーションプログラムからハードウェアデバイスへの要求がされた場合に、いずれのアプリケーションプログラムからの要求を処理するかを排他的に選択する排他処理を実行する。また、ハードウェア制御部404は、デバイスドライバを初期化する際に、バッファのクリアや、排他処理で利用するソフトウェアリソースの初期化を実行する。なお、ソフトウェアリソースとしては、フラグやメッセージキューがある。
【0041】
また図4で、ハードウェアアクセス部405は、デバイス情報管理部402及びハードウェア制御部404からの要求に応答して、ハードウェアデバイスのレジスタにアクセスするためのプログラムで構成される。
【0042】
次に、第1実施形態におけるデバイスドライバの内部構成について、図5及び図6を用いて説明する。図5は、第2デバイスドライバとしてのスケルトンドライバ500の内部構成を示す図である。また図6は、第1デバイスドライバとしてのフルドライバ600の内部構成を示す図である。なお、第1実施形態では、スケルトンドライバ500又はフルドライバ600が、図1で説明したデバイスドライバ123〜128として動作する。
【0043】
なお、図5及び図6におけるアプリケーションプログラムとは、前述した142〜146のいずれかに相当する。また、図5及び図6におけるハードウェアデバイスは、前述したパネルPHY209、プリンタPHY214、スキャナPHY125、IDE PHY210、Network PHY208、FAX PHY213のいずれかに接続されるデバイス相当する。
【0044】
図5に示すスケルトンドライバ500が、図4で示す一般的なデバイスドライバと異なるのは、ハードウェア制御部404に相当する構成が含まれていない点である。一方、図6で示すフルドライバ600は、図4で示す一般的なデバイスドライバと異なるところは無く、ハードウェア制御部404に相当する構成として、ハードウェア制御部604を含む。従って、スケルトンドライバ500は、ハードウェア制御部を含まない分だけ、フルドライバ600に比べてデータサイズが小さい。
【0045】
なお、スケルトンドライバ500のドライバI/F部501とフルドライバ600のドライバI/F部601は図4のドライバI/F部401と同様なので説明を省略する。また、スケルトンドライバ500のデバイス情報管理部502とフルドライバ600のデバイス情報管理部602は図4のデバイス情報管理部402と同様なので説明を省略する。また、スケルトンドライバ500のドライバ情報管理部503とフルドライバ600のドライバ情報管理部603は図4のドライバ情報管理部403と同様なので説明を省略する。また、フルドライバ600のハードウェア制御部504と図4のハードウェア制御部404と同様なので説明を省略する。
【0046】
そして、スケルトンドライバ500は、後述するように、情報処理装置の起動時にHDDからDRAM203上の所定の記憶領域にロードされるものである。スケルトンドライバ500は、フルドライバ600よりデータサイズが小さいので、HDDからDRAM203にロードする際のロード時間が短くて済む。
【0047】
なお、スケルトンドライバ500は、ハードウェア制御部を含まないので、デバイス情報管理部502が、ハードウェアデバイスが正常に動作していることを示すデバイス情報を保持していたとしても、ハードウェアデバイスを制御することができない。そこで、ドライバ情報管理部503は、デバイス情報管理部502が、デバイス情報がハードウェアデバイスが正常に動作していることを示すとしても、デバイスドライバの動作状態が動作不可(初期化中)を示すドライバ情報を保持する。
【0048】
一方、スケルトンドライバ500とフルドライバ600は、デバイス情報管理部とドライバ情報管理部と共通して有する。従って、いずれのデバイスドライバも、アプリケーションプログラムからのハードウェアデバイスのデバイス情報の取得要求や、ドライバの動作状態の取得要求に対して応答することが可能である。
【0049】
次に、情報処理装置に電源が投入されて起動する際の動作について説明する。
【0050】
情報処理装置の操作者は、情報処理装置のメインスイッチ(不図示)を押下することにより、外部の商用電源から供給される交流電圧を情報処理装置が備える交流電圧/直流電圧変換部に供給する。この供給により、交流電圧/直流電圧変換部は、直流電圧を情報処理装置の各部に供給し、情報処理装置が起動する。
【0051】
図7は、情報処理装置に電源が投入された際(起動時)に、CPU201が実行する動作を示すフローチャートである。図7は、CPU201がOS120の実行を開始させるまでの動作を示すものである。
【0052】
ステップS701で、CPU201は、ROM204からDRAM203へ、BIOS(バイオス)をロードし、CPU201の初期化処理を行う。
【0053】
ステップS702で、CPU201は、DRAM203にロードされたBIOSを実行することによりROM204からブートローダをDRAM203へロードする。
【0054】
ステップS703で、CPU201は、DRAM203にロードされたブートローダを実行することにより、IDE PHY210を介してHDDにアクセスする。そして、CPU201は、HDDに格納されたOS120をDRAM203へロードする。
【0055】
ステップS704で、CPU201は、DRAM203へロードされたOS120の実行を開始させる。
【0056】
次に、図8を用いて、情報処理装置の起動時に、OS120が実行する動作について説明する。図8は、情報処理装置の起動時に、OS120が実行する動作を説明するフローチャートである。図8に示す動作は、CPU201がOS120の実行を開始させたことに応じて開始される。
【0057】
ステップS801で、OS120は、バスコントローラ205のハードウェア接続信号を確認することで、情報処理装置が備えるハードウェアデバイスを認識する。ここでいうハードウェアデバイスには、図2に示すパネルPHY209、プリンタPHY214、スキャナPHY125、IDE PHY210、Network PHY208、FAX PHY213のいずれかに接続されるデバイスが含まれる。
【0058】
ステップS802で、OS120は、スケルトンドライバ500をHDDからDRAM203にロードする。
【0059】
ステップS803で、OS120は、アプリケーションプログラムの実行を開始させる。S803で実行を開始させるアプリケーションプログラムとは、前述した142〜146を含む。なお、各アプリケーションプログラムは、HDDに格納されているので、OS120は、HDDに格納されたアプリケーションプログラムをDRAM203にロードする。なお、ステップS803により実行が開始されたアプリケーションプログラムの動作については、図9で追って説明する。
【0060】
ステップS804で、OS120は、ステップS803で実行が開始されたアプリケーションプログラムから、デバイスドライバに対する要求があるか否かを判定する。そして、デバイスドライバに対する要求があればステップS805へ進み、そうでなければステップS804を再び実行する。
【0061】
ステップS805で、OS120は、アプリケーションプログラムにより要求された内容が、ハードウェアデバイスを制御するための要求であるか否かを判定する。そして、デバイスドライバに対する要求の内容がハードウェアデバイスを制御するための要求であればステップS806へ進み、そうでなければステップS811へ進む。
【0062】
ステップS806で、OS120は、フルドライバ600をHDDからDRAM203にロード済みか否かを判定し、ロード済みであればステップS808へ進み、ロード済みでなければステップS807へ進む。
【0063】
ステップS807で、OS120は、フルドライバ600をHDDからDRAM203にロードする。フルドライバ600をロードするのは、スケルトンドライバ500には、ハードウェアデバイスを制御するためのハードウェア制御部が含まれていないからである。そして、OS120は、フルドライバ600がロードされたことに応じて、ハードウェアデバイスを制御するためのデバイスドライバを、スケルトンドライバ500からフルドライバ600に切り替える。
【0064】
ステップS808で、OS120は、フルドライバ600に含まれるハードウェア制御部604により、ステップS804で受け付けたアプリケーションプログラムからの要求に対する応答をする。例えば、ハードウェアデバイスがスキャナであり、アプリケーションプログラムがFAX制御アプリケーションプログラム146である場合を想定する。この場合、FAX制御アプリケーションプログラム146が、スキャナにより原稿を読み取らせるための要求を、スキャナドライバ125としてのフルドライバ600にする。そして、スキャナドライバ125は、FAX制御アプリケーションプログラム146からの要求に応答して、スキャナにより原稿を読み取らせるための指示をスキャナに対して行う。そして、スキャナドライバ125は、スキャナが原稿を読み取って得た画像データを、DRAM203へ格納する。その上で、スキャナドライバ125は、画像データをDRAM203に格納した旨を、FAX制御アプリケーションプログラム146に通知する。
【0065】
ステップS809で、OS120は、OS120に対するシャットダウン指示がなされているか否かを判定する。そして、シャットダウン指示がなされていると判定された場合はステップS810へ進み、そうでなければステップS804へ戻る。例えば、OS120は、情報処理装置の操作者によりソフト電源ボタン303が押下された場合に、シャットダウン指示がなされたものと判定する。
【0066】
ステップS810で、OS120は、OS120のシャットダウン処理を実行し、OS120の動作を停止させる。
【0067】
ここで、ステップS805でNOと判定された場合に実行されるステップS811〜S813について説明する。
【0068】
ステップS805でNOと判定される場合とは、アプリケーションプログラムからの要求が、ハードウェアデバイスを制御するための要求で無い場合である。具体的には、アプリケーションプログラムが、デバイス情報又はドライバ情報の取得要求を受け付けた場合である。
【0069】
ステップS811で、OS120は、アプリケーションプログラムからの要求が、デバイス情報の取得要求であるか否かを判定する。そして、デバイス情報の取得要求であればステップS812へ進み、そうでなければステップS813へ進む。
【0070】
ステップS812で、OS120は、アプリケーションプログラムからのデバイス情報の取得要求に応答して、デバイス情報管理部がアプリケーションにデバイス情報を取得させるように制御する。なお、ステップS812の処理を実行するデバイス情報管理部は、デバイスドライバとしてスケルトンドライバ500が動作している場合は、デバイス情報管理部502となる。一方、デバイスドライバとしてフルドライバ600が動作している場合は、デバイス情報管理部602となる。
【0071】
ステップS813で、OS120は、アプリケーションプログラムからの要求がドライバ情報の取得要求であることから、ドライバ情報管理部がアプリケーションにドライバ情報を取得させるように制御する。なお、ステップS813の処理を実行するドライバ情報管理部は、デバイスドライバとしてスケルトンドライバ500が動作している場合は、ドライバ情報管理部503となる。一方、デバイスドライバとしてフルドライバ600が動作している場合は、ドライバ情報管理部603となる。
【0072】
次に、アプリケーションプログラムが実行する動作について、図9を用いて説明する。図9は、情報処理装置の起動時に、アプリケーションプログラムが実行する動作を説明するフローチャートである。なお、ここでいうアプリケーションプログラムとは、前述した142〜146のいずれかであるものとする。
【0073】
ステップS901で、アプリケーションプログラムは、アプリケーションプログラムが利用するハードウェアデバイスに対応するデバイスドライバに対して、デバイス情報を取得するための要求をする。デバイス情報を取得するのは、アプリケーションプログラムが利用するハードウェアデバイスが、少なくとも正常に動作していることを確認するためである。
【0074】
ステップS902で、アプリケーションプログラムは、デバイスドライバからデバイス情報を取得したか否かを判定し、取得したと判定した場合はステップS903へ進む。
【0075】
ステップS903で、アプリケーションプログラムは、デバイスドライバから取得したデバイス情報を参照し、ハードウェアデバイスが動作可能か否かを判定し、動作可能であると判定した場合は、ステップS904へ進む。アプリケーションプログラムは、デバイス情報が、ハードウェアデバイスが正常に動作していることを示す情報である場合は、動作可能であると判定する。
【0076】
ステップS904で、アプリケーションプログラムは、アプリケーションプログラムが利用するハードウェアデバイスに対応するデバイスドライバに対して、ドライバ情報を取得するための要求をする。ドライバ情報を取得するのは、アプリケーションプログラムが利用するハードウェアデバイスに対応するデバイスドライバの動作状態を確認するためである。
【0077】
ステップS905で、アプリケーションプログラムは、デバイスドライバからドライバ情報を取得したか否かを判定し、取得したと判定した場合はステップS906へ進む。
【0078】
ステップS906で、アプリケーションプログラムは、デバイスドライバから取得したドライバ情報を参照し、デバイスドライバが動作可能か否かを判定し、動作可能であると判定した場合は、ステップS907へ進む。アプリケーションプログラムは、ドライバ情報が、デバイスドライバが既にオープンされており、データ待ち状態である場合にデバイスドライバが動作可能であると判定する。
【0079】
なお、アプリケーションプログラムは、ハードウェア情報及びドライバ情報を取得し、ハードウェアデバイスとデバイスドライバが動作可能であることを確認しないと、ステップS907移行の処理を実行できない。従って、OS120がデバイスドライバのロードを完了して、デバイス情報やドライバ情報をアプリケーションプログラムに取得させることができる状態となっていないと、ハードウェアデバイスを利用した処理を実行できない。つまり、アプリケーションプログラムがハードウェアデバイスを利用した処理を実行するには、デバイスドライバがロードされていることが条件となるので、デバイスドライバのロードに要する時間が、アプリケーションプログラムの起動時間に影響を与える。
【0080】
ステップS907で、アプリケーションプログラムは、ハードウェアデバイスを利用する処理を実行するためのハードウェア制御要求があるか否かを判定し、ハードウェア制御要求があればステップS908へ進む。例えば、アプリケーションプログラムが、FAX制御アプリケーションプログラム146である場合、スキャナに原稿を読み取らせるための要求をする場合に、ステップS907でYESと判定される。
【0081】
ステップS908で、アプリケーションプログラムは、ハードウェア制御要求を、デバイスドライバに対して通知する。
【0082】
ステップS909で、アプリケーションプログラムは、アプリケーションプログラムに対するシャットダウン指示がなされているか否かを判定する。そして、シャットダウン指示がなされていると判定された場合はステップS910へ進み、そうでなければステップS907へ戻る。例えば、アプリケーションプログラムは、OS120によりシャットダウン指示がされた場合に、シャットダウン指示がなされたものと判定する。
【0083】
以上説明したように、OS120は、情報処理装置の起動時にはハードウェアデバイスを制御するためのハードウェア制御情報を含まないスケルトンドライバ500をロードする。従って、ハードウェア制御情報を含むフルドライバ600をロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。一方で、OS120は、ハードウェアデバイスを制御するための要求がアプリケーションプログラムからなされた場合は、フルドライバ600をロードすることでアプリケーションプログラムからの要求に適切に応答することができる。つまり、ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにすることができる。
【0084】
なお、上記の説明では、スケルトンドライバ500は、ハードウェア制御情報を含まないものとしたが、ハードウェア制御情報の少なくとも一部を含まないものとしても良い。この場合、ハードウェア制御情報を含まない場合に比べて、スケルトンドライバ500のデータサイズは大きくなるが、フルドライバ600よりはデータサイズが小さい。従って、この場合であっても、フルドライバ600をロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。なお、ハードウェア制御情報の少なくとも一部としては、種々のものが挙げられる。例えば、OS120が、ハードウェアデバイスに対してハードウェアアクセス部を介してハードウェアデバイスの製造バージョンを問い合わせるための制御情報が挙げられる。
【0085】
なお、上記の説明では、フルドライバ600をロードするための所定条件は、アプリケーションプログラムからハードウェアデバイスを制御するための要求があったこととしたが、他の態様であっても良い。例えば、情報処理装置に、メインスイッチが操作者により押下されてからカウントを開始するタイマを設け、そのタイマが一定のカウント値をカウント(一定時間が経過)したことを条件としても良い。また、タイマを開始するタイミングは、メインスイッチが押下されたタイミング以外でも、例えば、ステップS802でスケルトンドライバのロードがされたタイミングであっても良い。
【0086】
<第2実施形態>
次に、本発明の第2実施形態を説明する。尚、本実施形態に係る情報処理装置は、コピー、FAX、プリンタ機能等の各種機能を有する複合機の場合で説明するが、本発明はこれに限定されるものでなく、PC等を含む一般的な情報処理装置にも適用できる。
【0087】
第1実施形態と第2実施形態は、あるハードウェアデバイスを管理するためのデバイスドライバとして、スケルトンドライバとフルドライバとを使用する点は共通している。一方、第1実施形態におけるフルドライバがデバイス情報管理部とドライバ情報管理部を有するのに対して、第2実施形態におけるフルドライバがそれらを有しない点が異なる。また、第1実施形態では、スケルトンドライバとフルドライバを切り替えていずれか一方を動作させるのに対して、第2実施形態ではスケルトンドライバを常に動作させつつ、必要に応じてフルドライバを更に動作させる点が異なる。
【0088】
なお、以下で特に説明しない部分については、第1実施形態で説明したものと同様であるので、説明を省略する。
【0089】
図10は、第2実施形態におけるスケルトンドライバ1000を示す図である。
【0090】
スケルトンドライバ1000が、図4で示す一般的なデバイスドライバと異なるのは、ハードウェア制御部404に相当する構成が含まれていない点である。
【0091】
図11は、第2実施形態におけるフルドライバ1100を示す図である。
【0092】
図11におけるハードウェア制御部1002は、第1実施形態のフルドライバ600におけるハードウェア制御部604と同様である。
【0093】
一方、図11におけるドライバI/F部1101は、フルドライバ600におけるドライバI/F部601とは異なり、アプリケーションプログラムと直接的にインターフェースするものではない。フルドライバ1100は、図12に示すようにスケルトンドライバ1000から呼び出されることで、スケルトンドライバ1000の一部として組み込まれるものである。そして、フルドライバ1100のドライバI/F部1101は、スケルトンドライバ1000とのインターフェースとして機能するプログラムで構成される。
【0094】
また、図11におけるハードウェアアクセス部1103は、フルドライバ600におけるハードウェアアクセス部603とは異なり、ハードウェアデバイスと直接的にインターフェースするものではない。フルドライバ1100は、図12に示すようにスケルトンドライバ1000から呼び出されることで、スケルトンドライバ1000の一部として組み込まれるものである。そして、フルドライバ1100のハードウェアアクセス部1103は、1000とのインターフェースとして機能するプログラムで構成される。
【0095】
以上のように、第2実施形態におけるフルドライバ1100は、アプリケーションプログラムやハードウェアデバイスと直接的なインターフェースを構成するものではなく、スケルトンドライバ1000と直接的なインターフェースを構成するものである。
【0096】
従って、OS120は、アプリケーションプログラムがアクセスすべきデバイスドライバを常にスケルトンドライバ1000としておけばよい。つまり、OS120は、スケルトンドライバとフルドライバとで切り替える必要がない。その代わり、スケルトンドライバ1000は、ハードウェアデバイスに対する制御要求がアプリケーションプログラムからなされた場合、フルドライバ1100を呼び出す。そして、フルドライバ1100のハードウェア制御部1102は、アプリケーションプログラムからのハードウェア制御要求に対する応答をする。
【0097】
以上説明したように、第1実施形態が奏する効果に加え、更なる効果を奏することができる。具体的には、フルドライバ1100はデバイス情報管理部とドライバ情報管理部を有しないので、第1実施形態におけるフルドライバ600よりもデータサイズが小さい。そうすると、第1実施形態に比べ、フルドライバ1100をロードするのに要する時間が短縮される。
【0098】
なお、上記の説明では、スケルトンドライバ1000は、ハードウェア制御情報を含まないものとしたが、ハードウェア制御情報の少なくとも一部を含まないものとしても良い。この場合、ハードウェア制御情報を含まない場合に比べて、スケルトンドライバ1000のデータサイズは大きくなるが、フルドライバ1100よりはデータサイズが小さい。従って、この場合であっても、フルドライバ1100をロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。なお、ハードウェア制御情報の少なくとも一部としては、種々のものが挙げられる。例えば、OS120が、ハードウェアデバイスに対してハードウェアアクセス部を介してハードウェアデバイスの製造バージョンを問い合わせるための制御情報が挙げられる。
【0099】
<第3実施形態>
次に、本発明の第3実施形態を説明する。尚、本実施形態に係る情報処理装置は、コピー、FAX、プリンタ機能等の各種機能を有する複合機の場合で説明するが、本発明はこれに限定されるものでなく、PC等を含む一般的な情報処理装置にも適用できる。
【0100】
第1実施形態と第3実施形態は、あるハードウェアデバイスを管理するためのデバイスドライバとして、フルドライバとを使用する点は共通している。一方、第1実施形態においては、スケルトンドライバを使用していたのに対し、第3実施形態においてはそれを使用しない点が異なる。
【0101】
情報処理装置で動作可能な全てのデバイスドライバを、情報処理装置の起動時にロードすると、起動に時間がかかってしまう。そこで、第3実施形態は、情報処理装置の起動時間を短縮するために、デバイスドライバをロードするタイミングを、適切に調整するものである。
【0102】
なお、以下で特に説明しない部分については、第1実施形態で説明したものと同様であるので、説明を省略する。
【0103】
図13は、情報処理装置で動作可能なハードウェアデバイスに対応するデバイスドライバ123〜128と、それらの待機時間との関係を示すテーブルである。ここで、待機時間とは、情報処理装置のメインスイッチが押下されてから、OS120がデバイスドライバを開始するまでの時間を示すものである。待機時間が0秒となっているデバイスドライバ123〜126は、情報処理装置の起動時にロードされる。一方、待機時間が20秒とされているネットワークドライバ127は、情報処理装置の起動が開始されてから、20秒が経過した後にロードが開始される。また、待機時間が25秒とされているFAXドライバ128は、情報処理装置の起動が開始されてから、25秒が経過した後にロードが開始される。
【0104】
このように、待機時間を20秒や25秒のように、一部のデバイスドライバをロードするタイミングをずらす。これにより、他のデバイスドライバがロードされてハードウェアデバイスが利用可能になる(起動状態となる)までの時間が短縮される。
【0105】
次に、図14及び図15を用いて、情報処理装置の起動時に、OS120が実行する動作を説明する。
【0106】
ステップS1401で、OS120は、情報処理装置が備えるハードウェアデバイスの認識がされる。ここでいうハードウェアデバイスには、図2に示すパネルPHY209、プリンタPHY214、スキャナPHY125、IDE PHY210、Network PHY208、FAX PHY213のいずれかに接続されるデバイスが含まれる。
【0107】
ステップS1402で、OS120は、アプリケーションプログラムの実行を開始させる。S1402で実行を開始させるアプリケーションプログラムとは、第1実施形態の142〜146を含む。なお、各アプリケーションプログラムは、HDDに格納されているので、OS120は、HDDに格納されたアプリケーションプログラムをDRAM203にロードする。なお、ステップS1302により実行が開始されたアプリケーションプログラムの動作については、第1実施形態の図9で説明した通りである。
【0108】
ステップS1403で、OS120は、図13のテーブルを参照し、LCDドライバ123について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1404へ進む。ステップS1404では、LCDドライバ123を、HDDからDRAM203にロードする。ここで、待機時間をカウントするために、情報処理装置に、メインスイッチが操作者により押下されてからカウントを開始するタイマを設けるものとする。そして、OS120は、タイマのカウント値に基づく経過時間と、図13のテーブルに示される待機時間に基づいて、待機時間が経過したか否かを判定する。
【0109】
ステップS1405で、OS120は、図13のテーブルを参照し、プリンタドライバ124について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1306へ進む。ステップS1406では、プリンタドライバ124を、HDDからDRAM203にロードする。
【0110】
ステップS1407で、OS120は、図13のテーブルを参照し、スキャナドライバ125について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1408へ進む。ステップS1308では、スキャナドライバ125を、HDDからDRAM203にロードする。
【0111】
ステップS1409で、OS120は、図13のテーブルを参照し、HDDドライバ126について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1410へ進む。ステップS1410では、HDDドライバ126を、HDDからDRAM203にロードする。
【0112】
ステップS1411で、OS120は、図13のテーブルを参照し、ネットワークドライバ127について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1412へ進む。ステップS1412では、ネットワークドライバ127を、HDDからDRAM203にロードする。
【0113】
ステップS1413で、OS120は、図13のテーブルを参照し、FAXドライバ128について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップS1414へ進む。ステップS1414では、FAXドライバ128を、HDDからDRAM203にロードする。
【0114】
ステップS1415で、OS120は、ステップS1402で実行が開始されたアプリケーションプログラムから、デバイスドライバに対する要求があるか否かを判定する。そして、デバイスドライバに対する要求があればステップS1416へ進み、そうでなければステップS1419へ進む。
【0115】
ステップS1416で、OS120は、ステップS1415で実行が要求されたデバイスドライバがロード済みであるか否かを判定し、ロード済みであればステップS1417へ進み、そうでなければステップS1418へ進む。
【0116】
ステップS1417で、OS120は、実行が要求されたデバイスドライバに含まれるハードウェア制御部604により、ステップS1415で受け付けたアプリケーションプログラムからの要求に対する応答をする。
【0117】
一方、ステップS1418で、OS120は、実行が要求されたデバイスドライバがロードされていない旨をアプリケーションプログラムに通知する。
【0118】
ステップS1419で、OS120は、OS120に対するシャットダウン指示がなされているか否かを判定する。そして、シャットダウン指示がなされていると判定された場合はステップS1420へ進み、そうでなければステップS1403へ戻る。例えば、OS120は、情報処理装置の操作者によりソフト電源ボタン303が押下された場合に、シャットダウン指示がなされたものと判定する。
【0119】
ステップS1420で、OS120は、OS120のシャットダウン処理を実行し、OS120の動作を停止させる。
【0120】
以上説明したように、第3実施形態によれば、情報処理装置にて動作可能な複数のデバイスドライバをロードするタイミングを、デバイスドライバ毎に設定することができる。従って、情報処理装置で動作可能な全てのデバイスドライバを、情報処理装置の起動時にロードする場合に比べて、一部のハードウェアデバイスがデバイスドライバにより利用可能となるまでの時間を短縮することができる。なお、図13は、デバイスドライバと待機時間の関係の一例を示したものに過ぎないので、各デバイスドライバに対応する待機時間は、任意に設定することができるようにしてもよい。
【0121】
<他の実施形態>
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給することによっても達成される。この場合、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行すること前述した実施形態の機能を実現する。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【図面の簡単な説明】
【0122】
【図1】情報処理装置のソフトウェア構成を示すブロック図である。
【図2】情報処理装置のハードウェア構成を示すブロック図である。
【図3】情報処理装置の操作パネル220の外観図である。
【図4】デバイスドライバの内部構成を示す図である。
【図5】スケルトンドライバ500の内部構成を示す図である。
【図6】フルドライバ600の内部構成を示す図である。
【図7】情報処理装置の起動時に、CPU201が実行する動作を示すフローチャートである。
【図8】情報処理装置の起動時に、OS120が実行する動作を説明するフローチャートである。
【図9】情報処理装置の起動時に、アプリケーションプログラムが実行する動作を説明するフローチャートである。
【図10】スケルトンドライバ1000の内部構成を示す図である。
【図11】フルドライバ1100の内部構成を示す図である。
【図12】スケルトンドライバ1000とフルドライバ1100の関係を示す図である。
【図13】デバイスドライバのロードを開始するまでの待機時間を示すテーブルである。
【図14】情報処理装置の起動時に、OS120が実行する動作を説明するフローチャートである。
【図15】情報処理装置の起動時に、OS120が実行する動作を説明するフローチャートである。
【特許請求の範囲】
【請求項1】
ハードウェアデバイスを有する情報処理装置であって、
前記ハードウェアデバイスを利用した動作を実行するための少なくとも1つのアプリケーションプログラムと、
前記少なくとも1つのアプリケーションプログラムを管理するオペレーティングシステムと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第1デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスに関するデバイス情報を含むが、前記ハードウェア制御情報の少なくとも一部を含まない第2デバイスドライバと、
前記第1デバイスドライバ及び前記第2デバイスドライバを記憶する第1記憶手段と、
前記オペレーティングシステムを介して前記デバイスドライバを動作させるための記憶領域を含む第2記憶手段とを有し、
前記オペレーティングシステムは、前記情報処理装置の起動に応じて前記第2デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードするよう前記第1記憶手段及び前記第2記憶手段を制御することを特徴とする情報処理装置。
【請求項2】
前記所定条件は、前記アプリケーションプログラムから前記ハードウェアデバイスを制御するための要求がされることであること特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記所定条件は、前記情報処理装置の起動から一定時間が経過したことであることを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記第1デバイスドライバは前記デバイス情報を含み、
前記オペレーティングシステムは、前記第1デバイスドライバを前記記憶領域にロードした後は前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第1デバイスドライバを動作させることを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記オペレーティングシステムは、前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードするのに伴って、前記記憶領域にロードされた前記第2デバイスドライバを削除するよう制御することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記第1デバイスドライバは前記デバイス情報を含まず、
前記オペレーティングシステムは、前記第1デバイスドライバを前記記憶領域にロードした後は前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第1デバイスドライバ及び前記第2デバイスドライバを動作させることを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項7】
前記第2デバイスドライバは、該第2デバイスドライバの動作状態を示すドライバ情報を含むことを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
前記第1記憶手段は不揮発性の記憶手段であり、前記第2記憶手段は揮発性の記憶手段であることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
ハードウェアデバイスと、前記ハードウェアデバイスを利用した動作を実行するための少なくとも1つのアプリケーションプログラムと、前記少なくとも1つのアプリケーションプログラムを管理するオペレーティングシステムと、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第1デバイスドライバと、前記ハードウェアデバイスに関するデバイス情報を含むが前記ハードウェア制御情報の少なくとも一部を含まない第2デバイスドライバとを有する情報処理装置における情報処理方法であって、
前記情報処理装置の起動に応じて、前記第2デバイスドライバを第1記憶手段から第2記憶手段の記憶領域へロードする第1工程と、
前記情報処理装置が起動した後に所定条件が満たされたことに応じて、前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードする第2工程と、
前記オペレーティングシステムの指示に基づいて、前記記憶領域にロードされた前記第1デバイスドライバ又は前記第2デバイスドライバの少なくともいずれかを動作させる第3工程と、
を有することを特徴とする情報処理方法。
【請求項10】
前記所定条件は、前記アプリケーションプログラムから前記ハードウェアデバイスを制御するための要求がされることであること特徴とする請求項9に記載の情報処理方法。
【請求項11】
前記所定条件は、前記情報処理装置の起動から一定時間が経過したことであることを特徴とする請求項9に記載の情報処理方法。
【請求項12】
前記第1デバイスドライバは前記デバイス情報を含み、
前記第3工程は、前記第1デバイスドライバを前記記憶領域にロードした後は前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第1デバイスドライバを動作させることを特徴とする請求項9乃至11のいずれか1項に記載の情報処理方法。
【請求項13】
前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードするのに伴って、前記記憶領域にロードされた前記第2デバイスドライバを削除する第4工程を有することを特徴とする請求項12に記載の情報処理方法。
【請求項14】
前記第1デバイスドライバは前記デバイス情報を含まず、
前記第3工程は、前記第1デバイスドライバを前記記憶領域にロードした後は前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第2デバイスドライバ及び前記第1デバイスドライバを動作させることを特徴とする請求項9乃至11のいずれか1項に記載の情報処理方法。
【請求項15】
前記第2デバイスドライバは、該第2デバイスドライバの動作状態を示すドライバ情報を含むことを特徴とする請求項9乃至14のいずれか1項に記載の情報処理方法。
【請求項16】
前記第1記憶手段は不揮発性の記憶手段であり、前記第2記憶手段は揮発性の記憶手段であることを特徴とする請求項9乃至15のいずれか1項に記載の情報処理方法。
【請求項1】
ハードウェアデバイスを有する情報処理装置であって、
前記ハードウェアデバイスを利用した動作を実行するための少なくとも1つのアプリケーションプログラムと、
前記少なくとも1つのアプリケーションプログラムを管理するオペレーティングシステムと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第1デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスに関するデバイス情報を含むが、前記ハードウェア制御情報の少なくとも一部を含まない第2デバイスドライバと、
前記第1デバイスドライバ及び前記第2デバイスドライバを記憶する第1記憶手段と、
前記オペレーティングシステムを介して前記デバイスドライバを動作させるための記憶領域を含む第2記憶手段とを有し、
前記オペレーティングシステムは、前記情報処理装置の起動に応じて前記第2デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードするよう前記第1記憶手段及び前記第2記憶手段を制御することを特徴とする情報処理装置。
【請求項2】
前記所定条件は、前記アプリケーションプログラムから前記ハードウェアデバイスを制御するための要求がされることであること特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記所定条件は、前記情報処理装置の起動から一定時間が経過したことであることを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記第1デバイスドライバは前記デバイス情報を含み、
前記オペレーティングシステムは、前記第1デバイスドライバを前記記憶領域にロードした後は前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第1デバイスドライバを動作させることを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記オペレーティングシステムは、前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードするのに伴って、前記記憶領域にロードされた前記第2デバイスドライバを削除するよう制御することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記第1デバイスドライバは前記デバイス情報を含まず、
前記オペレーティングシステムは、前記第1デバイスドライバを前記記憶領域にロードした後は前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第1デバイスドライバ及び前記第2デバイスドライバを動作させることを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項7】
前記第2デバイスドライバは、該第2デバイスドライバの動作状態を示すドライバ情報を含むことを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
前記第1記憶手段は不揮発性の記憶手段であり、前記第2記憶手段は揮発性の記憶手段であることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
ハードウェアデバイスと、前記ハードウェアデバイスを利用した動作を実行するための少なくとも1つのアプリケーションプログラムと、前記少なくとも1つのアプリケーションプログラムを管理するオペレーティングシステムと、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第1デバイスドライバと、前記ハードウェアデバイスに関するデバイス情報を含むが前記ハードウェア制御情報の少なくとも一部を含まない第2デバイスドライバとを有する情報処理装置における情報処理方法であって、
前記情報処理装置の起動に応じて、前記第2デバイスドライバを第1記憶手段から第2記憶手段の記憶領域へロードする第1工程と、
前記情報処理装置が起動した後に所定条件が満たされたことに応じて、前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードする第2工程と、
前記オペレーティングシステムの指示に基づいて、前記記憶領域にロードされた前記第1デバイスドライバ又は前記第2デバイスドライバの少なくともいずれかを動作させる第3工程と、
を有することを特徴とする情報処理方法。
【請求項10】
前記所定条件は、前記アプリケーションプログラムから前記ハードウェアデバイスを制御するための要求がされることであること特徴とする請求項9に記載の情報処理方法。
【請求項11】
前記所定条件は、前記情報処理装置の起動から一定時間が経過したことであることを特徴とする請求項9に記載の情報処理方法。
【請求項12】
前記第1デバイスドライバは前記デバイス情報を含み、
前記第3工程は、前記第1デバイスドライバを前記記憶領域にロードした後は前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第1デバイスドライバを動作させることを特徴とする請求項9乃至11のいずれか1項に記載の情報処理方法。
【請求項13】
前記第1デバイスドライバを前記第1記憶手段から前記第2記憶手段の前記記憶領域へロードするのに伴って、前記記憶領域にロードされた前記第2デバイスドライバを削除する第4工程を有することを特徴とする請求項12に記載の情報処理方法。
【請求項14】
前記第1デバイスドライバは前記デバイス情報を含まず、
前記第3工程は、前記第1デバイスドライバを前記記憶領域にロードした後は前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第2デバイスドライバ及び前記第1デバイスドライバを動作させることを特徴とする請求項9乃至11のいずれか1項に記載の情報処理方法。
【請求項15】
前記第2デバイスドライバは、該第2デバイスドライバの動作状態を示すドライバ情報を含むことを特徴とする請求項9乃至14のいずれか1項に記載の情報処理方法。
【請求項16】
前記第1記憶手段は不揮発性の記憶手段であり、前記第2記憶手段は揮発性の記憶手段であることを特徴とする請求項9乃至15のいずれか1項に記載の情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2009−251728(P2009−251728A)
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願番号】特願2008−96091(P2008−96091)
【出願日】平成20年4月2日(2008.4.2)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願日】平成20年4月2日(2008.4.2)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]