JP2010211696A - メモリスワップ管理方法、装置およびプログラム - Google Patents

メモリスワップ管理方法、装置およびプログラム Download PDF

Info

Publication number
JP2010211696A
JP2010211696A JP2009059420A JP2009059420A JP2010211696A JP 2010211696 A JP2010211696 A JP 2010211696A JP 2009059420 A JP2009059420 A JP 2009059420A JP 2009059420 A JP2009059420 A JP 2009059420A JP 2010211696 A JP2010211696 A JP 2010211696A
Authority
JP
Japan
Prior art keywords
swap
storage device
job
executed
candidate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009059420A
Other languages
English (en)
Other versions
JP5419500B2 (ja
JP2010211696A5 (ja
Inventor
Yoichi Matsuyama
洋一 松山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2009059420A priority Critical patent/JP5419500B2/ja
Priority to US12/722,241 priority patent/US8595745B2/en
Publication of JP2010211696A publication Critical patent/JP2010211696A/ja
Publication of JP2010211696A5 publication Critical patent/JP2010211696A5/ja
Application granted granted Critical
Publication of JP5419500B2 publication Critical patent/JP5419500B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms

Abstract

【課題】次のプロセス実行開始までの時間を短縮する。
【解決手段】実行待ちのジョブキューがある場合は、ジョブキュー500からジョブキューチェックテーブル1200を作成し、これと、DRAM38の実メモリに記憶されているプロセスの種類とに基づいてスワップアウト/イン候補のプロセスを決定する。実行待ちのジョブキューがない場合は、プロセス実行履歴テーブル600と、直前に実行されたプロセスの種類とに基づいてプロセス実行頻度テーブル1300を作成し、次に実行されるプロセスを予測すると共に、該予測に基づいてスワップアウト/イン候補のプロセスを決定する。上記決定に従って、スワップアウト候補を実メモリからスワップアウトし、それによって空いた実メモリの領域に、スワップイン候補をスワップインする。
【選択図】図9

Description

本発明は、プロセスで成るジョブが実行される情報処理装置において1次記憶装置と2次記憶装置とを用いてプロセスの仮想記憶を行うメモリスワップの技術に関する。
従来、コピー、プリント、ファクシミリ等、多様な機能を有する複合機等の情報処理装置において、仮想記憶方式を採用し、メモリ領域のスワップを制御するメモリスワップ管理手法が知られている。
仮想記憶方式を採用する手法においては、2次記憶装置を利用して、1次記憶装置における実メモリの容量以上のメモリ領域を管理することができる。実メモリ容量以上のメモリ領域を使用する場合は、メモリ領域の内容を一時的に2次記憶装置であるHDD(ハードディスク)等の記憶領域へ待避(スワップアウト)するスワップ処理を行う。スワップ処理には、実メモリとHDD間のデータ転送を伴うため、スワップ処理が発生するとそれだけ次のプロセスの実行開始が遅くなる。
そこで、スワップ処理を効率化するための改良として、プロセスのスワップアウト時にページの活性状態に応じて複数ページをまとめてスワップアウトすることで効率化を図るようにした方法が下記特許文献1に開示されている。
また、従来、実メモリから一旦スワップアウトされたプロセスが再び動作する必要が生じた場合に、そのプロセスを実メモリにスワップインするために時間がかかり、レスポンスが悪くなるという問題があった。
その対策の一つとして、次に動作するプロセスのレスポンスを良くするために、次のような試みを検討する余地がある。まず、スワップアウトされた領域の情報をリストで管理する。そして、システムのアイドル時に実メモリに空きがあれば、直近にスワップアウトされたプロセスから順にスワップインしておくことで、次に動作するプロセスのレスポンスを良くする。
特開平5−88984号公報
しかしながら、上記特許文献1の方法では、複数回のスワップアウト処理をまとめることで時間は短縮されるが、プロセスの実行時に頻繁にスワップが発生し得るため、プロセス実行開始までの時間の短縮が行えない。
また、上記検討される試みの手法では、最も直近にスワップアウトされたプロセスが次に動作する可能性が常に高いとは限らない。そのため、プロセス動作時に当該プロセスが実メモリに存在せずにスワップ処理が発生してしまい、効率が低下することが十分にあり得る。
ところで、複合機のような情報処理装置においては、汎用PC(パーソナルコンピュータ)とは異なり、コピー、プリント、ファックス、スキャナ等の機能が、ジョブとして指示により実行される。各ジョブの実行においては、そのジョブを構成するプロセスのみが実行される。従来は、このような、ユーザの使用状況によって特定のプロセスのみが頻繁に実行され得るような環境においても、ユーザの使用状況によってスワップ処理を最適化することは行われていない。そのため、この種の装置においては特に、ジョブ実行直前のスワップ処理発生を抑制してデバイスの処理速度を向上させる上で改善の余地がある。
本発明の目的は、次に実行される可能性が高いプロセスが1次記憶装置に優先的に置かれるようにして、次のプロセス実行開始までの時間を短縮することができるメモリスワップ管理方法、装置およびプログラムを提供することにある。
上記目的を達成するために本発明の請求項1のメモリスワップ管理方法は、少なくとも1つのプロセスで成るジョブが実行される情報処理装置において、1次記憶装置と2次記憶装置とを用いて前記プロセスの仮想記憶を行うメモリスワップ管理方法であって、前記情報処理装置における実行待ちのジョブが複数ある場合にそれらの予定実行順序を記憶する記憶工程と、前記記憶工程により記憶されている前記実行待ちのジョブの予定実行順序と前記1次記憶装置に記憶されているプロセスの種類とに基づいて、スワップアウト候補のプロセスとスワップイン候補のプロセスとを決定する決定工程と、前記決定工程による決定に従って、前記スワップアウト候補のプロセスを前記1次記憶装置から前記2次記憶装置にスワップアウトすると共に、それによって空いた前記1次記憶装置の領域に、前記スワップイン候補のプロセスを前記2次記憶装置からスワップインするスワップ処理工程とを有することを特徴とする。
上記目的を達成するために本発明の請求項4のメモリスワップ管理方法は、少なくとも1つのプロセスで成るジョブが実行される情報処理装置において、1次記憶装置と2次記憶装置とを用いて前記プロセスの仮想記憶を行うメモリスワップ管理方法であって、プロセスの実行実績を記録する記録工程と、前記記録工程において記録されたプロセスの実行実績と、直前に実行されたプロセスの種類とに基づいて、次に実行される可能性を各プロセスについて予測する予測工程と、前記予測工程により予測された可能性に基づいて、スワップアウト候補のプロセスとスワップイン候補のプロセスとを決定する決定工程と、前記決定工程による決定に従って、前記スワップアウト候補のプロセスを前記1次記憶装置から前記2次記憶装置にスワップアウトすると共に、それによって空いた前記1次記憶装置の領域に、前記スワップイン候補のプロセスを前記2次記憶装置からスワップインするスワップ処理工程とを有することを特徴とする。
本発明によれば、次に実行されるジョブを構成するプロセスであって次に実行される可能性が高いプロセスが1次記憶装置に優先的に置かれるようにして、次のプロセス実行開始までの時間を短縮することができる。
また、本発明によれば、次に実行される可能性が高いプロセスが1次記憶装置に優先的に置かれるようにして、次のプロセス実行開始までの時間を短縮することができる。
本発明の一実施の形態に係るメモリスワップ管理が適用される情報処理装置である画像入出力装置の構成を示すブロック図である。 コントローラ部の詳細構成を示すブロック図である。 画像入出力装置で実行されるプロセスのプロセス名と役割を表すテーブルを示す図である。 ジョブプロセステーブルを示す図である。 ジョブキューの一例を示す図である。 初期状態のプロセス実行履歴テーブルの一例を示す図である。 更新されたプロセス実行履歴テーブルの一例を示す図である。 プロセスメモリ管理テーブルの更新前(図(a))と更新後(図(b))の例を示す図である。 スワップ制御の全体処理のフローチャートである。 図9のステップS903で実行される、ジョブキューの内容からスワップ処理対象のプロセスを決定する処理(第1の決定方法)を示すフローチャートである。 図9のステップS904で実行される、プロセス実行履歴テーブルからスワップ処理対象のプロセスを決定する処理(第2の決定方法)のフローチャートである。 ジョブキューチェックテーブルを示す図である。 プロセス実行頻度テーブル(図(a)、(c))、スワップ対象プロセステーブル(図(b)、(d))である。 スワップ対象プロセステーブル(図(a))、直前にfax送信ジョブが実行された状態におけるプロセスメモリ管理テーブルの例(図(b))、更新後のプロセスメモリ管理テーブルの例(図(c))を示す図である。
以下、本発明の実施の形態を図面を参照して説明する。
《画像入出力装置》
図1は、本発明の一実施の形態に係るメモリスワップ管理が適用される情報処理装置である画像入出力装置の構成を示すブロック図である。
この画像入出力装置1は、イーサネット(登録商標)等のLAN(Local Area Network)400にてホストコンピュータ(PC)3、4に接続されている。画像入出力装置1は、画像データの読み取り処理を行うリーダ部2と、画像データの出力処理を行うプリンタ部6と、コントローラ部110とを有する。さらに、画像データや各種機能の表示等を行う液晶パネルを備えた操作部7と、制御プログラムや画像データ等が予め書き込まれたハードディスクドライブ(HDD)8、9とを備える。上記各構成要素はコントローラ部110に接続され、コントローラ部110によって制御される。
リーダ部2は、原稿用紙を搬送する原稿給紙ユニット10と、原稿画像を光学的に読み取って電気信号としての画像データに変換するスキャナユニット11とを有する。プリンタ部6は、記録用紙を収容する複数段の給紙カセットを備えた給紙ユニット12と、画像データを記録用紙に転写、定着するマーキングユニット13とを備える。プリンタ部6はさらに、印字された記録用紙にソート処理やステイプル処理を施して外部に排出する排紙ユニット14を備える。
《コントローラ部》
図2は、コントローラ部110の詳細構成を示すブロック図である。
コントローラ部110は、メインコントローラ32を備える。メインコントローラ32は、CPU33と、バスコントローラ34と、後述する各種コントローラ回路を含む機能ブロックとを内蔵する。
コントローラ部110には、ROMI/F(インターフェイス)35を介してROM36が接続されると共に、DRAMI/F37を介してDRAM38が接続される。コントローラ部110にはさらに、コーデックI/F39を介してコーデック40が接続され、また、ネットワークI/F41を介してネットワークコントローラ42が接続されている。
ROM36には、メインコントローラ32のCPU33で実行される各種制御プログラムや演算データが格納されている。DRAM38は、CPU33が動作するための作業領域や画像データを蓄積するための領域として使用される。DRAM38には、後述する各種のテーブルも記憶される。コーデック40は、DRAM38に蓄積されたラスタイメージデータをMH/MR/MMR/JBIG等の周知の圧縮方式で圧縮し、また圧縮されたデータをラスタイメージに伸長する。
コーデック40にはSRAM43が接続されており、該SRAM43はコーデック40の一時的な作業領域として使用される。ネットワークコントローラ42は、ネットワークコネクタ44を介してLAN400との間で所定の制御動作を行う。また、メインコントローラ32は、スキャナバス45を介してスキャナI/F46に接続されると共に、プリンタバス47を介してプリンタI/F48に接続される。
メインコントローラ32はさらに、PCIバス等の汎用高速バス49を介して、拡張ボードを接続するための拡張コネクタ50および入出力制御部(I/O制御部)51に接続されている。I/O制御部51には、リーダ部2やプリンタ部6との間で制御コマンドを送受信するための調歩同期式のシリアル通信コントローラ52が2チャンネル装備されている。該シリアル通信コントローラ52には、I/Oバス53を介してスキャナI/F46およびプリンタI/F48が接続されている。
スキャナI/F46は、第1の調歩同期シリアルI/F54および第1のビデオI/F55を介してスキャナコネクタ56に接続され、さらに該スキャナコネクタ56はリーダ部2のスキャナユニット11(図1)に接続されている。そして、スキャナI/F46は、スキャナユニット11から受信した画像データに対し、所望の2値化処理や、主走査方向および/または副走査方向の変倍処理を行う。また、スキャナユニット11から送られてきたビデオ信号に基づいて制御信号を生成し、それを、スキャナバス45を介してメインコントローラ32に転送する。
プリンタI/F48は、第2の調歩同期シリアルI/F57および第2のビデオI/F58を介してプリンタコネクタ59に接続され、さらに該プリンタコネクタ59はプリンタ部6のマーキングユニット13(図1)に接続されている。
そして、プリンタI/F48は、メインコントローラ32から出力された画像データにスムージング処理を施して該画像データをマーキングユニット13に出力する。さらに、マーキングユニット13から送られたビデオ信号に基づいて、生成された制御信号をプリンタバス47に出力する。
メインコントローラ32のCPU33は、ROM36からROMI/F35を介して読み込まれた制御プログラムに基づいて動作する。例えば、ホストコンピュータ3、4(図1)から受信したPDL(ページ記述言語)データを解釈し、ラスタイメージデータに展開処理を行う。
また、バスコントローラ34は、スキャナI/F46、プリンタI/F48、その他拡張コネクタ50等に接続された外部機器から入出力されるデータ転送を制御するものであり、バス競合時のアービトレーション(調停)やDMAデータ転送の制御を行う。例えば、上述したDRAM38とコーデック40との間のデータ転送や、スキャナユニット11からDRAM38へのデータ転送、DRAM38からマーキングユニット13へのデータ転送等は、バスコントローラ34によって制御され、DMA転送される。
また、I/O制御部51には、LCDコントローラ60およびキー入力I/F61を介してパネルI/F62が接続され、パネルI/F62には操作部7(図1)が接続されている。I/O制御部51は、不揮発性メモリ領域としての不図示のEEPROMに接続されている。I/O制御部51はまた、E−IDEコネクタ63を介してハードディスクドライブ(HDD)8、9に接続されている。I/O制御部51はさらに、機器内で管理する日付と時刻を更新/保存するリアルタイムクロックモジュール64に接続されている。リアルタイムクロックモジュール64は、バックアップ用電池65に接続されて該バックアップ用電池65によりバックアップされている。
本実施の形態において、コントローラ部110は、メモリスワップ管理装置としての機能を果たす。CPU33は、決定手段、スワップ処理手段、予測手段としての機能を果たす。DRAM38は、記録手段、記憶手段としての機能を果たす。ハードディスクドライブ(HDD)8、9は、記録手段としての機能を果たす。
《プロセスとジョブの関係》
図3は、画像入出力装置1で実行されるプロセスのプロセス名と役割を表すテーブルを示す図である。このテーブル300に示されるプロセスの1つに「network process」がある。これは、ネットワークカードのドライバやTCP/IPプロトコルスタックのようにシステムに常駐するプロセスではなく、ファックスの送受信のためのアプリケーションプログラムである。
以降の説明において、各プロセスの記載につき、「process」を「プロセス」と記したり、「process」自体を省略したりすることがある。
図4は、ジョブプロセステーブルを示す図である。このジョブプロセステーブル401は、画像入出力装置1で実行されるジョブと、各ジョブを構成するプロセスのプロセス名と、各ジョブにおいて実行されるプロセスの実行順序とを記述したものである。
ここで、ジョブとは、画像入出力装置1が提供する、スキャンやプリント等の機能を実行する単位であり、各ジョブは、対応する(自身を構成する)プロセスが既定の実行順序で実行されることにより動作する。例えば、copyジョブではscan、print、imagingの各プロセスがこの順序で実行される。
図5は、ジョブキューの一例を示す図である。このジョブキュー500は、画像入出力装置1で実行待ちのジョブと各ジョブを構成するプロセス名とその予定実行順序とを記述した情報である。ジョブキュー500は、システム開始時(例えば、画像入出力装置1の電源オン時)にCPU33によってDRAM38上に作成される(記憶工程)。そして、ホストコンピュータ3、4からのPDLジョブの受信や、ユーザからの操作部7を介するコピー、ファックス等の指示により、ジョブキュー500に新規なジョブが追加される。ジョブキュー500は、新規なジョブの追加、ジョブの実行完了によって更新される。
ジョブキュー500の項目「順序」の列は、対応する実行待ち状態のジョブの、キュー内での順序を表わし、数値が小さいものから順番に実行される。ジョブキュー500の項目「ジョブキュー」の列は、項目「順序」で表される順番で実行されるジョブのジョブ名を示す。ジョブキュー500の項目「対応するプロセスの実行順序」の列は、対応するジョブを構成するプロセスの実行順序を示す。
ジョブキュー500が図5に示すようなものであった場合、まず、項目「順序」が「1」である「pdl printジョブ」が実行され、それを構成するprint、imaging、renderingの各プロセスがこの順序で実行される。実行されたジョブはジョブキュー500から削除され、項目「順序」が「2」である行の内容が、項目「順序」が「1」である行に移動し、同様に各行の内容が、若い番号の側に繰り上がる。そして、順次、ジョブキュー500が空になるまで項目「順序」が「1」である行のジョブが実行される。
《プロセス実行履歴》
図6に、初期状態におけるプロセス実行履歴テーブルの一例を示す。このプロセス実行履歴テーブル600は、直前に動作していたプロセスと、その次に動作したプロセスの関係を示すテーブルである。すなわち、プロセスの実行実績を示す情報である。
プロセス実行履歴テーブル600における左側の列は、「直前に動作していたプロセス」のプロセス名を示し、右側の列は、上記直前に動作したプロセスの次に(すなわち、直後に)動作したプロセスの実行頻度(実行回数)を、頻度値としてプロセス毎に示す。例えば、図6のプロセス実行履歴テーブル600の1行目を参照すると、printプロセスの直後に、imagingプロセスは10回動作し、renderingプロセスは1度も動作せず、scanプロセスは1回動作している。この実行頻度は、直前に実行されたプロセスの次にどのプロセスがどの程度の可能性で実行されるのかを各プロセスについて予測するための情報となる。
プロセス実行履歴テーブル600の初期値は、コントローラ部110のROM36に保存されている。初期値のプロセス実行履歴テーブル600は、システムの初期状態として「copy」、「pdl print」のジョブが頻繁に実行されると想定して設定されたものである。システムの初回起動時に、CPU33はROMI/F35を介してROM36に保存されたプロセス実行履歴テーブル600を読み込み、DRAMI/F37を介してDRAM38に展開する。また、システムの終了時に、CPU33はDRAMI/F37を介してDRAM38上のプロセス実行履歴テーブル600を取得する。そして、その値をE−IDEコネクタ63を介してハードディスクドライブ8、9に保存する(記録工程)。
2回目以降のシステム起動時には、CPU33はハードディスクドライブ8、9に保存されたプロセス実行履歴テーブル600を読み込むことにより前回までの更新結果を使用する。なお、プロセス実行履歴テーブル600をハードディスクドライブ8、9に保存することとしたが、コントローラ部110に他の保存装置(フラッシュメモリ等)が備えられていれば、それを使用するようにしてもよい。
プロセス実行履歴テーブル600は、ジョブの実行に伴って更新される。例えば、copy→fax送信→scan→fax送信というジョブシーケンスが高い頻度で使用される環境を想定する。当該想定したのと同じジョブシーケンスを繰り返し、更新されたプロセス実行履歴テーブル600の一例を図7に示す。
図7に例示する、更新されたプロセス実行履歴テーブル600の1行目を参照すると、上記のジョブシーケンスを繰り返したことによって、printプロセスの直後におけるimagingプロセスの頻度値は17回に増えている。これは、上記のジョブシーケンスに限れば、printプロセスはcopyジョブにしか含まれず、しかも、copyジョブにおいて、printプロセスの直後にはimagingプロセスが実行されるからである。
プロセス実行履歴テーブル600の更新は以下のようにして行われる。あるプロセスが今回実行されたら、CPU33は、DRAM38に記憶されているプロセス実行履歴テーブル600において、直前に実行されていたプロセスの行を特定する。そして、特定した行における、上記今回実行されたプロセスの頻度値を「1」だけ増加させる。例えば、imagingプロセスが今回実行されたとして、直前にはprintプロセスが実行されていたとすると、printプロセスの行におけるimagingプロセスの値が「1」だけ増加する。
また、この操作に加えて、頻度値を増加させた項目が属する行の中で、増加させることとなった元の頻度値が最大値でなかった場合は、CPU33は、その行で値が最大となっているプロセスの頻度値を「1」だけ減少させる。これにより予測が外れたことを反映させる。例えば、図7に示すプロセス実行履歴テーブル600で例示すると、scanプロセスが今回実行されたとして、直前にはprintプロセスが実行されていたとする。この場合、printプロセスの行におけるscanプロセスの頻度値が「1」だけ増加すると共に、頻度値が最大(17)であるimagingプロセスの頻度値が「1」だけ減少する。
《プロセス実行履歴に基づくスワップ処理》
プロセス実行履歴テーブル600に基づいて、次に実行される可能性が高いプロセスをスワップインするためには、スワップ処理したメモリ領域とプロセスを関連付けて管理する必要がある。
本実施の形態では、プロセスの仮想記憶を行う上で、DRAM38が1次記憶装置として機能し、プロセスがスワップインされ記憶される「実メモリ」を提供する。一方、ハードディスクドライブ8、9が、2次記憶装置として機能し、プロセスのスワップアウト先の記憶領域を提供する。ただし、これらは例示であり、アクセスの速い方の記憶装置を1次記憶装置として、他の種類の記憶装置を適用してもよい。
図8(a)は、プロセスメモリ管理テーブルの例を示す。このプロセスメモリ管理テーブル800は、プロセスと関連する仮想アドレス、実アドレス等の関係を示す情報である。図8(b)は、図8(a)のプロセスメモリ管理テーブルを更新した場合の一例を示し、詳細は後述する。
本実施の形態では、理解を簡単にするため、各プロセスには1ページのメモリ領域のみが割り当てられると仮定する。また、実メモリは2ページ分、スワップファイルは3ページ分と仮定する。ただし、これらの設定値は例示であり、限定されるものではない。
プロセスが実行されると、CPU33は、対応するメモリ領域の仮想アドレスを割り当て、プロセスメモリ管理テーブル800の“仮想アドレス”の列に記入する。次に実メモリの割り当てが行われる。CPU33は、実メモリに空きがあれば“対応する実アドレス”の列に“あり”を記入し、“情報”の列に実アドレスの値を記入する。実メモリに空きがない場合、CPU33は、LRU(Least Recent Used)アルゴリズム等に基づき、必要性の低いメモリ領域の内容をHDD8またはHDD9にスワップアウトし、それによって空いた実メモリのアドレスへの割り当てを行う。
CPU33は、HDD8、9にスワップアウトしたプロセスについては“対応する実アドレス”の列に“なし”を記入し、“情報”の列にスワップファイル内の「セグメントID#」を記入する。
プロセスメモリ管理テーブル800の“優先度”の列は、同一プロセスに属するページの優先度を示し、値が小さい程、優先度が高いことを示す。CPU33は、スワップインする時に実メモリの空きサイズに応じて優先度順にページをスワップインする。例えば、プロセスの処理開始時に必要になるページに高い優先度を与えることで、プロセス処理開始時に当該ページが実メモリに存在している確率を高くすることができる。本実施の形態では、1プロセス=1ページを仮定しているので、優先度は全て「1」となっている。
以下に、次に実行される可能性が高いプロセスを予測してスワップ処理を行う方法を、図9〜11のフローチャートを参照して説明する。
図9は、スワップ制御の全体処理のフローチャートである。
CPU33は、図9のメモリスワップ処理を開始すると、まず、ステップS901で、現在実行中のプロセスが存在するか否かを判定する。実行中のプロセスが存在する場合は、プロセスが終了するのを待つ。実行中のプロセスが無い場合はステップS902に進む。従って、システムのアイドリング時に、ステップSS902以降の処理が実行される。
ステップS902で、CPU33は、DRAM38内のジョブキュー500(図5)に実行待ちジョブが有るか否かを判定する。実行待ちジョブがある場合はステップS903に進む一方、実行待ちジョブが無い場合(ジョブキューが空の場合)はステップS904に進む。
ステップS903では、CPU33は、ジョブキュー500の内容から、スワップインするプロセスとスワップアウトするプロセスとを決定する(決定工程)。ここでのプロセスの決定方法(第1の決定方法と称する)は、図5、図10、図12、図14を用いて後述する。
ステップS904では、CPU33は、プロセス実行履歴テーブル600の内容から、スワップインするプロセスとスワップアウトするプロセスとを決定する(決定工程)。ここでのプロセスの決定方法(第2の決定方法と称する)は、図6、図7、図11、図13を用いて後述する。
《スワップ処理対象プロセス決定後の処理》
ステップS903またはステップS904でスワップ処理対象プロセスが決定されると、ステップS905に進む。ステップS905では、CPU33は、スワップ処理を実行する(スワップ処理工程)。これは、DRAM38内のスワップ対象プロセステーブル1301(図13(b)、(d)、図14(a)参照)およびプロセスメモリ管理テーブル800(図8(a)、図14(b)参照)を用いて実行される。
図13(a)は、直前に実行されたプロセスがscanである場合において、図6に示すプロセス実行履歴テーブル600に基づき作成されたプロセス実行頻度テーブルである。このプロセス実行頻度テーブル1300に基づいて、後述する図11の処理によって、図13(b)に示すスワップ対象プロセステーブル1301が作成される。図13(c)、(d)は、直前に実行されたプロセスがscanである場合において、基づくプロセス実行履歴テーブル600の内容が図13(a)、(b)とは異なっている場合を例示したものである。すなわち、図13(c)は、図13(a)と同様に、直前に実行されたプロセスがscanである場合において、図7に示すプロセス実行履歴テーブル600に基づき作成されたプロセス実行頻度テーブル1300である。このプロセス実行頻度テーブル1300に基づいて、図13(d)に示すスワップ対象プロセステーブル1301が作成される。
図9に戻り、前記ステップS905のスワップ処理では次のような処理が行われる。まず、スワップ対象プロセステーブル1301(図13(b)を例にとって説明する)のスワップアウト候補として決定されているプロセスはimagingである。CPU33は、このプロセスが実メモリにある(記憶されている)か否かを確認する。すなわち、プロセスメモリ管理テーブル800(図8(a)を例にとって説明する)において、imagingにおける、「対応する実アドレス」が「あり」であるか否かを判別する。
そして、imagingが実メモリになかった場合は、何も行わない。図8(a)に示す例では、imagingは実メモリにあるので、imagingのスワップアウト処理を行い、プロセスメモリ管理テーブル800を更新する。
具体的には、imagingを実メモリからHDD8、9にスワップアウトする。それと並行して、プロセスメモリ管理テーブル800のimaging processの行の「対応する実アドレス」の項目に「なし」を記入する。さらに、「情報」の項目に、スワップアウト先のハードディスクドライブ8、9上のセグメントID#4を記入する。
imagingのスワップアウト処理を行った場合においては、次に、スワップ対象プロセステーブル1301(図13(b))のスワップイン候補として決定されているプロセスであるprintが実メモリにあるか否かを確認する。これは、プロセスメモリ管理テーブル800(図8(a))において確認する。
そして、printが既に実メモリにあれば何も行わない。図8(a)に示す例では、printが実メモリに無いので、imagingをスワップアウトして空いた実メモリの領域にHDD8、9からprintをスワップインすると共に、プロセスメモリ管理テーブル800を更新し、ステップS906に進む。
具体的には、プロセスメモリ管理テーブル800(図8(a))において、print processの行の「対応する実アドレス」の項目に「あり」を記入する。それと共に、「情報」の項目に、imaging processのあった実アドレスである「0x1000」を記入する。
こうしてプロセスメモリ管理テーブル800が更新され、図8(b)に示すような内容となる。
続くステップS906〜S909では、実行されたプロセスに応じてプロセス実行履歴テーブル600を更新するための処理がなされる。
まず、ステップS906では、CPU33は、プロセス実行開始を監視し、プロセスが実行開始したらステップS907に進む。ステップS907では、CPU33は、実際に実行開始したプロセスの種類を元にプロセス実行履歴テーブル600を更新する。
ここで、通常、プロセス実行履歴テーブル600については、最新のものを用いることになるが、ここでの説明に限り、今回のステップS907の処理において、初期状態である図6のものを用いると仮定する。一例として、直前に実行されたプロセスがscanであったとする。ステップS905の後に実行されるジョブがfax送信ジョブであった場合を例にとると、前記ステップS906で実行開始が判断されるプロセスは、fax送信ジョブを構成する筆頭のプロセスであるscanプロセスとなる。
この場合は、CPU33は、プロセス実行履歴テーブル600(図6)におけるscanの行において、右列のscanの頻度値「1」に「1」だけ加算して「2」とすることで更新し、ステップS908に進む。
ステップS908では、CPU33は、上記実行開始したプロセス(scan)が、プロセス実行履歴テーブル600(図6)における、直前に実行されていたプロセス(scan)の行における最大頻度値を有するプロセスか否かを判別する。
図6の例では、プロセス実行履歴テーブル600において、直前に実行されていたプロセス(scan)の行の最大頻度値を有するプロセスは、頻度値が10であるprintであり、上記実行開始したプロセス(scan)と異なる。そのため、ステップS909に進む。両プロセスが一致する場合は、前記ステップS909を実行することなく本処理を終了する。
ステップS909では、CPU33は、プロセス実行履歴テーブル600(図6)の右列の最大頻度値を有するプロセス(print)の値10を「1」減らして「9」とすることで更新し、本処理を終了する。
前記ステップS905〜S909の処理内容は、当該処理開始時のプロセス実行履歴テーブル600の内容と、ステップS905で実行開始が判断されたプロセスとによって異なる。仮に、上記したように、copy→fax送信→scan→fax送信というジョブシーケンスが高い頻度で繰り返されたとすると、プロセス実行履歴テーブル600は、更新により、やがて図7に示した内容に近づいていく。
プロセス実行履歴テーブル600は、直前に実行されたプロセスから、次に実行されるプロセスが何であるかを予測するための情報となる。例えば、上記したジョブシーケンスが高い頻度で繰り返される場合を考察する。ジョブプロセステーブル401(図4)から、次のことがわかる。すなわち、scanプロセスの後には、print(copyジョブの場合)、scan(scanジョブ→fax送信ジョブの場合)、network(fax送信ジョブの場合)のプロセスが高い頻度で実行されることがわかる。
このため、scanプロセスの行に着目すると、図6のプロセス実行履歴テーブル600では、printの頻度が高いのに対し、図7のプロセス実行履歴テーブル600では、scan、networkの頻度が高くなっている。
このことから、プロセス実行履歴テーブル600が図7に示すものとなっている環境では、ジョブでいえば、scanジョブの後には、scan、networkのプロセスを使用する「fax送信ジョブ」が実行される可能性が高いことが予測される。
以下に、前記ステップS903、S904でのスワップイン/アウト対象の決定について詳細に説明する。
《ジョブキューからのスワップイン/アウト対象の決定(第1の決定方法)》
図10は、図9のステップS903で実行される、ジョブキュー500(図5)の内容からスワップ処理対象のプロセスを決定する処理(第1の決定方法)を示すフローチャートである。
図12は、ジョブキューチェックテーブルを示す図である。このジョブキューチェックテーブル1200は、図10の処理によって、ジョブキュー500の内容から作成される。ジョブキューチェックテーブル1200において、各ジョブ名に対して、各ジョブを構成するプロセスの実行順序と、各ジョブの出現順が設定される。
図10の処理開始にあたって、CPU33は、DRAM38にジョブキューチェックテーブル1200を作成し、該ジョブキューチェックテーブル1200における全ジョブの「出現順」の項目を未設定(空白)に初期化する。
ステップS1001では、CPU33は、変数Countにジョブキュー500内のジョブ数(図5の例では「7」)を設定すると共に、変数i、jに「1」を、変数Pagesに実メモリ上のページ数(本実施の形態では「2」)をそれぞれ設定する。続くステップS1002で、CPU33は、ジョブキュー500(図5)のi番目のジョブ名に対応する、ジョブキューチェックテーブル1200におけるジョブ名の出現順の欄が未設定(空白)か否かを判定する。そして、出現順の欄が未設定の場合は、ステップS1003に進み、未設定でない場合はステップS1007に進む。ステップS1007では、CPU33は、変数iを「1」増やしてステップS1002に進む。
例えば、i=1の場合、図5の1番目のジョブがpdl printである。この場合、図12のpdl printの行の出現順が「1」であって未設定ではないので、ステップS1007に進む。これにより、既に値が設定されている出現順は、その値が維持されることになる。
ステップS1003では、CPU33は、ジョブキュー500のi番目のジョブ名に対応する、ジョブキューチェックテーブル1200におけるジョブ名の出現順の欄に変数jの値を記入すると共に、変数jを「1」増やして、ステップS1004に進む。ステップS1004では、CPU33は、変数iが変数Countに等しいか否かを判別する。その判別の結果、変数iが変数Countに等しい場合はステップS1005に進む一方、等しくない場合はステップS1007に進む。
従って、ステップS1001〜S1004の処理によれば、ジョブキューチェックテーブル1200(図12)において、ジョブキュー500(図5)で規定される実行順番に従って、「1」、「2」・・・という順で各ジョブに番号が付与されていく。その際、各ジョブの「出現順」に、順番が先頭のジョブから「1」が付与されていく。ただし、2度目に登場する場合は、既に設定されている出現順が維持される。ジョブキュー500にないジョブについては、出現順は未設定のままとなる。
ステップS1005では、CPU33は、ジョブキューチェックテーブル1200における出現順が「1」であるジョブから順に、当該ジョブ(図12の例ではpdl print)を構成しているプロセスを、スワップイン候補として決定する。すなわち、実行順序で規定される優先順位で、最大Pages個(ここでは2個)分、スワップイン候補として決定する。同じジョブ内では、より早く実行されるプロセスの優先順位を高くする。出現順が「1」であるジョブだけでは最大Pages個に満たない場合は、次に出現順が「2」のジョブのプロセスが対象とされる。
このようにして、ジョブキューチェックテーブル1200から、図14(a)に示すスワップ対象プロセステーブル1301が作成される。ここではまず、スワップイン候補として、pdl printジョブを構成しているprintプロセス、imagingプロセスがスワップ対象プロセステーブル1301に設定される。
なお、ここで、スワップイン候補が既に実メモリにあるものと同じである場合は、この候補に代えて、優先順位が次である、すなわち、次に早く実行されるプロセスを、スワップイン候補として決定するようにしてもよい。仮に、直前にfax送信ジョブが実行されていたと仮定すると、実メモリにはscan、networkのプロセスがあったことになる。この場合、実メモリの内容とpdl printに対応するプロセスは全て異なっているのでprint、imagingがスワップイン候補に決定される。
次に、ステップS1006では、CPU33は、まず、ジョブキューチェックテーブル1200の出現順が未設定のジョブがあれば該ジョブを構成するプロセスをスワップアウト候補とする。すなわち、上記決定したスワップイン候補と同じ数だけスワップアウト候補を決定する。
このとき、ジョブを構成するプロセスのうち、より遅く実行されるプロセスの優先順位を高くする。ただし、出現順が未設定のジョブがない場合や、出現順が未設定であるジョブだけではスワップイン候補と同じ数に満たない場合は、出現順の値が最も大きいジョブを構成するプロセスをスワップアウト候補とする。
すなわち、CPU33はジョブキューチェックテーブル1200の出現順が大きい方から順に、そのジョブの行について同様の処理を行う。そして、ステップS1005でスワップイン候補となったプロセスと同じ数のプロセスがスワップアウト候補になるまで当該処理を繰り返す。
ここで、出現順が未設定のジョブが2以上存在する場合、あるいは、出現順が最大値であるジョブが2以上存在する場合に、対象候補選定においていずれのジョブを優先するかを、デフォルトで決めておくのがよい。
なお、一旦決定したスワップアウト候補に前記ステップS1005で決定したスワップイン候補が含まれる場合は、当該スワップアウト候補を対象から除外するようにしてもよい。例えば、ジョブキューチェックテーブル1200が図12に示すようなものであった場合は、次のようになる。すなわち、出現順が未設定のfax受信を構成するnetwork、printプロセスのうち、スワップイン候補となっているprintを除外してnetworkが先に候補とされる。
さらに、スワップイン候補となっているプロセスをスワップアウト候補の対象から除外する場合において、優先順位が次であるプロセスをスワップアウト候補として追加決定するようにしてもよい。例えば、ジョブキューチェックテーブル1200が図12に示すようなものであった場合は、出現順が「4」であるscanジョブのscanプロセスがスワップアウト候補に追加される。その結果、スワップアウト候補として、network、scanが決定される。
このようにして、スワップインアウト候補として、network、scanプロセスが、図14(a)に示すスワップ対象プロセステーブル1301において設定される。
図14(b)は、直前にfax送信ジョブが実行された状態におけるプロセスメモリ管理テーブルの例を示す。図14(c)は、図14(b)のプロセスメモリ管理テーブルを、図14(a)に示すスワップ対象プロセステーブル1301に基づき更新したものを示す。すなわち、図9のステップS905において、スワップアウト候補であるnetwork、scanプロセスがスワップアウトされる。そして、それによって空いた実メモリの領域に、スワップイン候補となっているprint、imagingがスワップインされる。
直前にfax送信ジョブが実行された状態において、次に実行予定となっているジョブがpdl printである場合(図5、図12参照)を考える。pdl printジョブを構成するプロセスであるprint、imagingは、図9のステップS905のスワップ処理によって既に実メモリに存在している。そのため、pdl printジョブの実行開始にあたって新たなスワップ処理は発生せず、直ちに次のプロセス(print)の実行を開始することができる。
《プロセス実行履歴テーブルからのスワップイン/アウト対象の決定(第2の決定方法)》
図11は、図9のステップS904で実行される、プロセス実行履歴テーブル600からスワップ処理対象のプロセスを決定する処理(第2の決定方法)のフローチャートである。
まず、ステップS1101で、CPU33は、DRAM38内のプロセス実行履歴テーブル600から、プロセス実行頻度テーブル1300(図13(a))を作成する(予測工程)。すなわち、プロセス実行履歴テーブル600(図6)において、直前に動作していたプロセスの行において、「次に動作したプロセス」を、実行頻度が高い順に左から並べ替える。
例えば、直前に実行されたプロセスがscanである場合において、図6に示すプロセス実行履歴テーブル600では、scanの行に着目すると、print、network、scanの順に実行頻度が高い。実行頻度が同じプロセス同士の並び替え時の順位は、デフォルトで設定されている。例えば、renderingの実行頻度は、imagingと同じ「0」であるが、一例として、デフォルトの設定によって、renderingの方が並び替え時の優先順位が高くなっている。
このようにして作成されたものが、上記した図13(a)に示すプロセス実行頻度テーブル1300である。ちなみに、図7に示すプロセス実行履歴テーブル600に基づき作成されたものが、上記した図13(c)に示すプロセス実行頻度テーブル1300である。その後、ステップS1102に進む。
本処理における以降の説明では、直前にscanプロセスが実行され、図6に示すプロセス実行履歴テーブル600に基づきプロセス実行頻度テーブル1300を作成する場合を例にとる。
ステップS1102では、CPU33は、変数Countにプロセス実行頻度テーブル1300において設定されるプロセス数(本例では「5」)を設定する。さらに、変数iに「1」を、設定値であるMAXに実メモリに格納可能なページ数(本例では「2」)を、それぞれ設定する。そして、ステップS1103に進む。ステップS1103では、CPU33は、変数iが変数Countと等しいか否かを判別する。その判別の結果、両者が等しい場合はステップS1107に進む一方、両者が異なる場合はステップS1104に進む。
ステップS1104では、CPU33は、プロセス実行頻度テーブル1300(図13(a))のi列目のプロセスを、スワップ対象プロセステーブル1301(図13(b)参照)のスワップイン候補に追加し、ステップS1105に進む。例えば、i=1の場合は、図13(a)における左から1番目のprintをスワップイン候補に追加する。
ところで、ステップS1104でスワップイン候補にプロセスに追加する場合、プロセス実行頻度テーブル1300において、当該追加しようとするプロセスの「頻度」の値(頻度値)と、頻度値が次に大きいプロセスの頻度値とを比較する。そして、両者の頻度値の差が規定値(本実施例では例えば、「5」とするがこれに限られない)を超える場合は、当該追加しようとするプロセスより後にはスワップイン候補としての追加を行わない。これは、次に実行される可能性の低いプロセスがスワップインされることで不要なスワップ処理が行われるのを避けるためである。
図13(a)に示すプロセス実行頻度テーブル1300である場合、追加しようとするプロセスprintと、頻度値が次に大きいプロセスnetworkとの頻度値の差は「8」で、規定値を超える。従って、network以降のプロセスは対象とならず、スワップ対象プロセステーブル1301のスワップイン候補にはprintのみが追加されることになる。この場合、処理は、ステップS1104からステップS1107に移行する。
ステップ1105では、CPU33は、スワップ対象プロセステーブル1301に設定されたスワップイン候補のプロセスの数がMAX(=2)に等しいか否かを判別する。その判別の結果、スワップイン候補のプロセスの数がMAXに等しい場合はステップS1107に進む一方、等しくない場合はステップS1106で変数iを「1」増やして、前記ステップS1103に進む。従って、上記頻度値の差が規定値を超えない限り、スワップイン候補のプロセスの数がMAXになるまでスワップイン候補が追加される。
ステップS1107では、CPU33は、変数Countにプロセス実行頻度テーブル1300内のプロセス数(本例では「5」)を設定する。さらに、変数iに変数Countの値(本例では「5」)を、MAXにスワップ対象プロセステーブル1301のスワップイン候補のプロセスの数(本例では「5」)をそれぞれ設定する。そして、ステップS1108に進む。
ステップS1108では、CPU33は、変数iが「1」と等しいか否かを判別する。その判別の結果、変数iが「1」と等しい場合は本処理を終了する一方、等しくない場合はステップS1109に進む。
ステップS1109では、CPU33は、プロセス実行頻度テーブル1300のi列目のプロセス(i=5の場合、右側から1番目のimaging)を、スワップ対象プロセステーブル1301(図13(b))のスワップアウト候補に追加する。そして、ステップS1110に進む。
ステップS1110では、CPU33は、スワップ対象プロセステーブル1301のスワップイン候補のプロセスの数がMAXに等しいか否かを判別する。その判別の結果、スワップイン候補のプロセスの数がMAXに等しい場合は本処理を終了する一方、等しくない場合はステップS1111で変数iを「1」減らして、前記ステップS1108に進む。
図13(b)の例では、スワップイン候補のプロセスの数がprintの1つだけであったので、スワップアウト候補は、imagingの1つだけとなる。図11の処理を終了するときにスワップ対象プロセステーブル1301に設定されているプロセスが、スワップイン/アウトの候補となる。
ちなみに、直前にscanプロセスが実行され、図7に示すプロセス実行履歴テーブル600に基づきプロセス実行頻度テーブル1300を作成する場合を考えると、前記ステップS1103〜S1106、S1107〜S1111の処理は次のようになる。
前記ステップS1103〜S1106では、図13(c)に示すプロセス実行頻度テーブル1300を参照すると、プロセスscanを追加しようとする際に、scanと、頻度値が次に大きいプロセスnetworkとで、頻度値の差は「0」である。従って、頻度値の差は規定値を超えない。この場合は、図13(d)に示すように、scanプロセスに加えてnetworkプロセスもスワップイン候補として追加されることになる。
また、前記ステップS1107〜S1111では、スワップイン候補が2個であるので、プロセス実行頻度テーブル1300の右から2番目までのプロセスであるimaging、renderingが、スワップアウト候補に追加される(図13(d))。
《プロセス実行履歴テーブル更新の効果》
実メモリにscan、imagingプロセスが存在し、直前にscanジョブが実行された状態を仮定する。この状態で、プロセス実行履歴テーブル600(図6、図7)を更新し、次に実行されるプロセスを予測して、スワップ処理をするようにしたことで、次のような効果を生じる。
まず、初期状態のプロセス実行履歴テーブル600(図6)に基づきスワップ処理(図9のステップS904、S905、図11)がされた場合を考える。この場合は、実メモリにはscan、printプロセスが置かれることになる(図13(a)、(b)、図8(b))。仮に、この状態で次にfax送信ジョブが実行されるとすると、scan、networkプロセスが実行されることになる。
しかし、networkプロセスのメモリが実メモリに存在しないため、実際には、networkプロセスをスワップインするためのスワップ処理が発生する。従って、プロセス実行開始までに時間がかかる。図6のプロセス実行履歴テーブル600では、未だ、使用継続によるプロセスの実行実績が次の実行プロセスの予測に反映されないからである。
一方、プロセス実行履歴テーブル600(図7)に基づきスワップ処理(図9のステップS904、S905、図11)がされた場合を考える。この場合は、実メモリにはscan、networkプロセスが置かれることになる(図13(c)、(d))。仮に、この状態で次にfax送信ジョブが実行されるとすると、scan、networkプロセスが実行されることになる。しかし、これらのプロセスは、既に実メモリに存在するため、新たなスワップ処理は発生せず、直ちに次のプロセスの実行を開始することができる。
本実施の形態によれば、実行待ちのジョブキューがある場合は、ジョブキュー500(図5)に記憶されている実行待ちジョブの予定実行順序と実メモリに記憶されているプロセスの種類とに基づいて、スワップアウト/イン候補のプロセスが決定される。これらは主に、図10のステップS1005、S1006、図12、図14(a)に示される(第1の決定方法)。
これにより、次に実行されるジョブを構成するプロセスであって次に実行される可能性が高いプロセスが、1次記憶装置であるDRAM38の実メモリに優先的に置かれるようにすることができる。
一方、実行待ちのジョブキューがない場合は、プロセスの実行実績であるプロセス実行履歴テーブル600(図7)と、直前に実行されたプロセスの種類とに基づいて、次に実行される可能性を各プロセスについて予測する(図13(a)、(c))。そして、予測された可能性に基づいて、スワップアウト/イン候補のプロセスを決定する(第2の決定方法)(図11、図13(b)、(d))。
これにより、次に実行される可能性が高いプロセスがDRAM38の実メモリに優先的に置かれるようにすることができる。
そして、上記第1、第2の決定方法のいずれが採用された場合でも、上記決定に従って、スワップアウト候補のプロセスが実メモリからHDD8、9にスワップアウトされる。さらに、それによって空いた実メモリの領域に、スワップイン候補のプロセスがハードディスクドライブ8、9からスワップインされる(図9のステップS905)。
よって、本実施の形態によれば、次のプロセス実行開始までの時間を短縮することができる。すなわち、ジョブ実行直前のスワップ処理発生を抑制してデバイスの処理速度を向上させることができる。特に、スワップ処理が、アイドリング時に行われることで、次のジョブ実行直前にスワップが生じにくくなっている。
なお、情報処理装置として画像入出力装置1を示したがこれは一例である。すなわち、プロセスで成るジョブが指示に応じて実行され、1次記憶装置と2次記憶装置とを用いてプロセスの仮想記憶を行うメモリスワップ管理方法が適用される情報処理装置であれば、本発明を適用可能である。従って、情報処理装置が備える機能は問わない。
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
更に、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う場合である。

Claims (8)

  1. 少なくとも1つのプロセスで成るジョブが実行される情報処理装置において、1次記憶装置と2次記憶装置とを用いて前記プロセスの仮想記憶を行うメモリスワップ管理方法であって、
    前記情報処理装置における実行待ちのジョブが複数ある場合にそれらの予定実行順序を記憶する記憶工程と、
    前記記憶工程により記憶されている前記実行待ちのジョブの予定実行順序と前記1次記憶装置に記憶されているプロセスの種類とに基づいて、スワップアウト候補のプロセスとスワップイン候補のプロセスとを決定する決定工程と、
    前記決定工程による決定に従って、前記スワップアウト候補のプロセスを前記1次記憶装置から前記2次記憶装置にスワップアウトすると共に、それによって空いた前記1次記憶装置の領域に、前記スワップイン候補のプロセスを前記2次記憶装置からスワップインするスワップ処理工程とを有することを特徴とするメモリスワップ管理方法。
  2. 前記決定工程は、前記実行待ちのジョブのうち予定実行順序が最も遅いジョブを構成するプロセスを前記スワップアウト候補とすると共に、前記実行待ちのジョブのうち予定実行順序が最も早いジョブを構成するプロセスを前記スワップイン候補とすることを特徴とする請求項1記載のメモリスワップ管理方法。
  3. 前記決定工程は、前記実行待ちのジョブのうち予定実行順序が最も早いジョブを構成するプロセスが複数ある場合は、当該ジョブにおいて最も早く実行されるプロセスから順に優先的に前記スワップイン候補とすることを特徴とする請求項2記載のメモリスワップ管理方法。
  4. 少なくとも1つのプロセスで成るジョブが実行される情報処理装置において、1次記憶装置と2次記憶装置とを用いて前記プロセスの仮想記憶を行うメモリスワップ管理方法であって、
    プロセスの実行実績を記録する記録工程と、
    前記記録工程において記録されたプロセスの実行実績と、直前に実行されたプロセスの種類とに基づいて、次に実行される可能性を各プロセスについて予測する予測工程と、
    前記予測工程により予測された可能性に基づいて、スワップアウト候補のプロセスとスワップイン候補のプロセスとを決定する決定工程と、
    前記決定工程による決定に従って、前記スワップアウト候補のプロセスを前記1次記憶装置から前記2次記憶装置にスワップアウトすると共に、それによって空いた前記1次記憶装置の領域に、前記スワップイン候補のプロセスを前記2次記憶装置からスワップインするスワップ処理工程とを有することを特徴とするメモリスワップ管理方法。
  5. 前記記録工程は、前記実行実績として、プロセス毎に、当該プロセスの実行の直後に実行されたプロセスの各々の実行頻度を記録し、前記予測工程は、前記記録された実行頻度に基づいて、前記直前に実行されたプロセスの次にどのプロセスがどの程度の可能性で実行されるのかを各プロセスについて予測することを特徴とする請求項4記載のメモリスワップ管理方法。
  6. 少なくとも1つのプロセスで成るジョブが実行される情報処理装置において、1次記憶装置と2次記憶装置とを用いて前記プロセスの仮想記憶を行うメモリスワップ管理装置であって、
    前記情報処理装置における実行待ちのジョブが複数ある場合にそれらの予定実行順序を記憶する記憶手段と、
    前記記憶手段により記憶されている前記実行待ちのジョブの予定実行順序と前記1次記憶装置に記憶されているプロセスの種類とに基づいて、スワップアウト候補のプロセスとスワップイン候補のプロセスとを決定する決定手段と、
    前記決定手段による決定に従って、前記スワップアウト候補のプロセスを前記1次記憶装置から前記2次記憶装置にスワップアウトすると共に、それによって空いた前記1次記憶装置の領域に、前記スワップイン候補のプロセスを前記2次記憶装置からスワップインするスワップ処理手段とを有することを特徴とするメモリスワップ管理装置。
  7. 少なくとも1つのプロセスで成るジョブが実行される情報処理装置において、1次記憶装置と2次記憶装置とを用いて前記プロセスの仮想記憶を行うメモリスワップ管理装置であって、
    プロセスの実行実績を記録する記録手段と、
    前記記録手段において記録されたプロセスの実行実績と、直前に実行されたプロセスの種類とに基づいて、次に実行される可能性を各プロセスについて予測する予測手段と、
    前記予測手段により予測された可能性に基づいて、スワップアウト候補のプロセスとスワップイン候補のプロセスとを決定する決定手段と、
    前記決定手段による決定に従って、前記スワップアウト候補のプロセスを前記1次記憶装置から前記2次記憶装置にスワップアウトすると共に、それによって空いた前記1次記憶装置の領域に、前記スワップイン候補のプロセスを前記2次記憶装置からスワップインするスワップ処理手段とを有することを特徴とするメモリスワップ管理装置。
  8. 請求項1〜5のいずれか1項に記載のメモリスワップ管理方法をコンピュータに実行させることを特徴とするプログラム。
JP2009059420A 2009-03-12 2009-03-12 プログラムおよび情報処理装置 Expired - Fee Related JP5419500B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009059420A JP5419500B2 (ja) 2009-03-12 2009-03-12 プログラムおよび情報処理装置
US12/722,241 US8595745B2 (en) 2009-03-12 2010-03-11 Job-process swapping between multiple storage devices based on the most recently executed type of a process and historical execution count among plural types of processes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009059420A JP5419500B2 (ja) 2009-03-12 2009-03-12 プログラムおよび情報処理装置

Publications (3)

Publication Number Publication Date
JP2010211696A true JP2010211696A (ja) 2010-09-24
JP2010211696A5 JP2010211696A5 (ja) 2012-04-26
JP5419500B2 JP5419500B2 (ja) 2014-02-19

Family

ID=42971749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009059420A Expired - Fee Related JP5419500B2 (ja) 2009-03-12 2009-03-12 プログラムおよび情報処理装置

Country Status (2)

Country Link
US (1) US8595745B2 (ja)
JP (1) JP5419500B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012059204A (ja) * 2010-09-13 2012-03-22 Nec Corp 情報処理装置、情報処理方法およびコンピュータ・プログラム
JP2013168025A (ja) * 2012-02-15 2013-08-29 Nec Corp 情報処理装置、及び、情報処理方法
WO2020101211A1 (ko) * 2018-11-14 2020-05-22 삼성전자주식회사 전자 장치 및 그 제어방법

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930631B2 (en) * 2012-08-20 2015-01-06 International Business Machines Corporation Efficient management of computer memory using memory page associations and memory
JP5977147B2 (ja) * 2012-11-05 2016-08-24 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置および入力装置
JP2014224955A (ja) * 2013-05-17 2014-12-04 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、及びプログラム
US9724577B1 (en) * 2014-01-24 2017-08-08 Callaway Golf Company Golf club head with adjustable weighting
US9665296B2 (en) 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
US9928169B2 (en) 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US9710198B2 (en) 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US10048974B1 (en) * 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03192446A (ja) * 1989-12-22 1991-08-22 Nec Corp メモリ管理方式
JPH05274154A (ja) * 1992-03-27 1993-10-22 Mitsubishi Electric Corp プログラムロード方法およびメモリバックアップ方法
JP2004227188A (ja) * 2003-01-21 2004-08-12 Fujitsu Ltd ジョブスワップ方法、ジョブ管理装置、およびジョブ管理プログラム
WO2008026142A1 (en) * 2006-08-30 2008-03-06 Koninklijke Philips Electronics N.V. Dynamic cache partitioning

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing
JPH0588984A (ja) 1991-09-26 1993-04-09 Nec Corp 仮想記憶システムにおけるスワツピング制御方式
US7571446B2 (en) * 2001-04-19 2009-08-04 International Business Machines Corporation Server, computer system, object management method, server control method, computer program
US7565340B2 (en) * 2006-01-09 2009-07-21 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Methods for assisting computer users performing multiple tasks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03192446A (ja) * 1989-12-22 1991-08-22 Nec Corp メモリ管理方式
JPH05274154A (ja) * 1992-03-27 1993-10-22 Mitsubishi Electric Corp プログラムロード方法およびメモリバックアップ方法
JP2004227188A (ja) * 2003-01-21 2004-08-12 Fujitsu Ltd ジョブスワップ方法、ジョブ管理装置、およびジョブ管理プログラム
WO2008026142A1 (en) * 2006-08-30 2008-03-06 Koninklijke Philips Electronics N.V. Dynamic cache partitioning

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012059204A (ja) * 2010-09-13 2012-03-22 Nec Corp 情報処理装置、情報処理方法およびコンピュータ・プログラム
JP2013168025A (ja) * 2012-02-15 2013-08-29 Nec Corp 情報処理装置、及び、情報処理方法
WO2020101211A1 (ko) * 2018-11-14 2020-05-22 삼성전자주식회사 전자 장치 및 그 제어방법

Also Published As

Publication number Publication date
JP5419500B2 (ja) 2014-02-19
US8595745B2 (en) 2013-11-26
US20110010722A1 (en) 2011-01-13

Similar Documents

Publication Publication Date Title
JP5419500B2 (ja) プログラムおよび情報処理装置
JP5289153B2 (ja) 情報処理装置及びその制御方法、並びにコンピュータプログラム
JP4795138B2 (ja) 画像処理装置及びプログラム
US8514458B2 (en) Image output apparatus and image output method
US20080246994A1 (en) Image forming device, program, and recording medium
JP2007001090A (ja) 画像形成装置のデータバックアップシステム、画像形成装置及びデータバックアップ方法
JPH09224135A (ja) 画像処理装置
JP2007287084A (ja) 画像処理装置及びプログラム
CN101087349A (zh) 图像形成设备和控制该设备的方法
JP4269926B2 (ja) 画像処理装置及び画像処理方法
US8780384B2 (en) Selection of job image data for storage on external memory and memory management techniques
US8582153B2 (en) Image forming apparatus and method
JP5704318B2 (ja) 画像形成方法および画像形成装置
JP5414305B2 (ja) 情報処理装置、仮想記憶管理方法及びプログラム
CN107544761B (zh) 图像形成装置及信息处理方法
JP6163937B2 (ja) データ出力装置、画像形成装置、コンピュータープログラムおよびストレージ制御方法
JP4208080B2 (ja) ネットワークプリンタ
JP4958723B2 (ja) 仮想記憶制御装置、仮想記憶制御方法、仮想記憶制御プログラム及び記録媒体
JP5777333B2 (ja) 画像処理装置、その制御方法及びプログラム
JP2020145582A (ja) 情報処理装置、その制御方法、及びプログラム
JP2000259373A (ja) ネットワークプリンタ及びネットワーク印刷システム
JP2005189972A (ja) 画像処理装置
JP2006252482A (ja) 装置の起動方法及び画像形成装置
JPH07244727A (ja) 画像処理装置
JP2003127470A (ja) 画像形成装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120312

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131004

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131022

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131119

LAPS Cancellation because of no payment of annual fees