JP2014029739A - Multi-core processor system, control program, and control method - Google Patents
Multi-core processor system, control program, and control method Download PDFInfo
- Publication number
- JP2014029739A JP2014029739A JP2013235497A JP2013235497A JP2014029739A JP 2014029739 A JP2014029739 A JP 2014029739A JP 2013235497 A JP2013235497 A JP 2013235497A JP 2013235497 A JP2013235497 A JP 2013235497A JP 2014029739 A JP2014029739 A JP 2014029739A
- Authority
- JP
- Japan
- Prior art keywords
- boot program
- cpu
- old
- access
- hypervisor
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
本発明は、オペレーティングシステムを更新するマルチコアプロセッサシステム、制御プログラム、および制御方法に関する。 The present invention relates to a multi-core processor system, a control program, and a control method for updating an operating system.
従来の携帯型端末では、オペレーティングシステム(以下、「OS(Operating System)」と称する。)の更新に当たり、更新期間中にはアプリケーションの動作を停止させる必要があった。このため、更新期間中には、利用者はアプリケーションの動作(以下、「機能」と称する。)を利用することができないので、深夜時間帯など利用者の利用頻度が下がる時間帯に更新が行われていた。しかし、汎用計算機とは異なり、携帯型端末などの組み込みシステムは24時間365日動かし続けることを想定しており、機能を停止させなければならないことが問題となっていた。 In the conventional portable terminal, when the operating system (hereinafter referred to as “OS (Operating System)”) is updated, it is necessary to stop the operation of the application during the update period. For this reason, during the update period, the user cannot use the application operation (hereinafter referred to as “function”), so the update is performed during a time period in which the user's use frequency decreases, such as a midnight time period. It was broken. However, unlike a general-purpose computer, an embedded system such as a portable terminal is assumed to continue to operate for 24 hours and 365 days, and the function must be stopped.
サーバ分野においては、無停止でアップデートを行う2つの手法が提案されている。一つ目は、主系統の他に待機系統を用意し、主系統のアップデート中には待機系統で処理を行うもの(従来技術1)である(たとえば、下記特許文献1,2を参照。)。2つ目は、仮想マシンを運用し、アップデート期間中にOSを含むソフトウェアを仮想マシンで動作させること(従来技術2)である。
In the server field, two methods for updating without stopping have been proposed. The first is to prepare a standby system in addition to the main system, and perform processing in the standby system during the update of the main system (conventional technology 1) (see, for example,
しかしながら、従来技術1および従来技術2の場合、組み込みシステムにおいては、システム規模や費用の増加を招くという問題があった。一方、待機系統や仮想マシンがない場合、アップデートを代行することができないため、アップデートの際に機能を停止しなければならないという問題があった。
However, in the case of the
このように、携帯型端末などの組み込みシステムは24時間365日動かし続けることを想定しており、従来では、更新期間中には、利用者は機能を利用することができず、また、機能を停止させなければならないことが問題となっていた。 As described above, it is assumed that an embedded system such as a portable terminal will continue to operate for 24 hours 365 days. Conventionally, the user cannot use the function during the update period, and the function cannot be used. The problem was that it had to be stopped.
本発明は、上述した従来技術による問題点を解消するため、システム規模や費用の低減化を図りつつ、OSの無停止アップデートを実現することができるマルチコアプロセッサシステム、制御プログラム、および制御方法を提供することを目的とする。 The present invention provides a multi-core processor system, a control program, and a control method capable of realizing a non-disruptive update of an OS while reducing the system scale and cost in order to solve the above-described problems caused by the prior art. The purpose is to do.
本発明の一観点によれば、複数のコアと、前記複数のコアで実行される第1のブートプログラムおよび前記複数のコアがブート時にアクセスするブートアドレスを記憶する記憶部とを有するマルチコアプロセッサシステムであって、前記複数のコアのうちの第1のコアは、前記記憶部において前記第1のブートプログラムの記憶領域と異なる記憶領域に第2のブートプログラムを書き込み、前記第1のブートプログラムに基づきブートした前記複数のコアのうち、プロセスが割り当てられていない第2のコアがリブート時に参照する参照領域を前記第1のブートプログラムの記憶領域から前記第2のブートプログラムの記憶領域に変換し、変換後の前記参照領域を指定するリブート指示を前記第2のコアへ通知するマルチコアプロセッサシステム、制御プログラム、および制御方法を提供する。 According to one aspect of the present invention, a multi-core processor system having a plurality of cores, and a storage unit that stores a first boot program executed by the plurality of cores and a boot address accessed by the plurality of cores at the time of booting The first core of the plurality of cores writes a second boot program in a storage area different from the storage area of the first boot program in the storage unit, and stores the second boot program in the first boot program. A reference area to which a second core to which a process is not assigned among the plurality of cores booted based on the reference is rebooted is converted from the storage area of the first boot program to the storage area of the second boot program A multi-core processor system that notifies the second core of a reboot instruction that specifies the converted reference area Arm, provides a control program, and control method.
本マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、システム規模や費用の低減化を図りつつ、OSの無停止アップデートを実現することができるという効果を奏する。 According to the present multi-core processor system, control program, and control method, there is an effect that non-stop update of the OS can be realized while reducing the system scale and cost.
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、制御プログラム、および制御方法の好適な実施の形態を詳細に説明する。 Exemplary embodiments of a multicore processor system, a control program, and a control method according to the present invention will be explained below in detail with reference to the accompanying drawings.
(マルチコアプロセッサシステムのハードウェア構成)
図1は、実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。図1において、マルチコアプロセッサシステム100は、CPU(Central Processing Unit)♯Mと、CPU#Nと、調停回路102と、共有メモリ103と、ストレージ104と、I/F(InterFace)105と、を備えている。また、各構成部は、バス101によってそれぞれ接続されている。
(Hardware configuration of multi-core processor system)
FIG. 1 is a block diagram of a hardware configuration of the multi-core processor system according to the embodiment. In FIG. 1, a
ここで、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのCPU#MとCPU#Nの2つのプロセッサが並列に接続されているプロセッサ群を例に挙げて説明する。 Here, the multi-core processor is a processor equipped with a plurality of cores. If a plurality of cores are mounted, a single processor having a plurality of cores may be used, or a processor group in which single core processors are arranged in parallel may be used. In the present embodiment, in order to simplify the description, a processor group in which two processors of single core CPU #M and CPU #N are connected in parallel will be described as an example.
CPU#MとCPU#Nは、独立して動作可能なコアとキャッシュとレジスタなどを備えている。ストレージ104に記憶されているプログラムは、CPU#MまたはCPU#Nによって共有メモリ103にマッピングされ、ロードされることで、コーディングされている処理をCPU#MまたはCPU#Nに実行させることとなる。
The CPU #M and CPU #N include a core, a cache, a register, and the like that can operate independently. The program stored in the
調停回路102は、別々のCPUから同時に共有メモリ103へのアクセスが発生しても競合しないように調停する回路である。調停回路102内の優先度の情報は、CPUごとの優先度を示す情報であり、調停回路102は優先度の情報に基づいて共有メモリ103へのアクセスを調停する。本実施の形態では、優先度は高いか否かの2段階とする。高優先は優先度が高いことを示し、低優先は優先度が高くないことを示す。
The
共有メモリ103は、CPU#Mローカル領域110やCPU#Nローカル領域111を有するメモリである。共有メモリ103は、たとえば、ROM(Read Only Memory)、RAM(Randam Access Memory)などにより構成されている。たとえば、RAMは、CPU#MとCPU#Nのワークエリアとして使用される。
The shared
ストレージ104は、MBR108と、旧ブートプログラムの記憶領域(以下、「旧ブートプログラム領域109」)と、ユーザのファイルシステム領域を有している。ストレージ104は、たとえば、フラッシュROMやハードディスクドライブなどにより構成されている。
The
MBR(Master Boot Record)108とは、CPU#MやCPU#Nの起動時に最初に読み込まれるストレージ104上の先頭部分(セクタ)である。MBR108には、ストレージ104内に収められたどのOSをどのように起動するかなどの情報が記録され、具体的には、ブートストラップローダ、パーティションテーブル、ブートシグニチャがそれぞれ格納されている。
The MBR (Master Boot Record) 108 is a head portion (sector) on the
ブートストラップローダには、起動用のプログラムが格納されている。パーティションテーブルにはブートプログラムが格納されている開始アドレスおよび終了アドレスが示されている。ブートシグニチャには0xAA55という値が識別子として格納され、該ブートシグニチャに0xAA55が格納されていればMBR108が有効であることを示し、0xAA55が格納されていなければMBR108が無効であることを示している。
The bootstrap loader stores a startup program. The partition table shows a start address and an end address where the boot program is stored. The boot signature stores a value of 0xAA55 as an identifier. If 0xAA55 is stored in the boot signature, the
ここで、ブートプログラムとは、OSの中核部分のプログラムである。たとえば、Linux(登録商標)の場合、OSの中核部分はカーネルである。旧ブートプログラム領域109は、旧ブートプログラムが記憶されている領域であり、該領域の開始アドレスから終了アドレスはパーティションテーブルに記憶されている。本実施の形態で示すブートプログラムの新・旧は、先にストレージ104に記憶されているか否か、または版数が更新されているか否かを示している。
Here, the boot program is a core program of the OS. For example, in the case of Linux (registered trademark), the core part of the OS is a kernel. The old
CPU#M(またはCPU#N)を起動するとまずMBR108が読み込まれ、ブートストラップローダに格納されている起動用のプログラムにコーディングされている処理がCPU#M(またはCPU#N)に実行される。ブートストラップローダはパーティションの位置や大きさなどを記録したパーティションテーブルを読み込み、OSの旧ブートプログラムの開始アドレスを読み込む。
When CPU #M (or CPU #N) is activated,
ここで、CPU#Mは旧ブートプログラムを読み込み、読み込んだ旧ブートプログラムを共有メモリ103にマッピングする。CPU#Mがマッピングした旧ブートプログラムの共有メモリ103内の領域が、上述のCPU#Mローカル領域110である。そして、CPU#Mが、マッピングした旧ブートプログラムにコーディングされている処理を旧OS(マスタ)122として起動する。
Here, the CPU #M reads the old boot program and maps the read old boot program to the shared
一方、CPU#Nは旧ブートプログラムを読み込み、読み込んだ旧ブートプログラムを共有メモリ103にマッピングする。CPU#Nがマッピングした旧ブートプログラムの共有メモリ103内の領域が、上述のCPU#Nローカル領域111である。そして、CPU#Nが、マッピングした旧ブートプログラムにコーディングされている処理をマスタOSの旧OS(スレーブ)123として起動する。
On the other hand, the CPU #N reads the old boot program and maps the read old boot program to the shared
そして、I/F105は、ネットワーク106と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F105には、たとえばモデムなどを採用することができる。I/F105は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク106に接続され、このネットワーク106を介してOSの更新データ配信元107に接続される。
The I /
つぎに、ハイパーバイザ121は、CPU#MとCPU#Nなどのハードウェア上で直接動作するプログラムであり、該ハードウェア内のレジスタに記憶されているプログラムである。ハイパーバイザ121はCPUごとに独立して動作するが、すべて同一処理を実施するため、図1では省略してハイパーバイザ121のみ記載している。
Next, the
なお、たとえば、後述する旧ブートプログラムの削除処理であれば、複数のハイパーバイザ121が一つしか存在しない旧ブートプログラムを削除しているようであるが、最も早く削除処理まで処理がたどり着いたCPUのハイパーバイザ121が削除を行う。よって、あとから他のCPUのハイパーバイザ121が削除処理を行っても破棄する旧ブートプログラムはすでに存在しないだけである。
For example, in the case of the old boot program deletion process described later, it seems that the old boot program in which only one
ハイパーバイザ121は、CPU#MやCPU#N内のレジスタを直接参照したり、CPU#MやCPU#N内のレジスタの情報を読み出したり、CPU#MやCPU#N内のレジスタの情報を書き換えたりする特権命令を実施することができる。
The
さらに、CPU#MやCPU#Nへのリブート指示もハイパーバイザ121の特権命令である。ハイパーバイザ121によるリブート指示とは、具体的には、パーティションテーブル内に記述されている旧ブートプログラム領域109の開始アドレスにジャンプするようにCPU#MやCPU#Nへ指示することである。本実施の形態では、新ブートプログラムの記憶領域(以下、「新ブートプログラム領域」と称する。)の開始アドレスへジャンプするようにCPU#MやCPU#Nへ指示することで、CPU#MやCPU#Nは新ブートプログラムでOSを起動する。
Further, a reboot instruction to the CPU #M and CPU #N is also a privileged instruction of the
旧OS(マスタ)122および旧OS(スレーブ)123は、ハイパーバイザ121上で動作するソフトウェアである。OSにおけるマスタ・スレーブとCPU間の接続関係におけるマスタ・スレーブとは意味が異なる。マスタOS(本実施の形態では旧OS(マスタ)122)ではプロセスの割り当てを決定するスケジューラを動かし、スレーブOS(本実施の形態では旧OS(スレーブ)123)はスケジューラにより割り当てられたプロセスを実行する。
The old OS (master) 122 and the old OS (slave) 123 are software that operates on the
マスタOSは、プロセスの割り当て結果をタスクテーブルに登録する。ここで、タスクテーブルは、一般的なOSで管理されているプロセス情報のテーブルである。起動時間、メモリリソース、プロセス番号、起動したユーザ名、実行条件(リンクしているOSがサービスするライブラリの版数など)、実行形式ファイルのパスなどが記載されている。すなわち、CPU#Mは、旧OS(マスタ)122によりタスクテーブルから起動時間や実行条件を読み出すことで、各アプリケーション(プロセス)がどのOSに割り当てられているか、どのアプリケーション(プロセス)が実行終了したかを監視することができる。 The master OS registers the process allocation result in the task table. Here, the task table is a table of process information managed by a general OS. The boot time, memory resource, process number, name of the booted user, execution conditions (such as the version of the library serviced by the linked OS), and the path of the executable file are described. That is, the CPU #M reads the startup time and execution conditions from the task table by the old OS (master) 122, which OS (assignment) each application (process) is assigned to, and which application (process) has been executed. Can be monitored.
また、更新検出アプリ131は、OS上で動作するアプリケーションプログラムであり、ブートプログラムの更新を検出する。更新検出アプリ131は、旧OS(マスタ)122上に割り当てられている。また、GUI(Graphic User Interface)のプロセスであるメインプロセス133が旧OS(マスタ)122に割り当てられている。
The
ダウンローダ132は、OS上で動作するアプリケーションプログラムであり、ブートプログラムやライブラリをダウンロードする。ダウンローダ132は、旧OS(マスタ)122と旧OS(スレーブ)123のうちいずれのOS上で動作しても良いが、ここでは、旧OS(スレーブ)123に割り当てられている。
The
ダウンローダ132は、I/F105を介してOSの更新データ配信元107から新ブートプログラムをダウンロードし、静的ベリファイを実施する。静的ベリファイとは、ブートプログラムのバイナリデータに誤りがないか、規格に従っているかなどを検査することである。動的ベリファイとは、新ブートプログラムで正常にブートされるかを検査することである。
The
(マルチコアプロセッサシステム100の機能的構成)
図2は、マルチコアプロセッサシステム100の機能的構成を示すブロック図である。マルチコアプロセッサシステム100で起動されているハイパーバイザ121は、設定部201と、受付部202と、判断部203と、変換部204と、通知部205と、検出部206と、削除部207と、を含む構成である。上述のようにハイパーバイザ121は通知プログラムを備えるプログラムであるため、ストレージ104または共有メモリ103内のROMに記憶されたハイパーバイザ121をCPU#MおよびCPU#Nに実行させることにより、各機能(設定部201から削除部207)を実現する。
(Functional configuration of multi-core processor system 100)
FIG. 2 is a block diagram showing a functional configuration of the
まず、設定部201は、新ブートプログラムの更新指示を受け付けると、旧ブートプログラム領域109と所定のマスク値に基づいて新ブートプログラム領域を設定する。
First, upon receiving an instruction to update a new boot program, the
つぎに、受付部202は、設定部201により新ブートプログラム領域が設定された後、新ブートプログラムのダウンロードに関する旧ブートプログラム領域109へのアクセスの入力を受け付ける。
Next, after the new boot program area is set by the
判断部203は、受付部202により受け付けられたアクセスがライトアクセスであるかリードアクセスであるかを判断する。
The
変換部204は、判断部203によりアクセスがライトアクセスであると判断された場合、ライトアクセスで指定されたアドレスを、前記所定のマスク値に基づいて新プログラム領域を指定するアドレスに変換する。
When the
通知部205は、アクセスがリードアクセスの場合、リードアクセスで指定されたアドレスへのアクセス指示をリードアクセスのアクセス元へ通知する。一方、通知部205は、アクセスがライトアクセスの場合、変換部204による変換後のアドレスへのアクセス指示をライトアクセスのアクセス元へ通知する。つぎに、新ブートプログラムがダウンロードされた後の処理について説明する。
When the access is a read access, the
検出部206は、マルチコアプロセッサの中で旧ブートプログラムを用いてブートしたCPUのうち、プロセスが割り当てられていないCPUを検出する。本実施の形態では、後述するがOSはプロセスが割り当てられていないコアを検出し、ハイパーバイザ121へ検出したコアにプロセスが割り当てられていないことを通知する。そして、ハイパーバイザ121はこの通知を受け付けることをプロセスが割り当てられていないコアを検出するとしている。
The
変換部204は、検出部206によりプロセスが割り当てられていないCPUが検出されると、参照領域を旧ブートプログラム領域109から新ブートプログラムの記憶領域に変換する。
When the detecting
通知部205は、変換部204よる変換後の参照領域を指定するリブート指示を完了したCPUへ通知する通知する。
The
また、検出部206は、プロセスが割り当てられていないCPUが検出されない場合、割り当てられていたすべてのプロセスの動作が完了したCPUを検出する。
In addition, when a CPU to which no process is assigned is not detected, the
そして、変換部204は、検出部206により該完了したCPUが検出されると、参照領域を旧ブートプログラム領域109から新ブートプログラム領域に変換する。通知部205は、変換部204よる変換後の参照領域を指定するリブート指示を完了したCPUへ通知する通知する。
When the detecting
変換部204は、通知部205によりリブート指示が通知されると、記憶装置のマスターブートレコードに記憶されている旧ブートプログラム領域109を指定するアドレスを所定のマスク値に基づき新ブートプログラム領域を指定するアドレスに変換する。
When the
削除部207は、変換部204により記憶装置のマスターブートレコードに記憶されている旧ブートプログラム領域109が変更されると、旧ブートプログラム領域109に格納されている旧ブートプログラムを削除する。
When the
以上を踏まえて図を用いてマルチコアプロセッサシステム100の詳細な動作について説明する。
Based on the above, detailed operations of the
図3は、新ブートプログラムのダウンロード準備例とダウンロード例を示す説明図である。まず、更新検出アプリ131がI/Fを介してブートプログラムへの更新を検出し、(1)旧OS(マスタ)122へブートプログラムの更新を通知する。つぎに、旧OS(マスタ)122がブートプログラムの更新を受け付けると、(2)ハイパーバイザ121へブートプログラムの更新を通知する。そして、ハイパーバイザ121が新ブートプログラムの更新を受け付けると、(3)新ブートプログラム領域112を所定のマスク値と旧ブートプログラムの領域に基づいて設定する。
FIG. 3 is an explanatory diagram illustrating a download preparation example and a download example of a new boot program. First, the
図4は、新ブートプログラム領域112が設定される例を示す説明図である。ここで、(3)新ブートプログラムの領域の設定について詳細例を説明する。ハイパーバイザ121はMBR108のパーティションテーブル401を参照し、旧ブートプログラム領域109の開始アドレスおよび終了アドレスを取得する。ハイパーバイザ121は旧ブートプログラム領域109の開始アドレスとマスク値との論理和を取ることにより新ブートプログラム領域112の開始アドレスを算出する。
FIG. 4 is an explanatory diagram showing an example in which the new
ハイパーバイザ121は旧ブートプログラム領域109の終了アドレスとマスク値との論理和を取ることにより新ブートプログラム領域112の終了アドレスを算出する。ハイパーバイザ121は、ストレージ104内の算出した新ブートプログラムの開始アドレスが示す領域から算出した新ブートプログラムの終了アドレスが示す領域までを新ブートプログラムの領域として確保する。
The
図3に戻って、(4)ハイパーバイザ121が旧OS(マスタ)122へダウンロード開始指示を通知し、新ブートプログラムのダウンローダ132および静的ベリファイに関する旧ブートプログラムへのアクセスを監視する。旧OS(マスタ)122がダウンロード開始通知を受け付けると、(5)ダウンローダ132へダウンロード開始指示を通知する。そして、ダウンローダ132はダウンロード開始指示を受け付けると、I/F105を介してOSの更新データ配信元107から新ブートプログラムをダウンロードする。
Returning to FIG. 3, (4) the
そして、ダウンローダ132が新ブートプログラムをダウンロード中、旧ブートプログラムへのライトアクセスを行うために(6)旧OS(スレーブ)123へ旧ブートプログラムへのアクセスを入力する。旧OS(スレーブ)123が、新ブートプログラムのダウンロードに関する旧ブートプログラムへのアクセスを受け付けると、(7)ハイパーバイザ121へ該アクセスを入力する。
Then, during the download of the new boot program, the
そして、ハイパーバイザ121が、新ブートプログラムのダウンロードに関する旧ブートプログラムへのアクセスを受け付けると、該アクセスがライトアクセスであるかリードアクセスであるかを判断する。ハイパーバイザ121がライトアクセスであると判断した場合、該ライトアクセスが示すアドレスを所定のマスク値に基づいて新ブートプログラム領域112を指定するアドレスに変換する。
When the
そして、ハイパーバイザ121が、(8)変換後のアドレスへのアクセス指示を旧OS(スレーブ)123へ通知する。一方、ハイパーバイザ121がリードアクセスであると判断した場合、リードアクセスで指定されたアドレスへのアクセス指示を旧OS(スレーブ)123へ通知する。
Then, the hypervisor 121 (8) notifies the old OS (slave) 123 of an instruction to access the converted address. On the other hand, when the
アクセスが指定するアドレスを0x1110とし、所定のマスク値を0x1000とすする。たとえば、リードアクセスの場合、ハイパーバイザ121が0x1110へのアクセス指示を旧OS(スレーブ)123へ通知する。たとえば、ライトアクセスの場合、ハイパーバイザ121が0x1110と0x1000の論理和を算出する(下記式(1))ことで新ブートプログラム領域112を指定するアドレスに変換する。そして、変換後のアドレスへのアクセス指示を旧OS(スレーブ)123へ通知する。
An address designated by access is set to 0x1110, and a predetermined mask value is set to 0x1000. For example, in the case of read access, the
ブートプログラム領域を指定するアドレス=0x1110+0x1000
=0x0110 ・・・(1)
Address specifying the boot program area = 0x1110 + 0x1000
= 0x0110 (1)
ここで、「+」が論理和を示している。よって、ハイパーバイザ121が0x0110へのアクセス指示を旧OS(スレーブ)123へ通知する。
Here, “+” indicates a logical sum. Therefore, the
旧OS(スレーブ)123は、ハイパーバイザ121からアクセス指示を受け付けると、(9)ダウンローダ132へアクセス指示を通知する。図3では、ライトアクセスを示しているため、ダウンローダ132は、(10)変換後のアドレスへのアクセスを実行する。
When the old OS (slave) 123 receives an access instruction from the
図5は、CPU#Nがリブートされる例を示す説明図である。新ブートプログラム領域112への新ブートプログラムのダウンロード後、更新検出アプリ131が(11)更新条件情報を旧OS(マスタ)122へ通知する。更新条件情報は、実行制約と、対象版数と、更新実施CPU数と、緊急度の情報とを有している。緊急度の情報は緊急度が高いか否かに関する情報である。
FIG. 5 is an explanatory diagram illustrating an example in which the CPU #N is rebooted. After downloading the new boot program to the new
旧OS(マスタ)122は、更新条件情報を受け付けると、受け付けた更新条件情報から緊急度の情報を読み出し、読み出した緊急度の情報が、緊急度が高いことを示す場合、タスクテーブルを用いて更新実施CPUに割り当てられているプロセスを特定し、(12)強制マイグレートする。ここでは、プロセス134が特定される。強制マイグレートにより更新実施CPUに割り当てられているプロセス134がCPU#Mに割り当てられている。
When the old OS (master) 122 receives the update condition information, the old OS (master) 122 reads the urgency level information from the received update condition information. If the read urgency level information indicates that the urgency level is high, the old OS (master) 122 uses the task table. The process assigned to the update execution CPU is specified, and (12) forced migration is performed. Here,
ここで、更新実施CPUをCPU#Nとする。更新実施CPUとは、他のCPUに先だって新ブートプログラムでリブートするCPUである。更新実施CPUの決定方法については、少なくとも旧OSへのプロセスの割り当てが可能なマスタOSが旧OSの中で最後にリブートされればよいため、特に限定しない。 Here, the update execution CPU is CPU # N. The update execution CPU is a CPU that reboots with a new boot program prior to other CPUs. The method for determining the update execution CPU is not particularly limited because at least a master OS capable of assigning a process to the old OS may be rebooted last in the old OS.
たとえば、4つのCPUによりマルチコアプロセッサが構成されている場合、マスタOSの処理を実行するCPUを除く残余のCPUから2つのCPUを更新実施CPUとする。そして、マスタOSの処理を実行するCPUともう一つのCPUを更新実施CPUがリブート後にリブートするCPUとしてもよい。また、マスタOSの処理を実行するCPUを除く残余のCPUをすべて更新実施CPUとしてもよい。 For example, when a multi-core processor is configured by four CPUs, two CPUs from the remaining CPUs excluding the CPU that executes the processing of the master OS are set as update execution CPUs. The CPU that executes the process of the master OS and another CPU may be replaced with the CPU that is rebooted after the update execution CPU reboots. Further, all the remaining CPUs other than the CPU that executes the process of the master OS may be the update execution CPU.
また、読み出した緊急度の情報が、緊急度が高くない(緊急度が低い)ことを示す場合、旧OS(マスタ)122が、マルチコアプロセッサのうちマスタOSを動作するCPUを除くCPUからいずれのプロセスも割り当てられていないCPUを検出する。CPU#Nには、プロセスが割り当てられているため、いずれのプロセスも割り当てられていないCPUは検出されない。つぎに、旧OS(マスタ)122が、CPU#Nへのディスパッチを禁止し、CPU#Nに割り当てられているプロセスが終了するのを検出する。 When the read urgency level information indicates that the urgency level is not high (the urgency level is low), the old OS (master) 122 is one of the CPUs other than the CPU that operates the master OS among the multi-core processors. A CPU to which no process is assigned is detected. Since a process is assigned to CPU #N, a CPU to which no process is assigned is not detected. Next, the old OS (master) 122 prohibits dispatching to the CPU #N, and detects that the process assigned to the CPU #N is terminated.
そして、強制マイグレートまたはプロセスの終了によってCPU#Nに割り当てられていたプロセスが無くなると、(13)旧OS(マスタ)122がCPU#Nに割り当てられていたプロセスが完了したこと(または、更新実施CPUでもよい。)およびメモリアクセス制限指示をハイパーバイザ121へ通知する。ハイパーバイザ121が該通知を受け付けると、(14)共有メモリ103のアクセス制限を開始する。ハイパーバイザ121が共有メモリ103のアクセス制限を開始すると、たとえば、各OSやアプリケーションはハイパーバイザ121からのアクセス指示を受け付けるまで共有メモリ103へアクセスできないこととする。
Then, when there is no process assigned to CPU #N due to forced migration or process termination, (13) the process that old OS (master) 122 has been assigned to CPU #N is completed (or updated) The execution CPU may be used) and a memory access restriction instruction is notified to the
そして、ハイパーバイザ121が、共有メモリ103のアクセス制限を開始した後、ブートプログラムの参照領域を旧ブートプログラム領域109から新ブートプログラム領域112へ変換し、(15)変換後の参照領域を指定するリブート指示を旧OS(スレーブ)123へ通知する。旧OS(スレーブ)123は、リブート指示を受け付けると、(16)新ブートプログラムを参照してリブートを開始する。また、更新対象CPUのうち一つのCPUが新OSをマスタOSとしてリブートする。ここでは、CPU#Nのみであるため、CPU#Nが新OSをマスタOSとしてリブートする。つぎに、ハイパーバイザ121によるメモリアクセス制限について図6から図9を用いて説明する。
Then, after the hypervisor 121 starts to restrict access to the shared
図6は、ハイパーバイザ121によるメモリアクセス制限例を示す説明図(その1)である。図では、(17)リブート中の旧OSから共有メモリ103内のCPU#Mローカル領域110へのアクセスが発生した場合について説明する。ハイパーバイザ121は、メモリアクセス制限を開始すると、アプリケーションから共有メモリ103へのアクセスおよびアクセスのアドレスをすべて検出する。
FIG. 6 is an explanatory diagram (part 1) illustrating an example of memory access restriction by the
ハイパーバイザ121が(18)リブート中の旧OSから共有メモリ103内のCPU#Mローカル領域110へのアクセスとアクセスのアドレスを検出する。ハイパーバイザ121がCPU#Nからのアクセスか否かを判断し、ここでは、旧OS(スレーブ)123からのアクセスであるためCPU#Nからのアクセスであると判断される。つづいて、ハイパーバイザ121が他のCPUのローカル領域へのアクセスか否かを検出したアクセスのアドレスに基づいて判断する。
The hypervisor 121 (18) detects the access to the CPU #M
ここでは、検出されたアクセスがCPU#Mローカル領域110へのアクセスであると判断され、(19)ハイパーバイザ121が旧OS(スレーブ)123の更新失敗を出力、またはダウンロードした新ブートプログラムが不正であることを出力する。出力形式としては、たとえば、ディスプレイへの表示、I/F105による外部装置への送信がある。また、共有メモリ103内の各CPUのローカル領域を除く領域などに記憶することとしてもよい。
Here, it is determined that the detected access is an access to the CPU #M
ブート中であるCPU#NからCPU#MのワークエリアであるCPU#Mローカル領域110へのアクセスは正常なブートプログラムであれば発生しない。したがって、(17)〜(19)により異常であるブートプログラムで更新するのを防止することができる。
Access from the CPU #N being booted to the CPU #M
図7は、ハイパーバイザ121によるメモリアクセス制限例を示す説明図(その2)である。図7では、(20)リブート中の旧OSから共有メモリ103内のCPU#Nローカル領域111へのアクセスが発生した場合について説明する。
FIG. 7 is an explanatory diagram (part 2) of an example of memory access restriction by the
ハイパーバイザ121が(21)リブート中の旧OSから共有メモリ103内のCPU#Nローカル領域111へのアクセスを検出する。ハイパーバイザ121がCPU#Nからのアクセスか否かを判断し、ここでは、旧OS(スレーブ)123からのアクセスであるためCPU#Nからのアクセスであると判断される。つづいて、ハイパーバイザ121が他のCPUのローカル領域へのアクセスか否かを検出したアクセスが指定するアドレスに基づいて判断する。
The hypervisor 121 (21) detects access to the CPU #N
ここでは、検出されたアクセスがCPU#Nローカル領域111へのアクセスであると判断され、ハイパーバイザ121が(22)調停回路102内のCPU#Nに関する優先度の情報を低優先に設定する。そして、ハイパーバイザ121がアクセス指示を通知する。
Here, it is determined that the detected access is access to the CPU #N
ブート中であるCPU#Nは、各種テーブルの初期化やシステムファイルの更新、システムファイルの一時退避・復元、該一時退避・復元にともなうキャッシュデータのフラッシュなどを行う。すなわち、ブート中であるCPU#Nは、通常のアプリケーションを動作中であるCPU#Mと比較して共有メモリ103へのアクセスが多い。
The CPU #N that is booting initializes various tables, updates system files, temporarily saves and restores system files, and flushes cache data associated with the temporary save and restore. That is, the CPU #N that is booting has more access to the shared
上述のように調停回路102内のCPU#Nに関する優先度の情報が低優先に設定されることで、メモリコンテンション(メモリアクセス権の争奪)を防止することができる。そして、ブート中でないCPU#Mで動作しているアプリケーションに影響を与えることなくOSを更新できる。
As described above, the priority information regarding the CPU #N in the
図8は、ハイパーバイザ121によるメモリアクセス制限例を示す説明図(その3)である。図8では、(23)旧OS(マスタ)122から共有メモリ103内のCPU#Mローカル領域110へのアクセスが発生した場合について説明する。
FIG. 8 is an explanatory diagram (part 3) illustrating an example of memory access restriction by the
ハイパーバイザ121が(24)旧OS(マスタ)122から共有メモリ103内のCPU#Mローカル領域110へのアクセスを検出する。ハイパーバイザ121が検出したアクセスがCPU#Nからのアクセスか否かを判断し、ここでは、旧OS(マスタ)122からのアクセスであるためCPU#Nからのアクセスでないと判断される。つづいて、ハイパーバイザ121が他のCPUのローカル領域へのアクセスか否かを検出したアクセスが示すアドレスに基づいて判断する。
The
ここでは、検出されたアクセスがCPU#Mローカル領域110へのアクセスであると判断され、ハイパーバイザ121が(25)調停回路102内のCPU#Nに関する優先度の情報を低優先に設定する。そして、ハイパーバイザ121が旧OS(マスタ)122へアクセス指示を通知する。
Here, it is determined that the detected access is access to the CPU # M
図9は、ハイパーバイザ121によるメモリアクセス制限例を示す説明図(その4)である。図9では、(26)旧OS(マスタ)122から共有メモリ103内のCPU#Nローカル領域111へのアクセスが発生した場合について説明する。
FIG. 9 is an explanatory diagram (part 4) illustrating an example of memory access restriction by the
ハイパーバイザ121が(27)旧OS(マスタ)122から共有メモリ103内のCPU#Nローカル領域111へのアクセスを検出する。ハイパーバイザ121が検出したアクセスがCPU#Nからのアクセスか否かを判断し、ここでは、旧OS(マスタ)122からのアクセスであるためCPU#Nからのアクセスでないと判断される。つづいて、ハイパーバイザ121が共有メモリ103内の他のCPUのローカル領域へのアクセスか否かを検出したアクセスが示すアドレスに基づいて判断する。
The
ここでは、検出されたアクセスがCPU#Nローカル領域111へのアクセスであると判断され、ハイパーバイザ121が(28)アクセスエラーを出力する。出力形式としては、たとえば、ディスプレイへの表示、I/F105による外部装置への送信がある。また、共有メモリ103内の各CPUのローカル領域を除く領域などに記憶することとしてもよい。
Here, it is determined that the detected access is an access to the CPU #N
図10は、CPU#Nで新OSがブートされた例を示す説明図である。図10では、CPU#Nで新OS(マスタ)124がマスタOSとしてブートされている。ここで、新OSと旧OSごとにマスタOSが存在することとなる。新たに割り当てられる新規起動プロセス136は新OS(マスタ)124によりスケジュールされて実行されるため、マルチコアプロセッサシステム100において新旧のマスタOSが共存していても競合することはない。また、プロセス135は旧OS(スレーブ)123がブート中に旧OS(マスタ)122に割り当てられたプロセスである。
FIG. 10 is an explanatory diagram illustrating an example in which the new OS is booted by the CPU #N. In FIG. 10, the new OS (master) 124 is booted as the master OS in CPU #N. Here, a master OS exists for each new OS and old OS. The newly assigned
そして、ハイパーバイザ121が、CPU#Nで新OS(マスタ)124がブートされると、(29)メモリアクセス制限を解除し、(30)調停回路102内の優先度の情報を元に戻す。調停回路102内の優先度の情報は、たとえば、メモリ制限開始直前に共有メモリ103内に複製して記憶しておき、メモリ制限解除後に複製した優先度の情報を用いて調停回路102内の変更された優先度の情報を復元する。
When the new OS (master) 124 is booted by the CPU #N, the
図11は、CPU#Mで新OSをブートさせる準備例を示す説明図である。旧OS(マスタ)122が、旧OS(マスタ)122に割り当てられているプロセスをプロセステーブルに基づいて特定する。特定したプロセスのうち旧ブートプログラムにダイナミックリンクもしくはオープンしているプロセスは、旧OS(マスタ)122で処理を続行する。一方、(31)旧OS(マスタ)122は、特定したプロセスのうち旧ブートプログラムにダイナミックリンクおよびオープンしていないプロセス(ここでは、メインプロセス133と更新検出アプリ131)を新OS(マスタ)124へマイグレートする。
FIG. 11 is an explanatory diagram showing a preparation example for booting the new OS by the CPU #M. The old OS (master) 122 identifies the process assigned to the old OS (master) 122 based on the process table. Among the specified processes, processes that are dynamically linked or opened to the old boot program continue processing in the old OS (master) 122. On the other hand, (31) the old OS (master) 122 replaces the processes (in this case, the
図12は、CPU#Mに割り当てられているプロセスがすべて完了した例を示す説明図である。図12では、旧OS(マスタ)122に割り当てられていたプロセスの処理が終了した。すなわち、旧OS(マスタ)122により旧OS(マスタ)122に割り当てられているプロセスが特定されない場合である。そして、(32)旧OS(マスタ)122がハイパーバイザ121へ旧OS(マスタ)122に割り当てられているプロセスがすべて完了したことを通知する。
FIG. 12 is an explanatory diagram illustrating an example in which all processes assigned to the CPU #M are completed. In FIG. 12, the process of the process assigned to the old OS (master) 122 is completed. That is, the process assigned to the old OS (master) 122 by the old OS (master) 122 is not specified. Then, (32) the old OS (master) 122 notifies the
(33)ハイパーバイザ121が該通知を受け付けると、MBR108に記憶されているパーティションテーブル401が示すブートプログラムの参照領域を新ブートプログラム領域112に変換する。そして、(34)ハイパーバイザ121が旧OS(マスタ)122へリブート指示を通知する。すでにパーティションテーブル401が示すブートプログラムの参照領域は変換済みであるため、(35)旧OS(マスタ)122はリブート指示を受け付けると、新ブートプログラムでリブートを開始する。ここで、旧OS(マスタ)122は新OS(スレーブ)125としてブートされる。そして、(36)ハイパーバイザ121が旧ブートプログラムを廃棄する。
(33) When the
図13は、すべてのCPUで新OSがブートされた例を示す説明図である。図13では、旧OS(マスタ)122が新OS(スレーブ)125として起動されている。さらに、ストレージ104内での旧ブートプログラムの領域が空いている。
FIG. 13 is an explanatory diagram showing an example in which the new OS is booted by all the CPUs. In FIG. 13, the old OS (master) 122 is activated as the new OS (slave) 125. Furthermore, the area of the old boot program in the
(マルチコアプロセッサシステムによるOSの更新手順)
図14は、マルチコアプロセッサシステム100によるOSの更新手順を示すフローチャート(その1)である。ここでは、ハイパーバイザ121と旧OS(マスタ)122とダウンローダ132と更新検出アプリ131によるダウンロード開始前とダウンロードおよび静的ベリファイ時の処理手順を説明する。まず、更新検出アプリ131がブートプログラムの更新を検出し(ステップS1401)、更新検出アプリ131がブートプログラムの更新を検出した場合、旧OS(マスタ)122へブートプログラムの更新を通知する(ステップS1402)。旧OS(マスタ)122が、ブートプログラムの更新を受け付けると、ハイパーバイザ121へブートプログラムの更新を通知する(ステップS1403)。
(OS update procedure by multi-core processor system)
FIG. 14 is a flowchart (part 1) illustrating the OS update procedure by the
ハイパーバイザ121が、ブートプログラムの更新を受け付けると、新ブートプログラム領域を旧ブートプログラムと所定のマスク値に基づいて設定し、旧OS(マスタ)122へダウンロード開始指示を通知する(ステップS1404)。そして、ハイパーバイザ121が、ブートプログラム領域へのブートプログラムに関するアクセスを監視する(ステップS1405)。アクセスの監視は、ステップS1409〜ステップS1411までの処理を指す。
When the
旧OS(マスタ)122が、ハイパーバイザ121からのダウンロード開始指示を受け付けると、ダウンローダ132へダウンロード開始指示を通知する(ステップS1406)。そして、ダウンローダ132が、ダウンロード開始指示を受け付けると、ダウンロードと静的ベリファイを開始する(ステップS1407)。ダウンローダ132が、ダウンロード中や静的ベリファイ中にストレージへのアクセスを行う場合、旧OS(マスタ)122へアクセスを入力し、ダウンローダ132を動かすOSが、ストレージへのアクセスを受け付けると、ハイパーバイザ121へアクセスを入力する(ステップS1408)。
When the old OS (master) 122 receives a download start instruction from the
そして、ハイパーバイザ121が、アクセスの入力を受け付けると、受け付けたアクセスがライトアクセスであるかリードアクセスであるかを判断する(ステップS1409)。ハイパーバイザ121が、該アクセスがライトアクセスであると判断した場合(ステップS1409:ライトアクセス)、ライトアクセスで指定されたアドレスを所定のマスク値に基づいて変換する(ステップS1410)。そして、ハイパーバイザ121が、変換後のアドレスへのアクセス指示を、ダウンローダ132を動かすOSへ通知する(ステップS1411)。
When the
一方、ハイパーバイザ121が、該アクセスがリードアクセスであると判断した場合(ステップS1409:リードアクセス)、リードアクセスで指定されたアドレスへのアクセス指示を通知する(ステップS1411)。ステップS1411のつぎに、ダウンローダ132を動かすOSがアクセス指示を受け付けると、ダウンローダ132へアクセス指示を通知し(ステップS1412)、ダウンローダ132が、アクセス指示を受け付けると、ストレージへアクセスする(ステップS1413)。ステップS1407とステップS1413間の矢印は、アクセス結果に沿ってダウンロードと静的ベリファイが続行されることを示している。
On the other hand, when the
図15は、マルチコアプロセッサシステム100によるOSの更新手順を示すフローチャート(その2)である。ここでは、ハイパーバイザ121と旧OS(マスタ)122とダウンローダ132によるダウンロードおよび静的ベリファイ後から更新実施CPUのリブートが完了するまでの処理手順を説明する。更新実施CPUには、旧OS(マスタ)122が含まれていないこととする。まず、ダウンローダ132が、ダウンロードと静的ベリファイを完了させると(ステップS1501)、更新条件情報を通知する(ステップS1502)。
FIG. 15 is a flowchart (part 2) illustrating the OS update procedure by the
旧OS(マスタ)122が、更新条件情報を受け付けると、更新条件情報から緊急度を読み出し、緊急度を判断する(ステップS1503)。緊急度が高い場合(ステップS1503:高)、旧OS(マスタ)122が、更新実施CPUに割り当てられたプロセスを強制マイグレートし(ステップS1504)、ステップS1507へ移行する。 When the old OS (master) 122 receives the update condition information, the urgency level is read from the update condition information and the urgency level is determined (step S1503). When the degree of urgency is high (step S1503: high), the old OS (master) 122 forcibly migrates the process assigned to the update execution CPU (step S1504), and proceeds to step S1507.
一方、緊急度が低い場合(ステップS1503:低)、旧OS(マスタ)122が、プロセスが割り当てられていないCPUがあるか否かを判断する(ステップS1505)。そして、旧OS(マスタ)122が、プロセスが割り当てられていないCPUがあると判断した場合(ステップS1505:Yes)、プロセスが割り当てられていないCPUを更新実施CPUに設定し(ステップS1506)、ステップS1509に移行する。ここでは、更新実施CPUは、プロセスが割り当てられていないCPUのみである。 On the other hand, when the degree of urgency is low (step S1503: low), the old OS (master) 122 determines whether there is a CPU to which no process is assigned (step S1505). If the old OS (master) 122 determines that there is a CPU to which no process is assigned (step S1505: Yes), the CPU to which no process is assigned is set as the update execution CPU (step S1506), and the step The process moves to S1509. Here, the update execution CPU is only a CPU to which no process is assigned.
そして、旧OS(マスタ)122が、プロセスが割り当てられていないCPUがないと判断した場合(ステップS1505:No)、更新実施CPUへのディスパッチを禁止する(ステップS1507)。そして、旧OS(マスタ)122が、更新実施CPUに割り当てられたプロセスが終了したか否かを判断する(ステップS1508)。旧OS(マスタ)122が、更新実施CPUに割り当てられたプロセスが終了していないと判断した場合、(ステップS1508:No)、ステップS1508へ戻る。 If the old OS (master) 122 determines that there is no CPU to which no process is assigned (step S1505: No), the dispatch to the update execution CPU is prohibited (step S1507). Then, the old OS (master) 122 determines whether or not the process assigned to the update execution CPU has ended (step S1508). When the old OS (master) 122 determines that the process assigned to the update execution CPU has not ended (step S1508: No), the process returns to step S1508.
一方、旧OS(マスタ)122が、更新実施CPUに割り当てられたプロセスが終了したと判断した場合(ステップS1508:Yes)、共有メモリへのアクセス制限指示と更新対象CPUをハイパーバイザ121へ通知する(ステップS1509)。
On the other hand, when the old OS (master) 122 determines that the process assigned to the update execution CPU has ended (step S1508: Yes), the
ハイパーバイザ121が、共有メモリへのアクセス制限指示と更新対象CPUとを受け付けると、アクセス制限を開始する(ステップS1510)。アクセス制限のフローチャートについては後述する。そして、ハイパーバイザ121が、ブートプログラムの参照領域を新ブートプログラム領域に変換する(ステップS1511)。
When the
つぎに、ハイパーバイザ121が、変換後の参照領域を指定するリブート指示を更新実施CPU上のOSへ通知する(ステップS1512)。更新実施CPU上のOSとは、更新実施CPUに処理を実行させているOSである。ここでは、更新実施CPUのうちいずれか一つのCPUへ新ブートプログラムで起動する際にマスタOSとなるように指示する。更新実施CPU上のOSは、リブート指示を受け付けると、リブートし、リブートが完了するとリブートの完了をハイパーバイザ121へ通知する(ステップS1513)。そして、更新実施CPUの全CPUからリブートの完了を受け付けると、共有メモリのアクセス制限を終了し(ステップS1514)、調停回路内の優先度の情報を通常に戻す(ステップS1515)。調停回路内の優先度の情報は、アクセス制限により変更されるため、優先度の情報を通常に戻すとは、アクセス制限開始前の優先度の情報に戻すことを意味する。
Next, the
図16は、ハイパーバイザ121によるメモリアクセス制限の制限処理手順を示すフローチャートである。まず、ハイパーバイザ121が、メモリアクセス制限を開始すると、アプリケーションから共有メモリへのアクセスを検出する(ステップS1601)。つぎに、ハイパーバイザ121が、更新対象CPUからのアクセスか否かを判断する(ステップS1602)。ここで、更新対象CPUは、リブート中である。そして、ハイパーバイザ121が、更新対象CPUからのアクセスであると判断した場合(ステップS1602:Yes)、他のCPUのローカル領域へのアクセスか否かを判断する(ステップS1603)。
FIG. 16 is a flowchart showing a memory access restriction processing procedure performed by the
ハイパーバイザ121が、他のCPUのローカル領域へのアクセスであると判断した場合(ステップS1603:Yes)、更新失敗を出力し(ステップS1604)、復旧する(ステップS1605)。一方、ステップS1602において、ハイパーバイザ121が、更新対象CPUからのアクセスでないと判断した場合(ステップS1602:No)、他のCPUのローカル領域へのアクセスか否かを判断する(ステップS1606)。ハイパーバイザ121が、他のCPUのローカル領域へのアクセスであると判断した場合(ステップ1606:Yes)、アクセスエラーを出力する(ステップS1607)。
If the
一方、ハイパーバイザ121が、他のCPUのローカル領域へのアクセスでないと判断した場合(ステップS1603:No、またはステップS1606:No)、調停回路内の更新対象CPUに関する優先度の情報を低優先に設定する(ステップS1608)。そして、アクセス指示をアクセス元へ通知する(ステップS1609)。なお、ハイパーバイザ121が、メモリアクセス制限終了指示を受け付けるまで、処理を繰り返す。
On the other hand, when the
図17は、マルチコアプロセッサシステム100によるOSの更新手順を示すフローチャート(その3)である。まず、新OSが起動されると、新OS(マスタ)124は、新既プロセスを新OSに割り当てるように制御する(ステップS1701)。つぎに、旧OS(マスタ)122が、旧OSで既動作のプロセスをタスクテーブルに基づいて特定する(ステップS1702)。
FIG. 17 is a flowchart (part 3) illustrating the OS update procedure by the
そして、旧OS(マスタ)122が、旧OSで既動作のプロセスがあるか否かを判断する(ステップS1703)。まず、旧OS(マスタ)122が、旧OSで既動作のプロセスがあると判断した場合(ステップS1703:Yes)、未選択の既動作のプロセスがあるか否かを判断する(ステップS1704)。旧OS(マスタ)122が、未選択の既動作のプロセスがないと判断した場合(ステップS1704:No)、ステップS1702へ戻る。一方、旧OS(マスタ)122が、未選択の既動作のプロセスがあると判断した場合(ステップS1704:Yes)、未選択の既動作のプロセスから任意のプロセスを選択する(ステップS1705)。 Then, the old OS (master) 122 determines whether there is a process already operating on the old OS (step S1703). First, when the old OS (master) 122 determines that there is an already-operated process in the old OS (step S1703: Yes), it determines whether there is an unselected already-processed process (step S1704). When the old OS (master) 122 determines that there is no unselected process already operating (step S1704: No), the process returns to step S1702. On the other hand, when the old OS (master) 122 determines that there is an unselected operation process (step S1704: Yes), an arbitrary process is selected from the unselected operation processes (step S1705).
そして、旧OS(マスタ)122が、選択したプロセスがシステムファイルにダイナミックリンクまたはオープンしているかを判断する(ステップS1706)。旧OS(マスタ)122が、システムファイルにダイナミックリンクまたはオープンしていると判断した場合(ステップS1706:Yes)、ステップS1704に戻る。一方、旧OS(マスタ)122が、システムファイルにダイナミックリンクおよびオープンしていないと判断した場合(ステップS1706:No)、選択したプロセスを新OSへマイグレートし(ステップS1707)、ステップS1704へ戻る。 Then, the old OS (master) 122 determines whether the selected process is dynamically linked or opened to the system file (step S1706). If the old OS (master) 122 determines that the system file is dynamically linked or opened (step S1706: YES), the process returns to step S1704. On the other hand, when the old OS (master) 122 determines that the system file is not dynamically linked and opened (step S1706: No), the selected process is migrated to the new OS (step S1707), and the process returns to step S1704. .
一方、旧OS(マスタ)122が、旧OSで既動作のプロセスがないと判断した場合(ステップS1703:No)、ハイパーバイザ121へ既動作のプロセスがないことを通知する(ステップS1708)。つづいて、ハイパーバイザ121が、パーティションテーブル内の参照領域を新ブートプログラム領域に変換し(ステップS1709)、変換後の参照領域を指定するリブート指示を旧OSへ通知する(ステップS1710)。
On the other hand, when the old OS (master) 122 determines that there is no process already operating on the old OS (step S1703: No), it notifies the
そして、旧OS(マスタ)122を含む旧OSが、リブート指示を受け付けると、新ブートプログラムでリブートする(ステップS1712)。ステップS1710のつぎに、ハイパーバイザ121が、旧ブートプログラムを破棄する(ステップS1711)。
When the old OS including the old OS (master) 122 receives a reboot instruction, the old OS is rebooted with the new boot program (step S1712). Following step S1710, the
以上説明したように、マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、旧ブートプログラムでブートしたコアのうちプロセスが割り当てられていないコアから順に新ブートプログラムでリブートさせるリブート指示を通知する。したがって、リブート指示を通知されて受け付けたコアが新ブートプログラムでリブートする。これにより、空いているコアから直ぐにリブートするため、プロセスを停止させず、OSを無停止で更新することができる。 As described above, according to the multi-core processor system, the control program, and the control method, the reboot instruction for rebooting with the new boot program is notified in order from the core to which no process is assigned among the cores booted with the old boot program. Therefore, the core that has been notified of and received the reboot instruction reboots with the new boot program. As a result, since the system is rebooted immediately from the free core, the OS can be updated without stopping without stopping the process.
また、プロセスが割り当てられていないコアが無い場合、割り当てられているプロセスが完了したコアへ新ブートプログラムでリブートさせるリブート指示を通知することにより、動作中のプロセスを停止させることなくOSを更新できる。 In addition, when there is no core to which no process is assigned, the OS can be updated without stopping the running process by notifying the reboot instruction to reboot the core to which the assigned process has been completed with a new boot program. .
また、新ブートプログラムの更新を受け付けてから、新ブートプログラムをダウンロードする新ブートプログラム領域を設定することで、ストレージ内の容量を効率的に使用できる。 In addition, the capacity in the storage can be used efficiently by setting a new boot program area in which the new boot program is downloaded after accepting the update of the new boot program.
また、リブート指示後にマスターブートレコードのパーティションテーブル内の旧ブートプログラム領域のアドレスを新ブートプログラム領域のアドレスに変換する。これにより、新ブートプログラムでリブートしたCPUの電源が再投入されても、該CPUが新ブートプログラムでブートすることができる。 Further, after the reboot instruction, the address of the old boot program area in the partition table of the master boot record is converted to the address of the new boot program area. Thereby, even if the power of the CPU rebooted with the new boot program is turned on again, the CPU can boot with the new boot program.
100 マルチコアプロセッサシステム
201 設定部
202 受付部
203 判断部
204 変換部
205 通知部
206 検出部
DESCRIPTION OF
Claims (6)
前記複数のコアで実行される第1のブートプログラムおよび前記複数のコアがブート時にアクセスするブートアドレスを記憶する記憶部と
を有するマルチコアプロセッサシステムであって、前記複数のコアのうちの第1のコアは、
前記記憶部において前記第1のブートプログラムの記憶領域と異なる記憶領域に第2のブートプログラムを書き込み、前記第1のブートプログラムに基づきブートした前記複数のコアのうち、プロセスが割り当てられていない第2のコアがリブート時に参照する参照領域を前記第1のブートプログラムの記憶領域から前記第2のブートプログラムの記憶領域に変換し、変換後の前記参照領域を指定するリブート指示を前記第2のコアへ通知する
マルチコアプロセッサシステム。 With multiple cores,
A multi-core processor system comprising: a first boot program that is executed by the plurality of cores; and a storage unit that stores a boot address that is accessed by the plurality of cores during booting. The core is
In the storage unit, a second boot program is written in a storage area different from the storage area of the first boot program, and a process is not allocated among the plurality of cores booted based on the first boot program. A reference area that the second core refers to at the time of rebooting is converted from the storage area of the first boot program into the storage area of the second boot program, and a reboot instruction that specifies the converted reference area is sent to the second boot program A multi-core processor system that notifies the core.
前記記憶部において前記第1のブートプログラムの記憶領域と異なる記憶領域に第2のブートプログラムを書き込む処理と、
前記第1のブートプログラムに基づきブートした前記複数のコアのうち、プロセスが割り当てられていない第2のコアがリブート時に参照する参照領域を前記第1のブートプログラムの記憶領域から前記第2のブートプログラムの記憶領域に変換する処理と、
変換後の前記参照領域を指定するリブート指示を前記第2のコアへ通知する処理と
を実行するマルチコアプロセッサシステムの制御方法。 A control method for a multi-core processor system, comprising: a plurality of cores; a first boot program that is executed by the plurality of cores; and a storage unit that stores a boot address that the plurality of cores accesses during booting. The first of the cores
A process of writing a second boot program in a storage area different from the storage area of the first boot program in the storage unit;
Of the plurality of cores booted based on the first boot program, a second core to which a process is not assigned refers to a reference area that is referred to at the time of rebooting from the storage area of the first boot program. A process of converting to a program storage area;
And a process of notifying the second core of a reboot instruction specifying the reference area after conversion.
前記記憶部において前記第1のブートプログラムの記憶領域と異なる記憶領域に第2のブートプログラムを書き込む処理と、
前記第1のブートプログラムに基づきブートした前記複数のコアのうち、プロセスが割り当てられていない第2のコアがリブート時に参照する参照領域を前記第1のブートプログラムの記憶領域から前記第2のブートプログラムの記憶領域に変換する処理と、
変換後の前記参照領域を指定するリブート指示を前記第2のコアへ通知する処理と
を実行させるマルチコアプロセッサシステムの制御プログラム。 A control program for a multi-core processor system, comprising: a plurality of cores; a first boot program that is executed by the plurality of cores; and a storage unit that stores a boot address that is accessed by the plurality of cores during booting. In the first of the cores,
A process of writing a second boot program in a storage area different from the storage area of the first boot program in the storage unit;
Of the plurality of cores booted based on the first boot program, a second core to which a process is not assigned refers to a reference area that is referred to at the time of rebooting from the storage area of the first boot program. A process of converting to a program storage area;
A control program for a multi-core processor system that executes a process of notifying the second core of a reboot instruction that specifies the reference area after conversion.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013235497A JP5713089B2 (en) | 2013-11-13 | 2013-11-13 | Multi-core processor system, control program, and control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013235497A JP5713089B2 (en) | 2013-11-13 | 2013-11-13 | Multi-core processor system, control program, and control method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012505383A Division JPWO2011114476A1 (en) | 2010-03-17 | 2010-03-17 | Multi-core processor system, notification program, and notification method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014029739A true JP2014029739A (en) | 2014-02-13 |
JP5713089B2 JP5713089B2 (en) | 2015-05-07 |
Family
ID=50202209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013235497A Expired - Fee Related JP5713089B2 (en) | 2013-11-13 | 2013-11-13 | Multi-core processor system, control program, and control method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5713089B2 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10260845A (en) * | 1997-03-19 | 1998-09-29 | Fujitsu Ltd | Multi-cpu system having update processing function of firmware |
JP2004206453A (en) * | 2002-12-25 | 2004-07-22 | Fujitsu Ltd | Shared data access system for multiprocessor |
JP2007219696A (en) * | 2006-02-15 | 2007-08-30 | Fujitsu Ltd | Controller and firmware hot-swap control method therefor |
-
2013
- 2013-11-13 JP JP2013235497A patent/JP5713089B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10260845A (en) * | 1997-03-19 | 1998-09-29 | Fujitsu Ltd | Multi-cpu system having update processing function of firmware |
JP2004206453A (en) * | 2002-12-25 | 2004-07-22 | Fujitsu Ltd | Shared data access system for multiprocessor |
JP2007219696A (en) * | 2006-02-15 | 2007-08-30 | Fujitsu Ltd | Controller and firmware hot-swap control method therefor |
Also Published As
Publication number | Publication date |
---|---|
JP5713089B2 (en) | 2015-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3593241B2 (en) | How to restart the computer | |
RU2639693C1 (en) | Method for resource processing, operating system and device | |
US9384060B2 (en) | Dynamic allocation and assignment of virtual functions within fabric | |
US9658930B2 (en) | Method and device for managing hardware errors in a multi-core environment | |
WO2011114476A1 (en) | Multicore processor system, notification program, and notification method | |
US10635499B2 (en) | Multifunction option virtualization for single root I/O virtualization | |
EP3992805A1 (en) | Live migration method for virtual machine and communication device | |
US9639486B2 (en) | Method of controlling virtualization software on a multicore processor | |
JP2009145931A (en) | Method of migration between virtual computer and physical computer, and computer system thereof | |
WO2012100535A1 (en) | Updating method and computer system for hypervisor components | |
US9571584B2 (en) | Method for resuming process and information processing system | |
CN116521209B (en) | Upgrading method and device of operating system, storage medium and electronic equipment | |
US9804877B2 (en) | Reset of single root PCI manager and physical functions within a fabric | |
US20160077847A1 (en) | Synchronization of physical functions and virtual functions within a fabric | |
CN111090546A (en) | Method, device and equipment for restarting operating system and readable storage medium | |
WO2023125482A1 (en) | Cluster management method and device, and computing system | |
US10747567B2 (en) | Cluster check services for computing clusters | |
US20190250994A1 (en) | Backup control method and backup control system | |
JP5713089B2 (en) | Multi-core processor system, control program, and control method | |
WO2022041839A1 (en) | Online migration method and system for bare metal server | |
JP2012168710A (en) | Information processing system, information processing method, and control program | |
JP5557612B2 (en) | Computer and transfer program | |
CN114115703A (en) | Bare metal server online migration method and system | |
US20220391254A1 (en) | Information processing device, operation control method, and computer-readable recording medium storing operation control program | |
US20240020103A1 (en) | Parallelizing data processing unit provisioning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131213 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140729 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140826 |
|
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: 20150210 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150223 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5713089 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |