JP2015144008A - 情報処理装置、及び、情報処理方法 - Google Patents

情報処理装置、及び、情報処理方法 Download PDF

Info

Publication number
JP2015144008A
JP2015144008A JP2015050986A JP2015050986A JP2015144008A JP 2015144008 A JP2015144008 A JP 2015144008A JP 2015050986 A JP2015050986 A JP 2015050986A JP 2015050986 A JP2015050986 A JP 2015050986A JP 2015144008 A JP2015144008 A JP 2015144008A
Authority
JP
Japan
Prior art keywords
bios
application
information processing
information
memory
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.)
Granted
Application number
JP2015050986A
Other languages
English (en)
Other versions
JP5867638B2 (ja
Inventor
保雄 宮部
Yasuo Miyabe
保雄 宮部
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2015050986A priority Critical patent/JP5867638B2/ja
Publication of JP2015144008A publication Critical patent/JP2015144008A/ja
Application granted granted Critical
Publication of JP5867638B2 publication Critical patent/JP5867638B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】BIOSと各アプリケーションとがOSを介さずに直接連携して動作できるようにする。
【解決手段】情報処理装置11上のBIOS100は、OS200が参照及び更新できない共有領域を確保し、OS200上で動作するアプリケーション301とデータを共有する。アプリケーション301は、予め保持する共有領域の物理アドレスを取得するための情報(取得用情報)を用いて、BIOS100から共有領域の物理アドレスを取得する。そして、アプリケーション301は、共有領域を含めて仮想アドレスを取得する。そのため、アプリケーション301は、共有領域を使用できる。また、BIOS100は、確保した共有領域を、アクセス可能である。
【選択図】図6

Description

本発明は、情報処理装置(例えば、サーバのようなコンピュータ)に関し、特に、データの共有に関する。
情報処理装置は、OS(Operating System)及びBIOS(Basic Input Output System)を備え、アプリケーション(アプリケーションソフトウェア:Application Software)を実行する。
OSは、アプリケーションの実行において、メモリを管理する(例えば、特許文献1及び特許文献2を参照)。
BIOSは、OS及びアプリケーションに、ハードウェアの入出力手段を提供する。さらにBIOSは、情報処理装置の起動処理を実行する。
近年、BIOSの拡張として、UEFI(Unified Extensible Firmware Interface)が用いられている(例えば、特許文献3を参照)。
特開2002−157133 特開2003−316645 特開2012−014637
一般的に、アプリケーションは、OSを介して、BIOSとデータをやり取りする。そのため、特許文献1ないし特許文献3に記載の情報処理装置では、BIOSと各アプリケーションとは、OSを介さないデータの共有を実現できない。そのため、特許文献1ないし特許文献3に記載の情報処理装置は、BIOSとアプリケーションとでの連携動作ができないという問題点があった。
本発明の目的は、上記問題点を解決し、BIOSと各アプリケーションとが連携動作できる情報処理装置、及び、情報処理方法を提供することにある。
本発明の情報処理装置は、OS上の動作するアプリケーションと、前記アプリケーションとデータを共有する領域を前記OSが更新できない領域に確保するBIOSを含む。
本発明の情報処理方法は、OS上の動作するアプリケーションとデータを共有する領域を前記OSが更新できない領域に確保する。
本発明のプログラムは、OSの処理と、前記OS上の動作するアプリケーションの処理と、前記アプリケーションとデータを共有する領域を前記OSが更新できない領域に確保する処理BIOSの処理とをコンピュータに実行させる。
本発明に基づけば、BIOSと各アプリケーションとが連携して動作するとの効果を提供できる。
図1は、本発明における第1の実施形態に係る情報処理装置の機能構成の一例を示すブロック図である。 図2は、第1の実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。 図3は、第1の実施形態に係る情報処理装置の動作の一例を示すシーケンス図である。 図4は、第1の実施形態に係るBIOSの構成の一例を示すブロック図である。 図5は、第1の実施形態に係る情報処理装置の他のアプリケーションの動作 図6は、第2の実施形態に係る情報処理装置の構成の一例を示すブロック図である。 図7は、第3の実施形態に係る情報処理装置の動作の一例を示すシーケンス図である。
次に、本発明の実施形態について図面を参照して説明する。
なお、各図面は、本発明の実施形態を説明するものである。そのため、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。
また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
まず、本実施形態の説明において使用する用語について、整理する。
「OS(Operating System)」とは、情報処理装置で動作するソフトウェアにおいて、アプリケーションに、ハードウェア(例えば、キーボード、ドライブ、ディスプレイ及びプリンタ)を抽象化(共通化)したインタフェースを提供するソフトウェアである。
「カーネル(Kernel)」は、OSにおいて、ハードウェアを管理操作する最も中心的な機能部分である。
「BIOS(Basic Input Output System)」とは、情報処理装置で動作するソフトウェアにおいて、ハードウェア(情報処理装置のハードウェアに加え情報処理装置に接続する外部の機器を含む)に最も近い層のソフトウェアである。BIOSは、OS及びアプリケーションにハードウェアへの入出力手段(サービス)の提供に加え、情報処理装置の運用において必要となる機能を提供する。例えば、BIOSは、情報処理装置の起動(ブート:boot)、ハードウェアの初期化を含む制御、電源制御に関する機能など、入出力手段以外のサービスを含んでも良い。なお、ハードウェア、特に外部の装置は、ファームウェアが組み込まれている場合もある。そのため、BIOSは、OSとファームウェアとのインタフェースでもある。また、BIOSは、後ほど説明するUEFI仕様の機能も含む。さらに、BIOSは、OSとのインタフェースを変更しない限り、つまりOSの動作に影響を与えない限り、OSと独立した機能の拡張及び変更が可能である。
「ファームウェア(Firmware)」とは、ハードウェアに組み込まれたソフトウェアである。
「アプリケーション(Application)」とは、OS上で動作するソフトウェアである。アプリケーションは、情報処理装置において、利用者又は情報処理装置に接続する他の装置に、各種の機能を提供するソフトウェアである。
「ACPI(Advanced Configuration and Power Interface)」とは、情報処理装置の電源制御に関する規格である。ACPIにおいては、OSが電源の管理を主導する。
「ACPI Table」とは、ACPIにおいて、初期化に必要なデータを保持するテーブルである。
「パース(parse)」とは、情報処理において、文章の文法的な関係の解析、特に、構文の解析である。構文解析をする構成は、「パーサー(parser)」と呼ばれる。
「UEFI(Unified Extensible Firmware Interface)」とは、BIOSの拡張として制定されたEFI(Extensible Firmware Interface)を基に制定された、OSとハードウェア(及びファームウェア)と間(つまり、BIOSに相当する機能)のインタフェースの仕様である。
「GUID(Globally Unique Identifier)」とは、情報処理装置で使用される識別子体系の一つである。GUIDは、全世界で同じ値を持つことがないように設定された一意の識別子である。同様の識別子として、「UUID(Universally Unique Identifier)」がある。
次に、本発明のおける第1の実施形態に係る情報処理装置10について図面を参照して説明する。
(第1の実施形態)
図1は、本発明における第1の実施形態に係る情報処理装置10の機能構成の一例を示すブロック図である。
情報処理装置10は、BIOS100と、OS200と、アプリケーション300とを含む。
アプリケーション300は、情報処理装置10のOS200上で動作するアプリケーションである。情報処理装置10は、OS200上で動作するアプリケーション300の数に、制限はない。例えば、情報処理装置10は、1つ、又は、複数のアプリケーション300を含んでも良い。図1では、一例として、アプリケーション301、アプリケーション302、及び、アプリケーション303を示す。以下、アプリケーション301−303に共通する説明においては、アプリケーション300と言う。
なお、アプリケーション301−303は、同じアプリケーションでも良く、異なるアプリケーションでも良い。つまり、アプリケーション301−303は、特に区別する必要はない。
ただし、本実施形態の係るアプリケーション300は、後ほど説明するように、BIOS100とデータを共有する仕組みを備える。
そこで、以下の説明では、アプリケーション301を用いて説明する。つまり、アプリケーション301が、BIOS100とデータ共有する仕組みを備えるとして説明する。この仕組みは、図1において、BIOS100とアプリケーション301との間の接続400として示されている。なお、後ほど説明する通り、この仕組みは、OS200を介さないため、OS200を迂回している。
また、アプリケーション301に対する他のアプリケーションとして、アプリケーション302を用いて説明する。なお、アプリケーション302は、BIOS100とデータを共有する仕組みを備えていても良く、備えていなくても良い。
OS200は、情報処理装置10のOSとして動作する。OS200は、特に制限はない。例えば、OS200は、Windows(登録商標)又はLinux(登録商標)でも良い。
BIOS100は、情報処理装置10のBIOSとして動作する。さらに、BIOS100は、後ほど説明するように、アプリケーション301とデータを共有する領域(以下、「共有領域」と言う)を確保し、アプリケーション301と確保した領域(共有領域)を共有する仕組みを備える。
なお、BIOS100の仕様及び機能は、後ほど説明する共有領域に関する機能を除き、特に制限はない。ただし、以下のBIOS100の動作の説明においては、一例として、広く用いられているUEFI仕様を参照して説明する。
図2は、第1の実施形態に係る情報処理装置10のハードウェア構成の一例を示すブロック図である。
情報処理装置10は、CPU(Central Processing Unit)610と、ROM(Read Only Memory)620と、RAM(Random Access Memory)630と、内部記憶装置640と、入出力接続回路(IOC:Input Output Circuit)650と、ネットワークインターフェース回路(NIC:Network Interface Circuit)680とを含み、コンピュータを構成している。
CPU610は、ROM620及び内部記憶装置640からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IOC650と、NIC680とを制御する。そして、CPU610は、これらの構成を制御し、図1に示す、BIOS100と、OS200と、アプリケーション300としての各機能を実現する。CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記憶として使用しても良い。
このように、情報処理装置10は、ROM620及び内部記憶装置640のような非揮発性(non-transitory)メモリ及びRAM630のような揮発性(transitory)メモリを用いて、各機能を実現する。
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでも良い。なお、記憶媒体700は、非揮発性(non-transitory)メモリの一例である。
あるいは、CPU610は、NIC680を介して、図示しない外部の装置からプログラムを受け取り、RAM630に保存し、RAM630のプログラムを基に各機能を実現しても良い。
さらに、CPU610は、後ほど説明するアプリケーション301が使用する仮想アドレス(論理アドレス)と物理アドレスとの変換するメモリ管理部(MMU:Memory Management Unit)を含んでも良い。あるいは、情報処理装置10は、図示しない動的アドレス変換(DAT:Dynamic Address Translation)部を含んでも良い。
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、BIOS100のプログラムを記憶しても良い。この場合、CPU610は、ROM620上のBIOS100のプログラムを実行して、BIOS100としての機能を実現する。ROM620は、例えば、P−ROM(Programable-ROM)又はフラッシュROMである。なお、CPU610は、NIC680を介して、図示しない外部装置からBIOS100のプログラムを受信し、プログラムをRAM630に保存し、保存したBIOS100のプログラムを実行して、BIOS100の機能を実現しても良い。
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。CPU610は、内部記憶装置640からOS200用のプログラム及びアプリケーション300のプログラムを読み出し、RAM630に保存して、各プログラムを実行しても良い。この場合、CPU610は、RAM630上のOS200のプログラム及びアプリケーション300のプログラムを実行して、OS200及びアプリケーション300としての機能を実現する。また、CPU610は、RAM630を、共有領域として利用しても良い。RAM630は、例えば、D−RAM(Dynamic-RAM)である。
内部記憶装置640は、情報処理装置10が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置640は、CPU610の一時記憶装置として動作しても良い。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)又はディスクアレイ装置である。
なお、CPU610は、RAM630及び内部記憶装置640を、情報処理装置10の仮想アドレス及び物理アドレスに対応する物理メモリ及び仮想メモリとして利用しても良い。
IOC650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IOC650は、例えば、IOインターフェースカード又はUSB(Universal Serial Bus)カードである。
入力機器660は、情報処理装置10の操作者からの入力指示を受け取る機器である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。
表示機器670は、情報処理装置10の操作者に情報を表示する機器である。表示機器670は、例えば、液晶ディスプレイである。
NIC680は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。NIC680は、例えば、LAN(Local Area Network)カードである。
次に、BIOS100とアプリケーション301とでデータを共有する仕組みについて説明する。
まず、本実施形態の情報処理装置10の仕組みの説明の前に、本実施形態に関連する方法を説明する。
第1の方法は、「ACPI Table」を利用する方法である。
第1の方法において、BIOS100は、ACPI Tableを利用して、OS200及びアプリケーション301と、ACPI仕様で定められたデータを共有する。
より具体的には、BIOS100は、次のようにアプリケーション301とデータを共有する。
ACPIの仕様において、BIOS100は、ACPI Tableに、ベンダ固有の情報を含むTableを追加できる。そこで、BIOS100は、アプリケーション301と共有したいデータを、ベンダ固有の情報としてTableに追加する。そして、BIOS100は、この情報を、OS200を介して、アプリケーション301と共有する。
しかし、ACPI Tableの構文解析(パース)は、OS200のカーネルにおいて行われる。そのため、共有したいデータをアプリケーション301に引き渡すためには、OS200のカーネルが、BIOS100が追加したTableを構文解析できることが必要である。OS200のカーネルが追加したTableを構文解析できるためには、OS200のカーネルを改造すること、又は、追加したTableを構文解析(パース)するためのモジュール(ドライバ)をOS200のカーネルに追加することが必要である。
このように、第1の方法は、OS200のカーネルの改造又は新たなモジュールの追加が必要であるとの問題点があった。つまり、第1の方法は、OS200を介さないデータの共有を実現できないとの問題点があった。
第2の方法は、UEFI仕様の「EFI変数」を利用する方法である。
OS200は、UEFI仕様で定められたEFIサービス(UEFI仕様の「SetVariable」及び「GetVariable」)を利用し、BIOS100と、データ(このデータは、「EFI変数」と呼ばれる)をやり取りできる。さらに、アプリケーション301は、UEFI仕様の「SetVariable」及び「GetVariable」を使用して、BIOS100と、EFI変数をやり取りができる。さらに、EFI変数は、任意のデータを格納できる。
つまり、BIOS100とアプリケーション301とは、「EFI変数」を利用して、データを共有できる。
しかし、OS200が扱えるEFI変数のサイズには、OS200の仕様に基づく制限がある。例えば、Linux(登録商標)の上限は、1KByteである。そのため、第2の方法は、共有できるデータの量に制限があるとの問題点があった。つまり、第2の方法も、OS200に基づく制限があるとの問題点があった。
また、第1の方法及び第2の方法は、アプリケーション301とBIOS100との共有データに対して、OS200及びアプリケーション302(他のアプリケーション)からのアクセス(参照又は更新)を防ぐことができないとの問題点があった。
そこで、本発明のおける第1の実施形態に係る情報処理装置10は、OS200を介さない、つまり、OS200の変更及びモジュールの追加を必要とせず、OS200の仕様に制限されない、BIOS100とアプリケーション301とのデータの共有する仕組みを提供する。
さらに、情報処理装置10は、共有データに対するOS200及び他のアプリケーション302からの参照及び更新を防ぐこともできる。
次に、図面を参照して、本実施形態の情報処理装置10のデータを共有する仕組みについて説明する。
図3は、情報処理装置10の動作の一例を示すシーケンス図である。
BIOS100は、情報処理装置10の起動時に、一般的な起動処理に加え、アプリケーション301とデータを共有するための領域(共有領域)をメモリ(例えば、RAM602)に確保する(S01)。なお、情報処理装置10は、共有領域の確保を、メモリに限る必要はない。例えば、情報処理装置10は、IO空間に共有領域を確保しても良い。
そして、BIOS100は、アプリケーション301と共有するために、確保した共有領域のデータを初期設定(例えば、必要なデータを格納し、他の部分を初期化)する(S02)。なお、BIOS100は、初期設定後は、いつでも、データを格納及び更新しても良い。
BIOS100は、起動処理後、OS200を起動する(S03)。
OS200は、起動中に、メモリマップを取得するために、BIOS100にメモリマップを問い合わせる(S04)。
BIOS100は、メモリマップをOS200に報告する。その際、BIOS100は、上記の共有領域を、OS200が変更できない領域又はアクセスできない領域(以下、まとめ「変更禁止領域」と言う)として報告する(S05)。
例えば、UEFI仕様において、ファームウェア用の領域(UEFI仕様では「EfiACPIMemoryNVS」)は、OS200からデータを変更しない領域として定められている。そこで、BIOS100は、共有領域を、UEFI仕様のファームウェア用の領域として報告しても良い。
OS200は、変更禁止領域のデータを変更しない。さらに、OS200は、アプリケーション300から要求されても変更禁止領域のデータを変更しないように制御する。したがって、アプリケーション300は、OS200を介して共有領域をアクセスできない。ただし、後ほど説明するように、アプリケーション301は、OS200を介さずに、BIOS100との共有領域をアクセスできる。一方、BIOS100が、共有領域を変更禁止領域としてOS200に通知するため、アプリケーション302(及びアプリケーション303)は、BIOS100とアプリケーション301との共有領域にアクセスできない。
次に、OS200は、アプリケーション301を起動する(S06)。
起動されたアプリケーション301は、OS200に使用する物理アドレスを問い合わせる(S07−1)。
OS200は、物理アドレスの問い合わせを、BIOS100に通知する(S07−2)。
BIOS100は、物理アドレスを、OS200に返却する(S08−1)。
OS200は、物理アドレスを、アプリケーション301に返却する(S08−2)。
ただし、本実施形態のBIOS100及びアプリケーション301は、BIOS100とアプリケーション301との共有領域の物理アドレスを、アプリケーション301には通知し、アプリケーション302には通知しない仕組みを備える。
この仕組みについて詳細に説明する。
図4は、第1の実施形態のBIOS100の構成の一例を示すブロック図である。
BIOS100は、物理アドレスの配布及び配布に関する通知を管理している。
そのため、BIOS100は、アドレス提供部110と、情報提供部120とを含む。
アドレス提供部110は、アプリケーション301に、物理アドレスを通知する(以下、この機能を「アドレス提供サービス」と言う)。
ただし、アプリケーション301が、BIOS100のアドレス提供サービスを利用するためには、BIOS100に所定の情報(以下、「取得用情報」と言う)の通知が必要である。
したがって、アプリケーション301は、物理アドレスを取得する前に、BIOS100から取得用情報を取得することが必要である。
情報提供部120は、アプリケーション301からの問い合わせに対して、取得用情報を提供する(以下、この機能を「情報提供サービス」と言う)。
つまり、アプリケーション301は、BIOS100の情報提供サービスを利用して、取得用情報を取得する。そして、アプリケーション301は、取得用情報を用いて、BIOS100のアドレス提供サービスを利用し、物理アドレスを取得する。
具体例として、UEFI仕様を用いて、この動作をより詳細に説明する。
UEFI仕様では、BIOS100からアプリケーション301に情報を通知する仕組みとして、「GetVariableサービス」が、規定されている。つまり、UEFI仕様の場合、「GetVariableサービス」が、「アドレス提供サービス」に相当する。
そして、UEFI仕様において、「GetVariableサービス」の利用には、「EFI変数の名前」と「GUID」が必要である。つまり、UEFI仕様の場合、「EFI変数の名前」と「GUID」が、本実施形態の「取得用情報」に相当する。
そして、UEFI仕様では、「EFI変数名」と「GUID」を取得するサービスとして、「GetNextVariableName」サービスが、規定されている。つまり、UEFI仕様の「GetNextVariableName」は、「情報提供サービス」に相当する。
本実施形態の情報提供部120は、一般的な領域に関する情報提供サービス(例えば、「GetNextVariableName」)の要求に対しては、取得用情報(例えば、「EFI変数の名前」と「GUID」)を返却する。しかし、情報提供部120は、共有領域に関する情報提供サービスの要求に対しては、取得用情報(例えば、「EFI変数名」と「GUID」)を返却しない。
一方、本実施形態のアプリケーション301は、予め、BIOS100と共有する領域に関する取得用情報(例えば、「EFI変数名」と「GUID」)を保持する。そこで、アプリケーション301は、保持する取得用情報を用いて、BIOS100のアドレス取得部に物理アドレスを問い合わせる。BIOS100は、予め保持している取得用情報とアプリケーション301から受信した取得用情報とが一致した場合に、共有領域の物理アドレスをアプリケーション301に返却する。
なお、取得用情報は、予め、アプリケーション301の作成者又は利用者が、アプリケーション301及びBIOS100に保持させれば良い。
例えば、UEFI仕様の場合、アプリケーション301は、予め、共有領域に対応する「EFI変数名」と「GUID」を保持する。そして、アプリケーション301は、「GetVariableサービス」において、保持する「EFI変数名」と「GUID」をBIOS100に送付し、共有領域の物理アドレスを取得する。
つまり、アプリケーション301は、予め、BIOS100と共有する領域の物理アドレスを取得するための情報(取得用情報)を保持し、その情報を用いてBIOS100から共有領域の物理アドレスを取得する。
なお、アプリケーション301は、BIOS100と共有しない領域については、情報提供部120から取得用情報を取得し、その情報を用いてアドレス提供部110から物理アドレスを取得する。
このような仕組みを基に、情報処理装置10のBIOS100とアプリケーション301は、共有領域のデータを共有できる。そのため、BIOS100とアプリケーション300は、連携した動作を実現できる。
次に、アプリケーション302(他のアプリケーション)が、BIOS100とアプリケーション301との共有領域のデータにアクセスできない仕組みを説明する。
図5は、第1の実施形態に係る情報処理装置10の他のアプリケーションの動作の一例を示すシーケンス図である。
図5のS01−S06は、図3と同じため、説明を省略する。
起動されたアプリケーション302は、物理アドレスの取得の前に、情報提供部120に取得用情報を問い合わせる(S17−1)。アプリケーション302は、問い合わせに、BIOS100の情報提供サービス(例えば、UEFI仕様の「GetNextVariableName」)を用いる。
OS200は、取得用情報の問い合わせを、BIOS100に通知する(S17−2)。
BIOS100の情報提供部120は、取得用情報を、OS200に返却する(S18−1)。
OS200は、BIOS100から受け取った取得用情報を、アプリケーション302に返却する(S18−2)。
ただし、情報提供部120は、既に説明した通り、共有領域に関する取得用情報を返却しない。
したがって、アプリケーション302(他のアプリケーション)は、BIOS100とアプリケーション301との共有領域の取得用情報(例えば、「EFI変数名」と「GUID」)を取得できない。そのため、アプリケーション302は、BIOS100とアプリケーション301との共有領域の物理アドレスを取得できない。つまり、アプリケーション302は、BIOS100とアプリケーション301との共有領域のデータにアクセス(参照及び更新)できない。
なお、アプリケーション302が、BIOS100とデータを共有する場合、アプリケーション302は、BIOS100とアプリケーション302との共有領域の取得用情報を保持する。したがって、アプリケーション302は、保持する取得用情報を用いて、BIOS100と共有領域のデータを共有できる。
このような仕組みを基に、情報処理装置10は、アプリケーション302(他のアプリケーション)から、BIOS100とアプリケーション301との共有領域のデータを保護する。
図3を用いた説明に戻る。
物理アドレスを取得後、アプリケーション301は、共有領域を含む物理アドレスをOS200に通知して、アプリケーション301で使用する仮想アドレス又は論理アドレス(以下、まとめて「仮想アドレス」として説明する)へのマッピングを依頼する(S09)。アプリケーション301は、例えば、OS200のシステムコールを使用して、マッピングを依頼しても良い。
この動作の具体例として、Linux(登録商標)を用いて説明する。
アプリケーション301は、受け取った物理アドレスを指定して、Linux(登録商標)のシステムコールmmap(memory map)を実行し、物理アドレスを仮想アドレスにマッピングしても良い。
ここにおけるOS200のマッピング機能は、物理アドレスの仮想アドレスへのマッピングであり、OS200が管理している領域に関連しない。そのため、OS200のマッピング機能は、変更禁止領域となっている共有領域を、仮想アドレスにマッピングできる。
そして、OS200は、マッピングした仮想アドレスをアプリケーション301に返却する(S10)。
これ以降、アプリケーション301は、仮想アドレスを用いて、共有領域のデータにアクセス(参照及び更新)できる(S11−1)。ここで、アプリケーション301が、仮想アドレスを用いてアクセスする場合、上記のMMU又はDATが、アドレスを変換する。そのため、アプリケーション301は、OS200を介さすに、共有領域にアクセス可能である。つまり、アプリケーション301は、OS200の変更禁止領域でも、共有領域としてアクセス可能である。
一方、BIOS100は、物理アドレスを用いて、共有領域のデータにアクセス(更新及び参照)できる(S11−2)。
このように、BIOS100とアプリケーション301は、相互に、共有領域をアクセス(参照及び更新)できる。
そのため、BIOS100とアプリケーション301は、OS200を介さずに、連携して動作できる。
次に、本実施形態の情報処理装置10の効果について説明する。
情報処理装置10は、BIOS100とアプリケーション301とが連携して動作できるとの効果を得ることができる。
その理由は、次のとおりである。
情報処理装置10のBIOS100が、共有領域を確保する。そして、BIOS100は、共有領域をOS200が参照及び変更できない領域(変更禁止領域)とする。そして、アプリケーション301は、予め保持する共有領域の物理アドレスを取得するための情報(取得用情報)を用いて、BIOS100から共有領域の物理アドレスを取得する。そして、アプリケーション301は、共有領域を含めて仮想アドレスを取得する。そのため、アプリケーション301は、共有領域を使用できる。また、BIOS100は、確保した共有領域を、アクセス可能である。
このように、BIOS100とアプリケーション301は、OS200が参照及び変更できない領域を共有し、連携して動作できるためである。
さらに、情報処理装置10は、OSカーネルの改造及び新たなモジュールを必要としないで上記効果を得ることができる。
その理由は、BIOS100とアプリケーション301とが、OS200を介さずに、上記構成を備えて領域を共有できるためである。つまり、情報処理装置10は、OS200に機能を追加しなくても、BIOS100とアプリケーション301とで領域を共有できる仕組みを含むためである。
さらに、情報処理装置10は、共有領域のデータ量を、OS200の制限を受けないで設定する効果を得ることができる。
その理由は、次のとおりである。
本実施形態では、BIOS100は、OS200が管理していない領域に、共有領域を確保する。そのため、共有領域は、OS200の仕様に制限されない。つまり、確保された共有領域が、OS200が管理する領域でないため、共有領域を仮想アドレスにマッピングするOS200のマッピング処理は、OS200の仕様に制限されないためである。
さらに、情報処理装置10は、他のアプリケーションから共有領域を保護する効果を得ることができる。
その理由は、次のとおりである。
他のアプリケーション(例えば、アプリケーション302)は、BIOS100とアプリケーション301との共有領域に関する「取得用情報」を取得できない。そのため、アプリケーション302は、BIOS100とアプリケーション301との共有領域をアクセスできないためである。
(第2の実施形態)
次に、本発明の第2の実施形態の情報処理装置11について、図面を参照して説明する。
図6は、第2の実施形態に係る情報処理装置11の構成の一例を示すブロック図である。
図6において、図1と同様の構成には同様の符号を付し、その詳細な説明を省略する。
図6に示す情報処理装置11は、BIOS100と、アプリケーション301とを含む。
BIOS100は、共有領域をOS200がアクセスできないように確保する。そのため、図6は、OS200を、破線で示した。
そして、BIOS100は、所定のサービス(第1の実施形態と同様のアドレス提供サービス)を用いてアプリケーション301に共有領域のアドレスを通知し、アプリケーション301と共有領域のデータを共有する。
つまり、本実施形態のBIOS100とアプリケーション301は、第1の実施形態のBIOS100とアプリケーション301との同様の動作を基に、共有領域のデータを共有する。
なお、図6に示す第2の実施形態の情報処理装置11は、本発明の最小構成の一例である。
このように、図6に示す情報処理装置11は、第1の実施形態の情報処理装置10と同様の効果を実現できる。
その理由は、第2の実施形態のBIOS100及びアプリケーション301が、第1の実施形態のBIOS100及びアプリケーション301と同様に動作し、所定の領域を共有する。そして、第2の実施形態のBIOS100及びアプリケーション301が、その領域を用いて連携した動作を実現できるためである。
(第3の実施形態)
情報処理装置10のメモリは、初期化後に使用される。そして、一般的に、BIOS100が、メモリを初期化する。ただし、BIOS100の処理は、OS200の管理下の処理ではない。そのため、OS200が起動後のBIOS100の処理時間は、できるだけ短い方が望ましい。
BIOS100が、情報処理装置10に初期搭載されたメモリを初期化する場合、OS200は、BIOS100での初期化処理後に起動すれば、BIOS100の処理の影響を受けない。
OS200の起動後でも、メモリを増設したい場合がある。OS200の起動後にメモリを増設するためには、BIOS100が、増設されたメモリを初期化する必要がある。しかし、BIOS100が、OS200の起動後に、メモリの初期化処理を実行することは、OS200の動作に影響を与える。そのため、OS200の起動後は、メモリの増設ができなかった。
ただし、メモリの初期化処理は、BIOS100でなければ実施できない処理と、一般的なアプリケーション(例えば、アプリケーション301)で実行できる処理とを含む。
そこで、本発明の第3の実施形態は、BIOS100とアプリケーション300との共有領域を用いた連携動作を用いて、上記問題点を解決し、OS200の起動後でもメモリを増設できるようにした。
以下、本発明に係る第3の実施形態を説明する。
なお、本実施形態の構成は、第1の実施形態及び第2の実施形態と同様である。そのため、構成の説明を省略し、本実施形態に特有の動作について説明する。なお、構成の説明には、第1の実施形態の情報処理装置10と同様の構成を参照して説明する。
本実施形態に係るアプリケーション301は、メモリ、特に情報処理装置10に増設されたメモリを初期化する。そのため、以降は、アプリケーション301を初期化アプリケーション310として説明する。
なお、初期化アプリケーション310は、本実施形態の動作の開始する前に起動されれば、起動の時期は特に制限はない。例えば、OS200が、起動時に、初期化アプリケーション310を起動しても良い。そのため、以下の説明では、初期化アプリケーション310は、起動済みとして説明する。そして、BIOS100と初期化アプリケーション310とは、領域を共有済みとする。
まず、情報処理装置10の利用者が、情報処理装置10のメモリを増設する。そして、増設後、利用者が、例えば、管理用の装置(BMC:Base Management Controller)を操作して、情報処理装置10にメモリの増設を通知する。その通知を基に、以下で説明する、本実施形態の動作が、開始する。
図7は、本実施形態に係る情報処理装置10の動作の一例を示すシーケンス図である。
まず、通知を基に、BIOS100は、動作を開始する。なお、動作の開始の手段は、特に制限はない。例えば、BIOS100は、通知を基に発生したCPU610の割り込みで起動されても良い。
BIOS100は、所定の情報を確認し、割り込みの内容を判断する。例えば、BIOS100は、CPU610のレジスタ及び図示しない回路の状態を把握すれば良い。そして、増設メモリの初期化と判断した場合、BIOS100は、共有領域に増設メモリの初期化に必要な情報(以下、「第1のパラメータ」と言う)を格納する(S22)。ここで、第1のパラメータは、情報処理装置10のメモリの仕様に基づいた情報である。例えば、第1のパラメータは、増設メモリの位置(アドレス)、増設メモリに関する回路情報(例えば、増設メモリに対応するメモリコントローラに関する情報)である。
なお、増設メモリの初期化以外の割り込みの場合、BIOS100は、その割り込みに対応した動作を実行すれば良い。
一方、初期化アプリケーション310は、起動後、共有領域を常に監視している。例えば、初期化アプリケーション310は、定期的に共有領域をポーリングする。そして、第1のパラメータの書き込みを検出すると、初期化アプリケーション310は、第1のパラメータを用いてメモリを初期化する(S23)。
初期化処理の中で、BIOS100に依頼が必要な処理が発生した場合、初期化アプリケーション310は、BIOS100の依頼するための情報(以下、「第2のパラメータ」と言う)を共有領域に設定する(S24)。ここで、BIOS100に依頼が必要な処理とは、例えば、Pentium(登録商標) CPUのSMM(System Management Mode)の処理である。
そして、初期化アプリケーション310は、BIOS100に処理を依頼する(S25)。なお、この処理の依頼の手段は、特に制限はない。例えば、初期化アプリケーション310は、Pentium(登録商標) CPUのSMI(System Management Interrupt)を用いても良い。
BIOS100は、第2のパラメータを用いて、メモリの初期化の処理を実行する(S26)。
BIOS100は、処理の終了後、結果を共有領域に設定し、処理を初期化アプリケーション310に戻す(S27)。
初期化アプリケーション310は、BIOS100の処理後、初期化処理を継続する。
初期化アプリケーション310は、初期化に必要な処理(自分で実行する初期化処理(S23)及びBIOS100に依頼する処理(S26))が終了すると、つまり、メモリの初期化が完了すると、必要な情報を共有領域に設定する(S28)。
そして、初期化アプリケーション310は、処理をBIOS100に戻す(S29)。この処理として、初期化アプリケーション310は、例えば、SMIを用いても良い。
BIOS100は、共有領域の情報を基に初期化の終了を検出し、OS200がメモリを組み込むための情報を設定する(S30)。例えば、ACPI Tableを用いる場合、BIOS100は、ACPI TableのDSDT(Differentiated System Description Table)に所定の値を設定する。
そして、BIOS100は、処理をOS200に戻す(S31)。例えば、ACPI仕様の場合、BIOS100は、Notify処理を実行する。つまり、BIOS100は、処理のBIOS100及び初期化アプリケーション310との連携動作の結果をOS200に通知する。
OS200は、BIOS100が設定した情報(例えば、ACPI Table)を基に、増設メモリをシステムに組み込む(S32)。
なお、初期化アプリケーション310は、初期化処理において障害(エラー)を検出した場合、処理をBIOS100に戻しても良い。
次に、本実施形態の効果について説明する。
本実施形態の情報処理装置10は、OS200の起動後でも、メモリを増設できる効果を得ることできる。
その理由は、次のとおりである。
BIOS100は、共有領域に、増設メモリの初期化に必要な情報を設定し、初期化アプリケーション310に、増設メモリの初期化の処理を依頼する。初期化アプリケーション310は、共有領域の情報を基に、BIOS100でなければできない処理を除いて、メモリの初期化処理を実行する。
初期化アプリケーション310は、OS200の管理下で動作している。そのため、初期化アプリケーション310は、処理の時間が長くても、OS200の処理に影響を与えない。一方、BIOS100は、BIOS100でなければできない処理を除き、初期化処理を実行しない。つまり、BIOS100の処理時間は、短い。
このように、本実施形態は、BIOS100とアプリケーション300との共有領域を用いて、OS200への影響を低減したメモリの初期化を実現できる。そのため、本実施形態は、OS200の起動後でもメモリを増設できる効果を得ることができる。
なお、本実施形態の説明において、増設されたメモリを処理の対象とした。しかし、本実施形態は、これに限る必要はない。例えば、本実施形態は、初期搭載のメモリを対象に動作しても良い。あるいは、本実施形態は、IOカードなどの外部記憶媒体の初期化又は外部装置の初期化を対象に動作しても良い。
また、本実施形態に係る情報処理装置10は、図示していない、初期化対象のメモリを制御するためのメモリコントローラ、及び/又は、メモリのデータを一時保存するメモリバッファを含んでも良い。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
10 情報処理装置
11 情報処理装置
100 BIOS
110 アドレス提供部
120 情報提供部
200 OS
300 アプリケーション
301 アプリケーション
302 アプリケーション
303 アプリケーション
310 初期化アプリケーション
400 接続
610 CPU
620 ROM
630 RAM
640 内部記憶装置
650 IOC
660 入力機器
670 表示機器
680 NIC
700 記憶媒体

Claims (7)

  1. OS上で動作するアプリケーションとデータを共有する領域を確保し、前記データを共有する領域にメモリの初期化のため情報を設定するBIOSと、
    前記初期化のための情報を基に前記メモリの初期化の処理の少なくとも一部を実行するアプリケーションと
    を含む情報処理装置。
  2. 前記BIOSは、
    前記データを共有する領域を前記OSが更新できない領域に確保する
    請求項1に記載の情報処理装置。
  3. 前記BIOSは、
    前記アプリケーションが、前記メモリの初期化の処理において、前記データを共有する領域に登録した依頼情報を基に、前記メモリの処理化の処理を実行する
    請求項1または2に記載の情報処理装置。
  4. 前記メモリは、
    新たに増設された増設メモリである
    請求項1ないし3のいずれか1項に記載の情報処理装置。
  5. 前記BIOSが、
    初期化した前記増設メモリについての情報を前記OSに通知する
    請求項4に記載の情報処理装置。
  6. BIOSが、
    OS上で動作するアプリケーションとデータを共有する領域を確保し、前記データを共有する領域にメモリの初期化のため情報を設定し、
    アプリケーションが、
    前記初期化のための情報を基に前記メモリの初期化の処理の少なくとも一部を実行する
    情報処理方法。
  7. OS上で動作するアプリケーションとデータを共有する領域を確保し、前記データを共有する領域にメモリの初期化のため情報を設定するBIOSの処理と、
    前記初期化のための情報を基に前記メモリの初期化の処理の少なくとも一部を実行するアプリケーションの処理と
    をコンピュータに実行させるプログラム。
JP2015050986A 2015-03-13 2015-03-13 情報処理装置、及び、情報処理方法 Expired - Fee Related JP5867638B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015050986A JP5867638B2 (ja) 2015-03-13 2015-03-13 情報処理装置、及び、情報処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015050986A JP5867638B2 (ja) 2015-03-13 2015-03-13 情報処理装置、及び、情報処理方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014013428A Division JP5741722B1 (ja) 2014-01-28 2014-01-28 情報処理装置、及び、情報処理方法

Publications (2)

Publication Number Publication Date
JP2015144008A true JP2015144008A (ja) 2015-08-06
JP5867638B2 JP5867638B2 (ja) 2016-02-24

Family

ID=53888965

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015050986A Expired - Fee Related JP5867638B2 (ja) 2015-03-13 2015-03-13 情報処理装置、及び、情報処理方法

Country Status (1)

Country Link
JP (1) JP5867638B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019204403A (ja) * 2018-05-25 2019-11-28 富士通株式会社 情報処理装置,ロードプログラムおよびロード方法
WO2021205825A1 (ja) * 2020-04-08 2021-10-14 株式会社オートネットワーク技術研究所 車載装置、情報処理方法及びコンピュータプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11272547A (ja) * 1998-01-09 1999-10-08 Hitachi Ltd メモリ管理方法および情報処理装置
JP2010198569A (ja) * 2009-02-27 2010-09-09 Kyocera Mita Corp メモリ管理装置及び画像形成装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11272547A (ja) * 1998-01-09 1999-10-08 Hitachi Ltd メモリ管理方法および情報処理装置
JP2010198569A (ja) * 2009-02-27 2010-09-09 Kyocera Mita Corp メモリ管理装置及び画像形成装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019204403A (ja) * 2018-05-25 2019-11-28 富士通株式会社 情報処理装置,ロードプログラムおよびロード方法
JP7067270B2 (ja) 2018-05-25 2022-05-16 富士通株式会社 情報処理装置,ロードプログラムおよびロード方法
WO2021205825A1 (ja) * 2020-04-08 2021-10-14 株式会社オートネットワーク技術研究所 車載装置、情報処理方法及びコンピュータプログラム
JP7415756B2 (ja) 2020-04-08 2024-01-17 株式会社オートネットワーク技術研究所 車載装置、情報処理方法及びコンピュータプログラム

