JP4961781B2 - 情報処理装置、その起動方法およびプログラム - Google Patents

情報処理装置、その起動方法およびプログラム Download PDF

Info

Publication number
JP4961781B2
JP4961781B2 JP2006069734A JP2006069734A JP4961781B2 JP 4961781 B2 JP4961781 B2 JP 4961781B2 JP 2006069734 A JP2006069734 A JP 2006069734A JP 2006069734 A JP2006069734 A JP 2006069734A JP 4961781 B2 JP4961781 B2 JP 4961781B2
Authority
JP
Japan
Prior art keywords
execution state
processing apparatus
information processing
execution
activation
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.)
Expired - Fee Related
Application number
JP2006069734A
Other languages
English (en)
Other versions
JP2007249418A (ja
JP2007249418A5 (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2006069734A priority Critical patent/JP4961781B2/ja
Priority to US11/675,796 priority patent/US7913072B2/en
Priority to KR1020070025037A priority patent/KR101366730B1/ko
Publication of JP2007249418A publication Critical patent/JP2007249418A/ja
Publication of JP2007249418A5 publication Critical patent/JP2007249418A5/ja
Application granted granted Critical
Publication of JP4961781B2 publication Critical patent/JP4961781B2/ja
Expired - Fee Related 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application
    • 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/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

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

Description

本発明は、情報処理装置に関し、特に起動を高速に行う情報処理装置およびその起動方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
オペレーティングシステムは、ハードウェアを抽象化してアプリケーションプログラムの動作環境を提供する基本ソフトウェアである。情報処理装置の電源スイッチがオンにされると、ブートローダの働きによってオペレーティングシステムのカーネルがローディングされ、オペレーティングシステムが起動する。近年のオペレーティングシステムの高機能化により、このオペレーティングシステムの起動には例えば数十秒程度の時間を要するようになっている。
オペレーティングシステムを高速に起動させるために、従来、様々な手法が試みられている。例えば、電源プラグが挿入された直後にオペレーティングシステムのカーネルをメモリにローディングして伸張処理を施しておいて、電源スイッチがオンにされた際にオペレーティングシステムのカーネルをメモリ上で速やかに実行させる技術が提案されている(例えば、特許文献1参照。)。
特開2005−149225号公報(図1)
上述の従来技術では、オペレーティングシステムのローディングに要する時間を短縮できるものの、オペレーティングシステムの実行に要する時間は依然として残ることになる。
また、情報処理装置の電源スイッチがオンにされた後にオペレーティングシステムが起動されて復帰すべきプログラム位置は、情報処理装置の性質によって異なる場合があり、任意のプログラム位置を設定できることが望ましい。
そこで、本発明は、オペレーティングシステムの起動後に復帰すべきプログラム位置を設定して、起動時にはそのプログラム位置に速やかに復帰させることを目的とする。
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、コンピュータとそのコンピュータがプログラムを実行する際の実行状態を保持する実行状態保持手段とを備える情報処理装置において、当該情報処理装置の起動の後に復帰すべきプログラム位置を上記起動の前に設定する復帰点設定手段と、上記復帰点設定手段によって設定された上記復帰すべきプログラム位置の実行の際に上記実行状態保持手段に保持されている実行状態を上記起動の前に退避する実行状態退避手段と、上記起動が行われると上記実行状態退避手段に退避されている実行状態を上記実行状態保持手段に転送する転送手段とを具備することを特徴とする情報処理装置である。これにより、予め設定された復帰すべきプログラム位置の実行状態を、起動時に速やかに復帰させるという作用をもたらす。
なお、上記実行状態は、上記情報処理装置におけるレジスタの内容およびオペレーティングシステムにより管理されるメモリの内容を含み得る。対象となるレジスタはプロセッサによって異なるが、例えば、CPUの汎用レジスタ、タイマレジスタ、UARTレジスタ、クロックコントローラーレジスタ、割込みコントローラーレジスタ、GPIOレジスタおよびCPU特殊レジスタ値などが挙げられる。
また、この第1の側面において、上記復帰点設定手段は、所定の操作が行われた際のプログラム位置を上記復帰すべきプログラム位置として設定することができる。例えば、スナップショットスイッチのようにユーザが直接指示できるスイッチボタンなどによる復帰点の設定を想定することができる。
また、この第1の側面において、上記実行状態退避手段は不揮発性メモリを備えることができる。これにより、電源がオフになった後でもその退避内容を維持させるという作用をもたらす。
また、この第1の側面において、上記復帰点設定手段による設定時または当該情報処理装置の起動時に実行すべきコールバック関数を登録するコールバック関数登録手段をさらに具備してもよい。これにより、復帰点の設定や起動をトリガとして、
予め登録されたコールバック関数を実行させるという作用をもたらす。
また、この第1の側面において、当該情報処理装置の起動時の起動モードとしてN個(Nは2以上の整数)のモードのうちの1個のモードを設定する起動モード設定手段をさらに具備し、上記実行状態退避手段が上記実行状態保持手段に保持されている実行状態をN個退避し、上記転送手段が上記実行状態退避手段に退避されているN個の実行状態から上記起動モードに応じて1個の実行状態を上記実行状態保持手段に転送するようにしてもよい。これにより、予め設定されたN個の実行状態の1つを選択して、起動時に速やかに復帰させるという作用をもたらす。
また、この第1の側面において、当該情報処理装置の起動時の起動モードとしてN個(Nは2以上の整数)のモードのうちの1個のモードを設定する起動モード設定手段と、 予め設定されたN個の処理の中から上記起動モードに応じて1個の処理を選択して実行する起動処理手段とをさらに具備してもよい。これにより、予め設定されたN個の処理の中から1つを選択して、起動時に実行させるという作用をもたらす。
また、本発明の第2の側面は、コンピュータとそのコンピュータがプログラムを実行する際の実行状態を保持する実行状態保持手段とを備える情報処理装置において、当該情報処理装置の起動の後に復帰すべきプログラム位置を上記起動の前に設定する復帰点設定手段と、上記復帰点設定手段によって設定された上記復帰すべきプログラム位置の実行の際に上記実行状態保持手段に保持されている実行状態を上記起動の前に退避する実行状態退避手段とを具備することを特徴とする情報処理装置である。これにより、起動時に速やかに復帰させるために、復帰すべきプログラム位置の実行状態を予め退避させるという作用をもたらす。
また、本発明の第3の側面は、コンピュータとそのコンピュータがプログラムを実行する際の実行状態を保持する実行状態保持手段とを備える情報処理装置において、当該情報処理装置の起動の後に復帰すべきプログラム位置を上記起動の前に設定する手順と、上記復帰すべきプログラム位置の実行の際に上記実行状態保持手段に保持されている実行状態を上記起動の前に退避する手順と、上記起動が行われると上記退避されている実行状態を上記実行状態保持手段に転送する手順とを具備することを特徴とする情報処理装置の起動方法もしくはこれらの手順をコンピュータに実行させることを特徴とするプログラムである。これにより、予め設定された復帰すべきプログラム位置の実行状態を、起動時に速やかに復帰させるという作用をもたらす。
本発明によれば、オペレーティングシステムの起動後に復帰すべきプログラム位置を設定して、起動時にはそのプログラム位置に速やかに復帰させることができるという優れた効果を奏し得る。
次に本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の実施の形態における情報処理装置の機能構成例を示す図である。この機能構成は、転送制御部11と、実行状態保持部12と、実行状態退避部13と、コールバック関数テーブル14と、起動部15と、起動モード設定部16と、復帰点設定部17とを備えている。
実行状態保持部12は、コンピュータがプログラムを実行する際の実行状態を保持するものである。ここで、実行状態とは、情報処理装置におけるレジスタの内容およびオペレーティングシステムにより管理されるメモリの内容をいう。情報処理装置におけるレジスタは、例えばCPU(Central Processing Unit)のレジスタや周辺回路のレジスタなどを含む。この実行状態保持部12は、例えばSDRAM(Synchronous Dynamic Random Access Memory)などの揮発性メモリにより構成される。
実行状態退避部13は、実行状態保持部12に保持されている実行状態を退避するものである。この実行状態退避部13は、例えばフラッシュメモリ(flash memory)などの不揮発性メモリにより構成される。これにより、電源がオフになった後であっても実行状態をそのまま維持することができる。
転送制御部11は、実行状態保持部12に保持されている実行状態を実行状態退避部13に退避させ、または、実行状態退避部13に退避されている実行状態を実行状態保持部12に転送させるものである。
コールバック関数テーブル14は、復帰点設定部17による復帰点の設定時または起動部15による起動時に実行すべきコールバック関数を登録するものである。コールバック関数は、他のプログラムに対して自身の提供する関数を呼び出すようにするための仕組みである。アプリケーションプログラムやデバイスドライバが予めコールバック関数テーブル14にコールバック関数へのポインタを登録しておくことにより、実行状態の退避時やコンピュータの起動時にそのコールバック関数を実行することができる。
起動部15は、情報処理装置の電源がオンになった際にオペレーティングシステムを起動させるものである。起動モード設定部16は、起動部15によるオペレーティングシステムの起動の際の起動モードを設定するものであり、例えば起動モード切替スイッチとして実現することが考えられる。本発明の実施の形態では、この起動モードとして、オペレーティングシステムのカーネルをローディングしてこれを実行させる通常起動モードに加えて、オペレーティングシステムを高速に起動させる高速起動モードを設ける。
起動モード設定部16が高速起動モードに設定されている状態で情報処理装置の電源がオンになると、起動部15は実行状態退避部13に退避されている実行状態を実行状態保持部12に転送するように転送制御部11に対して指示する。これにより、転送制御部11は実行状態退避部13に退避されている実行状態を実行状態保持部12に転送させて、オペレーティングシステムの起動後の実行状態を復元する。
復帰点設定部17は、高速起動モードで情報処理装置の電源がオンにされた際に復帰すべきプログラム位置を復帰点として設定するものである。この復帰点設定部17は、例えばスナップショットスイッチとして実現することが考えられる。すなわち、このスナップショットスイッチが押下されると、転送制御部11は実行状態保持部12に保持されている実行状態を実行状態退避部13に退避させる。
図2は、本発明の実施の形態における情報処理装置100の一構成例を示す図である。この情報処理装置100は、CPU110と、SDRAM120と、フラッシュメモリ130と、周辺I/O(Peripheral Input/Output)140と、GPIO(General-Purpose Input/Output)150と、起動モード切替スイッチ160と、スナップショットスイッチ170と、システムバス190とを備えている。
CPU110は情報処理装置100の主な処理を行うプロセッサであり、そのアーキテクチャは特に限定されるものではない。SDRAM120は、CPU110の動作に必要な作業領域を保持するものである。ここでは、SDRAM120を一例として挙げているが、これに限定されるものではなく、これ以外のRAMを用いてもよい。
フラッシュメモリ130は、SDRAM120の退避領域を保持する書込み可能な不揮発性メモリである。ここでは、フラッシュメモリ130を一例として挙げているが、これに限定されるものではなく、これ以外の不揮発性メモリであってもよい。
周辺I/O140は、情報処理装置100の周辺処理を行うものであり、例えばタイマーや割込コントローラなどが含まれる。
GPIO150は、情報処理装置100の入出力処理を行う汎用I/Oである。本発明の実施の形態においては、起動モード切替スイッチ160およびスナップショットスイッチ170の入力を受け付けて、これらスイッチの状態をソフトウェアから判別できるようにする。
起動モード切替スイッチ160は、起動モードを切り替えるスイッチである。本発明の実施の形態においては、起動時に通常起動モードまたは高速起動モードの何れかを設定する。
スナップショットスイッチ170は、実行状態保持部12に保持されている実行状態を実行状態退避部13に退避(スナップショット)させるトリガとなるスイッチである。高速起動モードにおいては、このスナップショットスイッチ170が押下された瞬間の実行状態を示すように起動される。
システムバス190は、CPU110、SDRAM120、フラッシュメモリ130、周辺I/O140およびGPIO150を相互に接続するバスである。
また、CPU110にはインサーキットエミュレータ(ICE)102が接続されている。このインサーキットエミュレータ102は、CPU110のデバッガとして機能するものであり、ここではCPU110のレジスタやSDRAM120の内容の読出しおよび書込みを行うために用いられる。このインサーキットエミュレータ102にはホストPC101が接続され、このホストPC101を介してインサーキットエミュレータ102の操作が行われるようになっている。なお、インサーキットエミュレータ102は転送制御部11の一実現例であり、同等の機能を有する他のソフトウェアによって実現してもよい。
図3は、本発明の実施の形態における情報処理装置のソフトウェア構成例を示す図である。この構成例は、m個(mは正の整数)のアプリケーション210−1乃至mと、m個の高速起動デーモンAPI(Application Program Interface)220−1乃至mと、高速起動デーモン230と、キードライバ240と、n個(nは正の整数)のデバイスドライバ250−1乃至nと、高速起動ドライバ260と、OSカーネル270と、高速起動ローダ280と、メモリスナップショットプログラム290とを備えている。
アプリケーション210−1乃至mは、CPU110上で動作するアプリケーションプログラムである。これらアプリケーション210−1乃至mは、高速起動デーモン230に対してコールバック通知登録要求を行う。そのため、予めスナップショット取得用コールバック関数および高速起動用コールバック関数が用意されている必要がある。
高速起動デーモンAPI220−1乃至mは、高速起動デーモン230を呼び出すためにアプリケーション210−1乃至mに対してそれぞれ提供されるアプリケーションプログラムインターフェースである。この高速起動デーモンAPI220−1乃至mは、対応するアプリケーション210−1乃至mが高速起動デーモン230に対してコールバック通知登録要求およびコールバック通知削除要求を行うために使用される。なお、高速起動デーモンAPI220−1乃至mの機能はそれぞれ同様であり、アプリケーション210−1乃至mが一つのAPIを共用しても構わない。
高速起動デーモン230は、スナップショット取得時においては登録されたすべてのアプリケーション210−1乃至mに対してスナップショット取得用コールバック処理の実行指令を行い、高速起動時においては登録されたすべてのアプリケーション210−1乃至mに対して高速起動用コールバック処理の実行指令を行うためのデーモンである。
キードライバ240は、スナップショットスイッチ170の押下を検出するためのソフトウェアである。このキードライバ240のために、予めスナップショット取得用コールバック関数および高速起動用コールバック関数が用意されている必要がある。
デバイスドライバ250−1乃至nは、周辺機器(デバイス)を管理するためのソフトウェアである。これらデバイスドライバ250−1乃至nは、高速起動ドライバ260に対してコールバック関数登録を行う。そのため、予めスナップショット取得用コールバック関数および高速起動用コールバック関数が用意されている必要がある。なお、アプリケーション210−1乃至mはシステムコール(高速起動デーモンAPI220−1乃至m)を経由してレジスタ操作を行うが、このデバイスドライバ250−1乃至nは担当するレジスタを直接操作することができる。
高速起動ドライバ260は、スナップショット取得時においては登録されたすべてのデバイスドライバ250−1乃至nに対してスナップショット取得用コールバック関数の実行を行い、高速起動時においては登録されたすべてのデバイスドライバ250−1乃至nに対して高速起動用コールバック関数の実行を行うためのソフトウェアである。
OSカーネル270は、オペレーティングシステムの基本機能を有するソフトウェアである。本発明の実施の形態では、オペレーティングシステムとしてLinux(登録商標)を想定して説明するが、これに限定されるものではない。
メモリスナップショットプログラム290は、レジスタをSDRAM120に退避するとともにSDRAM120の内容をフラッシュメモリ130に退避するためのプログラムである。このメモリスナップショットプログラム290はCPU110のレジスタを保存するため、アセンブラで記述される必要がある。
なお、オペレーティングシステムは論理アドレス上で動作し(メモリ管理ユニット(MMU)オン状態)、メモリスナップショットプログラム290は物理アドレス上で動作する(MMUオフ状態)。すなわち、オペレーティングシステムからメモリスナップショットプログラム290にジャンプする際には、物理アドレスメモリに対応する論理アドレスへジャンプした後にMMUオフ状態となる。したがって、メモリスナップショットプログラム290は、論理アドレスと物理アドレスが同一のアドレスになるように配置される必要がある。
高速起動ローダ280は、情報処理装置の電源がオンになった後に最初に動作するローダである。この高速起動ローダ280は、高速起動モードにおいてはメモリスナップショットプログラム290が取得した起動イメージを使ってオペレーティングシステムを起動させる。この高速起動ローダ280はオペレーティングシステムとは独立して存在し、一般的なファームウェアソフトとしてフラッシュメモリ130上で動作する。
この高速起動ローダ280は、CPU110からは仮想アドレス空間と物理アドレス空間が同じ空間に見えている必要がある。起動時は物理アドレス空間で起動するが、オペレーティングシステムを起動する際には論理アドレスに切り替えて、オペレーティングシステム内の高速起動ドライバ260のエントリーポイントへジャンプするからである。
図4は、本発明の実施の形態における情報処理装置のメモリマップの一例を示す図である。図4(a)は、SDRAM120のメモリマップであり、OS使用領域121と、レジスタ退避領域122とを備える。
OS使用領域121は、オペレーティングシステムが使用するための領域であり、プログラムコードやデータが保存される。図1で説明したコールバック関数テーブル14もこの領域に保持される。オペレーティングシステムが動作しているCPU110から見た場合、この領域は仮想アドレス空間として認識される。一方、高速起動ローダ280が動作しているCPU110から見た場合、この領域は物理アドレス空間として認識される。

レジスタ退避領域122は、メモリスナップショットプログラム290がCPU110やGPIO150等のレジスタを保存するために使用する保存用領域である。このレジスタ退避領域122はオペレーティングシステムとは独立して存在し、オペレーティングシステムが直接このレジスタ退避領域122にアクセスすることはない。
図4(b)は、フラッシュメモリ130のメモリマップであり、高速起動ローダ131と、メモリスナップショットプログラム132と、OSカーネルイメージ133と、ファイルシステム134と、OS使用領域のSDRAMイメージ135と、レジスタ退避領域のSDRAMイメージ136とを備える。
高速起動ローダ131は高速起動ローダ280の格納領域である。高速起動ローダ280は情報処理装置の電源がオンになった直後に実行されるため、このフラッシュメモリ130内に格納される必要がある。
メモリスナップショットプログラム132は、メモリスナップショットプログラム290の格納領域である。このメモリスナップショットプログラム132はオペレーティングシステム内のドライバによって実現することも可能であるが、本発明の実施の形態においてはオペレーティングシステムとは独立した形態としている。また、このメモリスナップショットプログラム132は、オペレーティングシステムから見て論理アドレスと物理アドレスが同一アドレスになるように配置される必要がある。
OSカーネルイメージ133は、オペレーティングシステムのカーネルイメージである。Linuxの場合、XIPと呼ばれるフラッシュメモリ上で動作する方式と、SDRAMにコードおよびデータを転送しておいてSDRAM上で実行する方式がある。本発明の実施の形態においては後者を想定して説明するが、特にこれに限定されるものではない。
ファイルシステム134は、オペレーティングシステムで用いられるファイルシステムである。このファイルシステムのフォーマットにはext2やXFSなど種々あるが、特に限定されるものではない。
OS使用領域のSDRAMイメージ135は、高速起動時のSDRAMイメージを保存しておくエリアである。これはSDRAM120のOS使用領域121に格納されていた内容であるが、SDRAM120の内容は電源オフ時に消失してしまうため、フラッシュメモリ130上に退避しておく必要がある。高速起動時は、OS使用領域のSDRAMイメージ135からOS使用領域121へ転送して、SDRAM120の内容を復帰する。
レジスタ退避領域のSDRAMイメージ136は、高速起動時のCPU110や周辺I/O140等のレジスタの値を保存しておく領域である。これはSDRAM120のレジスタ退避領域122に格納されていた内容であるが、SDRAM120の内容は電源オフ時に消失してしまうため、フラッシュメモリ130上に置く必要がある。高速起動時は、レジスタ退避領域のSDRAMイメージ136からレジスタ退避領域122へ転送して、転送したデータ内容を参照してCPU110や周辺I/O140等のレジスタの内容を復帰する。
なお、このレジスタ退避領域のSDRAMイメージ136は、本発明の実施の形態では便宜上オペレーティングシステムの管理外の独立した領域にあるものとしている。また、CPU110から見た場合、この領域は仮想アドレス空間と物理アドレス空間が同じ空間に見えている必要がある。
上述のように、高速起動ローダ280には主として通常起動モードと高速起動モードの2つの動作モードがあり、これらの起動モードは起動モード切替スイッチ160により切り替えることができる。通常起動モードでは、情報処理装置のリセット後はSDRAM120および関連する周辺I/O140が初期化され、OSカーネルイメージ133がOS使用領域121へ転送された後、OS使用領域121内にあるオペレーティングシステムのエントリーポイントへジャンプすることにより起動が行われる。
一方、高速起動モードでは、情報処理装置のリセット後はSDRAM120および関連する周辺I/O140が初期化され、OS使用領域のSDRAMイメージ135およびレジスタ退避領域のSDRAMイメージ136がそれぞれOS使用領域121およびレジスタ退避領域122に転送され、レジスタ退避領域122の内容に基づいてCPU110や周辺I/O140等のレジスタ内容が復帰された後、OS使用領域121内にあるオペレーティングシステムのエントリーポイントへジャンプすることにより起動が行われる。
なお、高速起動モードにおいて、本発明の実施の形態ではレジスタ退避領域のSDRAMイメージ136をレジスタ退避領域122へ転送して転送後のレジスタ退避領域122を参照してレジスタの内容を復帰しているが、これを転送せずにレジスタ退避領域のSDRAMイメージ136を直接参照してレジスタの内容を復帰しても構わない。
次に本発明の実施の形態における情報処理装置の全体の動作の流れについて図面を参照して説明する。ここでは、全体の動作を、スナップショット取得準備処理、スナップショット取得処理、高速起動処理およびソフトウェアの終了(シャットダウン)処理の4つに分けて説明する。
図5は、本発明の実施の形態におけるスナップショット取得準備処理の一例を示す図である。まず、起動モード切替スイッチ160が通常起動モードに設定された状態で情報処理装置の電源が投入されると、ハードウェアリセット後に高速起動ローダ280が起動される。高速起動ローダ280は、起動モード切替スイッチ160に従って、一般的なオペレーティングシステムのブートシーケンスに沿った起動を行う(311)。
このブートシーケンスにおいて、高速起動ドライバ260がインストールされる(312)。なお、ここにいうインストールとは、OSカーネル270の起動後にオペレーティングシステムに対してモジュール(ここではドライバ)を結び付けて動作可能な状態にすることをいう。
続いて、スナップショットスイッチ170の押下を検出可能なキードライバ240がインストールされ、このキードライバ240が、高速起動ドライバ260に対してコールバック関数(スナップショット取得用コールバック関数および高速起動用コールバック関数)の登録を行う(313)。なお、キードライバ240は、スナップショット取得用コールバック関数および高速起動用コールバック関数の実装が完了していることが必要である。
そして、n個のデバイスドライバ250−1乃至nが昇順に(すなわち、デバイスドライバ250−1から250−nの順に)インストールされて、高速起動ドライバに対してコールバック関数の登録を行う(314、315)。なお、これらデバイスドライバ250−1乃至nは、スナップショット取得用コールバック関数および高速起動用コールバック関数の実装が完了していることが必要である。
キードライバ240およびデバイスドライバ250−1乃至nのコールバック関数の登録が終了すると、高速起動デーモン230が起動される。高速起動デーモン230は、キードライバ240をオープンして、スナップショットスイッチ170が押下されるのを検知する状態になる(316)。また、メモリスナップショットプログラム290がSDRAM120にロードされる(317)。
続いて、アプリケーション210−1乃至mが昇順に(すなわち、アプリケーション210−1から210−nの順に)起動されて、それぞれ対応する高速起動デーモンAPI220−1乃至mのコールバック通知登録要求APIを用いた登録処理の呼び出しが行われる(321、323)。なお、ここで登録処理の呼び出しが行われるためには、スナップショット取得用コールバック関数および高速起動用コールバック関数の実装が完了している必要がある。高速起動デーモンAPI220−1乃至mは、高速起動デーモン230に対してコールバック通知の登録を伝達する(322、324)。
図6は、本発明の実施の形態におけるスナップショット取得処理の一例を示す図である。スナップショットスイッチ170が押下されると、キードライバ240は高速起動デーモン230に対してその旨を通知する(331)。
高速起動デーモン230は、高速起動デーモンAPI220−1乃至mに対して降順に(すなわち、高速起動デーモンAPI220−mから220−1の順に)スナップショット取得用コールバック処理実行要求を伝達する(332、336)。高速起動デーモンAPI220−1乃至mは、高速起動デーモン230からの要求に応じて、アプリケーション210−1乃至mのスナップショット取得用コールバック処理を実行する(333、337)。なお、このスナップショット取得用コールバック処理の内容としては、例えば、スナップショット取得のために区切りのよいプログラム位置までプログラムを実行させる処理を含み得る。また、処理を降順に行うのは、処理間の依存性を満たすためである。
アプリケーション210−1乃至mのスナップショット取得用コールバック処理が完了すると、その呼び出し元に戻る(334、338)。これにより、高速起動デーモンAPI220−1乃至mは、高速起動デーモン230に対して、スナップショット取得用コールバック処理が完了したことを伝達する(335、339)。
高速起動デーモンAPI220−1乃至mからのスナップショット取得用コールバック処理の完了通知(335、339)を全て受け取ると、高速起動デーモン230は高速起動ドライバ260に対して、コマンドの発行を行う(341)。高速起動ドライバ260は、デバイスドライバ250−1乃至nに対して降順に(すなわち、デバイスドライバ250−nから250−1の順に)スナップショット取得用コールバック関数を実行する(342、344)。デバイスドライバ250−1乃至nのスナップショット取得用コールバック関数が完了すると、その呼び出し元に戻る(343、345)。なお、このスナップショット取得用コールバック処理の内容としては、例えば、関連するレジスタや変数をSDRAM120に退避する処理を含み得る。また、関数の実行を降順に行うのは、関数間の依存性を満たすためである。
また、高速起動ドライバ260は、キードライバ240に対してスナップショット取得用コールバック関数を実行する(346)。キードライバ240のスナップショット取得用コールバック関数が完了すると、その呼び出し元に戻る(347)。
これらのスナップショット取得用コールバック関数が完了すると、高速起動ドライバ260からメモリスナップショットプログラム290の先頭番地にジャンプする(349)。ジャンプ後、メモリスナップショットプログラム290によってCPU110や周辺I/O140等のレジスタの内容がSDRAM120のレジスタ退避領域122に退避される。そして、SDRAM120のOS使用領域121およびレジスタ退避領域122がインサーキットエミュレータ102によってホストPC101に保存され、その後、再びインサーキットエミュレータ102によってそれぞれOS使用領域のSDRAMイメージ135およびレジスタ退避領域のSDRAMイメージ136に退避される。その後、情報処理装置の電源はオフにされる。
図7は、本発明の実施の形態における高速起動処理の一例を示す図である。高速起動の際には、起動モード切替スイッチ160が高速起動モードに設定された状態で情報処理装置の電源がオンにされる。ハードウェアリセット後、高速起動ローダ280が起動される。
高速起動ローダ280は、起動モード切替スイッチ160に従って、高速起動モードによる起動を行う。高速起動ローダ280は、SDRAM120および関連する周辺I/O140の初期化を行い、OS使用領域のSDRAMイメージ135およびレジスタ退避領域のSDRAMイメージ136をそれぞれOS使用領域121およびレジスタ退避領域122に転送して、その転送後に高速起動ドライバ260の呼び出し元にジャンプする(351)。
高速起動ドライバ260は、キードライバ240の高速起動用コールバック関数を実行する(352)。そして、キードライバ240の高速起動用コールバック関数が完了すると、その呼び出し元に戻る(353)。
また、高速起動ドライバ260は、デバイスドライバ250−1乃至nの高速起動用コールバック関数を昇順に(すなわち、デバイスドライバ250−1から250−nの順に)実行する(354、356)。そして、デバイスドライバ250−1乃至nの高速起動用コールバック関数が完了すると、その呼び出し元に戻る(355、357)。
デバイスドライバ250−1乃至nの高速起動用コールバック関数が完了すると、コマンドは完了し、高速起動ドライバ260から高速起動デーモン230の呼び出し元に戻る(358)。
高速起動デーモン230は、高速起動デーモンAPI220−1乃至mに対して昇順に(すなわち、高速起動デーモンAPI220−1から220−mの順に)高速起動用コールバック処理実行要求を伝達する(361、365)。高速起動デーモンAPI220−1乃至mは、高速起動デーモン230からの要求に応じて、アプリケーション210−1乃至mの高速起動用コールバック処理を実行する(362、366)。
アプリケーション210−1乃至mの高速起動用コールバック処理が完了すると、その呼び出し元に戻る(363、367)。これにより、高速起動デーモンAPI220−1乃至mは、高速起動デーモン230に対して、高速起動用コールバック処理が完了したことを伝達する(364、368)。
図8は、本発明の実施の形態におけるソフトウェア終了処理の一例を示す図である。シャットダウンの際には、アプリケーション210−1乃至mが降順に(すなわち、アプリケーション210−nから210−1の順に)、それぞれ対応する高速起動デーモンAPI220−1乃至mのコールバック通知削除要求APIを用いて、削除処理の呼び出しを行う(371、373)。高速起動デーモンAPI220−1乃至mは、高速起動デーモン230に対してコールバック通知の削除を伝達する(372、374)。その後、アプリケーション210−1乃至mは終了する。
高速起動デーモン230はキードライバ240をクローズする(375)。そして、高速起動デーモンAPI220−1乃至mからのコールバック通知の削除通知(372、374)を全て受け取ると、高速起動デーモン230は終了する。
また、デバイスドライバ250−1乃至nは、高速起動ドライバ260に対して降順に(すなわち、デバイスドライバ250−nから250−1の順に)コールバック関数の削除を行う(376、377)。さらに、キードライバ240は、高速起動ドライバ260に対してコールバック関数の削除を行う(378)。登録された全てのデバイスドライバ250−1乃至nおよびキードライバ240が削除されると、高速起動ドライバ260は削除される。
次に本発明の実施の形態における情報処理装置のソフトウェアによる処理手順について図面を参照して説明する。
図9は、本発明の実施の形態における高速起動デーモンAPI220−1乃至mの全体の処理手順の一例を示す図である。
まず、対応するアプリケーション210−1乃至mから、アプリケーション用コールバック通知登録要求APIが呼び出される(ステップS510)。そして、高速起動デーモン230から要求があるまで待機する(ステップS521)。この間、アプリケーション210−1乃至mが本来行うべき処理を実行してもよい。
高速起動デーモン230から要求があれば(ステップS521)、その要求条件に従って(ステップS522)処理が行われる。すなわち、スナップショット取得用コールバック処理実行要求であればスナップショット取得用コールバック処理(ステップS530)が行われ、高速起動用コールバック処理実行要求であれば高速起動用コールバック処理(ステップS540)が行われる。これらコールバック処理において異常終了が検出されなければ、再び高速起動デーモン230からの要求待ちとなる。
対応するアプリケーション210−1乃至mが終了する場合には(ステップS523)、アプリケーション用コールバック通知削除要求API(ステップS550)が呼び出される。
図10は、本発明の実施の形態におけるアプリケーション用コールバック通知登録要求API(ステップS510)の処理手順の一例を示す図である。
アプリケーション用コールバック通知登録要求APIが呼び出されると、高速起動デーモンAPI220−1乃至mはコールバック関数(スナップショット取得用コールバック関数および高速起動用コールバック関数)をコールバック関数テーブル14に保存する(ステップS511)。
そして、高速起動デーモンAPI220−1乃至mは、そのアプリケーション用コールバック通知登録要求およびその要求元のアプリケーション210−1乃至mのアプリケーション情報を高速起動デーモン230に伝達する(ステップS512)。ここで、アプリケーション情報とは、アプリケーションを一意に区別することができる情報であり、例えばプロセス識別子(PID)を用いることができる。
図11は、本発明の実施の形態におけるスナップショット取得用コールバック処理(ステップS530)の処理手順の一例を示す図である。
スナップショット取得用コールバック処理実行要求が呼び出されると、高速起動デーモンAPI220−1乃至mはスナップショット取得用コールバック関数を実行する(ステップS531)。
そして、高速起動デーモンAPI220−1乃至mは、そのコールバック関数の実行結果およびその要求元のアプリケーション情報を高速起動デーモン230に伝達する(ステップS532)。
図12は、本発明の実施の形態における高速起動用コールバック処理(ステップS540)の処理手順の一例を示す図である。
高速起動用コールバック処理実行要求が呼び出されると、高速起動デーモンAPI220−1乃至mは高速起動用コールバック関数を実行する(ステップS541)。
そして、高速起動デーモンAPI220−1乃至mは、そのコールバック関数の実行結果およびその要求元のアプリケーション情報を高速起動デーモン230に伝達する(ステップS542)。
図13は、本発明の実施の形態におけるアプリケーション用コールバック通知削除要求API(ステップS550)の処理手順の一例を示す図である。
アプリケーション用コールバック通知削除要求APIが呼び出されると、高速起動デーモンAPI220−1乃至mはアプリケーション用コールバック通知削除要求およびその要求元のアプリケーション210−1乃至mのアプリケーション情報を高速起動デーモン230に伝達する(ステップS551)。
そして、高速起動デーモンAPI220−1乃至mは、コールバック関数をコールバック関数テーブル14から削除する(ステップS552)。
図14は、本発明の実施の形態における高速起動デーモン230の全体の処理手順の一例を示す図である。
高速起動デーモン230がインストールされると、初期化処理(ステップS610)が行われる。そして、高速起動デーモン230は、高速起動デーモンAPI220−1乃至mから要求がなされるまで(ステップS621)、または、スナップショットスイッチ170が押下されるまで(ステップS623)待機する。
スナップショットスイッチ170が押下されると(ステップS623)、スナップショット取得用処理(ステップS670)が行われ、その後、高速起動用処理(ステップS680)が行われる。
また、高速起動デーモンAPI220−1乃至mから要求があれば(ステップS621)、その要求条件に従って(ステップS622)処理が行われる。すなわち、アプリケーション用コールバック通知登録要求であればアプリケーション用コールバック通知登録処理(ステップS630)が行われ、アプリケーション用コールバック通知削除要求であればアプリケーション用コールバック通知削除処理(ステップS640)が行われ、スナップショット取得用コールバック処理実行終了通知であればスナップショット取得用コールバック処理実行終了通知確認(ステップS650)が行われ、また、高速起動用コールバック処理実行終了通知であれば高速起動用コールバック処理実行終了通知確認(ステップS660)が行われる。これらコールバック処理において異常終了が検出されなければ、再び高速起動デーモンAPI220−1乃至mからの要求待ち、もしくは、スナップショットスイッチ170の押下待ちとなる。
図15は、本発明の実施の形態における初期化処理(ステップS610)の処理手順の一例を示す図である。
まず、高速起動デーモン230は、アプリケーション登録数のカウンタを「0」にクリアする(ステップS611)。また、高速起動デーモン230は、状態フラグ1および2をそれぞれ「1」に設定する(ステップS612)。状態フラグ1は、スナップショットが取得されてから次に高速起動モードによって起動されるまでの間に「0」になるフラグであり、これ以外の状態では「1」を示す。状態フラグ2は、スナップショット取得用処理(ステップS670)とスナップショット取得用コールバック処理実行終了通知確認(ステップS650)の間の同期、および、高速起動用処理(ステップS680)と高速起動用コールバック処理実行終了通知確認(ステップS660)の間の同期に用いられるフラグである。
さらに、高速起動デーモン230は、変数numの値を「0」にクリアする(ステップS613)。変数numは、正常終了したコールバック関数の数を計数するカウンタである。
そして、高速起動デーモン230は、メモリスナップショットプログラム290をSDRAM120にロードする(ステップS614)。また、高速起動デーモン230は、高速起動ドライバ260をオープンする(ステップS615)。さらに、高速起動デーモン230は、高速起動デーモンAPI220−1乃至mからの要求を待つプロセス(ステップS621)を生成する(ステップS616)とともに、スナップショットスイッチ170の押下を待つプロセス(ステップS623)を生成する(ステップS617)。その後、高速起動デーモン230は、キードライバ240をオープンし、スナップショットスイッチ170の押下を検出できるようにして(ステップS618)、初期化処理を終了する。
図16は、本発明の実施の形態におけるアプリケーション用コールバック通知登録処理(ステップS630)の処理手順の一例を示す図である。
アプリケーションを格納する領域に空きがなく(ステップS631)、もしくは、状態フラグ1が「1」に設定されていなければ(ステップS632)、高速起動デーモン230は要求元の高速起動デーモンAPI220−1乃至mに対して異常終了した旨を伝達する(ステップS636)。
一方、アプリケーションを格納する領域に空きが有り(ステップS631)、かつ、状態フラグ1が「1」に設定されていれば(ステップS632)、高速起動デーモン230は要求元の高速起動デーモンAPI220−1乃至mから伝達されたアプリケーション情報をコールバック関数テーブル14に保存する(ステップS633)。そして、高速起動デーモン230は、アプリケーション登録数のカウンタを「1」加算して(ステップS634)、要求元の高速起動デーモンAPI220−1乃至mに対して正常終了した旨を伝達する(ステップS635)。
図17は、本発明の実施の形態におけるアプリケーション用コールバック通知削除処理(ステップS640)の処理手順の一例を示す図である。
指定されたアプリケーション情報が登録されてなく(ステップS641)、もしくは、状態フラグ1が「1」に設定されていなければ(ステップS642)、高速起動デーモン230は要求元の高速起動デーモンAPI220−1乃至mに対して異常終了した旨を伝達する(ステップS646)。
一方、指定されたアプリケーション情報が登録されており(ステップS641)、かつ、状態フラグ1が「1」に設定されていれば(ステップS642)、高速起動デーモン230は要求元の高速起動デーモンAPI220−1乃至mから伝達されたアプリケーション情報を削除する(ステップS643)。そして、高速起動デーモン230は、アプリケーション登録数のカウンタを「1」減算して(ステップS644)、要求元の高速起動デーモンAPI220−1乃至mに対して正常終了した旨を伝達する(ステップS645)。
図18は、本発明の実施の形態におけるスナップショット取得用処理(ステップS670)の処理手順の一例を示す図である。
高速起動デーモン230は、状態フラグ1を「0」にクリアする(ステップS671)。アプリケーション登録数のカウンタが「0」より大きければ(ステップS672)、高速起動デーモン230はそのアプリケーション登録数を変数iに設定する(ステップS673)。そして、高速起動デーモン230は、変数iを「1」ずつ減算させながら(ステップS676)、変数iが「1」以上である限り(ステップS674)、高速起動デーモンAPI220−iに対してスナップショット取得用コールバック処理の実行指令を伝達する(ステップS675)。すなわち、高速起動デーモン230は、アプリケーションの登録順とは逆順に、スナップショット取得用コールバック処理の実行指令を、該当する高速起動デーモンAPI220−1乃至mに対して順次伝達する。
一方、アプリケーション登録数のカウンタが「0」より大きくなければ(ステップS672)、高速起動デーモン230は、高速起動デーモンAPI220−1乃至mの何れかからの要求を待つプロセス(ステップS621)に対して、スナップショット取得用コールバック処理の実行完了を伝達する(ステップS677)。
ステップS677の処理の後、もしくは、ステップS674において変数iが「1」以上でなくなった場合、高速起動デーモン230は、状態フラグ2を「0」にクリアして(ステップS678、同期点A)、スナップショット取得用コールバック処理実行終了通知確認(ステップS650)によって状態フラグ2が「1」に設定されるのを待機する(ステップS679、同期点B)。
図19は、本発明の実施の形態におけるスナップショット取得用コールバック処理実行終了通知確認(ステップS650)の処理手順の一例を示す図である。
指定されたアプリケーション情報が登録されてなく(ステップS651)、もしくは、コールバック処理が正常終了していなければ(ステップS652)、高速起動デーモン230は異常終了する。
一方、指定されたアプリケーション情報が登録されており(ステップS651)、かつ、コールバック処理が正常終了していれば(ステップS652)、高速起動デーモン230は変数numを「1」加算する(ステップS653)。その結果、変数numがアプリケーション登録数のカウンタ値と一致していなければ(ステップS654)、他にも実行終了を待機すべきスナップショット取得用コールバック処理が存在するため、そのままスナップショット取得用コールバック処理実行終了通知確認の処理を正常終了する。一方、変数numがアプリケーション登録数のカウンタ値と一致していれば(ステップS654)、最後のスナップショット取得用コールバック処理が終了したことになるため、高速起動ドライバ260に対してコマンドを発行して(ステップS655)、その復帰を待つ。
その後、高速起動モードによって起動が行われると、高速起動ドライバ260に対するコマンドから復帰する(ステップS656)。高速起動デーモン230は、メモリスナップショットプログラム290を再度、SDRAM120にロードする(ステップS657)。そして、高速起動デーモン230は、状態フラグ2が「0」にクリアされていることを確認する(ステップS658、同期点A)。もし、状態フラグ2が「0」にクリアされていなければ、スナップショット取得用処理(ステップS670)によって状態フラグ2が「0」にクリアされるのを待機する。状態フラグ2が「0」にクリアされた後には、高速起動デーモン230は再度、状態フラグ2を「1」に設定する(ステップS659、同期点B)。
図20は、本発明の実施の形態における高速起動用処理(ステップS680)の処理手順の一例を示す図である。
アプリケーション登録数のカウンタが「0」より大きければ(ステップS681)、高速起動デーモン230は変数iを「1」に設定する(ステップS682)。そして、高速起動デーモン230は、変数iを「1」ずつ加算させながら(ステップS685)、変数iがアプリケーション登録数のカウンタ値以下である限り(ステップS683)、高速起動デーモンAPI220−iに対して高速起動用コールバック処理の実行指令を伝達する(ステップS684)。すなわち、高速起動デーモン230は、アプリケーションの登録順に、高速起動用コールバック処理の実行指令を、該当する高速起動デーモンAPI220−1乃至mに対して順次伝達する。
一方、アプリケーション登録数のカウンタが「0」より大きくなければ(ステップS681)、高速起動デーモン230は、高速起動デーモンAPI220−1乃至mの何れかからの要求を待つプロセス(ステップS621)に対して、高速起動用コールバック処理の実行完了を伝達する(ステップS686)。
ステップS686の処理の後、もしくは、ステップS683において変数iがアプリケーション登録数のカウンタ値以下でなくなった場合、高速起動デーモン230は、状態フラグ2を「0」にクリアして(ステップS687、同期点C)、高速起動用コールバック処理実行終了通知確認(ステップS660)によって状態フラグ2が「1」に設定されるのを待機する(ステップS688、同期点D)。状態フラグ2が「1」に設定されると、高速起動デーモン230は、状態フラグ1を「1」に設定する(ステップS689)。
図21は、本発明の実施の形態における高速起動用コールバック処理実行終了通知確認(ステップS660)の処理手順の一例を示す図である。
指定されたアプリケーション情報が登録されてなく(ステップS661)、もしくは、コールバック処理が正常終了していなければ(ステップS662)、高速起動デーモン230は異常終了する。
一方、指定されたアプリケーション情報が登録されており(ステップS661)、かつ、コールバック処理が正常終了していれば(ステップS662)、高速起動デーモン230は変数numを「1」減算する(ステップS663)。その結果、変数numが「0」でなければ(ステップS664)、他にも実行終了を待機すべき高速起動用コールバック処理が存在するため、そのまま高速起動用コールバック処理実行終了通知確認の処理を正常終了する。一方、変数numが「0」であれば(ステップS664)、最後の高速起動用コールバック処理が終了したことになるため、高速起動デーモン230は状態フラグ2の内容を調べる。すなわち、高速起動デーモン230は、状態フラグ2が「0」にクリアされていることを確認する(ステップS668、同期点C)。もし、状態フラグ2が「0」にクリアされていなければ、高速起動用処理(ステップS680)によって状態フラグ2が「0」にクリアされるのを待機する。状態フラグ2が「0」にクリアされた後には、高速起動デーモン230は再度、状態フラグ2を「1」に設定する(ステップS669、同期点D)。
図22は、本発明の実施の形態における高速起動ドライバ260の全体の処理手順の一例を示す図である。
高速起動ドライバ260がインストールされると、初期化関数(ステップS710)が実行される。そして、高速起動ドライバ260は、他のドライバ(240、250−1乃至n)またはアプリケーション210−1乃至mから要求があるまで待機し、その要求条件に従って(ステップS721)関数が実行される。すなわち、ドライバ用コールバック関数登録要求であればドライバ用コールバック関数登録関数(ステップS730)が実行され、ドライバ用コールバック関数削除要求であればドライバ用コールバック関数削除関数(ステップS740)が実行され、オープン要求であればオープン関数(ステップS750)が実行され、クローズ要求であればクローズ関数(ステップS760)が実行され、コマンド処理要求であればコマンド処理関数(ステップS770)が実行され、削除要求であれば終了関数(ステップS790)が実行される。これら関数が実行されると、高速起動ドライバ260は、再び他のドライバ(240、250−1乃至n)またはアプリケーション210−1乃至mからの要求を待機する。但し、終了関数によって正常終了が検出されると、高速起動ドライバ260はその処理を終了する。
図23は、本発明の実施の形態における初期化関数(ステップS710)の処理手順の一例を示す図である。
高速起動ドライバ260は、コールバック関数テーブル14をクリアして初期化する(ステップS711)。また、高速起動ドライバ260は、コールバック関数テーブル14におけるコールバック関数登録数のカウンタ値を「0」にクリアする(ステップS712)。
そして、高速起動ドライバ260は、高速起動ドライバ260のオープンビットを「0」にクリアする(ステップS713)。なお、このオープンビットは、高速起動ドライバ260を排他的に(同時に1つだけ)実行することを保証するためのものである。
さらに、高速起動ドライバ260は、ドライバの利用度数を「0」にクリアする(ステップS714)。なお、この利用度数は、オペレーティングシステム内部のドライバの利用度数を示すものであり、これが「1」以上であればドライバを削除できないことを意味する。
図24は、本発明の実施の形態におけるドライバ用コールバック関数登録関数(ステップS730)の処理手順の一例を示す図である。
コールバック関数テーブル14に空きがなければ(ステップS731)、このドライバ用コールバック関数登録関数は異常終了する。一方、コールバック関数テーブル14に空きがあれば(ステップS731)、高速起動ドライバ260は、コールバック関数テーブル14にコールバック関数を保存する(ステップS732)。そして、高速起動ドライバ260は、コールバック関数登録数のカウンタ値を「1」加算して(ステップS733)、ドライバの利用度数を「1」加算する(ステップS734)。
図25は、本発明の実施の形態におけるドライバ用コールバック関数削除関数(ステップS740)の処理手順の一例を示す図である。
指定されたアプリケーション情報が登録されていなければ(ステップS741)、このドライバ用コールバック関数登録関数は異常終了する。一方、指定されたアプリケーション情報が登録されていれば(ステップS741)、高速起動ドライバ260は、コールバック関数テーブル14からコールバック関数を削除する(ステップS742)。そして、高速起動ドライバ260は、コールバック関数登録数のカウンタ値を「1」減算して(ステップS743)、ドライバの利用度数を「1」減算する(ステップS744)。
図26は、本発明の実施の形態におけるオープン関数(ステップS750)の処理手順の一例を示す図である。
高速起動ドライバ260のオープンビットが「0」にクリアされていなければ(ステップS751)、このオープン関数は異常終了する。一方、高速起動ドライバ260のオープンビットが「0」にクリアされていれば(ステップS751)、高速起動ドライバ260はオープンビットを「1」に設定して(ステップS752)、ドライバの利用度数を「1」加算する(ステップS753)。
図27は、本発明の実施の形態におけるクローズ関数(ステップS760)の処理手順の一例を示す図である。
高速起動ドライバ260は、高速起動ドライバ260のオープンビットを「0」にクリアするとともに(ステップS761)、ドライバの利用度数を「1」減算する(ステップS762)。
図28は、本発明の実施の形態におけるコマンド処理関数(ステップS770)の処理手順の一例を示す図である。
高速起動ドライバ260は、割込みを無効にして、他の割込み要求を受け付けないようにする(ステップS771)。また、高速起動ドライバ260は、コールバック関数テーブル14のコールバック関数登録数のカウンタ値を変数iに設定する(ステップS772)。
そして、高速起動ドライバ260は、変数iを「1」ずつ減算させながら(ステップS775)、変数iが「1」以上である限り(ステップS773)、キードライバ240(i=1の場合)またはデバイスドライバ250−(i−1)(i>1の場合)のスナップショット取得用コールバック関数を実行する(ステップS774)。すなわち、高速起動ドライバ260は、コールバック関数の登録順とは逆順にスナップショット取得用コールバック関数を順次実行する。
ステップS773において変数iが「1」以上でなくなった場合、高速起動ドライバ260は、メモリスナップショットプログラム290の先頭番地にジャンプして(ステップS776)、その復帰を待つ。
その後、高速起動モードによって起動が行われると、高速起動ローダ280から復帰する(ステップS781)。高速起動ドライバ260は、変数iに「1」を設定する(ステップS782)。そして、高速起動ドライバ260は、変数iを「1」ずつ加算させながら(ステップS785)、変数iがコールバック関数テーブル14のコールバック関数登録数のカウンタ値以下である限り(ステップS783)、キードライバ240(i=1の場合)またはデバイスドライバ250−(i−1)(i>1の場合)の高速起動用コールバック関数を実行する(ステップS784)。すなわち、高速起動ドライバ260は、コールバック関数の登録順に高速起動用コールバック関数を順次実行する。
そして、ステップS783において変数iがコールバック関数テーブル14のコールバック関数登録数のカウンタ値以下でなくなった場合、高速起動ドライバ260は、割込みを有効にして、他の割込み要求を受け付けるようにする(ステップS786)。
図29は、本発明の実施の形態における終了関数(ステップS790)の処理手順の一例を示す図である。
高速起動ドライバ260は、ドライバの利用度数が「0」であれば正常終了として高速起動ドライバ260を削除し、ドライバの利用度数が「0」でなければ終了関数を異常終了する(ステップS791)。
図30は、本発明の実施の形態におけるメモリスナップショットプログラム290の処理手順の一例を示す図である。
メモリスナップショットプログラム290は、スタックにCPU110のレジスタを保存する(ステップS811)。一般にプロセッサはスタックに積む(Push)命令を命令セットとして有している。保存すべきレジスタはプロセッサに依存するが、ここでは汎用レジスタを想定する。レジスタを保存するのは、高速起動時にジャンプするエントリーアドレスをレジスタに格納するからである。なお、オペレーティングシステムによってはスタックサイズの大きさが保証されない場合があるため、必要最低限以外のレジスタはレジスタ退避領域122に保存する。
メモリスナップショットプログラム290は、高速起動ローダ280の定める特定のアドレスにスタックポインタ値を保存した後、スタックポインタをレジスタ退避領域122にセットする(ステップS812)。すなわち、ステップS813以降で保存するレジスタの値は、レジスタ退避領域122に保存されるようになる。
メモリスナップショットプログラム290は、スタックにCPU特殊レジスタを保存する(ステップS813)。この特殊レジスタは汎用レジスタ以外のレジスタであり、その種類はCPUに依存する。ここでは、メモリ管理ユニット(MMU)や、メモリ管理ユニットのテーブルなどが格納されるレジスタを想定している。
メモリスナップショットプログラム290は、スタックにGPIO関連レジスタを保存する(ステップS814)。保存対象となるレジスタはそのシステムに依存するが、本発明の実施の形態における最低限の機能を果たすレジスタ群を保存すると仮定する。本発明の実施の形態ではスイッチ等の入力のためにGPIOを使用するため、GPIO関連のレジスタを保存することを想定している。
メモリスナップショットプログラム290は、スタックに割込コントローラ関連レジスタを保存する(ステップS815)。保存対象となるレジスタはそのシステムに依存するが、本発明の実施の形態における最低限の機能を果たすレジスタ群を保存すると仮定する。本発明の実施の形態では割込みを使用するため、割込コントローラ関連のレジスタを保存することを想定している。
メモリスナップショットプログラム290は、スタックにクロックコントローラー関連レジスタを保存する(ステップS816)。保存対象となるレジスタはそのシステムに依存するが、本発明の実施の形態における最低限の機能を果たすレジスタ群を保存すると仮定する。本発明の実施の形態ではクロックコントローラーを使用するため、クロックコントローラー関連のレジスタを保存することを想定している。
メモリスナップショットプログラム290は、スタックにUART(Universal Asynchronous Receiver Transmitter)関連レジスタを保存する(ステップS817)。保存対象となるレジスタはそのシステムに依存するが、本発明の実施の形態における最低限の機能を果たすレジスタ群を保存すると仮定する。本発明の実施の形態ではUARTを使用するため、UART関連のレジスタを保存することを想定している。
メモリスナップショットプログラム290は、スタックにタイマー関連レジスタを保存する(ステップS818)。保存対象となるレジスタはそのシステムに依存するが、本発明の実施の形態における最低限の機能を果たすレジスタ群を保存すると仮定する。本発明の実施の形態ではタイマーを使用するため、タイマー関連のレジスタを保存している。
メモリスナップショットプログラム290は、CPU110のキャッシュメモリのライトバック(コピーバック)を行う(ステップS819)。プロセッサによってはライトバック用の命令を有している場合もあるが、そのような命令を有していない場合であっても複数の命令を組み合わせてライトバックを行うことができる。ここで、ライトバックを行うのは、必要なデータがSDRAM120に反映されずに高速起動が正しく行われなくなることを防止するためである。
メモリスナップショットプログラム290は、高速起動ローダ280の定める特定の絶対アドレスにスタックポインタ値を保存する(ステップS821)。
メモリスナップショットプログラム290は、SDRAM120の内容を保存する(ステップS822)。具体的には、SDRAM120のOS使用領域121およびレジスタ退避領域122を、例えばインサーキットエミュレータ102によってホストPC101に保存する。なお、このとき、メモリ管理ユニットが搭載されている場合はメモリ管理ユニットをオフにして、全て物理アドレスにおいて操作する必要がある。
メモリスナップショットプログラム290は、保存されたSDRAM120の内容をフラッシュメモリ130に書き込む(ステップS823)。具体的には、ステップS822においてホストPC101に保存されたSDRAM120の内容を、例えばインサーキットエミュレータ102によって、フラッシュメモリ130のOS使用領域のSDRAMイメージ135およびレジスタ退避領域のSDRAMイメージ136にそれぞれ書き込む。
これにより、情報処理装置の電源をオフにすることができる(ステップS824)。
図31は、本発明の実施の形態における高速起動ローダ280の処理手順の一例を示す図である。
高速起動ローダ280は、GPIOの初期化を行う(ステップS911)。本発明の実施の形態では起動モードの判別にGPIOを使用するからである。また、同様に、高速起動ローダ280は、UART、クロックおよびSDRAM120の初期化を行う(ステップS912乃至914)。これらは、フラッシュメモリ130からSDRAM120への転送の準備として必要な処理である。
高速起動ローダ280は、ステップS821において保存したスタックポインタ値を取得する(ステップS915)。
そして、高速起動ローダ280は、起動モード切替スイッチ160の状態をGPIO150経由で読み取り、起動モードが通常起動モードであるか高速起動モードであるかを判別する(ステップS916)。起動モードが通常起動モードであれば、高速起動ローダ280は、オペレーティングシステムのカーネルイメージ133をSDRAM120のOS使用領域121へ転送する(ステップS917)。そして、高速起動ローダ280は、オペレーティングシステムのエントリーポイントへジャンプし、オペレーティングシステムを通常起動する(ステップS918)。
一方、起動モードが高速起動モードであれば(ステップS916)、高速起動ローダ280は、高速起動モードでの起動を開始する。高速起動ローダ280は、フラッシュメモリ130からSDRAM120へデータ転送する(ステップS919)。具体的には、フラッシュメモリ130のOS使用領域のSDRAMイメージ135からSDRAM120のOS使用領域121へ、フラッシュメモリ130のレジスタ退避領域のSDRAMイメージ136からSDRAM120のレジスタ退避領域122へ、それぞれ転送する。なお、転送方法はソフトウェアによって転送しても構わないが、DMA(Direct Memory Access)等のハードウェア転送機能を備えているのであれば、それらの機能を用いた方がより高速に転送することができる。
高速起動ローダ280は、スタックからタイマレジスタ値、UARTレジスタ値、クロックコントローラーレジスタ値、割込みコントローラーレジスタ値、GPIOレジスタ値およびCPU特殊レジスタ値を取得して、それぞれを復帰させる(ステップS921乃至926)。
そして、高速起動ローダ280は、ステップS812で保存したスタックポインタ値を取得して、スタックポインタを復帰させる(ステップS927)。また、高速起動ローダ280は、スタックからCPU110のレジスタ値を取得して、レジスタ値を復帰させる(ステップS928)。
その後、高速起動ローダ280は、高速起動ドライバ260へジャンプする(ステップS929)。これは、全体的な流れで見れば、ステップS776でメモリスナップショットプログラム290へ関数コールした戻りアドレスと同じ番地にジャンプすることを意味する。
このように、本発明の実施の形態によれば、スナップショットスイッチ170が押下された際のSDRAM120の内容を復帰点(復帰すべきプログラム位置)の実行状態としてフラッシュメモリ130に退避しておいて、起動時にフラッシュメモリ130からSDRAM120にその内容を復帰させることによって情報処理装置の高速起動を行うことができる。
すなわち、本発明の実施の形態によれば、従来のハイバーネーションなどのように前回処理終了時の状態を退避するものとは異なり、任意に設定された復帰点の実行状態を退避しておいて、速やかに復帰させることができる。これにより、例えば工場出荷時に任意の実行状態を設定しておいて、これに従ってユーザの起動画面を速やかに表示することが可能となる。
次に本発明の実施の形態の変形例について図面を参照して説明する。
図32は、本発明の実施の形態の第1の変形例におけるフラッシュメモリ130のメモリマップを示す図である。
この第1の変形例では、フラッシュメモリ130にn個のOS使用領域のSDRAMイメージ135−1乃至nおよびn個のレジスタ退避領域のSDRAMイメージ136−1乃至nの領域が備えられている。すなわち、フラッシュメモリ130にn組のSDRAMイメージを保持しておいて、高速起動の際にこれらのうち1組を選択して利用するものである。
そのため、この第1の変形例では、起動モード切替スイッチ160において、通常起動モードと高速起動モードを切り替えるとともに、高速起動モードのパラメータとしてn種類のモード(高速起動モード#1乃至n)を起動状態パラメータ保存領域137に設定できるようにする。そして、高速起動ローダ280においてこのパラメータを判別して、それに応じたSDRAMイメージをSDRAM120に復帰させる。なお、起動モード切替スイッチ160を多機能化し、n種類のモード(高速起動モード#1乃至n)の判別に使用することができるようにしてもよい。
図33は、本発明の実施の形態の第1の変形例における高速起動ローダ280の処理手順の一例を示す図である。
この第1の変形例では、図31の処理手順と比べて、高速起動モードにおけるデータ転送の処理が異なっている。すなわち、高速起動モードのパラメータを判別して、起動モードが高速起動モード#i(iは正の整数)であれば、フラッシュメモリ130におけるOS使用領域のSDRAMイメージ135−iおよびレジスタ退避領域のSDRAMイメージ136−iをSDRAM120に転送する。
このように、本発明の実施の形態の第1の変形例によれば、複数の起動イメージをフラッシュメモリ130に設けて、高速起動モードのパラメータに応じて復帰させる起動イメージを切り替えることができる。複数の起動イメージを切り替えることにより、起動の際、ユーザに対して最初に提供するインターフェースを起動モード切替スイッチ160に応じて変更することができる。例えば、デジタルスチルカメラの初期画面をユーザの指定によって、撮影モード画面または閲覧モード画面の何れかに設定することができるようになる。
図34は、本発明の実施の形態の第2の変形例におけるフラッシュメモリ130のメモリマップを示す図である。
この第2の変形例では、フラッシュメモリ130に起動状態パラメータ保存領域137が備えられている。すなわち、この起動状態パラメータ保存領域137の内容に応じて高速起動後の追加処理を選択して実行するものである。
図35は、本発明の実施の形態の第2の変形例における高速起動デーモン230の高速起動用処理(ステップS680)の処理手順の一例を示す図である。
この第2の変形例では、図20の処理手順に加えて、起動状態パラメータ保存領域137の内容を判別して(ステップS691)、それに応じた追加処理を行う手順が備えられている(ステップS692−1乃至n)。この追加処理では、ファイルシステム134上にあるスクリプトまたはコマンドが実行され、OS使用領域のSDRAMイメージ135およびレジスタ退避領域のSDRAMイメージ136だけでは復帰しきれない、その起動モード特有の機能が実現される。なお、起動モード切替スイッチ160を多機能化し、n種類の処理(追加処理#1乃至n)の判別に使用することができるようにしてもよい。
このように、本発明の実施の形態の第2の変形例によれば、1つの起動イメージをフラッシュメモリ130に設けて、起動状態パラメータ保存領域137の内容に応じて追加処理を切り替えることができる。例えば、LCD(Liquid Crystal Display)の初期化処理は共用して、デバイスの追加処理を別々に行う場合に、特に有用である。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、以下に示すように特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
すなわち、請求項1において、実行状態保持手段は例えば実行状態保持部12に対応する。また、復帰点設定手段は例えば復帰点設定部17に対応する。また、実行状態退避手段は例えば実行状態退避部13に対応する。また、転送手段は例えば転送制御部11に対応する。
また、請求項5において、コールバック関数登録手段は例えばコールバック関数テーブル14に対応する。
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。
本発明の実施の形態における情報処理装置の機能構成例を示す図である。 本発明の実施の形態における情報処理装置100の一構成例を示す図である。 本発明の実施の形態における情報処理装置のソフトウェア構成例を示す図である。 本発明の実施の形態における情報処理装置のメモリマップの一例を示す図である。 本発明の実施の形態におけるスナップショット取得準備処理の一例を示す図である。 本発明の実施の形態におけるスナップショット取得処理の一例を示す図である。 本発明の実施の形態における高速起動処理の一例を示す図である。 本発明の実施の形態におけるソフトウェア終了処理の一例を示す図である。 本発明の実施の形態における高速起動デーモンAPI220−1乃至mの全体の処理手順の一例を示す図である。 本発明の実施の形態におけるアプリケーション用コールバック通知登録要求APIの処理手順の一例を示す図である。 本発明の実施の形態におけるスナップショット取得用コールバック処理の処理手順の一例を示す図である。 本発明の実施の形態における高速起動用コールバック処理の処理手順の一例を示す図である。 本発明の実施の形態におけるアプリケーション用コールバック通知削除要求APIの処理手順の一例を示す図である。 、本発明の実施の形態における高速起動デーモン230の全体の処理手順の一例を示す図である。 本発明の実施の形態における初期化処理の処理手順の一例を示す図である。 本発明の実施の形態におけるアプリケーション用コールバック通知登録処理の処理手順の一例を示す図である。 本発明の実施の形態におけるアプリケーション用コールバック通知削除処理の処理手順の一例を示す図である。 本発明の実施の形態におけるスナップショット取得用処理の処理手順の一例を示す図である。 本発明の実施の形態におけるスナップショット取得用コールバック処理実行終了通知確認の処理手順の一例を示す図である。 本発明の実施の形態における高速起動用処理の処理手順の一例を示す図である。 本発明の実施の形態における高速起動用コールバック処理実行終了通知確認の処理手順の一例を示す図である。 本発明の実施の形態における高速起動ドライバ260の全体の処理手順の一例を示す図である。 本発明の実施の形態における初期化関数の処理手順の一例を示す図である。 本発明の実施の形態におけるドライバ用コールバック関数登録関数の処理手順の一例を示す図である。 本発明の実施の形態におけるドライバ用コールバック関数削除関数の処理手順の一例を示す図である。 本発明の実施の形態におけるオープン関数の処理手順の一例を示す図である。 本発明の実施の形態におけるクローズ関数の処理手順の一例を示す図である。 本発明の実施の形態におけるコマンド処理関数の処理手順の一例を示す図である。 本発明の実施の形態における終了関数の処理手順の一例を示す図である。 本発明の実施の形態におけるメモリスナップショットプログラム290の処理手順の一例を示す図である。 本発明の実施の形態における高速起動ローダ280の処理手順の一例を示す図である。 本発明の実施の形態の第1の変形例におけるフラッシュメモリ130のメモリマップを示す図である。 本発明の実施の形態の第1の変形例における高速起動ローダ280の処理手順の一例を示す図である。 本発明の実施の形態の第2の変形例におけるフラッシュメモリ130のメモリマップを示す図である。 本発明の実施の形態の第2の変形例における高速起動デーモン230の高速起動用処理の処理手順の一例を示す図である。
符号の説明
11 転送制御部
12 実行状態保持部
13 実行状態退避部
14 コールバック関数テーブル
15 起動部
16 起動モード設定部
17 復帰点設定部
100 情報処理装置
101 ホストPC
102 インサーキットエミュレータ(ICE)
110 CPU
120 SDRAM
130 フラッシュメモリ
140 周辺I/O
150 GPIO
160 起動モード切替スイッチ
170 スナップショットスイッチ
190 システムバス
210−1乃至m アプリケーション
220−1乃至m 高速起動デーモンAPI
230 高速起動デーモン
240 キードライバ
250−1乃至n デバイスドライバ
260 高速起動ドライバ
270 OSカーネル
280 高速起動ローダ
290 メモリスナップショットプログラム

Claims (8)

  1. コンピュータとそのコンピュータがプログラムを実行する際の実行状態を保持する実行状態保持手段とを備える情報処理装置において、
    当該情報処理装置の起動の後に復帰すべきプログラム位置を前記起動の前に設定する復帰点設定手段と、
    予め複数のデバイスドライバのインストールの順番に登録しておいた複数のコールバック関数を前記順番とは逆順に実行することにより前記復帰点設定手段によって設定された前記復帰すべきプログラム位置の実行の際に前記実行状態保持手段に保持されている実行状態を前記起動の前にスタックに退避する実行状態退避手段と、
    予め設定された2以上の処理の中から前記起動の後において前記実行状態に復帰した後に実行させるべき処理を選択するスイッチと、
    前記起動が行われると前記スタックに退避されている実行状態を前記順番に従って前記実行状態保持手段に転送する転送手段と、
    前記実行状態が転送されると前記選択された処理を実行する処理実行手段と
    を具備する情報処理装置。
  2. 前記実行状態は、前記情報処理装置におけるレジスタの内容およびオペレーティングシステムにより管理されるメモリの内容を含む
    求項1記載の情報処理装置。
  3. 前記復帰点設定手段は、所定の操作が行われた際のプログラム位置を前記復帰すべきプログラム位置として設定する請求項1記載の情報処理装置。
  4. 前記実行状態退避手段は、不揮発性メモリを備える請求項1記載の情報処理装置。
  5. 記コールバック関数を登録するコールバック関数登録手段をさらに具備する請求項1記載の情報処理装置。
  6. コンピュータとそのコンピュータがプログラムを実行する際の実行状態を保持する実行状態保持手段とを備える情報処理装置において、
    当該情報処理装置の起動の後に復帰すべきプログラム位置を前記起動の前に設定する復帰点設定手段と、
    予め複数のデバイスドライバのインストールの順番に登録しておいた複数のコールバック関数を前記順番とは逆順に実行することにより前記復帰点設定手段によって設定された前記復帰すべきプログラム位置の実行の際に前記実行状態保持手段に保持されている実行状態を前記起動の前にスタックに退避する実行状態退避手段と、
    予め設定された2以上の処理の中から前記起動の後において前記実行状態に復帰した後に実行させるべき処理を選択するスイッチと
    を具備する情報処理装置。
  7. コンピュータとそのコンピュータがプログラムを実行する際の実行状態を保持する実行状態保持手段とを備える情報処理装置において、
    当該情報処理装置の起動の後に復帰すべきプログラム位置を前記起動の前に設定する手順と、
    予め複数のデバイスドライバのインストールの順番に登録しておいた複数のコールバック関数を前記順番とは逆順に実行することにより前記復帰すべきプログラム位置の実行の際に前記実行状態保持手段に保持されている実行状態を前記起動の前にスタックに退避する手順と、
    予め設定された2以上の処理の中から前記起動の後において前記実行状態に復帰した後に実行させるべき処理をスイッチの操作に従って選択する選択手順と、
    前記起動が行われると前記スタックに退避されている実行状態を前記順番に従って前記実行状態保持手段に転送する転送手順と、
    前記実行状態が転送されると前記選択された処理を実行する処理実行手順と
    を具備する情報処理装置の起動方法。
  8. コンピュータとそのコンピュータがプログラムを実行する際の実行状態を保持する実行状態保持手段とを備える情報処理装置において、
    当該情報処理装置の起動の後に復帰すべきプログラム位置を前記起動の前に設定する手順と、
    予め複数のデバイスドライバのインストールの順番に登録しておいた複数のコールバック関数を前記順番とは逆順に実行することにより前記復帰すべきプログラム位置の実行の際に前記実行状態保持手段に保持されている実行状態を前記起動の前にスタックに退避する手順と、
    予め設定された2以上の処理の中から前記起動の後において前記実行状態に復帰した後に実行させるべき処理をスイッチの操作に従って選択する選択手順と、
    前記起動が行われると前記スタックに退避されている実行状態を前記順番に従って前記実行状態保持手段に転送する転送手順と、
    前記実行状態が転送されると前記選択された処理を実行する処理実行手順と
    をコンピュータに実行させるためのプログラム。
JP2006069734A 2006-03-14 2006-03-14 情報処理装置、その起動方法およびプログラム Expired - Fee Related JP4961781B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006069734A JP4961781B2 (ja) 2006-03-14 2006-03-14 情報処理装置、その起動方法およびプログラム
US11/675,796 US7913072B2 (en) 2006-03-14 2007-02-16 Information-processing apparatus and activation method thereof
KR1020070025037A KR101366730B1 (ko) 2006-03-14 2007-03-14 정보 처리 장치 및 그 기동 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006069734A JP4961781B2 (ja) 2006-03-14 2006-03-14 情報処理装置、その起動方法およびプログラム

Publications (3)

Publication Number Publication Date
JP2007249418A JP2007249418A (ja) 2007-09-27
JP2007249418A5 JP2007249418A5 (ja) 2007-11-08
JP4961781B2 true JP4961781B2 (ja) 2012-06-27

Family

ID=38519495

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006069734A Expired - Fee Related JP4961781B2 (ja) 2006-03-14 2006-03-14 情報処理装置、その起動方法およびプログラム

Country Status (3)

Country Link
US (1) US7913072B2 (ja)
JP (1) JP4961781B2 (ja)
KR (1) KR101366730B1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5121280B2 (ja) * 2006-05-31 2013-01-16 株式会社リコー 情報処理装置、プロセス制御方法、及びプロセス制御プログラム
KR100788964B1 (ko) * 2006-12-12 2007-12-27 주식회사 케이티 비상주 단말 플랫폼 상에서 콜백 메시지를 처리하는 시스템및 그 방법
US8209686B2 (en) * 2008-02-12 2012-06-26 International Business Machines Corporation Saving unsaved user process data in one or more logical partitions of a computing system
US8271751B2 (en) * 2008-04-24 2012-09-18 Echostar Technologies L.L.C. Systems and methods for reliably managing files in a computer system
US9632909B2 (en) * 2008-12-16 2017-04-25 Microsoft Technology Licensing, Llc Transforming user script code for debugging
US8738621B2 (en) 2009-01-27 2014-05-27 EchoStar Technologies, L.L.C. Systems and methods for managing files on a storage device
JP2012133650A (ja) * 2010-12-22 2012-07-12 Fujitsu Ten Ltd 情報処理装置および情報処理方法
US8893090B2 (en) * 2011-04-15 2014-11-18 Microsoft Corporation Stepping out of an asynchronous method into its continuation in a debugger
US8918767B2 (en) 2011-06-16 2014-12-23 Microsoft Corporation Pattern-based compilation of asynchronous consumption
JP5459270B2 (ja) 2011-06-22 2014-04-02 コニカミノルタ株式会社 情報処理装置、情報処理装置の起動方法および起動プログラム
EP2625598A4 (en) * 2011-11-28 2014-01-15 Lg Electronics Inc METHOD, RECORDING MEDIUM, AND ELECTRONIC DEVICE FOR REDUCING THE BOOT TIME
WO2013158633A1 (en) * 2012-04-20 2013-10-24 Violin Memory, Inc. Snapshots in a flash memory storage system
US20140201149A1 (en) * 2013-01-16 2014-07-17 Ca, Inc. Consistent bookmark
US10123348B2 (en) 2015-04-01 2018-11-06 Qualcomm Incorporated Enhanced carrier aggregation activation and scheduling request procedures
KR101923661B1 (ko) * 2016-04-04 2018-11-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
WO2018112738A1 (en) * 2016-12-20 2018-06-28 Intel Corporation Power state management
GB2581719B (en) * 2017-11-17 2022-03-09 Mitsubishi Heavy Ind Mach Systems Ltd Information processing system and information processing method to be executed by information processing system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0378812A (ja) * 1989-08-23 1991-04-04 Toshiba Corp 情報処理装置
JPH0651858A (ja) * 1992-07-30 1994-02-25 Hitachi Ltd プログラム中断再開方式
JPH07219753A (ja) * 1994-02-02 1995-08-18 Fujitsu Ltd 会話型プログラム開発支援システム
JPH07244536A (ja) * 1994-03-07 1995-09-19 Toshiba Corp レジューム支援機構
JPH07271561A (ja) * 1994-04-01 1995-10-20 Hitachi Ltd 情報処理装置
JP3343799B2 (ja) * 1994-11-30 2002-11-11 株式会社ピーエフユー 操作自動実行機構
US5649136A (en) * 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary
JPH1063487A (ja) * 1996-08-20 1998-03-06 Aiwa Co Ltd コンピュータのアプリケーションソフト簡易起動及びパワーセーブ方法及び装置
JPH11288366A (ja) * 1998-04-01 1999-10-19 Canon Inc 情報処理方法及び装置並びに記憶媒体
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
JPH11353048A (ja) * 1998-06-11 1999-12-24 Hitachi Ltd 電子機器の節電モード移行制御方法、電子機器及び節電モード移行制御手順を記録した記録媒体
JP2001014050A (ja) * 1999-06-29 2001-01-19 Casio Comput Co Ltd 情報処理装置及び記憶媒体
JP2001067136A (ja) * 1999-08-26 2001-03-16 Toshiba Corp 情報処理装置及びシステム起動方法
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
JP2002324012A (ja) * 2001-04-25 2002-11-08 Ricoh Co Ltd 情報処理システム
JP2003198614A (ja) * 2001-12-26 2003-07-11 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム
TWI324309B (en) * 2002-08-26 2010-05-01 Interdigital Tech Corp Communication circuit
JP4027389B2 (ja) * 2003-06-13 2007-12-26 富士通株式会社 情報処理装置
US7308584B2 (en) * 2003-08-14 2007-12-11 International Business Machines Corporation System and method for securing a portable processing module
JP2005149225A (ja) 2003-11-17 2005-06-09 Sony Corp コンピュータシステム及びその起動方法
JP2005157748A (ja) * 2003-11-26 2005-06-16 Matsushita Electric Ind Co Ltd コンピュータシステムの起動方法
JP2005174130A (ja) * 2003-12-12 2005-06-30 Canon Inc 情報処理方法及び情報処理装置、撮像装置
JP2005284491A (ja) * 2004-03-29 2005-10-13 Mitsubishi Electric Corp 計算機の起動時間短縮方式
US7376860B2 (en) * 2004-12-16 2008-05-20 International Business Machines Corporation Checkpoint/resume/restart safe methods in a data processing system to establish, to restore and to release shared memory regions
TWI266241B (en) * 2005-07-01 2006-11-11 Via Tech Inc Method for booting up a computer system

Also Published As

Publication number Publication date
US20070220490A1 (en) 2007-09-20
KR20070093896A (ko) 2007-09-19
KR101366730B1 (ko) 2014-02-24
JP2007249418A (ja) 2007-09-27
US7913072B2 (en) 2011-03-22

Similar Documents

Publication Publication Date Title
JP4961781B2 (ja) 情報処理装置、その起動方法およびプログラム
JP3593241B2 (ja) 計算機の再起動方法
JP4361073B2 (ja) 画像処理装置とその制御方法
RU2435200C2 (ru) Быстрая загрузка операционной системы из выключенного состояния
JP3546678B2 (ja) マルチos構成方法
US6173417B1 (en) Initializing and restarting operating systems
EP1449077B1 (en) Method and system for concurrent handler execution in an smi and pmi-based dispatch-execution framework
US20010018717A1 (en) Computer system, operating system switching system, operating system mounting method, operating system switching method, storage medium, and program transmission apparatus
US20080010446A1 (en) Portable apparatus supporting multiple operating systems and supporting method therefor
WO2004107168A1 (en) Booting from non-volatile memory
US20040167996A1 (en) Computer system having a virtualized I/O device
JP5609242B2 (ja) 情報処理装置及びメモリダンプ採取方法
US9235426B2 (en) Multicore processor system, computer product, and notification method for updating operating system
JP3253881B2 (ja) コンピュータシステムおよびそのシステムにおけるハイバネーション制御方法
TW201106271A (en) Method of switching different operating systems in computer
JP2007035066A (ja) マルチos構成方法
CN113127263B (zh) 一种内核崩溃恢复方法、装置、设备及存储介质
JP2001216172A (ja) マルチos構成方法
JP2001290678A (ja) 非同期メモリダンプ実行方式
JP2001236237A (ja) マルチos構成方法
US20150052396A1 (en) State information recording apparatus, non-transitory computer readable medium, and state information recording method
US20040267998A1 (en) Method to support legacy and native mode interrupts with multiplexed execution of legacy and native interrupt service
TWI413934B (zh) 開機方法
JP2020135555A (ja) 処理実行方法
CN112114882A (zh) 主板启动方法及装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070830

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110727

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

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

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

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees