(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-30
(45)【発行日】2024-06-07
(54)【発明の名称】管理装置、オーダーエントリシステム及び管理プログラム
(51)【国際特許分類】
G07G 1/12 20060101AFI20240531BHJP
G06F 11/16 20060101ALI20240531BHJP
G06F 11/14 20060101ALI20240531BHJP
【FI】
G07G1/12 361C
G06F11/16 666
G06F11/14 679
(21)【出願番号】P 2020210720
(22)【出願日】2020-12-18
【審査請求日】2023-10-05
(73)【特許権者】
【識別番号】313006647
【氏名又は名称】セイコーソリューションズ株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】菊地 善行
【審査官】山本 裕太
(56)【参考文献】
【文献】特開2010-026862(JP,A)
【文献】特開2005-149248(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G07G 1/00 - 5/00
G06F 11/16
G06F 11/14
(57)【特許請求の範囲】
【請求項1】
データを格納する不揮発性メモリに対し、前記データに係るファイルシステムのメタデータを格納する領域である対象領域を設定する設定部と、
前記不揮発性メモリに対してデータの書き込み要求が発生した場合、前記対象領域及び揮発性メモリに確保されたバックアップ領域に対してメタデータの書き込みを行う書込部と、
前記対象領域に対してメタデータの読み込み要求が発生した場合、かつ、前記読み込み要求の前記メタデータに異常が生じている場合、前記バックアップ領域に書き込まれている前記読み込み要求に対応する前記メタデータを返す応答部と、
を備える管理装置。
【請求項2】
前記書込部は、前記書き込み要求を受けて、メタデータを含むデータをブロック単位で、前記対象領域及び前記バックアップ領域に書き込み、
前記応答部は、前記読み込み要求を受けて、メタデータを含むデータをブロック単位で前記バックアップ領域から読み込む、
請求項1に記載の管理装置。
【請求項3】
予め定めた時間ごとに前記対象領域のデータの走査を行い、前記走査による読み込み時に異常が生じている場合、前記バックアップ領域のメタデータを前記対象領域に上書きする第1復旧部を備える請求項1又は請求項2に記載の管理装置。
【請求項4】
前記第1復旧部は、前記バックアップ領域のメタデータを含むデータを、前記対象領域にブロック単位で上書きする、請求項3に記載の管理装置。
【請求項5】
前記対象領域のメタデータと前記バックアップ領域のメタデータとに差異がある場合、前記バックアップ領域のメタデータを前記対象領域に上書きする第2復旧部を備える請求項1から請求項4のいずれか1項に記載の管理装置。
【請求項6】
前記第2復旧部は、前記バックアップ領域のメタデータを含むデータを、前記対象領域にブロック単位で上書きする、請求項5に記載の管理装置。
【請求項7】
請求項1から請求項6のいずれか1項に記載の管理装置と、
前記管理装置と通信し、かつ、顧客の注文情報を入力する入力端末を含む一又は複数の通信装置と、を備えたオーダーエントリシステムであって、
前記管理装置は、
前記不揮発性メモリ及び前記揮発性メモリを含み、
前記書込部は、前記通信装置から受信した注文情報を含むデータ、及びメタデータを前記不揮発性メモリに書き込む、
オーダーエントリシステム。
【請求項8】
コンピュータに、
データを格納する不揮発性メモリに対し、前記データに係るファイルシステムのメタデータを格納する領域である対象領域を設定する処理と、
前記不揮発性メモリに対してデータの書き込み要求が発生した場合、前記対象領域及び揮発性メモリに確保されたバックアップ領域に対してメタデータの書き込みを行う処理と、
前記対象領域に対してメタデータの読み込み要求が発生した場合、かつ、前記読み込み要求の前記メタデータに異常が生じている場合、前記バックアップ領域に書き込まれている前記読み込み要求に対応する前記メタデータを返す処理と、
を実行させるための管理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、管理装置、オーダーエントリシステム及び管理プログラムに関する。
【背景技術】
【0002】
従来、ファミリーレストラン又は居酒屋等の店舗では、来店客からの注文を電子データとして管理するオーダーエントリシステムが利用されている。
【0003】
例えば、特許文献1には、来店客からの注文入力を受け付ける注文入力端末と、当該注文入力端末から送信される注文情報を受信し記憶して、前記注文情報に関する印刷指示を出力する管理端末として機能する情報端末と、を備えたオーダーエントリシステムとしての注文管理システムが開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1の注文管理システムでは、情報端末において、注文入力端末から受信した注文情報をメモリカード等の不揮発性メモリに格納している。当該情報端末では、注文情報を含むデータの処理量が増大することで、当該データに係るファイルシステムのメタデータの書き込みが頻繁に発生する。その結果、不揮発性メモリでは、メタデータを格納する領域及びその近辺においてデータに異常が生じる場合がある。
【0006】
開示の技術は、上記の点に鑑みてなされたものであり、メタデータを格納する領域においてデータに異常が生じても、データの処理を継続可能な管理装置、オーダーエントリシステム及び管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
第1態様に係る管理装置は、データを格納する不揮発性メモリに対し、前記データに係るファイルシステムのメタデータを格納する領域である対象領域を設定する設定部と、前記不揮発性メモリに対してデータの書き込み要求が発生した場合、前記対象領域及び揮発性メモリに確保されたバックアップ領域に対してメタデータの書き込みを行う書込部と、前記対象領域に対してメタデータの読み込み要求が発生した場合、かつ、前記読み込み要求の前記メタデータに異常が生じている場合、前記バックアップ領域に書き込まれている前記読み込み要求に対応する前記メタデータを返す応答部と、を備える。
【0008】
第1態様では、揮発性メモリのバックアップ領域にメタデータを書き込み、不揮発性メモリの対象領域の読み込み時に当該メタデータに異常が生じている場合には、バックアップ領域から当該メタデータを返す。そのため、第1態様によれば、メタデータを格納する領域においてデータに異常が生じても、データの処理を継続することができる。
【0009】
第2態様に係る管理装置は、第1態様に係る管理装置において、前記書込部は、前記書き込み要求を受けて、メタデータを含むデータをブロック単位で、前記対象領域及び前記バックアップ領域に書き込み、前記応答部は、前記読み込み要求を受けて、メタデータを含むデータをブロック単位で前記バックアップ領域から読み込む。
【0010】
第2態様によれば、メタデータを含むデータを所定の単位で処理することができる。
【0011】
第3態様に係る管理装置は、第1態様又は第2態様に係る管理装置において、予め定めた時間ごとに前記対象領域の全てのメタデータの走査を行い、前記走査による読み込み時に異常が生じている場合、前記バックアップ領域のメタデータを前記対象領域に上書きする第1復旧部を備える。
【0012】
第3態様によれば、予め定めた時間ごとに全てのメタデータを走査する。そのため、第3態様によれば、処理のパフォーマンスを低下させることなく、潜伏する異常を検知して、データを復旧する。
【0013】
第4態様に係る管理装置は、第3態様に係る管理装置において、前記第1復旧部は、前記バックアップ領域のメタデータを含むデータを、前記対象領域にブロック単位で上書きする。
【0014】
第4態様によれば、メタデータを含むデータを所定の単位で処理することができる。
【0015】
第5態様に係る管理装置は、第1態様から第4態様のいずれかの態様に係る管理装置において、前記対象領域のメタデータと前記バックアップ領域のメタデータとに差異がある場合、前記バックアップ領域のメタデータを前記対象領域に上書きする第2復旧部を備える。
【0016】
第5態様では、対象領域のメタデータとバックアップ領域のメタデータとに差異がある場合は、対象領域のメタデータをバックアップ領域のメタデータに上書きする。そのため、第5態様によれば、対象領域のデータが壊れている場合にデータの復旧を行うことができる。
【0017】
第6態様に係る管理装置は、前記第2復旧部は、前記バックアップ領域のメタデータを含むデータを、前記対象領域にブロック単位で上書きする。
【0018】
第6態様では、メタデータを含むデータを所定の単位で処理することができる。
【0019】
第7態様に係るオーダーエントリシステムは、第1態様から第6態様のいずれかの態様に係る管理装置と、前記管理装置と通信し、かつ、顧客の注文情報を入力する入力端末を含む一又は複数の通信装置と、を備えたオーダーエントリシステムであって、前記管理装置は、前記不揮発性メモリ及び前記揮発性メモリを含み、前記書込部は、前記通信装置から受信した注文情報を含むデータ、及びメタデータを前記不揮発性メモリに書き込む。
【0020】
第7態様は、入力端末を含む通信装置から受信した注文情報等のデータを管理装置において記憶するオーダーエントリシステムである。そのため、第7態様によれば、管理装置のメタデータを格納する領域においてデータに異常が生じても、顧客の注文処理を継続させることができる。
【0021】
第8態様に係る管理プログラムは、コンピュータに、データを格納する不揮発性メモリに対し、前記データに係るファイルシステムのメタデータを格納する領域である対象領域を設定する処理と、前記不揮発性メモリに対してデータの書き込み要求が発生した場合、前記対象領域及び揮発性メモリに確保されたバックアップ領域に対してメタデータの書き込みを行う処理と、前記対象領域に対してメタデータの読み込み要求が発生した場合、かつ、前記読み込み要求の前記メタデータに異常が生じている場合、前記バックアップ領域に書き込まれている前記読み込み要求に対応する前記メタデータを返す処理と、を実行させる。
【0022】
第8態様では、コンピュータに次の処理を実行させる。すなわち、管理プログラムによりコンピュータは、揮発性メモリのバックアップ領域にメタデータを書き込み、不揮発性メモリの対象領域の読み込み時に当該メタデータに異常が生じている場合には、バックアップ領域から当該メタデータを返す。そのため、第8態様によれば、コンピュータのメタデータを格納する領域においてデータに異常が生じても、データの処理を継続することができる。
【発明の効果】
【0023】
本開示の技術によれば、メタデータを格納する領域においてデータに異常が生じても、データの処理を継続することができる。
【図面の簡単な説明】
【0024】
【
図1】本実施形態に係るオーダーエントリシステムのシステム構成を示す図である。
【
図2】本実施形態に係るコントローラのハードウェア構成を示すブロック図である。
【
図3】本実施形態に係るコントローラの機能構成を示すブロック図である。
【
図4】ファイルシステム形式のメタデータの処理を説明する図である。
【
図5】本実施形態に係るコントローラの管理処理の流れを示すフローチャートである。
【
図6】本実施形態に係るコントローラのバックアップ領域の設定処理の流れを示すフローチャートである。
【
図7】本実施形態に係るコントローラの読み込み/書き込み処理の流れを示すフローチャートである。
【
図8】本実施形態に係るコントローラの書き込み処理を示す図である。
【
図9】本実施形態に係るコントローラの書き込み処理を示す図である。
【
図10】本実施形態に係るコントローラの読み込み処理を示す図である。
【
図11】本実施形態に係るコントローラの走査処理の流れを示すフローチャートである。
【
図12】本実施形態に係るコントローラの走査処理を示す図である。
【発明を実施するための形態】
【0025】
以下、開示の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
【0026】
本実施形態のオーダーエントリシステム1は、例えば、飲食店等の店舗に設置され、顧客の注文の受付処理、注文された品の提供処理、及び会計処理等を行う。
【0027】
図1は、オーダーエントリシステム1のシステム構成図である。
図1に示されるように、オーダーエントリシステム1は、管理装置としてのコントローラ10、POS(Point of sale)システム2、プリンタ4、ルータ6、及び入力端末7、を含んで構成されている。コントローラ10、POSシステム2、プリンタ4、ルータ6、及び入力端末7は、互いに通信可能に構成されている。オーダーエントリシステム1は、ルータ6を介してネットワークNに接続されている。
【0028】
POSシステム2は、売り上げに係る売上情報、商品の内容に係る商品情報、及び会計に係る会計情報等を処理する通信装置である。そして、POSシステム2は、会計情報等をコントローラ10に送信する。
【0029】
プリンタ4は、厨房等に設置され、入力端末7からコントローラ10を介して受信した注文情報を印刷する印刷機能を有する通信装置である。
【0030】
入力端末7は、顧客の注文を注文情報として受け付ける通信装置である。本実施形態の入力端末7は、タブレット端末、スマートフォン及びハンディターミナル等である。タブレット端末の場合は、顧客のいる各テーブルに設置される。また、スマートフォン及びハンディターミナルの場合は、従業員が所持している。そして、入力端末7は、顧客又は従業員による入力操作により注文を受け付けると、注文情報をコントローラ10に送信する。
【0031】
コントローラ10は、オーダーエントリシステム1の全体を管理するサーバ機能を備える通信装置である。そして、コントローラ10は、オーダーエントリシステム1に関するデータを記憶する。オーダーエントリシステム1に関するデータは、上述の注文情報、売上情報、商品情報、会計情報、及び提供情報を含む。また、従業員の出勤情報等の業務情報を含んでいてもよい。なお、本実施形態のオーダーエントリシステム1では、1つのコントローラ10を含んで構成されているが、複数のコントローラ10を含んでもよい。複数のコントローラ10を有することで、冗長構成を実現することができる。
【0032】
図2は、コントローラ10のハードウェア構成を示すブロック図である。コントローラ10は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、入力部15、表示部16、通信インタフェース17、及びカードリーダライタ18を有する。各構成は、バス19を介して相互に通信可能に接続されている。また、カードリーダライタ18にはSD(Secure Digital)メモリカード200が接続されている。
【0033】
CPU11は、中央演算処理ユニットであり、各種プログラムを実行したり、各部を制御したりする。すなわち、CPU11は、ROM12からプログラムを読み出し、RAM13を作業領域としてプログラムを実行する。CPU11は、ROM12に格納されているプログラムに従って、上記各構成の制御及び各種の演算処理を行う。本実施形態では、ROM12には、管理プログラムが格納されている。
【0034】
ROM12は、各種プログラム及び各種データを格納する。揮発性メモリであるRAM13は、作業領域として一時的にプログラム又はデータを格納する。
【0035】
入力部15は、マウス等のポインティングデバイス、及びキーボードを含み、各種の入力を行うために使用される。
【0036】
表示部16は、例えば、液晶ディスプレイであり、各種の情報を表示する。表示部16は、タッチパネル方式を採用して、入力部15として機能しても良い。
【0037】
通信インタフェース17は、他の通信装置と通信するためのインタフェースである。当該通信には、たとえば、イーサネット(登録商標)若しくはFDDI等の有線通信の規格、又はWi-Fi(登録商標)等の無線通信の規格が用いられる。
【0038】
カードリーダライタ18は、外部記憶装置のデータの読み込み及び書き込み処理をするための装置である。本実施形態のカードリーダライタ18には、不揮発性メモリであるSDメモリカード200が接続されて、読み込み及び書き込み処理が行われる。SDメモリカード200は、オペレーティングシステムを含む各種プログラム、及び各種データを格納する。このデータの格納については、後述する。なお、カードリーダライタ18及びSDメモリカード200の代わりに、HDD(Hard Disk Drive)又はSSD(Solid State Drive)等の記憶装置を使用することも可能である。
【0039】
次に、コントローラ10の機能構成について説明する。
図3は、コントローラ10の機能構成の例を示すブロック図である。コントローラ10は、機能構成として、設定部102、書込部104、応答部106、第1復旧部108及び第2復旧部110を有する。各機能構成は、CPU11がROM12に格納された管理プログラムを読み出し、RAM13に展開して実行することにより実現される。
【0040】
設定部102は、データを格納するSDメモリカード200に対し、データに係るファイルシステムの、メタデータ含むデータを格納する領域を、対象領域205として設定する。ファイルシステムについては、
図4で後述する。
【0041】
書込部104は、SDメモリカード200に対してデータの書き込み要求が発生した場合に、当該データ及び関連するメタデータを書き込む機能を有している。具体的に、書込部104は、SDメモリカード200に対してデータの書き込み要求が発生した場合、SDメモリカード200の対象領域205及びRAM13に確保されたバックアップ領域300に対して、メタデータを含むデータのブロック単位での書き込みを行う。なお、「メタデータを含むデータのブロック単位での書き込み」については、説明の簡略化のため、以後、「データの書き込み」と表現する。
【0042】
応答部106は、SDメモリカード200の対象領域205に対してデータの読み込み要求が発生した場合、対象領域205のメタデータを含むデータのブロック単位での読み込みを行う。読み込んだ対象領域205のデータが正常である場合は、そのデータを返す。読み込んだ対象領域205のデータに異常が生じている場合は、RAM13のバックアップ領域300に書き込まれた読み込み要求に対応するデータを返す。この際、バックアップ領域300のデータがSDメモリカード200のデータと同期していない場合は、応答すべきデータがないため、結果NG応答を返す。なお、「メタデータを含むデータのブロック単位での読み込み」については、説明の簡略化のため、以後、「データの読み込み」と表現する。
【0043】
また、応答部106は、SDメモリカード200の対象領域205外に対するデータの読み込み要求が発生した場合、データの読み込みを行い、読み込んだデータを返す。なお、SDメモリカード200の対象領域205外とは、ファイルシステム形式のデータを格納するデータ領域202である。
【0044】
ここで、データに異常が生じている場合とは、データの読み込み時に読み込み異常が生じる場合及び対象領域205のメタデータとバックアップ領域300のメタデータとに差異がある場合が該当する。また、読み込み異常は、データの読み込み時に生じるエラーであって、例えば、ECC(Error Correction Code)による誤り検出を含む。
【0045】
第1復旧部108は、メタデータの読み込み時に読み込み異常が生じる場合に当該メタデータを復旧する機能を有している。具体的に、第1復旧部108は、予め定めた時間ごとにSDメモリカード200の対象領域205の全てのメタデータの走査を行い、走査による読み込み時に異常が生じている場合、RAM13のバックアップ領域300のメタデータを含むデータをSDメモリカード200の対象領域205にブロック単位で上書きする。なお、「メタデータを含むデータをブロック単位で上書き」については、説明の簡略化のため、以後、「データを上書き」と表現する。
【0046】
第2復旧部110は、SDメモリカード200の対象領域205のメタデータとRAM13のバックアップ領域300のメタデータとに差異がある場合に当該メタデータを復旧する機能を有している。具体的に、第2復旧部110は、SDメモリカード200の対象領域205のメタデータとRAM13のバックアップ領域300のメタデータとに差異がある場合、RAM13のバックアップ領域300のデータをSDメモリカード200の対象領域205に上書きする。
【0047】
図4は、ファイルシステム形式のメタデータを更新する処理を説明する図である。ファイルシステムとは、一般的にオペレーティングシステムが提供する機能の1つとされ、データをファイル形式で扱うシステムである。ファイルシステムは、ファイルシステム形式のデータを格納するデータ領域202とファイルシステム形式のデータを管理するためのメタデータを格納する領域である対象領域205とがある。対象領域205は、物理メモリアドレスが固定されている。コントローラ10は、ファイルシステム形式のデータ領域202に変更があった場合、メタデータの更新を行う。矢印Y2は、データ領域202の書き込み要求を示す。矢印Y2に示すデータ領域202の書き込み要求は、例えば、1件の注文情報のデータを書き込むための書き込み要求である。また、矢印Y4は、対象領域205の書き込み要求を示す。矢印Y4に示す対象領域205の書き込み要求は、例えば、データ領域202の書き込み要求に対応した注文情報のデータの格納日時を、対象領域205にメタデータとして格納する。
【0048】
次に、コントローラ10の作用について説明する。
図5は、コントローラ10による管理処理の流れを示すフローチャートである。CPU11がROM12から管理プログラムを読み出して、RAM13に展開して実行することにより、管理処理が行なわれる。
【0049】
ステップS110では、CPU11は、イベント種別を判断する。CPU11は、イベント種別を設定イベントと判断した場合(ステップS110:設定イベント)、ステップS120へ移行する。設定イベントは、例えば、コントローラ10の起動後の初期処理の場合、又は対象領域205の物理メモリアドレス変更がある場合に実行されるイベントである。CPU11は、イベント種別を読み込み/書き込みイベントと判断した場合(ステップS110:読み込み/書き込みイベント)、ステップS130へ移行する。読み込み/書き込みイベントは、例えば、入力端末7から注文情報を受信して書き込み要求が発生した場合に実行されるイベントである。CPU11は、イベント種別を走査イベントと判断した場合(ステップS110:走査イベント)、ステップS140へ移行する。走査イベントは、例えば、設定時間が経過している場合、又は異常フラグが立っている場合に実行されるイベントである。
【0050】
ステップS120では、CPU11は、設定処理を行う。具体的な内容は、後述する
図6に記載する。そして、CPU11は、ステップS110へ移行する。
【0051】
ステップS130では、CPU11は、読み込み/書き込み処理を行う。具体的な内容は、後述する
図7に記載する。そして、CPU11は、ステップS110へ移行する。
【0052】
ステップS140では、CPU11は、走査処理を行う。具体的な内容は、後述する
図11に記載する。そして、CPU11は、ステップS110へ移行する。
【0053】
図6は、コントローラ10によるバックアップ領域300の設定処理の流れを示すフローチャートである。CPU11がROM12から管理プログラムを読み出して、RAM13に展開して実行することにより、処理が行なわれる。
【0054】
ステップS210では、CPU11は、対象領域205の設定を行う。すなわち、CPU11は、ファイルシステムのメタデータを格納する領域を対象領域205に設定する。
【0055】
ステップS220では、CPU11は、同期ビットマップ302の初期化を行う。同期ビットマップ302は、対象領域205とバックアップ領域300とが同期済みか否かを判断するために、対象領域205の物理メモリアドレスごとに対応したビットの集合である。同期ビットマップ302の初期化は、同期済みではない未同期状態を表す値にする。
【0056】
ステップS230では、CPU11は、対象領域205の読み込みイベントの発生を行う。そして、CPU11は、設定処理を終了する。
【0057】
読み込みイベントを発生させた結果として、CPU11は、ステップS110で上述したように、イベント種別を読み込みイベントであると判断して、ステップS130に移行する。そして、
図7で後述するように、ステップS400及びステップS410で同期処理を行う。
【0058】
図7は、コントローラ10による読み込み/書き込み処理の流れを示すフローチャートである。CPU11がROM12から管理プログラムを読み出して、RAM13に展開して実行することにより、処理が行なわれる。
【0059】
ステップS310では、CPU11は、対象領域205に対する処理か否かの判断を行う。CPU11は、対象領域205に対する処理と判断した場合(ステップS310:Yes)、ステップS320へ移行する。CPU11は、対象領域205外に対する処理と判断した場合(ステップS310:No)、ステップS450へ移行する。
【0060】
ステップS320では、CPU11は、対象領域205の読み込み要求か否かの判断を行う。CPU11は、対象領域205の読み込み要求と判断した場合(ステップS320:Yes)、ステップS325へ移行する。CPU11は、対象領域205の読み込み要求ではないと判断した場合、すなわち対象領域205の書き込み要求と判断した場合(ステップS320:No)、ステップS470へ移行する。
【0061】
ステップS325では、CPU11は、対象領域205の読み込み処理を行う。
【0062】
ステップS330では、CPU11は、読み込み異常が生じたか否かの判断を行う。CPU11は、読み込み異常が生じていないと判断した場合、すなわち正常に読み込み処理が終了したと判断した場合(ステップS330:No)、ステップS340へ移行する。CPU11は、読み込み異常が生じたと判断した場合(ステップS330:Yes)、ステップS360へ移行する。
【0063】
ステップS340では、CPU11は、対象領域205とバックアップ領域300とが同期済みか否かを判断する。同期済みか否かは、読み込み要求に応じたメタデータに対応する同期ビットマップ302の値によって判断する。CPU11は、同期済みと判断した場合(ステップS340:Yes)、ステップS350へ移行する。CPU11は、同期済みではないと判断した場合、すなわち未同期と判断した場合(ステップS340:No)、ステップS400へ移行する。
【0064】
ステップS350では、CPU11は、対象領域205とバックアップ領域300とに差異があるか否かを判断する。CPU11は、差異があると判断した場合(ステップS350:Yes)、ステップS360へ移行する。CPU11は、差異がないと判断した場合(ステップS350:No)、ステップS420へ移行する。
【0065】
ステップS360では、CPU11は、異常フラグを立てる。異常フラグは、異常の有無を表すフラグであって、例えば、異常の場合は1、正常の場合は0とする所定のビットである。
【0066】
ステップS370では、CPU11は、対象領域205とバックアップ領域300とが同期済みか否かを判断する。CPU11は、同期済みと判断した場合(ステップS370:Yes)、ステップS380へ移行する。CPU11は、同期済みではないと判断した場合、すなわち未同期と判断した場合(ステップS370:No)、ステップS440へ移行する。なお、同期済みか否かの判断方法は、ステップS340と同じである。
【0067】
ステップS380では、CPU11は、バックアップ領域300のメタデータを返す。すなわち、CPU11は、バックアップ領域300に格納された、読み込み要求に応じたメタデータを返す。
【0068】
ステップS390では、CPU11は、結果OK応答を行う。そして、CPU11は、読み込み/書き込み処理を終了する。
【0069】
ステップS400では、CPU11は、バックアップ領域300の書き込みを行う。詳しくは、CPU11は、ステップS325で対象領域205から読み込んだメタデータを、バックアップ領域300に書き込む。すなわち、CPU11は、対象領域205に格納してあるメタデータと同一データをバックアップ領域300に格納する。
【0070】
ステップS410では、CPU11は、同期ビットマップ302の更新を行う。処理内容は、ステップS480と同様である。
【0071】
ステップS420では、CPU11は、対象領域205のメタデータを返す。すなわち、CPU11は、対象領域205に格納された、読み込み要求に応じたメタデータを返す。
【0072】
ステップS430では、CPU11は、結果OK応答を行う。そして、CPU11は、読み込み/書き込み処理を終了する。
【0073】
ステップS440では、CPU11は、結果NG応答を行う。そして、CPU11は、読み込み/書き込み処理を終了する。
【0074】
ステップS450では、CPU11は、対象領域205外の読み込み/書き込み処理を行う。
【0075】
ステップS460では、CPU11は、結果応答を行う。結果応答は、ステップS450の実行結果に応じて、結果OK応答又は結果NG応答を行う。そして、CPU11は、読み込み/書き込み処理を終了する。
【0076】
ステップS470では、CPU11は、バックアップ領域300の書き込み処理を行う。詳しくは、CPU11は、対象領域205の書き込み要求に応じたメタデータを、バックアップ領域300に書き込む。
【0077】
ステップS480では、CPU11は、同期ビットマップ302の更新を行う。同期ビットマップ302の更新は、対象領域205の書き込み処理に係る物理メモリアドレスに対応するビットを、バックアップ領域300の書き込み処理の完了を表す値にする。
【0078】
ステップS490では、CPU11は、対象領域205の書き込み処理を行う。すなわち、CPU11は、ステップS470とステップS490とにより、同一データを対象領域205とバックアップ領域300に格納する。
【0079】
図8は、本実施形態に係るコントローラ10の書き込み処理の様子を示している。コントローラ10は、RAM13及びSDメモリカード200を備えている。SDメモリカード200は、ファイルシステム形式のデータ領域202と対象領域205とを有する。RAM13は、バックアップ領域300と一時領域310とを有する。一時領域310は、一時的に対象領域205のメタデータを複製して格納する領域であって、
図12で後述する。
【0080】
矢印Y12は、RAM13のバックアップ領域300の書き込み処理を示す。矢印Y14は、SDメモリカード200の対象領域205の書き込み処理を示す。コントローラ10は、Y4に示す対象領域205の書き込み要求があった場合、当該書き込み要求に対応するメタデータについて、矢印Y12に示す流れでバックアップ領域300の書き込み処理、及び矢印Y14に示す流れで対象領域205の書き込み処理を行う。なお、矢印Y12に示すバックアップ領域300の書き込み処理の対象であるメタデータの更新内容は、例えば、SDメモリカード200のドライバから取得する。
【0081】
また、矢印Y14に示す対象領域205の書き込み処理の方式は、例えば、随時書き込むリアルタイム方式又は一時的にキャッシュしてまとまった単位で書き込むバッチ方式としてよい。リアルタイム方式は、コントローラ10がUPS(Uninterruptible Power Supply)機能を持たない場合など、正常終了されずに電源が切断される場合に有効な方式である。バッチ方式は、処理速度の速い揮発性メモリをキャッシュとして利用して、ボトルネックとなる不揮発性メモリのアクセス頻度を下げる方式である。また、SDメモリカード200の書き込み要求は、一般的に、SDメモリカード200へのデータ転送処理が完了すると応答が返る仕組みのため、書き込み処理に異常があっても検知できない場合がある。
【0082】
図9及び
図10は、本実施形態に係るコントローラ10の読み込み又は書き込み処理の様子を示す。
【0083】
RAM13は、同期ビットマップ302を有する。同期ビットマップ302は、例えば、データの個数に対応した同期ビットから構成される。各同期ビットは、例えば、同期済みの場合は1とし、未同期の場合は0として更新する。
【0084】
SDメモリカード200のデータに後続する値は物理メモリアドレスの番地であって、例えば、データ100001は、番地100001に格納したデータを意味する。また、RAM13のデータに後続する値は、対象領域205の物理メモリアドレスの番地に対応したデータであって、例えば、バックアップ領域300のデータ100001は、対象領域205のデータ100001に対応したデータの意味である。なお、物理メモリアドレスの番地は、例示したものでありこれに限定しない。
【0085】
図9は、本実施形態に係るコントローラ10の書き込み処理の様子を示す。
【0086】
矢印Y11は、SDメモリカード200の対象領域205外に対するデータの書き込み処理を示す。コントローラ10は、矢印11に示すSDメモリカード200の対象領域205外に書き込み要求が発生した場合、データの書き込みを行う。
【0087】
コントローラ10は、矢印Y12に示すバックアップ領域300の書き込み処理及び矢印Y14に示す対象領域205の書き込み処理によって、同一データをバックアップ領域300及び対象領域205に格納する。
【0088】
矢印Y12に示すように、コントローラ10は、バックアップ領域300の書き込み処理によって、同期ビットマップ302を更新する。同期ビットマップ302は、例えば、データ100001からデータ101024までに対応した長さ1024であって、データ100001が変更された場合、データ100001に対応した同期ビットを更新する。
【0089】
図10は、本実施形態に係るコントローラ10の読み込み処理の様子を示す。
【0090】
矢印Y25は、SDメモリカード200の対象領域205外に対するデータの読み込み処理を示す。コントローラ10は、矢印Y25に示すSDメモリカード200の対象領域205外に読み込み要求が発生した場合、データの読み込みを行い、読み込んだデータを返す。
【0091】
矢印Y27は、SDメモリカード200の対象領域205の読み込み処理を示す。コントローラ10は、矢印Y27に示す対象領域205の読み込み要求があった場合、対象領域205のメタデータを返す。一方で、コントローラ10は、矢印Y27に示す読み込み要求に対して、異常を検知した場合は、矢印Y29に示す処理を実行して、異常フラグを立てる。矢印Y29については、後述する。
【0092】
矢印Y29は、RAM13のバックアップ領域300のデータの応答の処理を示す。コントローラ10は、矢印Y27に示す対象領域205の読み込み要求に応じた、矢印Y29に示すバックアップ領域300のデータの応答を行う。例えば、対象領域205の読み込み要求がデータ100001からデータ100003までのデータの読み込み要求であって、対象領域205のデータ100002に読み込み異常が生じる場合、コントローラ10は、バックアップ領域300のデータ100001からデータ100003までのデータを返す。なお、バックアップ領域300のデータがSDメモリカード200のデータと同期していない場合には、応答すべきデータがないため、結果NG応答を返す。
【0093】
次に、コントローラ10の作用について説明する。
図11は、コントローラ10による走査処理の流れを示すフローチャートである。CPU11がROM12から管理プログラムを読み出して、RAM13に展開して実行することにより、処理が行なわれる。
【0094】
ここで、一般的にオペレーティングシステムは、SDメモリカード200のデータをキャッシュしている。そのため、対象領域205の読み込み要求が発生した場合であっても、CPU11は、対象領域205を読み込まず、キャッシュからデータを返す。この場合、CPU11は、対象領域205のデータに異常があっても、読み込み要求によって異常を検知できない。そこで設定時間が経過している場合は対象領域205の走査によって、対象領域205のデータに異常が生じているかを検知する。なお、設定時間は、例えば、走査によるパフォーマンスの低下を考慮して30分などに設定する。
【0095】
ステップS510では、CPU11は、設定時間が経過しているか否かを判断する。CPU11は、設定時間が経過していると判断した場合(ステップS510:Yes)、ステップS520へ移行する。CPU11は、設定時間が経過していないと判断した場合(ステップS510:No)、ステップS550へ移行する。なお、CPU11は、設定時間が経過しているか否かの判断に代えて、例えば、対象領域205の書き込み回数が所定回数以上か否かの判断としてもよい。
【0096】
ステップS520では、CPU11は、対象領域205のデータを全て読み込む。
【0097】
ステップS530では、CPU11は、読み込み異常が生じたか否かを判断する。CPU11は、読み込み異常が生じたと判断した場合(ステップS530:Yes)、ステップS540へ移行する。CPU11は、読み込み異常が生じていないと判断した場合、すなわち読み込みが正常終了したと判断した場合(ステップS530:No)、走査処理を終了する。
【0098】
ステップS540では、CPU11は、異常フラグを立てる。そして、CPU11は、走査処理を終了する。
【0099】
ステップS550では、CPU11は、異常フラグが立っているか否かを判断する。CPU11は、異常フラグが立っていると判断した場合(ステップS550:Yes)、ステップS560へ移行する。CPU11は、異常フラグが立っていないと判断した場合(ステップS550:No)、走査処理を終了する。
【0100】
ステップS560では、CPU11は、全ての物理メモリアドレスの走査が終了しているか否かを判断する。CPU11は、全ての物理メモリアドレスの走査が終了していないと判断した場合(ステップS560:No)、ステップS570へ移行する。CPU11は、全ての物理メモリアドレスの走査が終了していると判断した場合(ステップS560:Yes)、ステップS630へ移行する。
【0101】
ステップS570では、CPU11は、対象領域205の走査を行う。走査は、対象領域205の指定した物理メモリアドレスのメタデータの読み込み処理を行う。
【0102】
ステップS580では、CPU11は、読み込み異常が生じた否かを判断する。CPU11は、読み込み異常が生じていないと判断した場合、すなわち読み込みが正常終了したと判断した場合(ステップS580:No)、ステップS590へ移行する。CPU11は、読み込み異常が生じたと判断した場合(ステップS580:Yes)、ステップS610へ移行する。
【0103】
ステップS590では、CPU11は、バックアップ領域300のデータを読み込む。バックアップ領域300のデータの読み込みは、ステップS570で走査した対象領域205のメタデータに対応するメタデータを読み込む。なお、CPU11は、例えば、事前にバックアップ領域300の全てのメタデータを複製しておき、一時領域310からメタデータを読み込んでもよい。一時領域310に複製する場合については、
図12で後述する。
【0104】
ステップS600では、CPU11は、対象領域205のデータとバックアップ領域300のデータとに差異があるか否かを判断する。CPU11は、差異があると判断した場合(ステップS600:Yes)、ステップS610へ移行する。CPU11は、差異がないと判断した場合(ステップS600:No)、ステップS620へ移行する。
【0105】
ステップS610では、CPU11は、バックアップ領域300のメタデータを対象領域205に上書きする。すなわち、CPU11は、対象領域205の異常なデータを、バックアップ領域300の正常なデータとして上書きして、対象領域205のメタデータを復旧する。
【0106】
ステップS620では、CPU11は、走査対象を次の物理メモリアドレスへ移動する。なお、物理メモリアドレスの処理順は、例えば、物理メモリアドレスの番地を昇順に行う。
【0107】
ステップS630では、CPU11は、異常フラグを初期化する。異常フラグの初期化は、フラグが立っていない状態にする。そして、CPU11は、走査処理を終了する。
【0108】
図12は、本実施形態に係るコントローラ10の走査処理の様子を示す。矢印Y40は、RAM13の一時領域310の複製処理の流れを示す。矢印Y42は、メタデータの比較処理を示す。矢印Y44は、SDメモリカード200の対象領域205への書き込み処理の流れを示す。
【0109】
コントローラ10は、矢印Y40に示すSDメモリカード200の対象領域205のメタデータを、RAM13の一時領域310に複製する。コントローラ10は、矢印Y42に示すように、バックアップ領域300のメタデータと一時領域310のメタデータとの比較を行う。コントローラ10は、矢印Y42に示す比較の結果、データに差異があった場合は、矢印Y44の流れで示すように、バックアップ領域300のメタデータを、対象領域205に書き込む処理を行う。コントローラ10は、揮発性メモリであるRAM13に格納することにより、不揮発性メモリであるSDメモリカード200から読み込む場合に比べ、処理速度を向上させる。なお、コントローラ10は、一時領域310に複製せず、バックアップ領域300と対象領域205とを比較してもよい。
【0110】
[備考]
以上、本実施形態のコントローラ10について説明してきた。しかし、本開示は、上記実施形態に限定されない。種々の改良または改変が可能である。
【0111】
本開示の管理装置は、コントローラ10に限定しない。すなわち、例えば、POSシステム2又はプリンタ4等を管理装置としてもよい。
【0112】
本実施形態に係るコントローラ10は、データの読み込み及び書き込みは、ブロック単位による読み込み及び書き込みに限定せず、ビット単位、バイト単位、ページ単位又はファイル単位での読み込み及び書き込みとしてもよい。
【0113】
本実施形態に係るコントローラ10のSDメモリカード200は、不揮発性メモリ又は書き込み回数に上限がある記憶媒体としてもよい。書き込み回数に上限がある記憶媒体は、例えば、相変化メモリ、NAND型フラッシュメモリ及び光ディスク等である。
【0114】
本実施形態に係るコントローラ10のRAM13は、揮発性メモリ又は読み書き可能な記憶媒体としてもよい。読み書き可能な記憶媒体は、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)及びフラッシュメモリ等である。
【0115】
本実施形態に係るコントローラ10の対象領域205は、物理メモリアドレスが固定された所定範囲の領域としてもよい。また、本実施形態に係るコントローラ10は、ファイルシステムを採用した装置に限定しない。すなわち、対象領域205は、ファイルシステムのメタデータを格納する領域に限定しない。この場合、対象領域205に格納するデータはメタデータ以外の、例えば、書類データ又は画像データであってよい。ここで、記憶媒体の劣化の偏りを避ける従来技術であるWearLevelingが存在する。しかし、WearLevelingは、物理メモリアドレスが固定されている場合は適用することができない。そのため、物理メモリアドレスが固定されている場合は、データに異常が生じやすいという問題があった。この点において、本開示の技術は、物理メモリアドレスが固定されている場合であっても適用できるため、データに異常が生じている場合にデータ復旧を行うことができる。
【0116】
図7のステップS380において、CPU11は、バックアップ領域300のメタデータを、対象領域205に上書きするようにしてもよい。すなわち、CPU11は、バックアップ領域300のメタデータを正常データとして、対象領域205の異常データに上書きして、データ復旧を行う。
【0117】
図7のステップS340、ステップS400及びステップS410を同期処理のための同期処理サブルーチンとしてもよい。CPU11は、同期処理サブルーチンを所定の時間ごとに実行するようにしてもよい。バックアップ領域300が揮発性メモリであった場合、バックアップ領域300のメタデータが不定期にクリアされるため、CPU11は、定期的に同期化を行い、未同期状態を少なくする。また、ステップS400において、CPU11は、対象領域205の全てのメタデータを、バックアップ領域300に書き込むようにしてもよい。
【0118】
本実施形態に係るコントローラ10の同期ビットマップ302は、例えば、対象領域205の全体とバックアップ領域300の全体とが同期状態であるか否かを表す1つのビットとしてもよい。
【0119】
なお、上記実施形態でCPUがソフトウェア(プログラム)を読み込んで実行した管理処理を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field-Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、管理処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【0120】
また、上記実施形態では、管理プログラムがSDメモリカード200に予め格納(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の非一時的(non-transitory)記憶媒体に格納された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【符号の説明】
【0121】
1 オーダーエントリシステム
2 POSシステム
4 プリンタ
6 ルータ
7 入力端末
10 コントローラ
200 SDメモリカード
202 ファイルシステム形式のデータ領域
205 対象領域
300 バックアップ領域
302 同期ビットマップ
310 一時領域