Also Published As

Publication number Publication date
JP5867638B2 (ja) 2016-02-24

Similar Documents

Publication Publication Date Title
US9454380B2 (en) Computing platform performance management with RAS services
JP5368947B2 (ja) プラットフォームの高速リスタートを可能にする方法およびシステム
US8544021B2 (en) Execution context isolation in a driver execution environment (DXE) with marshaling arguments to a common location in response to an LPC
US7146512B2 (en) Method of activating management mode through a network for monitoring a hardware entity and transmitting the monitored information through the network
US10860332B2 (en) Multicore framework for use in pre-boot environment of a system-on-chip
US9940291B2 (en) Assigning processors to memory mapped configuration
US11194588B2 (en) Information handling systems and method to provide secure shared memory access at OS runtime
US20170161124A1 (en) Firmware-related event notification
US20100169629A1 (en) Method for configuring computer by bios, server, computer, system startup method and computer system
JP2015022553A (ja) 計算機の制御方法及び計算機
JP2007233815A (ja) 情報処理システムおよび情報処理装置の割当管理方法
US20170024223A1 (en) Installation of Device Drivers from Virtual Media
EP3874389A1 (en) Secure memory access in a virtualized computing environment
US10990436B2 (en) System and method to handle I/O page faults in an I/O memory management unit
JP4692912B2 (ja) リソース割り当てシステム、及びリソース割り当て方法
EP3633507B1 (en) Technologies for secure and efficient native code invocation for firmware services
JP5867638B2 (ja) 情報処理装置、及び、情報処理方法
US20170277632A1 (en) Virtual computer system control method and virtual computer system
JP5741722B1 (ja) 情報処理装置、及び、情報処理方法
US7178014B2 (en) Method and apparatus for using a memory region to pass parameters between a run time environment and SMM handler
US11226755B1 (en) Core dump in a storage device
US20160004539A1 (en) Operating environment switching between a primary and a secondary operating system
US20070005927A1 (en) Systems and methods for remote triggering of page faults
JP2016173741A (ja) 情報処理装置、情報処理方法、及び、プログラム
TWI293413B (en) Method for allocating main memory, computer system and chipset

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151221

R150 Certificate of patent or registration of utility model

Ref document number: 5867638

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees