(57)【要約】【課題】メモリ確保処理・メモリ解放処理の比較的遅いオペレーションシステムのメモリ確保処理・メモリ解放処理の回数を減らし、アプリケーションの待機時間を減少させて、アプリケーションのパフォーマンス低下を抑えること。【解決手段】情報処理装置の制御部が実行するメモリ管理機構５０は、アプリケーション４４からの最初のメモリ確保要求に応じて、オペレーションシステム（仮想メモリ管理モジュール４３）に対して所定容量のメモリ確保要求を行って所定容量のメモリ領域を確保し、アプリケーション４４からのメモリ確保要求に応じて、前記確保したメモリ領域内の未使用の領域をアプリケーション４４に対して割り当て、アプリケーション４４からのメモリ解放要求に応じて、アプリケーション４４から解放要求された領域に対する、アプリケーション４４への割り当てを解除し、再度、アプリケーション４４に割当可能にする。【選択図】図４
2011175395.tif 000002
【特許請求の範囲】
【請求項１】
メモリ確保要求を受けた際に物理メモリ領域の確保を行い、メモリ解放要求を受けた際に前記確保した物理メモリ領域の解放を行うオペレーティングシステムで動作する情報処理装置であって、
アプリケーションプログラムからの最初のメモリ確保要求に応じて、前記オペレーティングシステムに対して所定容量のメモリ確保要求を行って、前記所定容量のメモリ領域を確保する確保手段と、
前記アプリケーションプログラムからのメモリ確保要求に応じて、前記確保手段で確保したメモリ領域内の前記アプリケーションプログラムへ割り当てていない状態の領域を、前記アプリケーションプログラムに対して割り当てる割当手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記アプリケーションから前記確保手段のメモリ確保処理、前記割当手段の割当処理を含む処理を呼び出すようにしたことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記アプリケーションプログラムからのメモリ解放要求に応じて、前記アプリケーションプログラムから解放要求された領域に対する、前記アプリケーションプログラムへの割り当てを解除する割当解除処理を行う割当解除手段を有することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記アプリケーションから前記割当解除手段の割当解除処理を呼び出すようにしたことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記割当解除手段により前記アプリケーションプログラムに対して割り当てられた領域が全て割当解除された場合、前記オペレーティングシステムに対して、前記確保手段が確保した前記メモリ領域のメモリ解放要求を行う解放手段を有することを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記確保手段で確保したメモリ領域内の各領域の前記アプリケーションプログラムへの割り当て状態を記憶管理する管理手段を有し、
前記確保手段は、前記確保したメモリ領域内の全領域を、前記アプリケーションプログラムへ割り当てられていない状態の領域を示す未使用領域として前記管理手段に登録し、
前記割当手段は、前記アプリケーションプログラムへ割り当てた領域を、前記アプリケーションプログラムへ割り当てられている状態の領域を示す使用領域として前記管理手段に登録し、
前記割当解除手段は、前記アプリケーションへの割り当てを解除した領域を、前記未使用領域として前記管理手段に登録することを特徴とする請求項３乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記割当手段は、前記確保手段で確保したメモリ領域内に、前記アプリケーションプログラムから要求された容量の、前記アプリケーションプログラムへ割り当てられていない状態の領域が存在しない場合、前記オペレーティングシステムに対して前記アプリケーションプログラムから要求された容量のメモリ確保要求を行って新たなメモリ領域を確保し、該確保した新たなメモリ領域を前記アプリケーションプログラムに対して割り当てる拡張割当処理を行うことを特徴とする請求項３乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記割当解除手段は、前記アプリケーションプログラムからメモリ解放要求されたメモリ領域が前記拡張割当処理により割り当てられたメモリ領域である場合、前記オペレーティングシステムに対して、前記解放要求されたメモリ領域のメモリ解放要求を行う拡張解放処理を行うことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記拡張割当処理により新たに確保可能なメモリ領域の確保状態を記憶管理する拡張管理手段を有し、
前記割当手段は、前記拡張割当処理で確保した領域を、拡張確保領域として前記拡張管理手段に登録し、
前記割当解除手段は、前記拡張解放処理で解放した領域を、未確保領域として前記拡張管理手段に登録することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記オペレーティングシステムは、前記物理メモリの確保を行う際、及び／又は、前記物理メモリの解放を行う際に、前記物理メモリの圧縮処理、及び／又は、断片化解消処理を行うことを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記アプリケーションプログラムは、プログラムの終了時に、前記割当手段で割り当てられた領域の全てを返却するためのメモリ解放要求を出力することを特徴とする請求項１乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
画像を読み取って画像データを取得する画像読取手段を有し、
前記アプリケーションプログラムは、前記画像読取手段により取得される画像データを前記物理メモリに格納して処理することを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記アプリケーションプログラムは、前記画像読取手段により取得される画像データを記憶するために前記メモリ確保要求を行い、前記画像データを記憶するために割り当てられたメモリ領域を返却するために前記メモリ解放要求を行うことを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記アプリケーションプログラムは、前記画像読取手段で画像の読み取りを行う際に前記メモリ確保要求を行い、前記画像データの処理を完了した際に前記メモリ解放要求を行うことを特徴とする請求項１２又は１３に記載の情報処理装置。
【請求項１５】
前記所定容量は、オペレーティングシステムに一度に要求可能な最大メモリ容量から、該所定容量のメモリ以外に当該情報処理装置が使用する容量を差し引いたメモリ容量であることを特徴とする請求項１乃至１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記所定容量は、前記画像読取手段が一度の読み取り処理で読み取る画像データのサイズに、前記アプリケーションプログラムにおいて処理単位となる画像データのサイズを加算したメモリ容量を含むことを特徴とする請求項１２乃至１４のいずれか１項に記載の情報処理装置。
【請求項１７】
前記情報処理装置は、携帯端末であることを特徴とする請求項１乃至１６のいずれか１項に記載の情報処理装置。
【請求項１８】
前記情報処理装置は、通信手段と表示手段とを有し、
前記アプリケーションプログラムは、前記通信手段により受信した構造化言語を用いて表現されたデータを前記物理メモリを用いて前記表示手段に表示処理することを特徴とする請求項１７に記載の情報処理装置。
【請求項１９】
メモリ確保要求を受けた際に物理メモリ領域の確保を行い、メモリ解放要求を受けた際に前記確保した物理メモリ領域の解放を行うオペレーティングシステムで動作する画像読取装置であって、
画像を読み取って画像データを出力する画像読取手段と、
前記画像読取手段から出力される画像データを前記物理メモリに格納して処理するアプリケーションと、
前記アプリケーションからの最初のメモリ確保要求に応じて、前記オペレーティングシステムに対して所定容量のメモリ確保要求を行って、前記所定容量のメモリ領域を確保する確保手段と、
前記アプリケーションからのメモリ確保要求に応じて、前記確保手段で確保したメモリ領域内の前記アプリケーションへ割り当てていない状態の領域を、前記アプリケーションに対して割り当てる割当手段と、
を有することを特徴とする画像読取装置。
【請求項２０】
前記アプリケーションからのメモリ解放要求に応じて、前記アプリケーションから解放要求された領域に対する、前記アプリケーションへの割り当てを解除する割当解除処理を行う割当解除手段を有することを特徴とする請求項１９に記載の画像読取装置。
【請求項２１】
通信手段と表示手段とを有し、メモリ確保要求を受けた際に物理メモリ領域の確保を行い、メモリ解放要求を受けた際に前記確保した物理メモリ領域の解放を行うオペレーティングシステムで動作し、前記通信手段により受信した構造化言語を用いて表現されたデータを前記物理メモリを用いて前記表示手段に表示処理するアプリケーションを実行可能な携帯端末であって、
前記アプリケーションからの最初のメモリ確保要求に応じて、前記オペレーティングシステムに対して所定容量のメモリ確保要求を行って、前記所定容量のメモリ領域を確保する確保手段と、
前記アプリケーションからのメモリ確保要求に応じて、前記確保手段で確保したメモリ領域内の前記アプリケーションへ割り当てていない状態の領域を、前記アプリケーションに対して割り当てる割当手段と、
を有することを特徴とする携帯端末。
【請求項２２】
前記アプリケーションからのメモリ解放要求に応じて、前記アプリケーションから解放要求された領域に対する、前記アプリケーションへの割り当てを解除する割当解除処理を行う割当解除手段を有することを特徴とする請求項２１に記載の携帯端末。
【請求項２３】
メモリ確保要求を受けた際に物理メモリ領域の確保を行い、メモリ解放要求を受けた際に前記確保した物理メモリ領域の解放を行うオペレーティングシステムで動作する情報処理装置のメモリ制御方法であって、
前記情報処理装置に設けられたプロセッサが、アプリケーションからの最初のメモリ確保要求に応じて、前記オペレーティングシステムに対して所定容量のメモリ確保要求を行って、前記所定容量のメモリ領域を確保する確保ステップと、
前記プロセッサが、前記アプリケーションからのメモリ確保要求に応じて、前記確保ステップで確保したメモリ領域内の前記アプリケーションへ割り当てていない状態の領域を、前記アプリケーションに対して割り当てる割当ステップと、
を有することを特徴とする情報処理装置のメモリ制御方法。
【請求項２４】
前記プロセッサが、前記アプリケーションからのメモリ解放要求に応じて、前記アプリケーションから解放要求された領域に対する、前記アプリケーションへの割り当てを解除する割当解除処理を行う割当解除ステップを有することを特徴とする請求項２３に記載の情報処理装置のメモリ制御方法。
【請求項２５】
メモリ確保要求を受けた際に物理メモリ領域の確保を行い、メモリ解放要求を受けた際に前記確保した物理メモリ領域の解放を行うオペレーティングシステムで動作するコンピュータを、請求項１乃至１８に記載された情報処理装置の手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ確保要求を受けた際に物理メモリ領域の確保を行い、メモリ解放要求を受けた際に前記確保した物理メモリ領域の解放を行うオペレーティングシステムで動作する情報処理装置のメモリ制御に関する。
【背景技術】
【０００２】
オペレーティングシステム（ＯＳ）は、様々なタスクから要求されるメモリ確保を一つの物理メモリというリソースを利用して分配する機能を持っている。
【０００３】
特許文献１では、様々なタスクから要求される物理メモリへのメモリ確保を含むアクセスをバスのロックフラグで実現し、メモリの利用効率とパフォーマンス向上の両立させる技術が開示されている。
【０００４】
一方、ＯＳには、メモリ確保・解放要求を受けた時点で物理メモリ領域の確保・解放を行うものと、メモリ確保要求・解放を受けた時点では物理メモリ領域の確保・解放は行わずに実際にメモリ領域へのアクセスが発生した時点で物理メモリ領域の確保・解放を行うものがある。一般的に前者は後者よりメモリ確保・解放要求時の処理に時間がかかることが知られている。
【０００５】
また、ＯＳには、メモリ使用効率を向上させるために、使用中のメモリ領域の圧縮処理や断片化解消処理やクリア処理などを行う高度なメモリ管理機能を有するものがある。このようなＯＳで動作する装置では、ＯＳに対してメモリ確保要求や解放要求を行うタイミングで前記メモリ使用効率を上げる処理が発生していた。これらの処理は、物理メモリへのアクセス回数が多くなるため、処理に時間がかかることが知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平２−１４６６６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述の高度なメモリ管理が行われているＯＳを採用した場合、メモリの使用効率を重視するために、メモリ確保処理の中で、使用中のメモリ領域の圧縮処理や断片化解消処理やクリア処理などが行われ、その結果としてメモリの確保処理や解放処理のパフォーマンスが低下してしまっているものが存在する。
【０００８】
また、上述の高度なメモリ管理は行われなくとも、メモリ確保要求を受けた時点で物理メモリ領域の確保を行うＯＳは、メモリ確保要求を受けた時点では物理メモリ領域の確保は行わずに実際にメモリ領域へのアクセスが発生した時点で物理メモリ領域の確保を行うＯＳより、メモリ確保要求時の処理に時間がかかってしまう。
【０００９】
よって、これらのＯＳを採用した装置の場合、アプリケーションがメモリの確保や解放をＯＳに要求する際にパフォーマンスが低下してしまう可能性がある。
【００１０】
例えば、画像処理を行うアプリケーションでは、画像を展開し、処理を行うため、メモリ確保要求と解放要求が数多く行われ、また、必要とする画像メモリの容量も大きく、上述のようなＯＳ上で実行された場合、パフォーマンスが低下してしまう可能性がある。
【００１１】
また、近年の携帯端末では、ウェブページを表示するアプリケーション（ウェブブラウザ）や、画像処理等の各種アプリケーションを実行可能なものがあるが、携帯端末等には必ずしも物理メモリが潤沢に存在するとはいえない。
このため、容量が不定なウェブページの表示や画像処理を行う等の使用するメモリ容量の大きいアプリケーションが、上述のようなＯＳで動作する携帯端末で実行された場合、パフォーマンスが低下してしまう可能性がある。
【００１２】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、例えば、メモリ確保・解放要求を受けた際に物理メモリ領域の確保・解放を行うＯＳや、高度なメモリ管理機能を有するＯＳ等のようにメモリ確保解放動作が比較的遅いＯＳを用いた情報処理装置において、当該ＯＳに対するメモリ確保・解放要求を行う回数を減らし、アプリケーションのパフォーマンス低下を抑える仕組みを提供することである。
【課題を解決するための手段】
【００１３】
本発明は、メモリ確保要求を受けた際に物理メモリ領域の確保を行い、メモリ解放要求を受けた際に前記確保した物理メモリ領域の解放を行うオペレーティングシステムで動作する情報処理装置であって、アプリケーションプログラムからの最初のメモリ確保要求に応じて、前記オペレーティングシステムに対して所定容量のメモリ確保要求を行って、前記所定容量のメモリ領域を確保する確保手段と、前記アプリケーションプログラムからのメモリ確保要求に応じて、前記確保手段で確保したメモリ領域内の前記アプリケーションプログラムへ割り当てていない状態の領域を、前記アプリケーションプログラムに対して割り当てる割当手段とを有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、予め所定容量のメモリを確保しておくことにより、オペレーションシステムに対するメモリ確保要求、メモリ解放要求の回数を実質的に減らし、アプリケーションからのメモリ確保要求やメモリ解放要求に速やかに対応し、アプリケーションを無駄に待たせないことで、アプリケーションのパフォーマンス低下を抑えることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１を示す情報処理装置を適用した画像読取装置の概略構成を示す斜視図。
【図２】本発明の情報処理装置を適用した画像読取装置の機能ブロック図。
【図３】本実施例の情報処理装置上で動作するオペレーティングシステムのメモリ確保動作を示す模式図。
【図４】本発明の実施例１に係る画像読取装置のメモリ確保シーケンス図。
【図５】本発明の実施例１におけるメモリ管理機構のメモリ管理テーブルの一例を示す図。
【図６】本発明の実施例１に係る情報処理装置を適用した画像読取装置のメモリ確保シーケンス処理（メモリ管理機構のメモリ確保処理）を示したフローチャート。
【図７】本発明の実施例１に係る画像読取装置のメモリ解放シーケンス処理（メモリ管理機構のメモリ解放処理）を示したフローチャート。
【図８】本発明の実施例２におけるメモリ管理機構のメモリ管理テーブルの一例を示した図。
【図９】本発明の実施例２に係る画像読取装置のメモリ確保シーケンス処理（メモリ管理機構のメモリ確保処理）を示したフローチャート。
【図１０】本発明の実施例２に係る画像読取装置のメモリ解放シーケンス処理（メモリ管理機構のメモリ確保処理）を示したフローチャート。
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための形態について図面を用いて説明する。
【実施例１】
【００１７】
図１は、本発明の実施例１を示す情報処理装置を適用した画像読取装置の概略構成を示す斜視図である。
図１に示すように、本実施例の画像読取装置１は、ネットワーク型スキャナであり、装置本体を構成する下部ユニット１０と、この下部ユニット１０に対してヒンジ等のリンク部材を介して開閉自在に支持され閉状態で下部ユニット１０との間に原稿の搬送路（図示なし）を形成する上部ユニット２０とを備えている。
【００１８】
また、本実施例では、下部ユニット１０の上端部には、原稿が積載される給紙トレイ１１が設けられている。そして、給紙トレイ１１上に積載される原稿は、下部ユニット１０と上部ユニット２０との間の搬送路に沿って自動搬送され、装置内部の後述する画像読取部により画像の読取処理が実行される。なお、画像読取を終えた原稿は、下部ユニット１０の下端部に設けられた排紙トレイ１２に向かって排出されるようになっている。
【００１９】
さらに、本実施例の画像読取装置１は、上部ユニット２０の前面に各種情報を表示する情報表示部２１が配設されている。ここで、情報表示部２１は、例えば、本実施例では、液晶パネル２１ａと、ユーザ操作を受け付ける透明なタッチパネル２１ｂとからなる。即ち、情報表示部２１では、液晶パネル２１ａを介して、例えば、画像読取部で読み取った原稿画像を表示したり、読取モードの設定や各種設定に用いる設定画面を表示したりすることができる。また、ユーザは、タッチパネル２１ｂを用いることにより、例えば、液晶パネル２１ａに設定画面や入力画面等を表示させながら、各種設定項目の入力を直接行うことができる。
【００２０】
ここで、図２を参照し、本発明の情報処理装置を適用した画像読取装置１の機能を示す構成要素について説明する。
【００２１】
図２は、本発明の情報処理装置を適用した画像読取装置１の機能ブロック図である。
図２に示すように、本実施例の画像読取装置１は、情報を伝達するシステムバス３０に対し、ＡＤＦ(Auto Document Feeder)スキャナ部となる画像読取部３１と、この画像読取部３１等を制御するＣＰＵ(Central Processing Unit)や後述するアドレステーブルを用いて仮想アドレスを物理アドレスに変換する機能を有するＭＭＵ（Memory Management Unit）を含む制御部３２と、スキャン動作を指示する処理方法や読取設定情報等の各種データやプログラムを格納する不揮発性のフラッシュメモリからなる記録媒体３３と、読み取った画像データや各種のデータやプログラムなどを一時的に蓄積するＲＡＭ(Random Access Memory)３４とがそれぞれ接続されている。なお、画像読取部３１とシステムバス３０とは、例えば、ＵＳＢインタフェース等の所定のインタフェースを介して接続される構成であってもよい。また、制御部３２のＭＭＵは、ＣＰＵ（プロセッサ）に内蔵されたモジュールであってよいし、ＣＰＵに結合された別のチップであってよい。
【００２２】
また、システムバス３０には、ＧＵＩを表示する液晶パネル２１ａと、ＧＵＩ(Graphical User Interface)を用いた操作を受け付けるタッチパネル２１ｂとからなる情報表示部２１が接続されている。さらに、システムバス３０には、読み込まれた画像データ等を他のコンピュータ（ＰＣ(Personal Computer)、クライアントコンピュータ等を含む）やサーバー（ホストコンピュータや、セグメント間の通信を中継するサーバー等を含む）等に送信する外部通信インタフェース３５が接続されている。
【００２３】
なお、制御部３２のＣＰＵは、記録媒体３３に記録されたプログラム（オペレーティングシステムに対応するプログラムやアプリケーションプログラム）を実行することにより、画像読取装置１を制御する。
【００２４】
図３は、本実施例の情報処理装置上で動作するオペレーティングシステムのメモリ確保動作を示す模式図である。
アプリケーションプログラム（以下、アプリケーション）４４がメモリを確保するためには、アプリケーション４４は、オペレーティングシステム（以下、ＯＳ）のインタフェース（Windows(登録商標)の場合、例えばVirtualAlloc API）を用いて、仮想メモリ管理モジュール４３（即ち、ＯＳのメモリ管理機能の１つ）にメモリ確保の要求をする。なお、ＯＳのメモリ管理機能は、アプリケーションが起動されると、該アプリケーションに対して、仮想メモリ空間とアドレステーブルを提供する。アドレステーブルは、物理メモリ（ＲＡＭ３４）上等で記憶管理される。なお、アドレステーブル変換モジュール４２（上述したＭＭＵやＯＳのメモリ管理機能等で構成される）は、このアドレステーブルを用いて仮想メモリ上の仮想アドレスを物理メモリ（ＲＡＭ３４）上の物理アドレスに変換する。なお、ＭＭＵ内に、アドレステーブルの複製を保持し、上記アドレス変換を高速に行う構成もある。
【００２５】
メモリ確保が要求されたＯＳの仮想メモリ管理モジュール４３は、仮想メモリのアドレステーブルに基づいて仮想メモリを物理メモリに割り当てるアドレステーブル変換モジュール４２にメモリ割り当てを要求する。
要求されたアドレステーブル変換モジュール４２は、物理メモリアクセスモジュール４１を介して物理メモリの空き領域を探索し（領域予約し）、物理メモリの空き領域のアドレスを取得し、物理メモリの空き領域を仮想メモリの空き領域に関連付ける情報をアドレステーブルにセットする。
即ち、物理メモリの領域を仮想メモリの領域に割り当てる（マップする）。さらに、アドレステーブル変換モジュール４２は、上述のように物理メモリの領域が割り当てられた（マップされた）仮想メモリの領域の先頭アドレスを、仮想メモリ管理モジュール４３介して、確保したメモリの先頭アドレスとしてアプリケーション４４に返す。
【００２６】
このように、本発明の情報処理装置（画像読取装置１）上で動作するＯＳは、アプリケーション４４からメモリ領域の確保要求（メモリ確保要求）を受けた際に物理メモリの割り当てを行う（物理メモリを確保する）ものである。また、アプリケーション４４からメモリ解放要求を受けた際に物理メモリの割り当てを解除する（物理メモリを解放する）ものである。よって、本発明の情報処理装置上で動作するＯＳは、アプリケーションプログラムからメモリ領域の確保要求を受けても実際にそのメモリにアクセスされるまでは物理メモリの割り当てを行わないようなＯＳとは異なり、メモリ確保、解放時の動作が比較的遅くなってしまう。このため、アプリケーション４４が頻繁にメモリ確保を要求する場合、動作速度の低下を招いてしまうおそれがある。
【００２７】
また、物理メモリが潤沢に存在するシステムでは、アドレステーブル変換モジュール４２は、すぐさま物理メモリの空き領域を探して仮想メモリに割り当てる物理アドレスを返すことが出来る。しかし、本実施例の画像読取装置１のように、組み込み機器等の物理メモリが少ないシステムのＯＳや、仮想メモリの管理に厳密な言語で作成されたプログラムでは、アドレステーブル変換モジュール４２で物理メモリ領域を確保する前に、仮想メモリや物理メモリの使用中メモリ領域の圧縮処理や断片化解消処理やクリア処理が発生する。このため、アドレステーブル変換モジュール４２の反応が遅くなってしまう。このようなアドレス変換処理は、アプリケーション４４がメモリ確保を仮想メモリに要求するたびに発生するため、メモリを頻繁に確保、解放するシステムではさらなる動作速度の低下を招いてしまう。なお、本実施例の画像読取装置１では、ＯＳのアドレステーブル変換モジュール４２の仕様により物理メモリを例えば５１２ＭＢしか認識できないものとするが、本発明はこれに限定されるものではない。
【００２８】
図４は、本発明の実施例１に係る画像読取装置１のメモリ確保シーケンス図である。
図４において、５０はメモリ管理機構である。一般的なメモリ確保シーケンスでは、図３に示したように、アプリケーション４４が直接、仮想メモリ管理モジュール４３（即ち、ＯＳのメモリ管理機能の１つ）にメモリ確保解放処理を呼び出すため、メモリ管理機構５０が存在しない状態と同じになる。
【００２９】
そのため、一般的なメモリ確保シーケンスでは、メモリ確保・解放処理で比較的時間がかかるＯＳで動作する情報処理装置においては、図３で説明したような動作速度の低下を招いてしまう。
【００３０】
そこで本発明では、アプリケーション４４から直接、仮想メモリ管理モジュール４３（ＯＳ）のメモリ確保処理を呼び出す代わりに、アプリケーション４４から（メモリ確保要求として）メモリ管理機構５０のメモリ確保処理を呼び出す構成とする。また、アプリケーション４４から直接、仮想メモリ管理モジュール４３（ＯＳ）のメモリ解放処理を呼び出す代わりに、アプリケーション４４から（メモリ解放要求として）メモリ管理機構５０のメモリ解放処理を呼び出す構成とする。このように、アプリケーション４４からメモリ管理機構５０のメモリ確保処理・解放処理を用いることにより、アドレステーブル変換モジュール４２で発生するメモリ確保処理・メモリ解放処理の実行回数を実質的に減らし、実行速度の低下を防ぐものとする。そのための処理の流れは図６以降にて説明する。
メモリ管理機構５０は、制御部３２内のＣＰＵが記録媒体３３にコンピュータ読み取り可能に記録されたプログラムを読み出して実行することにより実現されるものであり、本発明の確保手段、割当手段、割当解除手段、解放手段等を有する。
【００３１】
なお、アプリケーション４４は、画像読取部３１により取得される画像データを物理メモリ（ＲＡＭ３４）に格納して画像処理し、記録媒体３３に出力する（記録媒体３３に記録する）ものとする。本発明ではパフォーマンスを要求し、かつ要求するメモリサイズが大きく、またメモリ確保要求、メモリ解放要求の回数が多い画像メモリ（上述の画像データを格納するためのメモリ）の確保及び解放時に、アプリケーション４４がメモリ管理機構５０を用いるものとする。即ち、アプリケーション４４は、画像読取部３１により取得される画像データを記憶するためにメモリ管理機構５０にメモリ確保要求を行い、前記画像データを記憶するために割り当てられたメモリ領域をメモリ管理機構５０に返却するためにメモリ解放要求を行う。よって、アプリケーションプログラム４４は、画像読取部３１で画像の読み取りを行う際にメモリ管理機構５０にメモリ確保要求を行い、画像データの処理を完了した際にメモリ管理機構５０にメモリ解放要求を行う。なお、アプリケーション４４は、画像メモリの確保・解放かそれ以外のメモリ確保・解放かを区別できる構成とする。
【００３２】
また、本発明のメモリ管理機構５０のメモリ確保処理、及び、解放処理の機能は、ライブラリ等のプログラムで提供され、アプリケーション４４からこれらのプログラムを呼び出すことにより、実行可能である。
【００３３】
以下、図５を参照して、本発明のメモリ管理機構５０がメモリ管理に用いる標準メモリ管理テーブルについて説明する。
図５は、本発明の実施例１におけるメモリ管理機構５０のメモリ管理テーブルの一例を示す図である。
図５において、５１は標準メモリ管理テーブルであり、本発明の管理手段に対応する。標準メモリ管理テーブル５１において、列５２は、メモリ管理番号を示している。列５２は、メモリ管理番号に対応するアドレスのメモリ確保状態を示している。そして、標準メモリ管理テーブル５１の各行が、それぞれメモリ管理番号（列５２）と、メモリ確保状態（列５３）との対応を示している。本実施例では、標準メモリ管理テーブル５１は、６５５３６個の要素が存在し、一つの要素（メモリ管理番号ごと）あたり４ＫＢのメモリの使用状態を記憶している。
【００３４】
この標準メモリ管理テーブル５１は、画像読取装置１内部でアプリケーションから最初のメモリ確保要求が行われた時に（即ち、メモリ管理機構５０のメモリ確保要求処理が最初に呼び出された時に）、メモリ管理機構５０により、ＲＡＭ３４上に作成される。この際、メモリ管理機構５０は、所定のメモリ量（例えば、ＯＳに一度に予約可能な最大メモリ容量、本実施例では２５６ＭＢとする）の仮想メモリを予約するようにＯＳに要求する（Windows(登録商標)の場合、例えばVirtualAlloc APIを用いてＯＳに仮想メモリの予約を要求する）。ＯＳは、この要求に応じて、上記アプリケーションの仮想メモリ内の領域を予約する。この予約処理により、メモリ管理機構５０は連続したメモリ領域を確保可能となる。さらに、メモリ管理機構５０は、標準メモリ管理テーブル５１を作成した際に、標準メモリ管理テーブル５１内の全てのメモリ管理番号に対応する領域（全領域）の状態を「未確保」と初期化しておく。なお、メモリ確保状態には、「未確保」、「未使用」、「先頭」、「使用中」がある。まず、「未確保」は、メモリ管理番号に対応する仮想メモリ領域（４ＫＢ）に対して、物理メモリが割り当てられていない状態を示す（未確保領域）。「未使用」は、メモリ管理番号に対応する仮想メモリ領域に対して物理メモリが割り当ている状態（使用可能な状態）で且つアプリケーションへ割り当てられていない状態を示す（未使用領域）。「先頭」及び「使用中」は、メモリ管理番号に対応する仮想メモリ領域が、メモリ管理機構５０のメモリ確保処理によりアプリケーションに割り当てられている状態（アプリケーションが使用している状態）を示す（使用領域）。なお、「先頭」は、上記アプリケーションに割り当てられている領域の先頭領域、「使用中」は先頭領域以外の領域を示す。このような標準メモリ管理テーブル５１を設けることにより、メモリ管理機構５０は、上述の予約したメモリ領域内の状態（確保の有無、アプリケーションへの割り当ての有無等）を管理することができる。
【００３５】
以下、図６、図７を参照して、実施例１の画像読取装置１におけるメモリ確保シーケンス処理、及び、メモリ解放シーケンス処理について説明する。
図６は、本発明の実施例１に係る情報処理装置を適用した画像読取装置のメモリ確保シーケンス処理（メモリ管理機構５０のメモリ確保処理）を示したフローチャートである。図中、Ｓ６０１〜Ｓ６０７は各ステップを示す。なお、このフローチャートの処理は、制御部３２内のＣＰＵが記録媒体３３にコンピュータ読み取り可能に記録されたプログラムを読み出して実行することにより実現される。また、このメモリ確保処理は、アプリケーション４４からメモリ管理機構５０にメモリ確保指示（メモリ確保要求）があった時にメモリ管理機構５０で実行される。
【００３６】
まず、Ｓ６０１において、メモリ管理機構５０（制御部３２内のＣＰＵ）は、今回のメモリ確保要求がアプリケーション４４から仮想メモリに対して行われる最初のメモリ確保要求かどうか（即ち、メモリ未確保かどうか）を判定する。なお、本実施例では最初のメモリ確保要求かどうかは、図５の標準メモリ管理テーブル５１のメモリ管理番号１番が「未確保」状態かどうかで判断する。即ち、標準メモリ管理テーブル５１のメモリ管理番号１番が「未確保」状態であった時に最初のメモリ確保要求であると判断する。また、Ｓ６０１の時点で、標準メモリ管理テーブル５１が作成されていない場合も、メモリ管理機構５０は、最初のメモリ確保と判断し、この場合、上述の手順で標準メモリ管理テーブル５１を作成するものとする。
【００３７】
上記Ｓ６０１において、メモリ確保要求が最初（１回目）のメモリ確保要求（メモリ未確保）であると判定した場合、メモリ管理機構５０は、所定容量（予めアプリケーション４４の処理全体で必要とされているメモリ量）が物理メモリ上に空きメモリとして存在するかどうかを調べるために、Ｓ６０２に処理を進める。
【００３８】
なお、予め処理全体で必要とされているメモリの使用量は記録媒体３３上に値が格納されているものとする。本実施例の場合では、４９１５２ブロック分を予め確保する確保量とする。この確保量は、画像読取装置１のアプリケーションプログラムの設定によって必要なメモリ量に変動する。本実施例の画像読取装置１では、画像読取装置１の画像読取部３１が一度の読み取り処理で読み取り可能な画像データの容量に応じて決定してもよい。例えば、上記確保量は、画像読取部３１が一度の読み取り処理で原稿の両面を読み取り可能な装置であれば、画像読取部３１で読み取る原稿片面あたりの画像データの読み取りサイズの少なくとも３倍のメモリ量としてもよい。また、上記確保量は、画像読取部３１が一度の読み取り処理で原稿の片面を読み取る装置であれば、画像読取部３１で読み取る原稿片面あたりの画像データの読み取りサイズの少なくとも２倍のメモリ量としてもよい。即ち、上記確保量は、画像読取部３１で読み取る原稿片面あたりの画像データの読み取りサイズの少なくとも複数倍のメモリ量としてもよい。なお、画像読取部３１で読み取られ物理メモリに格納された画像データの、アプリケーション４４による画像処理単位は、原稿片面の画像データ単位である。即ち、上記確保量は、画像読取部３１が一度の読み取り処理で読み取る画像データのサイズに、アプリケーション４４での画像処理単位（原稿片面）の画像データのサイズを、加算したサイズに対応するメモリ量としてもよい。
また、上記確保量は、ＯＳに一度に要求可能な最大メモリ容量からシステム使用容量（上記予め確保するメモリ以外に、制御部３２のＣＰＵが使用する容量）を差し引いたメモリ量としてもよい。
【００３９】
Ｓ６０２では、メモリ管理機構５０は、予め処理全体で必要とされているメモリ量が物理メモリ上に空きメモリとして存在するかどうかを判定する。そして、Ｓ６０２において、必要とされているメモリ量が物理メモリ上に空きメモリとして存在しないと判定した場合、メモリ管理機構５０は、メモリ不足をアプリケーション４４に通知するために、Ｓ６０５へ処理を進める。
【００４０】
一方、Ｓ６０２において、必要とされているメモリ量が物理メモリ上に空きメモリとして存在すると判定した場合、メモリ管理機構５０は、処理全体で必要な量を実際に確保するために、Ｓ６０３（確保処理）へ処理を進める。このＳ６０２の処理により、アプリケーション４４で必要とされる空きメモリ量が物理メモリ上に存在する場合にのみ、ＯＳにメモリ確保要求を行うように制御でき、確保できない容量のメモリをＯＳに要求してエラーとなってしまうといった無駄を回避することができる。即ち、アプリケーション４４で必要とされる空きメモリ量が存在しない場合には、アプリケーション４４を待たせることなく、速やかにエラー処理を行うことができる。
【００４１】
Ｓ６０３では、メモリ管理機構５０は、必要とされているメモリ量が物理メモリ上に空きメモリとして存在していることが分かっているので、処理全体で必要なメモリ量を実際に確保するようにＯＳにメモリ確保要求を行う（ＯＳがWindows(登録商標)の場合、例えばVirtualAlloc APIを用いてＯＳにメモリ確保を要求する）。ＯＳは、このメモリ確保要求に応じて、要求された容量の物理メモリを確保する。即ち、ＯＳは、図３で説明したように、要求された容量の物理メモリの空き領域を仮想メモリ上の領域（標準メモリ管理テーブル５１作成時に予約した領域内の領域）にマッピングして（物理メモリの空き領域と仮想メモリの領域に関連付ける情報をアドレステーブルにセットして）、物理メモリの領域が割り当てられた仮想メモリの領域の先頭アドレスをメモリ管理機構５０に返す。メモリ管理機構５０は、ＯＳから応答された仮想メモリの先頭メモリアドレスから確保したメモリ量分だけ「未使用」フラグをメモリ管理機構５０の状態５３にセットして、Ｓ６０４へ処理を進める。このＳ６０３の処理により、メモリ管理機構５０は、標準メモリ管理テーブル５１作成時に予約した領域内の各メモリ管理番号に対応する領域が、メモリ確保済みの領域か、メモリ未確保の領域であるか管理し、これ以後、確保済みの領域をアプリケーション４４に迅速に割り当てることが可能となる。
【００４２】
一方、上記Ｓ６０１において、メモリ確保要求が２回目以降である（メモリ確保済み）と判定した場合には、メモリ管理機構５０は、必要なメモリがメモリ管理機構５０により確保した空きメモリとして存在するかどうかを調べるために、Ｓ６０４へ処理を進める。
【００４３】
Ｓ６０４では、メモリ管理機構５０は、現在、アプリケーション４４から要求されているメモリ量がメモリ管理機構５０の標準メモリ管理テーブル５１で「未使用」とされている領域に存在するかどうかを判定する。そして、Ｓ６０４において、要求されているメモリ量が標準メモリ管理テーブル５１に空きメモリとして存在すると判定した場合には、メモリ管理機構５０は、アプリケーションで使用可能な状態にするために、Ｓ６０６（割当処理）へ処理を進める。
【００４４】
Ｓ６０６では、メモリ管理機構５０は、アプリケーション４４に要求されたメモリ量がメモリ管理機構５０上に空きメモリとして存在していることが分かっているので、要求サイズ分の「未使用」フラグが付いているメモリ領域を検索し、その先頭アドレスをアプリケーション４４に使用可能なメモリ領域として通知する（割り当てる）。また、メモリ管理機構５０は、次のメモリ確保要求があった時に使用中のメモリ領域を使用可能だと返さないために先頭アドレスから要求分だけメモリを使用中であることを記憶しておくために、Ｓ６０７へ処理を進める。このＳ６０６の通知を受けたアプリケーション４４は、通知された先頭アドレスから要求した分だけのメモリを使用することが可能となる。
【００４５】
次に、Ｓ６０７では、メモリ管理機構５０は、アプリケーション４４に使用可能なメモリ領域として先頭アドレスから要求サイズ分だけメモリ管理機構５０の標準メモリ管理テーブル５１のメモリ状態を「使用中」と記憶しておく処理を行い（ただし先頭アドレスは「先頭」と記憶しておく）、処理を終了する。このＳ６０７の処理により、メモリ管理機構５０は、上記メモリ確保済みのメモリ領域内のアプリケーション４４に割り当て済みのメモリ領域（使用領域）を確実に管理し、アプリケーション４４へのメモリ割り当てを速やかに行うことができる。なお、先頭アドレスは、今回確保されたメモリ容量を状態と一緒に記憶し、上記Ｓ６０４で空き領域を探す検索処理実行時に参照するようにしてもよい。
【００４６】
一方、Ｓ６０４において、要求されているメモリ量が標準メモリ管理テーブル５１に空きメモリとして存在しないと判定した場合には、メモリ管理機構５０は、メモリ不足をアプリケーション４４に通知するために、Ｓ６０５へ処理を進める。
【００４７】
Ｓ６０５では、メモリ管理機構５０は、処理全体で必要とされているメモリ量が物理メモリ上に空きメモリとして存在していないか、アプリケーション４４から要求されているメモリ量分だけメモリ管理機構５０が確保したメモリ領域に「未使用」状態（空きメモリ領域）が存在していないため、アプリケーション４４にメモリ不足であることを、エラーを返すことで通知し、処理を終了する。このＳ６０５の処理により、確保したメモリ領域内に、アプリケーションで必要とされる空きメモリ量が存在しない場合には、アプリケーション４４を待たせることなく、速やかにエラー処理を行うことができる。
以上のメモリ確保シーケンス処理により、メモリ管理機構５０は、アプリケーション４４を待たせることなく、速やかにアプリケーションから要求された容量のメモリをアプリケーション４４に割り当てることができる。即ち、アプリケーション４４は、要求した容量のメモリを速やかに取得して、処理を続行することができ、無駄な待機時間を抑え、パフォーマンスの低下を抑えることができる。
なお、アプリケーションプログラム４４は、プログラムの終了時に、割り当てられた領域の全てを返却するためのメモリ解放要求を出力するように構成してもよい。
【００４８】
図７は、本発明の実施例１に係る画像読取装置のメモリ解放シーケンス処理（メモリ管理機構５０のメモリ解放処理）を示したフローチャートである。図中、Ｓ７０１〜Ｓ７０５は各ステップを示す。なお、このフローチャートの処理は、制御部３２内のＣＰＵが記録媒体３３にコンピュータ読み取り可能に記録されたプログラムを読み出して実行することにより実現される。また、このメモリ解放処理は、アプリケーション４４からメモリ管理機構５０に先頭アドレスを指定した解放指示（メモリ解放要求）があった時にメモリ管理機構５０で実行される。
【００４９】
Ｓ７０１において、メモリ管理機構５０（制御部３２内のＣＰＵ）は、今回のメモリ解放要求で指定された先頭アドレスが図６のメモリ確保シーケンス処理で確保された仮想メモリの先頭アドレスかどうかを判定する。具体的には、標準メモリ管理テーブル５１のメモリ管理番号５２に対応したメモリアドレスかどうかを判定することになる。
【００５０】
そして、Ｓ７０１において、メモリ解放要求で指定された先頭アドレスが図６のメモリ確保シーケンス処理で確保された仮想メモリの先頭アドレスでないと判定した場合、メモリ管理機構５０は、メモリ管理機構５０で確保されたメモリではないので処理を終了する。例えば、標準メモリ管理テーブル５１のメモリ管理番号２番や３番や６番などが指定された場合は、メモリ状態が「先頭アドレス」では無いので処理を終了する条件となる。
【００５１】
一方、Ｓ７０１において、メモリ解放要求で指定された先頭アドレスが図６のメモリ確保シーケンスで確保された仮想メモリの先頭アドレスであると判定した場合、メモリ管理機構５０は、未使用状態にリセットするために、Ｓ７０２（割当解除処理）へ処理を進める。
【００５２】
Ｓ７０２では、メモリ管理機構５０は、先頭アドレスから次の先頭アドレスまで、もしくは次の未使用のアドレスまで未使用状態に変更する。即ち、メモリ管理機構５０は、アプリケーション４４から解放要求された領域に対する、アプリケーション４４へのメモリの割り当てを解除して、該領域をアプリケーション４４に再割当可能にする。例えば標準メモリ管理テーブル５１におけるメモリ管理番号１番が指定された場合は、メモリ管理番号１番から３番までのメモリ状態を「未使用」に変更する。また、メモリ管理番号４番が指定された場合は、メモリ管理番号４番のみを「未使用」に変更する。このＳ７０２の処理により、アプリケーション４４からメモリ解放要求（返却）されたメモリ領域の割り当てを解除して再度アプリケーション４４に割り当て可能にする（アプリケーション４４からのメモリ返却を処理する）ことができる。
【００５３】
次に、Ｓ７０３において、メモリ管理機構５０は、使用中のメモリがメモリ管理機構５０上に存在する（即ち、Ｓ７０２で「未使用」フラグをセットしたアドレスに対応するメモリが最後の使用中メモリ）かどうかを判定する。そして、Ｓ７０３において、使用中のメモリがメモリ管理機構５０上に存在すると判定した場合、メモリ管理機構５０は、解放処理を終了する。なお、本実施例において使用中のメモリが存在するかどうかを調べる処理は、標準メモリ管理テーブル５１のメモリ管理番号５２を１から順番に検索し、テーブルの最後の番号まで先頭アドレス状態になっているかどうかを調べることによって実現されるものとする。
【００５４】
一方、Ｓ７０３において、使用中のメモリがメモリ管理機構５０上に存在しないと判定した場合、メモリ管理機構５０は、メモリ管理機構５０で確保したメモリ（図６のＳ６０３で確保したメモリ）を解放するために、Ｓ７０４へ処理を進める。
【００５５】
Ｓ７０４では、メモリ管理機構５０は、図６のＳ６０３で確保されたメモリ分が仮想メモリ上にマッピングされている物理メモリを解放する処理を行う。図５の例では、メモリ管理番号１から４９１５２までの領域をＯＳの仮想メモリのマッピングから解放する。メモリ管理機構５０は、図６のＳ６０３で確保されたメモリのメモリ解放要求をＯＳに行う（Windows(登録商標)の場合、例えばVirtualFree APIを用いてＯＳにメモリ解放を要求する）。ＯＳは、この要求に応じて、要求された領域をＯＳの仮想メモリのマッピングから解放する。即ち、ＯＳは、アドレステーブルから、物理メモリの領域を仮想メモリの領域に関連付ける情報を削除して、該当する物理メモリの領域を再度、仮想メモリに割り当て可能にする。このＳ７０５の処理により、確保した領域を全て解放して、任意のプログラムが使用可能な状態とすることができる。
【００５６】
上記Ｓ７０４で仮想メモリを解放したので、次のメモリ確保要求をアプリケーション４４から受けた時に最初のメモリ確保とみなす必要がある。そこで、Ｓ７０５において、メモリ管理機構５０は、標準メモリ管理テーブル５１の全てのメモリ管理番号５２のメモリ状態５３を「未確保」状態に変更する処理を行い、処理を終了する。このＳ７０５の処理により、メモリ管理機構５０は、標準メモリ管理テーブル５１作成時に予約した領域内の各メモリ管理番号に対応する領域が、メモリ未確保の領域であることを確実に管理し、再度、アプリケーション４４からメモリ確保要求を受けた際には、再度、ＯＳにメモリ確保要求を行って、メモリ確保することができる。
【００５７】
以上のメモリ解放シーケンス処理により、メモリ管理機構５０は、アプリケーション４４を待たせることなく、速やかにアプリケーションから要求された領域のメモリを再割り当て可能な領域とすることができる（返却処理できる）。即ち、アプリケーション４４は、必要なくなったメモリを速やかに返却して、処理を続行することができ、無駄な待機時間を抑え、パフォーマンスの低下を抑えることができる。
【００５８】
なお、複数のアプリケーションからのメモリ確保要求がメモリ管理機構５０にあった場合、即ち、例えば、ワークフローを想定して画像等の直接データを扱うアプリケーションからデータベースなどが扱うデータを管理するアプリケーションにリレーされるような場合（スキャナ等の制御に用いる専用アプリケーションと各種データベース用等の汎用アプリケーションとの連携等の場合）には、最初のアプリケーションで確保したメモリを次のアプリケーションに受け渡す仕組みをメモリ管理機構において提供するようにしてもよい。
【００５９】
例えば、最初のアプリケーションが終了する前に、メモリ管理機構５０で確保したメモリ領域をリレーしたいアプリケーションプロセスのメモリ管理機構５０にコピーして再マッピングしてから、最初のアプリケーションのプロセスが終了するなどの処理を行う。具体的には、上述のVirtualAlloc等を用いて予約した仮想メモリ領域（即ち、管理テーブル５０１で管理している領域であり、図６のＳ６０１でメモリ確保した領域を含む）をVirtualCopy等を用いてプロセス間の仮想メモリコピーを行うことでリレーを実現する。つまり、メモリ管理機構５０へのアプリケーション毎のメモリ確保要求を管理しながら、各メモリ確保要求とメモリ解放とのタイミングを考慮し、最初のアプリケーションで確保したメモリの全部又は一部を、次のアプリケーションにリレーする際に当該次のアプリケーションにメモリを割り当てるようにしてもよい。これにより、メモリを有効利用することができる。
【００６０】
以上説明したとおり、本発明の情報処理装置（画像読取装置１）では、ＯＳに頻繁にメモリ確保要求やメモリ解放要求を行うことなく、アプリケーションからの頻繁に行われるメモリ確保要求やメモリ解放要求に応えて、アプリケーションにメモリを割り当てることが可能となるため、メモリ確保要求を受けた際に物理メモリ領域の確保を行い、メモリ解放要求を受けた際に前記確保した物理メモリ領域の解放を行うＯＳで動作する環境において、本発明のメモリ管理機構５０によりアプリケーションからのメモリ確保要求やメモリ解放要求に速やかに対応し、アプリケーションを無駄に待たせることなくなるので、アプリケーションのパフォーマンス低下を抑えることができる。したがって、処理全体のパフォーマンスを向上し、ユーザの利便性を向上することができる。特に、画像メモリの確保及び解放時にメモリ管理機構５０を用いることにより、パフォーマンスを要求する画像処理中は、ＯＳが時間のかかるメモリ確保、解放処理を行わなくなるので、処理全体のパフォーマンスを向上することができる。
【００６１】
なお、メモリ確保、解放時に圧縮処理や断片化解消処理やクリア処理などを行う高度なメモリ管理機能を有するＯＳで動作する情報読取装置では、ＯＳに頻繁にメモリ確保要求やメモリ解放要求を行うことがなくなるので、メモリ確保処理、メモリ解放処理時にＯＳにより実行される解放時に圧縮処理や断片化解消処理やクリア処理によるパフォーマンス低下が抑えることができ、さらなる効果を期待できる。
【実施例２】
【００６２】
以下、実施例２について説明する。
図８は、本発明の実施例２におけるメモリ管理機構５０のメモリ管理テーブルの一例を示した図である。
実施例２では、メモリ管理テーブルは、高速メモリ確保可能な予約メモリ領域の標準メモリ管理テーブル５１と、低速ながら要求に応じてその都度メモリを確保する拡張メモリ管理テーブル８１の二つが存在するものとする。拡張メモリ管理テーブル８１は、本発明の拡張管理手段に対応す
【００６３】
拡張メモリ管理テーブル８１において、列８２は、メモリ管理番号を示している。列８２は、メモリ管理番号に対応するアドレスのメモリ確保状態を示している。各行がそれぞれメモリ管理番号（列８２）と、メモリ確保状態（列８３）との対応を示している。
【００６４】
標準メモリ管理テーブル５１と拡張メモリ管理テーブル８１は、画像読取装置１内部でアプリケーションから最初のメモリ確保要求が成された時にＲＡＭ３４上に制御部３２の指示により作成され、全てのメモリ管理番号は未確保状態として初期化される。標準メモリ管理テーブル５１と拡張メモリ管理テーブル８１の作成方法については、実施例１で示した標準メモリ管理テーブル５１の作成方法と同様であるので説明は省略する。
【００６５】
実施例２では、標準メモリ管理テーブル５１と拡張メモリ管理テーブル８１はそれぞれ６５５３６個の要素が存在し、一つの要素（メモリ管理番号ごと）あたり４ＫＢのメモリの使用状態を記憶している。
【００６６】
図９は、本発明の実施例２に係る画像読取装置のメモリ確保シーケンス処理（メモリ管理機構５０のメモリ確保処理）を示したフローチャートである。図中、Ｓ６０１〜Ｓ６０７、Ｓ９００〜Ｓ９０５は各ステップを示し、図６と同一のステップには同一のステップ番号を付してある。なお、このフローチャートの処理は、制御部３２内のＣＰＵが記録媒体３３にコンピュータ読み取り可能に記録されたプログラムを読み出して実行することにより実現される。また、このメモリ確保処理は、アプリケーション４４からメモリ管理機構５０にメモリ確保指示（メモリ確保要求）があった時にメモリ管理機構５０で実行される。
【００６７】
本実施例では、図９（ａ）のＳ６０４において、要求されているメモリ量が標準メモリ管理テーブル５１に空きメモリとして存在しないと判定した場合（Ｓ６０４でＮｏの場合）、メモリ管理機構５０（制御部３２内のＣＰＵ）は、エラーとすることなく、Ｓ９００において、拡張メモリ確保処理（図９（ｂ））を実行する。この場合、本実施例では、エラーにはならないが、メモリ確保処理・解放処理が本来のＯＳのメモリ確保処理・メモリ解放処理として行われるため、実施例１で示したメモリ管理機構５０のメモリ確保処理と比較すると高速化は望めない。
【００６８】
以下、図９（ｂ）を用いて、上記Ｓ９００の拡張メモリ確保処理について説明する。
Ｓ９０１では、メモリ管理機構５０は、アプリケーション４４から要求されたメモリ量が物理メモリ上に空きメモリとして存在するかどうかを判定する。そして、Ｓ９０１において、アプリケーション４４から要求されたメモリ量が物理メモリ上に空きメモリとして存在しないと判定した場合、メモリ管理機構５０は、メモリ不足をアプリケーション４４に通知するために、Ｓ９０３へ処理を進める。このＳ９０１の処理により、アプリケーション４４で必要とされる空きメモリ量が物理メモリ上に存在する場合にのみ、ＯＳにメモリ確保要求を行うように制御でき、確保できない容量のメモリをＯＳに要求してエラーとなってしまうといった無駄を回避することができる。即ち、アプリケーション４４で必要とされる空きメモリ量が存在しない場合には、アプリケーション４４を待たせることなく、速やかにエラー処理を行うことができる。
【００６９】
Ｓ９０３では、メモリ管理機構５０は、アプリケーション４４から要求とされているメモリ量が物理メモリ上に空きメモリとして存在していないため、アプリケーション４４にメモリ不足であることをエラーを返すことで通知し、処理を終了する。
【００７０】
一方、Ｓ９０１において、アプリケーション４４から要求されたメモリ量が物理メモリ上に空きメモリとして存在すると判定した場合、メモリ管理機構５０は、アプリケーション４４から要求されたメモリ量を実際に確保するために、Ｓ９０２〜Ｓ９０５（拡張割当処理）へ処理を進める。
【００７１】
Ｓ９０２では、メモリ管理機構５０は、アプリケーション４４から要求されたメモリ量が物理メモリ上に空きメモリとして存在していることが分かっているので、アプリケーション４４から要求されたメモリ量を実際に確保するようにＯＳにメモリ確保要求を行う。ＯＳは、この要求に応じて、要求された容量の物理メモリを確保する。即ち、ＯＳは、図３で説明したように、物理メモリの空き領域を仮想メモリ上の領域にマッピングして（物理メモリの空き領域と仮想メモリの領域に関連付ける情報をアドレステーブルにセットして）、物理メモリの領域が割り当てられた仮想メモリの領域の先頭アドレスをメモリ管理機構５０に返す。そして、メモリ管理機構５０は、アプリケーション４４で使用可能な状態にするためにＳ９０４へ処理を進める。このＳ９０２の処理により、アプリケーション４４で必要とされる空きメモリ量の物理メモリを確保することができる。
【００７２】
Ｓ９０４では、メモリ管理機構５０は、上記Ｓ９０２で確保して仮想メモリ上にマッピングした先頭アドレスを（ＯＳから応答された仮想メモリの先頭メモリアドレス）をアプリケーション４４に使用可能なメモリ領域として通知する。このＳ９０２の通知を受けたアプリケーション４４は、通知された先頭アドレスから要求した分だけのメモリを使用することが可能となる。また、メモリ管理機構５０は、直接物理メモリを確保しているため標準メモリ管理テーブル５１の一括管理されているメモリ領域とは異なるので、上記先頭アドレスから確保したメモリ量分だけ拡張メモリとして確保中であることを記憶しておくため、Ｓ９０５へ処理を進める。
【００７３】
Ｓ９０５では、メモリ管理機構５０は、アプリケーション４４が使用可能なメモリ領域として先頭アドレスから要求サイズ分、メモリ管理機構５０の拡張メモリ管理テーブル８１の状態を「拡張先頭」，「拡張確保」（メモリ管理番号１，２番のように）と記憶し（拡張確保領域として登録し）、処理を終了する。なお、拡張確保先頭アドレスに、今回確保されたメモリ容量を状態と一緒に記憶するようにしても良い。このＳ９０５の処理により、メモリ管理機構５０は、拡張メモリ管理テーブル８１作成時に予約した領域内の各メモリ管理番号に対応する領域が、メモリ確保してアプリケーション４４に割り当てた領域か、メモリ未確保の領域であるか確実に管理し、以後、メモリ確保及びアプリケーション４４へのメモリ割り当てを速やかに行うことができる。
【００７４】
以上説明したとおり、実施例２のメモリ確保シーケンス処理では、予め確保したメモリを超えるメモリ容量を要求された場合でも、アプリケーションから要求され際に要求された容量だけメモリを追加確保して、メモリ不足に陥ることなく、アプリケーションにメモリを割り当てて処理を続行することができる。また、システムに対する影響を最低限に抑えることができる。
【００７５】
図１０は、本発明の実施例２に係る画像読取装置のメモリ解放シーケンス処理（メモリ管理機構５０のメモリ確保処理）を示したフローチャートである。図中、Ｓ７０１〜Ｓ７０５、Ｓ１０００〜Ｓ１００３は各ステップを示し、図７と同一のステップには同一のステップ番号を付してある。なお、このフローチャートの処理は、制御部３２内のＣＰＵが記録媒体３３にコンピュータ読み取り可能に記録されたプログラムを読み出して実行することにより実現される。また、このメモリ解放処理は、アプリケーション４４からメモリ管理機構５０へ先頭アドレスを指定して解放指示（メモリ解放要求）があった時にメモリ管理機構５０で実行される。
【００７６】
本実施例では、図１０（ａ）のＳ７０１において、メモリ解放要求で指定された先頭アドレスが図９（ａ）のＳ６０６，Ｓ６０７で確保された仮想メモリの先頭アドレスでないと判定した場合（Ｓ７０１でＮｏの場合）、メモリ管理機構５０（制御部３２内のＣＰＵ）は、Ｓ１０００において、拡張メモリ解放処理（図１０（ｂ））を実行する。
【００７７】
以下、図１０（ｂ）を用いて、上記Ｓ１０００の拡張メモリ解放処理について説明する。
Ｓ１００１では、メモリ管理機構５０は、今回のメモリ解放要求が図９（ｂ）のメモリ確保シーケンス処理で仮想メモリの拡張確保された先頭アドレスかどうかを判別する。具体的には拡張メモリ管理テーブル８１で指定されたアドレスのメモリ状態が「拡張先頭」になっているかどうかを判別する。そして、上記Ｓ１００１において、メモリ解放要求で指定された仮想メモリのアドレスが拡張確保された先頭アドレスでないと判定した場合、メモリ管理機構５０は、メモリ管理機構５０で確保されたメモリではないので処理を終了する。具体的には、拡張メモリ管理テーブル８１のメモリ管理番号１番や３番以外が指定された場合は、拡張確保された先頭アドレスでは無いので処理を終了する条件となる。
【００７８】
一方、上記Ｓ１００１において、メモリ解放要求で指定された仮想メモリのアドレスが拡張確保された先頭アドレスであると判定した場合、メモリ管理機構５０は、物理メモリの解放処理を行うためにＳ１００２（拡張解放処理）へ処理を進める。
【００７９】
Ｓ１００２では、メモリ管理機構５０は、拡張メモリ管理テーブル８１において、拡張確保された先頭アドレス（「拡張確保」のアドレス）から次の拡張確保された先頭アドレスまで、もしくは次の「未確保」のアドレスまで検索し、その分の拡張確保された物理メモリを解放するようにＯＳにメモリ解放要求を行う。図８の例では、拡張メモリ管理テーブル８１におけるメモリ管理番号１番が指定された場合はメモリ管理番号１番から２番までに相当するメモリをＯＳの仮想メモリのマッピングから解放するメモリ解放要求をＯＳに行う。また、３番が指定された時は３番に相当するメモリのみをＯＳの仮想メモリのマッピングから解放するメモリ解放要求をＯＳに行う。ＯＳは、この要求に応じて、要求された領域をＯＳの仮想メモリのマッピングから解放する。即ち、ＯＳは、アドレステーブルから、物理メモリの領域を仮想メモリの領域に関連付ける情報を削除して、該当する物理メモリの領域を再度、仮想メモリに割り当て可能にする。このＳ１００２の処理により、アプリケーション４４から返却された拡張メモリ領域を解放し、任意のプログラムが使用可能な状態とすることができる。
【００８０】
次に、Ｓ１００３において、メモリ管理機構５０は、上記Ｓ１００２の処理で解放されたメモリ管理番号に相当するアドレスは物理メモリを解放済みなので、上記Ｓ１００２の処理で解放されたメモリ管理番号に相当するアドレスの拡張メモリ管理テーブル８１のメモリ状態８３を「未確保」状態に変更する処理を行い（未確保領域として登録し）、処理を終了する。このＳ１００３の処理により、メモリ管理機構５０は、上記Ｓ１００２で解放したメモリ領域を、再度、メモリ確保することが可能となる。
以上のように、実施例２のメモリ解放シーケンス処理では、実施例２のメモリ確保シーケンス処理で追加確保したメモリを、アプリケーションからメモリ解放された際に解放して、任意のプログラムが使用可能にして、システムがメモリ不足に陥ってしまうことを抑えることができる。
【００８１】
以上説明したとおり、本発明の実施例２の画像読取装置では、予め確保した予約メモリを超えるメモリ容量を要求された場合でも、メモリ不足に陥ることなく、アプリケーションにメモリを割り当てて処理を続行できるため、システムの使い勝手を向上することができる。
【００８２】
（他の実施例１）
本発明の情報処理装置は、スマートフォン、携帯電話、各種タブレット型コンピュータ等を含む携帯端末であってもよい。
【００８３】
本発明の携帯端末は、図２に示した情報処理装置と同様に、制御部、ＲＡＭ、記録媒体、通信部、表示部等を有し、制御部が、通信部により受信したウェブページをＲＡＭ（物理メモリ）を用いて表示部に表示処理するウェブ表示アプリケーション（ウェブブラウザ）を実行可能である。なお、ウェブページとは、ｈｔｍｌやｘｍｌなどを始めとしたタグマークアップ言語（構造化言語）を用いて動画、画像、文章などを表示するためのデータやｊａｖａ（登録商標）スクリプト等のユーザ入力によってその表示内容を変化させるためのプログラムを含むものであり（即ち、構造化言語を用いて表現されたデータであり）、ウェブブラウザ等のアプリケーションにより表示可能である。ウェブページは、マークアップ言語によって階層化されているために解析が終了するまでデータの容量が不定である。
【００８４】
また、カメラ等の撮像部を有し、撮像部により撮像処理を実行させて撮像部から取得された画像データの画像処理を行う画像処理アプリケーションを実行可能に構成してもよい。また、通信部から取得された画像データの画像処理を行う画像処理アプリケーションを実行可能に構成してもよい。上記携帯端末と外部装置としてのスキャナを（有線又は無線で）通信可能に接続して、スキャナから画像データを取得して画像処理を行う画像処理アプリケーションを実行可能に構成してもよい。さらに、上記携帯端末と外部装置としてのプリンタを（有線又は無線で）通信可能に接続して、ＲＡＭ又は記録媒体に格納される画像データを画像処理してプリンタで印刷させる画像処理アプリケーションを実行可能に構成してもよい。
【００８５】
また、本発明の携帯端末は、メモリ確保要求を受けた際に物理メモリ領域の確保を行い、メモリ解放要求を受けた際に前記確保した物理メモリ領域の解放を行うオペレーティングシステムで動作する。さらに、本発明の携帯端末は、上述した実施例１、実施例２に示したメモリ管理機構を有する。また、本発明の携帯端末で動作する上記ウェブ表示アプリケーションは、ウェブページの表示処理を行うためのメモリの確保及び解放時に、メモリ管理機構５０を用いるものとする。なお、このアプリケーションは、ウェブページの表示処理を行うためのメモリの確保・解放か、それ以外のメモリ確保・解放かを区別できる構成となっている。このアプリケーションの場合、メモリ管理機構５０がアプリケーションからの最初のメモリ要求の際に一括してメモリ確保するメモリ確保量は、ＯＳに一度に要求可能な最大メモリ容量からシステム使用容量（上記予め確保するメモリ以外に、携帯端末の制御部（ＣＰＵ）が使用する必要最低限の容量）を差し引いたメモリ量としてもよい。
【００８６】
同様に、上記画像処理アプリケーションは、画像メモリの確保・解放かそれ以外のメモリ確保・解放かを区別できる構成であり、画像メモリの確保及び解放時にメモリ管理機構５０を用いるものとする。この画像処理アプリケーションの場合、メモリ管理機構５０がアプリケーションからの最初のメモリ要求の際に一括してメモリ確保するメモリ確保量は、カメラやスキャナが一度の読み取り処理で読み取る画像データのサイズに、アプリケーションでの画像処理単位（例えば、スキャンの場合は原稿片面、カメラの場合は１フレーム、プリントの場合は１ページ）の画像データのサイズを、加算したサイズに対応するメモリ量としてもよい。つまり、原稿の画像読み取り処理であれば、アプリケーションによる画像処理能力に応じて、例えば、数ページ分、原稿の枚数分に相当する所定容量のメモリ量をメモリ確保量とすることができる。
【００８７】
このような構成を有することにより、必ずしも物理メモリが潤沢に存在しない携帯端末であっても、容量が不定なウェブページの表示や画像処理を行う等の使用するメモリ容量の大きくなる可能性のあるアプリケーションが、上述のようなＯＳで動作する携帯端末で実行された場合でも、アプリケーションからのメモリ確保要求やメモリ解放要求に速やかに対応し、アプリケーションを無駄に待たせることなくなるので、アプリケーションのパフォーマンスの低下を抑えることができる。
【００８８】
本発明では、メモリ確保・解放要求を受けた時点で物理メモリ領域の確保・解放を行うＯＳや、メモリ確保・解放要求を受けた際に使用中のメモリ領域の圧縮処理や断片化解消処理やクリア処理などを行う高度なメモリ管理機能を有するＯＳのように、メモリの確保処理と解放処理が比較的遅いＯＳで動作する情報処理装置にて、ＯＳに対するメモリの確保要求と解放要求の回数を減らして、アプリケーションのパフォーマンスの低下を抑える。特に、パフォーマンスが要求される処理中では、ＯＳに対するメモリの確保要求と解放要求は行わないように構成する。
【００８９】
具体的にはパフォーマンスが要求される処理が開始される前に高速に処理したい処理分のメモリ容量を予め確保しておき、処理中はＯＳに対してメモリ確保要求や、メモリ解放要求は行わないようにする。そして、その処理が終了したら、処理前に確保したメモリを解放するようにする。また、システムや他のアプリケーションでもメモリは使用されるため、全ての物理メモリを高速な画像処理用に割り当てることは難しいため、予め確保した領域を超える容量のメモリの確保については、その時点でＯＳに対してメモリ確保要求、メモリ解放要求を随時行い、メモリ不足に陥らないように構成する。
【００９０】
以上の構成により、ＯＳがメモリ確保・解放を行う回数を減らし、本発明のメモリ管理機構５０によりアプリケーションからのメモリ確保要求やメモリ解放要求に速やかに対応し、アプリケーションを無駄に待たせないことで、アプリケーションのパフォーマンス低下を抑えることができる。また、予め確保した予約メモリを超えるメモリ容量を要求された場合でも、アプリケーションから要求され際に要求された容量だけメモリを追加確保して、メモリ不足に陥ることなく、アプリケーションにメモリを割り当てて処理を続行することが可能となる。また、システムに対する影響を最低限に抑えることができる。
【００９１】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【００９２】
以上、一実施例について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００９３】
（他の実施例２）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
【００９４】
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【産業上の利用可能性】
【００９５】
本発明の情報処理装置を、メモリ確保・解放要求を受けた時点で物理メモリ領域の確保・解放を行うＯＳや、メモリ確保・解放要求を受けた際に使用中のメモリ領域の圧縮処理や断片化解消処理やクリア処理などを行う高度なメモリ管理機能を有するＯＳのみでなく、メモリの確保処理と解放処理が比較的遅いＯＳで動作する情報処理装置に適用することで効果を期待できる。
【符号の説明】
【００９６】
１    情報処理装置（画像読取装置）
２１    情報表示部
３１    画像読取部
３２    制御部
３３    記憶媒体
３４    ＲＡＭ
３５    外部通信インタフェース（外部通信Ｉ／Ｆ）
５０    メモリ管理機構
５１    標準メモリ管理テーブル
８１    拡張メモリ管理テーブル
【図１】
2011175395.tif 000003
【図２】
2011175395.tif 000004
【図３】
2011175395.tif 000005
【図４】
2011175395.tif 000006
【図５】
2011175395.tif 000007
【図６】
2011175395.tif 000008
【図７】
2011175395.tif 000009
【図８】
2011175395.tif 000010
【図９】
2011175395.tif 000011
【図１０】
2011175395.tif 000012