JPH06242990A - メモリパッチ装置 - Google Patents
メモリパッチ装置Info
- Publication number
- JPH06242990A JPH06242990A JP5023146A JP2314693A JPH06242990A JP H06242990 A JPH06242990 A JP H06242990A JP 5023146 A JP5023146 A JP 5023146A JP 2314693 A JP2314693 A JP 2314693A JP H06242990 A JPH06242990 A JP H06242990A
- Authority
- JP
- Japan
- Prior art keywords
- patch
- data
- address
- memory
- target program
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/66—Updates of program code stored in read-only memory [ROM]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【目的】 計算機システムのメモリパッチ装置に関し、
OSやデバイスドライバ等の常駐プログラムに対しても
確実にパッチを行うことを目的とする。 【構成】 パッチ情報検索手段11aは、目的プログラ
ム11の起動時に、記憶手段20に格納されたパッチテ
ーブル21からデータ11aに対応するパッチ情報21
aを検索する。アドレス演算手段12bは、主記憶装置
10に格納されたときの目的プログラム11のベースア
ドレスBAと、検索されたパッチ情報21aのオフセッ
トアドレスOAとに基づいて、パッチを行うデータ11
aの主記憶装置10上の絶対アドレスAAを演算する。
パッチ処理手段12cは、パッチデータPDで絶対アド
レスAAのデータをパッチ処理する。これらのパッチ情
報検索手段12a、アドレス演算手段12b及びパッチ
処理手段12cからなるパッチライブラリー12を目的
プログラム11に備える。
OSやデバイスドライバ等の常駐プログラムに対しても
確実にパッチを行うことを目的とする。 【構成】 パッチ情報検索手段11aは、目的プログラ
ム11の起動時に、記憶手段20に格納されたパッチテ
ーブル21からデータ11aに対応するパッチ情報21
aを検索する。アドレス演算手段12bは、主記憶装置
10に格納されたときの目的プログラム11のベースア
ドレスBAと、検索されたパッチ情報21aのオフセッ
トアドレスOAとに基づいて、パッチを行うデータ11
aの主記憶装置10上の絶対アドレスAAを演算する。
パッチ処理手段12cは、パッチデータPDで絶対アド
レスAAのデータをパッチ処理する。これらのパッチ情
報検索手段12a、アドレス演算手段12b及びパッチ
処理手段12cからなるパッチライブラリー12を目的
プログラム11に備える。
Description
【0001】
【産業上の利用分野】本発明は計算機システムにおける
メモリパッチ装置に関し、特に主記憶装置に格納された
目的プログラムの一部を自動的に変更するメモリパッチ
装置に関する。
メモリパッチ装置に関し、特に主記憶装置に格納された
目的プログラムの一部を自動的に変更するメモリパッチ
装置に関する。
【0002】計算機システムにおいて実行可能なバイナ
リ形式の目的プログラム(object program)は、次のよ
うな手順で作成される。すなわち、まずコンパイラ(co
mpiler)を用いてソースプログラム(source program)
をコンパイルして、目的モジュール(object module )
を作成する。その後、リンカ(linker)を用いて、これ
らの目的モジュール及び必要なライブラリ(library )
とを結合する。
リ形式の目的プログラム(object program)は、次のよ
うな手順で作成される。すなわち、まずコンパイラ(co
mpiler)を用いてソースプログラム(source program)
をコンパイルして、目的モジュール(object module )
を作成する。その後、リンカ(linker)を用いて、これ
らの目的モジュール及び必要なライブラリ(library )
とを結合する。
【0003】こうして作成された目的プログラムは、一
般に動的再配置(dynamic relocation)可能に構成され
ている。このため、ハードディスク等の外部記憶装置に
格納された目的プログラムを実行する場合、OS(Oper
ating System)は再配置しながら、具体的には目的プロ
グラムに含まれるアドレス情報を変換しながら、目的プ
ログラムを主記憶装置へ格納する。その後、OSは実行
に必要なプロセッサのレジスタを設定する。
般に動的再配置(dynamic relocation)可能に構成され
ている。このため、ハードディスク等の外部記憶装置に
格納された目的プログラムを実行する場合、OS(Oper
ating System)は再配置しながら、具体的には目的プロ
グラムに含まれるアドレス情報を変換しながら、目的プ
ログラムを主記憶装置へ格納する。その後、OSは実行
に必要なプロセッサのレジスタを設定する。
【0004】ところで、作成された目的プログラムにバ
グがあった場合や定数値等を訂正する場合に、バグや定
数値等に対応する目的プログラムの一部をソースプログ
ラムを変更することなく応急的に変更する必要がある。
このように、目的プログラムの一部を応急的に変更する
作業を「パッチ(patch )」と呼ぶ。
グがあった場合や定数値等を訂正する場合に、バグや定
数値等に対応する目的プログラムの一部をソースプログ
ラムを変更することなく応急的に変更する必要がある。
このように、目的プログラムの一部を応急的に変更する
作業を「パッチ(patch )」と呼ぶ。
【0005】なお、目的プログラムに対してパッチを行
うには、計算機システムに関する専門的な知識が必要で
ある。このため、一般の計算機システムの所有者等に対
しては、訂正の必要がある目的プログラム(以下、単に
「対象プログラム」と呼ぶ。)を自動的にパッチを行う
パッチプログラムを供給して、バグや定数値等の訂正を
図っている。
うには、計算機システムに関する専門的な知識が必要で
ある。このため、一般の計算機システムの所有者等に対
しては、訂正の必要がある目的プログラム(以下、単に
「対象プログラム」と呼ぶ。)を自動的にパッチを行う
パッチプログラムを供給して、バグや定数値等の訂正を
図っている。
【0006】
【従来の技術】従来、このようなパッチプログラムは対
象プログラムとは別体のプログラムであり、以下に示す
二通りの方法で対象プログラムにパッチを行なってい
る。
象プログラムとは別体のプログラムであり、以下に示す
二通りの方法で対象プログラムにパッチを行なってい
る。
【0007】第1の方法は、外部記憶装置等に格納され
た対象プログラムに対して直接パッチを行う。パッチの
手順は主記憶装置に格納する前の対象プログラムに対し
て行なっている。
た対象プログラムに対して直接パッチを行う。パッチの
手順は主記憶装置に格納する前の対象プログラムに対し
て行なっている。
【0008】第2の方法は、特開昭63−115234
号に開示されているように、対象プログラムが主記憶装
置に格納されたとき、1つのパッチプログラムで外部記
憶装置等に格納されたパッチ情報の中から上記対象プロ
グラムに対応するパッチ情報を検索し、検索されたパッ
チ情報に基づいてパッチを行なっている。
号に開示されているように、対象プログラムが主記憶装
置に格納されたとき、1つのパッチプログラムで外部記
憶装置等に格納されたパッチ情報の中から上記対象プロ
グラムに対応するパッチ情報を検索し、検索されたパッ
チ情報に基づいてパッチを行なっている。
【0009】こうして、一般の計算機システムの所有者
等の手を煩わせることなく、自動的に対象プログラムに
含まれるバグや定数値等の訂正を図ることができた。
等の手を煩わせることなく、自動的に対象プログラムに
含まれるバグや定数値等の訂正を図ることができた。
【0010】
【発明が解決しようとする課題】しかし、第1の方法で
は、対象プログラムがパッチされているかどうかを常に
管理する必要があり、その管理を誤るとパッチが実行さ
れず、管理が煩雑であった。
は、対象プログラムがパッチされているかどうかを常に
管理する必要があり、その管理を誤るとパッチが実行さ
れず、管理が煩雑であった。
【0011】また、第2の方法では、目的プログラムが
静的に主記憶装置にローディングされているときは問題
ないが、現在の多くのコンピュータでは目的プログラム
はダイナミックリンクされ、主記憶装置上のアドレスは
ローディング時に変化する。したがって、パッチすべき
データの位置が変化して、パッチを実行することができ
なくなる。
静的に主記憶装置にローディングされているときは問題
ないが、現在の多くのコンピュータでは目的プログラム
はダイナミックリンクされ、主記憶装置上のアドレスは
ローディング時に変化する。したがって、パッチすべき
データの位置が変化して、パッチを実行することができ
なくなる。
【0012】本発明はこのような点に鑑みてなされたも
のであり、管理が容易なメモリパッチ装置を提供するこ
とを目的とする。また、本発明の目的は目的プログラム
がダイナミックリンクされても確実にパッチを行うこと
のできるメモリパッチ装置を提供することである。
のであり、管理が容易なメモリパッチ装置を提供するこ
とを目的とする。また、本発明の目的は目的プログラム
がダイナミックリンクされても確実にパッチを行うこと
のできるメモリパッチ装置を提供することである。
【0013】
【課題を解決するための手段】図1は上記目的を達成す
る本発明の原理説明図である。図において、本発明のメ
モリパッチ装置は、パッチ情報検索手段12a、アドレ
ス演算手段12b及びパッチ処理手段12cからなるパ
ッチライブラリー12を目的プログラム11に含める。
る本発明の原理説明図である。図において、本発明のメ
モリパッチ装置は、パッチ情報検索手段12a、アドレ
ス演算手段12b及びパッチ処理手段12cからなるパ
ッチライブラリー12を目的プログラム11に含める。
【0014】パッチ情報検索手段12aは、目的プログ
ラム11の起動時に記憶手段20に格納されたパッチテ
ーブル21からデータ11aに対応するパッチ情報21
aを検索する。
ラム11の起動時に記憶手段20に格納されたパッチテ
ーブル21からデータ11aに対応するパッチ情報21
aを検索する。
【0015】アドレス演算手段12bは、主記憶装置1
0に格納されたときの目的プログラム11のベースアド
レスBAと、検索されたパッチ情報21aのオフセット
アドレスOAとに基づいて、パッチを行う主記憶装置1
0の絶対アドレスAAを演算する。
0に格納されたときの目的プログラム11のベースアド
レスBAと、検索されたパッチ情報21aのオフセット
アドレスOAとに基づいて、パッチを行う主記憶装置1
0の絶対アドレスAAを演算する。
【0016】パッチ処理手段12cは、パッチ情報21
aのパッチデータPDを演算された絶対アドレスAAに
格納する。
aのパッチデータPDを演算された絶対アドレスAAに
格納する。
【0017】
【作用】目的プログラム11の起動時に、目的プログラ
ム11内のパッチ情報検索手段12aは、パッチテーブ
ル21からデータ11aに対応するパッチ情報21aを
検索する。
ム11内のパッチ情報検索手段12aは、パッチテーブ
ル21からデータ11aに対応するパッチ情報21aを
検索する。
【0018】その検索結果に基づき、アドレス演算手段
12bがベースアドレスBAとオフセットアドレスOA
とに基づいてパッチを行うデータ11aの主記憶装置1
0上の絶対アドレスAAを演算し、パッチ処理手段12
cがアドレスAAのデータ11aをパッチデータPDで
パッチ処理する。
12bがベースアドレスBAとオフセットアドレスOA
とに基づいてパッチを行うデータ11aの主記憶装置1
0上の絶対アドレスAAを演算し、パッチ処理手段12
cがアドレスAAのデータ11aをパッチデータPDで
パッチ処理する。
【0019】
【実施例】以下、本発明の一実施例を図面に基づいて説
明する。図1は本発明の原理説明図であるとともに、実
施例を説明する図である。パッチ情報検索手段12a、
アドレス演算手段12b及びパッチ処理手段12cから
なるパッチライブラリー12を、目的プログラム11内
に備える。なお、目的プログラム11及びパッチテーブ
ル21は、いずれも最初は記憶手段20に格納されてい
る。ここで目的プログラムはOSとする。
明する。図1は本発明の原理説明図であるとともに、実
施例を説明する図である。パッチ情報検索手段12a、
アドレス演算手段12b及びパッチ処理手段12cから
なるパッチライブラリー12を、目的プログラム11内
に備える。なお、目的プログラム11及びパッチテーブ
ル21は、いずれも最初は記憶手段20に格納されてい
る。ここで目的プログラムはOSとする。
【0020】まず、目的プログラム11の起動時に、パ
ッチ情報検索手段12aは記憶手段20に格納されたパ
ッチテーブル21からデータ11aに対応するパッチ情
報21aを検索する。
ッチ情報検索手段12aは記憶手段20に格納されたパ
ッチテーブル21からデータ11aに対応するパッチ情
報21aを検索する。
【0021】アドレス演算手段12bは、主記憶装置1
0に格納されたときの目的プログラム11のベースアド
レスBAと、パッチ情報検索手段12aによって検索さ
れたパッチ情報21aのオフセットアドレスOAとに基
づいて、データ11aの主記憶装置10上の絶対アドレ
スAAを演算する。その後、パッチ処理手段12cは、
アドレス演算手段12bによって演算された絶対アドレ
スAAのデータ11aをパッチデータPDでパッチ処理
する。
0に格納されたときの目的プログラム11のベースアド
レスBAと、パッチ情報検索手段12aによって検索さ
れたパッチ情報21aのオフセットアドレスOAとに基
づいて、データ11aの主記憶装置10上の絶対アドレ
スAAを演算する。その後、パッチ処理手段12cは、
アドレス演算手段12bによって演算された絶対アドレ
スAAのデータ11aをパッチデータPDでパッチ処理
する。
【0022】上記の説明では目的プログラム11をOS
のみで説明したが、主記憶装置10に格納するデバイス
ドライバー等の常駐プログラム、アプリケーションプロ
グラム等にもそれぞれパッチライブラリー12と同じ機
能を有するパッチライブラリーを含める。そして、これ
らのパッチライブラリーは各プログラムが起動されると
きにパッチ処理を実行する。
のみで説明したが、主記憶装置10に格納するデバイス
ドライバー等の常駐プログラム、アプリケーションプロ
グラム等にもそれぞれパッチライブラリー12と同じ機
能を有するパッチライブラリーを含める。そして、これ
らのパッチライブラリーは各プログラムが起動されると
きにパッチ処理を実行する。
【0023】これによって、各プログラムがダイナミッ
クリンクによって、主記憶装置上のローディングアドレ
スが変化しても、確実にパッチ処理を行うことができ
る。次に、本発明を実施する計算機システムのハードウ
ェアについて説明する。
クリンクによって、主記憶装置上のローディングアドレ
スが変化しても、確実にパッチ処理を行うことができ
る。次に、本発明を実施する計算機システムのハードウ
ェアについて説明する。
【0024】図2は計算機システム100のハードウェ
ア構成の一例を示すブロック図である。計算機システム
100は例えばワークステーション又はパーソナルコン
ピュータであって、CPU(プロセッサ)101、RO
M102、RAM103、不揮発性メモリ104、外部
記憶装置105、CRTC(CRT制御回路)106、
表示装置106a、KEY(操作盤)107及びI/F
(インタフェース)108の各ハードウェア要素から構
成される。
ア構成の一例を示すブロック図である。計算機システム
100は例えばワークステーション又はパーソナルコン
ピュータであって、CPU(プロセッサ)101、RO
M102、RAM103、不揮発性メモリ104、外部
記憶装置105、CRTC(CRT制御回路)106、
表示装置106a、KEY(操作盤)107及びI/F
(インタフェース)108の各ハードウェア要素から構
成される。
【0025】CPU101はROM102に格納された
システムプログラムに従って計算機システム100全体
を制御する。ROM102にはEPROMあるいはEE
PROM等が使用される。
システムプログラムに従って計算機システム100全体
を制御する。ROM102にはEPROMあるいはEE
PROM等が使用される。
【0026】RAM103にはDRAM等が使用され、
パッチを行うためのパッチデータ、作業用データ等の一
時的なデータ、あるいは入出力信号が格納される。不揮
発性メモリ104には図示されていないバッテリによっ
てバックアップされたCMOS−RAMが使用され、電
源切断後も保持すべきシステム情報等のデータが格納さ
れる。外部記憶装置105にはハードディスク装置又は
光磁気ディスク装置等が使用され、目的プログラム等の
各種データが格納される。
パッチを行うためのパッチデータ、作業用データ等の一
時的なデータ、あるいは入出力信号が格納される。不揮
発性メモリ104には図示されていないバッテリによっ
てバックアップされたCMOS−RAMが使用され、電
源切断後も保持すべきシステム情報等のデータが格納さ
れる。外部記憶装置105にはハードディスク装置又は
光磁気ディスク装置等が使用され、目的プログラム等の
各種データが格納される。
【0027】なお、上記RAM103又は外部記憶装置
105は図1の記憶手段20に相当する。また、図1の
パッチ情報検索手段12a、アドレス演算手段12b及
びパッチ処理手段12cは、それぞれ目的プログラム1
1内の処理プログラムの一つをCPU101が実行する
ことによって実現される機能である。
105は図1の記憶手段20に相当する。また、図1の
パッチ情報検索手段12a、アドレス演算手段12b及
びパッチ処理手段12cは、それぞれ目的プログラム1
1内の処理プログラムの一つをCPU101が実行する
ことによって実現される機能である。
【0028】CRTC106は画面表示管理を行うとと
もに、ディジタル信号を表示用の信号に変換して表示装
置106aに与える。表示装置106aにはCRT又は
液晶表示装置が使用される。KEY107はキーボード
又はマウス等によって構成されている。I/F108
は、他の計算機システム等との間で通信を行うための制
御を行う。なお、これらの構成要素は表示装置106a
を除き、いずれもバス109に互いに結合されている。
もに、ディジタル信号を表示用の信号に変換して表示装
置106aに与える。表示装置106aにはCRT又は
液晶表示装置が使用される。KEY107はキーボード
又はマウス等によって構成されている。I/F108
は、他の計算機システム等との間で通信を行うための制
御を行う。なお、これらの構成要素は表示装置106a
を除き、いずれもバス109に互いに結合されている。
【0029】図3はパッチテーブル21の一例を示す図
である。パッチテーブル21は4つの項目からなる可変
長レコードで構成されている。これらの4つの項目は、
211列にパッチを行うデータ長DLを、212列に識
別子IDを、213列にオフセットアドレスOAを、2
14列にパッチデータPDを、それぞれ示す。
である。パッチテーブル21は4つの項目からなる可変
長レコードで構成されている。これらの4つの項目は、
211列にパッチを行うデータ長DLを、212列に識
別子IDを、213列にオフセットアドレスOAを、2
14列にパッチデータPDを、それぞれ示す。
【0030】なお、上記データ長DL、識別子ID及び
オフセットアドレスOAには固定長のデータが、パッチ
データPDには可変長データが設定される。また、22
1行乃至22n行における1行ごとのデータは、識別子
IDを除き、いずれも16進数で設定されており、図1
に示すパッチ情報21aに相当する。
オフセットアドレスOAには固定長のデータが、パッチ
データPDには可変長データが設定される。また、22
1行乃至22n行における1行ごとのデータは、識別子
IDを除き、いずれも16進数で設定されており、図1
に示すパッチ情報21aに相当する。
【0031】ここで、211列のデータ長DLは例えば
1バイトの固定長データであって、各パッチ情報レコー
ド長が格納される。また、212列の識別子IDは4バ
イトの固定長データであって、パッチを行う対象となる
目的プログラム11を識別するための識別コードが格納
される。この識別コードとしては、例えば図に示すよう
に、目的プログラム11をアスキー文字列で表すファイ
ル名が設定される。
1バイトの固定長データであって、各パッチ情報レコー
ド長が格納される。また、212列の識別子IDは4バ
イトの固定長データであって、パッチを行う対象となる
目的プログラム11を識別するための識別コードが格納
される。この識別コードとしては、例えば図に示すよう
に、目的プログラム11をアスキー文字列で表すファイ
ル名が設定される。
【0032】さらに、213列のオフセットアドレスO
Aは2バイトの固定長データであって、目的プログラム
11内のパッチを行う位置を、目的プログラム11の所
定のアドレスからの相対アドレスで表すデータが格納さ
れる。この所定のアドレスは、例えば目的プログラム1
1が主記憶装置10に格納された際の先頭アドレス、す
なわちベースアドレスBAとすることができる。
Aは2バイトの固定長データであって、目的プログラム
11内のパッチを行う位置を、目的プログラム11の所
定のアドレスからの相対アドレスで表すデータが格納さ
れる。この所定のアドレスは、例えば目的プログラム1
1が主記憶装置10に格納された際の先頭アドレス、す
なわちベースアドレスBAとすることができる。
【0033】そして、214列のパッチデータPDは可
変長データであって、オフセットアドレスOAからパッ
チを行う実際のデータが格納される。この際に格納され
るデータのデータ数は、データ長DLからデータ長DL
自身のデータ長、識別子IDのデータ長及びオフセット
アドレスOAのデータ長を引いた数である。例えば、2
21行ではデータ長DL自身が1〔バイト〕、識別子I
Dが4〔バイト〕、オフセットアドレスOAが2〔バイ
ト〕とすると、データ長DLの内容「8」からこれらを
引いた数となる。すなわち、8−1−4−2=1〔バイ
ト〕が格納されるデータのデータ数となる。
変長データであって、オフセットアドレスOAからパッ
チを行う実際のデータが格納される。この際に格納され
るデータのデータ数は、データ長DLからデータ長DL
自身のデータ長、識別子IDのデータ長及びオフセット
アドレスOAのデータ長を引いた数である。例えば、2
21行ではデータ長DL自身が1〔バイト〕、識別子I
Dが4〔バイト〕、オフセットアドレスOAが2〔バイ
ト〕とすると、データ長DLの内容「8」からこれらを
引いた数となる。すなわち、8−1−4−2=1〔バイ
ト〕が格納されるデータのデータ数となる。
【0034】上記のように規定されたパッチテーブル2
1において、例えば221行には、そのデータ長DLは
「08」が、識別子IDは「APL1」が、オフセット
アドレスOAは「010E」が、パッチデータPDは
「EB」がそれぞれ設定されている。これは、目的プロ
グラム11が「APL1」である場合に、オフセットア
ドレス「010E」からの1バイトを「EB」でパッチ
を行うことを意味する。なお、その他の行も同様の意味
である。
1において、例えば221行には、そのデータ長DLは
「08」が、識別子IDは「APL1」が、オフセット
アドレスOAは「010E」が、パッチデータPDは
「EB」がそれぞれ設定されている。これは、目的プロ
グラム11が「APL1」である場合に、オフセットア
ドレス「010E」からの1バイトを「EB」でパッチ
を行うことを意味する。なお、その他の行も同様の意味
である。
【0035】次に、本発明の動作について、図4及び図
5に示す具体的なデータを参照して説明する。なお、図
3の221行及び222行に示すように、目的プログラ
ム11の識別子IDをアスキー文字列で表すファイル名
の「APL1」とする。
5に示す具体的なデータを参照して説明する。なお、図
3の221行及び222行に示すように、目的プログラ
ム11の識別子IDをアスキー文字列で表すファイル名
の「APL1」とする。
【0036】図4はパッチ処理前のデータの一例を示す
図であって、図4(A)はデータダンプを、図4(B)
はプログラムの一部を、それぞれ示す。図4(A)にお
いて、メモリアドレス410は主記憶装置10の一部で
あり、データ420は目的プログラム11の一部であ
る。なお、図中に示す数値はいずれも16進数である。
図であって、図4(A)はデータダンプを、図4(B)
はプログラムの一部を、それぞれ示す。図4(A)にお
いて、メモリアドレス410は主記憶装置10の一部で
あり、データ420は目的プログラム11の一部であ
る。なお、図中に示す数値はいずれも16進数である。
【0037】データ420はデータ420内の図面左端
のデータをメモリアドレス410で示す1バイトの内容
とし、メモリアドレスが1番地増加するごとに、各メモ
リアドレスの1バイトの内容を順に図面右側へ1つずつ
示す。例えば、401行では、まずメモリアドレス「0
100」番地の内容「B8」を示し、その右隣はメモリ
アドレス「0101」番地の内容「6F」を示し、その
右隣はメモリアドレス「0102」番地の内容「13」
を示す。以下、同様にして、データ420内の図面右端
に示すデータ「1D」は、メモリアドレス「010F」
番地の内容を示す。
のデータをメモリアドレス410で示す1バイトの内容
とし、メモリアドレスが1番地増加するごとに、各メモ
リアドレスの1バイトの内容を順に図面右側へ1つずつ
示す。例えば、401行では、まずメモリアドレス「0
100」番地の内容「B8」を示し、その右隣はメモリ
アドレス「0101」番地の内容「6F」を示し、その
右隣はメモリアドレス「0102」番地の内容「13」
を示す。以下、同様にして、データ420内の図面右端
に示すデータ「1D」は、メモリアドレス「010F」
番地の内容を示す。
【0038】図4(B)において、メモリアドレス43
0は主記憶装置10の一部であり、データ440は目的
プログラム11の一部であり、ニーモニックコード(mn
emonic code;記号命令)450はデータ440を機械語
命令で表したものである。なお、ニーモニックコード4
50内の「MOV」及び「AX」等の機械語命令を除い
て、図中に示す数値はいずれも16進数である。
0は主記憶装置10の一部であり、データ440は目的
プログラム11の一部であり、ニーモニックコード(mn
emonic code;記号命令)450はデータ440を機械語
命令で表したものである。なお、ニーモニックコード4
50内の「MOV」及び「AX」等の機械語命令を除い
て、図中に示す数値はいずれも16進数である。
【0039】例えば、402行では、メモリアドレス
「010E」番地からの2バイトのデータ「731D」
が、機械語命令451の「JNB 012D」であるこ
とを意味する。
「010E」番地からの2バイトのデータ「731D」
が、機械語命令451の「JNB 012D」であるこ
とを意味する。
【0040】このような目的プログラム11に対して本
発明のメモリパッチ装置を実行すれば、まず目的プログ
ラム11に対応するパッチ情報21a、すなわちパッチ
情報検索手段11aが図3の221行に示すパッチ情報
21aを検索する。そして、オフセットアドレスOA及
びパッチデータPDに基づいて、アドレス演算手段11
b及びデータ格納手段11cがパッチを行うので、パッ
チ処理後のデータは図5のようになる。
発明のメモリパッチ装置を実行すれば、まず目的プログ
ラム11に対応するパッチ情報21a、すなわちパッチ
情報検索手段11aが図3の221行に示すパッチ情報
21aを検索する。そして、オフセットアドレスOA及
びパッチデータPDに基づいて、アドレス演算手段11
b及びデータ格納手段11cがパッチを行うので、パッ
チ処理後のデータは図5のようになる。
【0041】図5はパッチ処理後のデータの一例を示す
図であって、図5(A)はデータダンプを、図5(B)
はプログラムの一部を、それぞれ示す。なお、図5
(A)は図4(A)と、図5(B)は図4(B)と、そ
れぞれ対応している。
図であって、図5(A)はデータダンプを、図5(B)
はプログラムの一部を、それぞれ示す。なお、図5
(A)は図4(A)と、図5(B)は図4(B)と、そ
れぞれ対応している。
【0042】図5(A)において、メモリアドレス51
0が主記憶装置10の一部であり、データ520が目的
プログラム11の一部である。また、図5(B)におい
て、メモリアドレス530は主記憶装置10の一部であ
り、データ540は目的プログラム11の一部であり、
ニーモニックコード550はデータ540を機械語命令
で表したものである。
0が主記憶装置10の一部であり、データ520が目的
プログラム11の一部である。また、図5(B)におい
て、メモリアドレス530は主記憶装置10の一部であ
り、データ540は目的プログラム11の一部であり、
ニーモニックコード550はデータ540を機械語命令
で表したものである。
【0043】したがって、本発明のメモリパッチ装置を
実行することによって、図4(A)に示すメモリアドレ
ス「010E」番地の内容421である「73」が図5
(A)に示すメモリアドレス「010E」番地の内容5
21である「EB」にパッチされる。この結果、図4
(B)の402行に示す機械語命令451は「JNB0
12D」から図4(B)の501行に示す機械語命令5
51の「JMP 012D」に変わる。こうして、目的
プログラム11に含まれるバグや定数値等の訂正を確実
に行うことができる。
実行することによって、図4(A)に示すメモリアドレ
ス「010E」番地の内容421である「73」が図5
(A)に示すメモリアドレス「010E」番地の内容5
21である「EB」にパッチされる。この結果、図4
(B)の402行に示す機械語命令451は「JNB0
12D」から図4(B)の501行に示す機械語命令5
51の「JMP 012D」に変わる。こうして、目的
プログラム11に含まれるバグや定数値等の訂正を確実
に行うことができる。
【0044】次に、本発明の処理手順について、図6に
示すフローチャートを参照して説明する。図6は本発明
の処理手順を示すフローチャートである。図において、
Sの後に続く数字はステップ番号を示す。なお、ステッ
プS1乃至ステップS3をパッチ情報検索手段12a
が、ステップS4をアドレス演算手段12bが、ステッ
プS5及びステップS6をパッチ処理手段12cが、そ
れぞれ実行する。 〔S1〕パッチ情報21aがあるか否かを判別する。も
し、パッチ情報21aがある(YES)ならばステップ
S2に進み、パッチ情報21aがない(NO)ならば本
処理手順を終了し、目的プログラム11本体を実行す
る。 〔S2〕ステップS1のパッチ情報21aにおける識別
子IDと、目的プログラム11の識別子とが一致するか
否かを判別する。もし、一致する(YES)ならばステ
ップS3に進み、一致しない(NO)ならばステップS
6に進む。 〔S3〕ステップS1のパッチ情報21aにおけるオフ
セットアドレスOA及びパッチデータPDを取得する。 〔S4〕アドレス演算を行う。具体的には、目的プログ
ラム11本体が主記憶装置10に格納された所定のアド
レスを示すベースアドレスBA、例えば先頭アドレス
と、ステップS3で得られたオフセットアドレスOAと
の和を演算して、パッチを行う絶対アドレスAAを求め
る。 〔S5〕ステップS4で求められた絶対アドレスAAの
データを、ステップS3で得られた一以上のパッチデー
タPDでパッチ処理する。 〔S6〕次のパッチ情報21aへのロケート処理を行
う。具体的には、次のレコードを参照するためのレコー
ド番号をインクリメントする。その後、ステップS1に
戻る。
示すフローチャートを参照して説明する。図6は本発明
の処理手順を示すフローチャートである。図において、
Sの後に続く数字はステップ番号を示す。なお、ステッ
プS1乃至ステップS3をパッチ情報検索手段12a
が、ステップS4をアドレス演算手段12bが、ステッ
プS5及びステップS6をパッチ処理手段12cが、そ
れぞれ実行する。 〔S1〕パッチ情報21aがあるか否かを判別する。も
し、パッチ情報21aがある(YES)ならばステップ
S2に進み、パッチ情報21aがない(NO)ならば本
処理手順を終了し、目的プログラム11本体を実行す
る。 〔S2〕ステップS1のパッチ情報21aにおける識別
子IDと、目的プログラム11の識別子とが一致するか
否かを判別する。もし、一致する(YES)ならばステ
ップS3に進み、一致しない(NO)ならばステップS
6に進む。 〔S3〕ステップS1のパッチ情報21aにおけるオフ
セットアドレスOA及びパッチデータPDを取得する。 〔S4〕アドレス演算を行う。具体的には、目的プログ
ラム11本体が主記憶装置10に格納された所定のアド
レスを示すベースアドレスBA、例えば先頭アドレス
と、ステップS3で得られたオフセットアドレスOAと
の和を演算して、パッチを行う絶対アドレスAAを求め
る。 〔S5〕ステップS4で求められた絶対アドレスAAの
データを、ステップS3で得られた一以上のパッチデー
タPDでパッチ処理する。 〔S6〕次のパッチ情報21aへのロケート処理を行
う。具体的には、次のレコードを参照するためのレコー
ド番号をインクリメントする。その後、ステップS1に
戻る。
【0045】したがって、目的プログラム11の種類に
かかわらず目的プログラム11自身にパッチを行うこと
ができる。また、目的プログラム11が自身にパッチを
当てるので、一般の計算機システムの所有者等の手を煩
わせることなく、自動的に目的プログラム11に含まれ
るバグや定数値等の訂正を行う。
かかわらず目的プログラム11自身にパッチを行うこと
ができる。また、目的プログラム11が自身にパッチを
当てるので、一般の計算機システムの所有者等の手を煩
わせることなく、自動的に目的プログラム11に含まれ
るバグや定数値等の訂正を行う。
【0046】上記の説明では、記憶手段20はハードデ
ィスク装置で構成したが、主記憶装置10の一部、例え
ば不揮発性メモリで構成してもよい。この構成により、
外部記憶装置105よりも速くアクセスすることがで
き、かつ、停電等の不慮の事故が発生した場合でもパッ
チテーブル21等が失われることもない。同様に、フレ
キシブルディスク装置及び光磁気ディスク装置等の外部
記憶装置105で構成してもよい。
ィスク装置で構成したが、主記憶装置10の一部、例え
ば不揮発性メモリで構成してもよい。この構成により、
外部記憶装置105よりも速くアクセスすることがで
き、かつ、停電等の不慮の事故が発生した場合でもパッ
チテーブル21等が失われることもない。同様に、フレ
キシブルディスク装置及び光磁気ディスク装置等の外部
記憶装置105で構成してもよい。
【0047】また、記憶手段20として、通信回線を介
して接続された他の計算機システムで構成することもで
きる。例えば、ネットワークのホスト計算機システムに
パッチテーブル21等を格納することによって、ネット
ワークで接続された全ての計算機システムにおいて本発
明を実施することができる。このため、本発明の実施に
必要なメモリ領域を最小限に抑えることができる。
して接続された他の計算機システムで構成することもで
きる。例えば、ネットワークのホスト計算機システムに
パッチテーブル21等を格納することによって、ネット
ワークで接続された全ての計算機システムにおいて本発
明を実施することができる。このため、本発明の実施に
必要なメモリ領域を最小限に抑えることができる。
【0048】
【発明の効果】以上説明したように本発明では、目的プ
ログラム毎にパッチ処理を行うパッチライブラリーを設
け、各目的プログラムの起動時パッチ処理を行うように
構成したので、各目的プログラムがダイナミックリンク
されても確実にパッチ処理を行うことができる。
ログラム毎にパッチ処理を行うパッチライブラリーを設
け、各目的プログラムの起動時パッチ処理を行うように
構成したので、各目的プログラムがダイナミックリンク
されても確実にパッチ処理を行うことができる。
【図1】本発明の原理説明図である。
【図2】計算機システムのハードウェア構成の一例を示
すブロック図である。
すブロック図である。
【図3】パッチテーブルの一例を示す図である。
【図4】パッチ処理前のデータの一例を示す図であっ
て、(A)はデータダンプを、(B)はプログラムの一
部を、それぞれ示す。
て、(A)はデータダンプを、(B)はプログラムの一
部を、それぞれ示す。
【図5】パッチ処理後のデータの一例を示す図であっ
て、(A)はデータダンプを、(B)はプログラムの一
部を、それぞれ示す。
て、(A)はデータダンプを、(B)はプログラムの一
部を、それぞれ示す。
【図6】本発明の処理手順を示すフローチャートであ
る。
る。
10 主記憶装置 11 目的プログラム 12a パッチ情報検索手段 12b アドレス演算手段 12c パッチ処理手段 20 記憶手段 21 パッチテーブル 21a パッチ情報
Claims (11)
- 【請求項1】 計算機システムの目的プログラムの一部
を応急的に変更するメモリパッチ装置において、 目的プログラム(11)の起動時に、記憶手段(20)
に格納されたパッチテーブル(21)から前記目的プロ
グラム(11)に対応するパッチ情報(21a)を検索
するパッチ情報検索手段(12a)と、 前記主記憶装置(10)に格納されたときの前記目的プ
ログラム(11)のベースアドレス(BA)と、検索さ
れた前記パッチ情報(21a)のオフセットアドレス
(OA)とに基づいて、パッチを行うデータ(11a)
の前記主記憶装置(10)上の絶対アドレス(AA)を
演算するアドレス演算手段(12b)と、 前記パッチ情報(21a)のパッチデータ(PD)で絶
対アドレス(AA)のデータをパッチ処理するパッチ処
理手段(11c)と、 からなるパッチライブラリー(12)を前記目的プログ
ラム(11)毎に有することを特徴とするメモリパッチ
装置。 - 【請求項2】 前記目的プログラム(11)は、アプリ
ケーションプログラムであることを特徴とする請求項1
記載のメモリパッチ装置。 - 【請求項3】 前記目的プログラム(11)は、OS
(Operating System)プログラムであることを特徴とす
る請求項1記載のメモリパッチ装置。 - 【請求項4】 前記目的プログラム(11)は、デバイ
スドライバ等の常駐プログラムであることを特徴とする
請求項1記載のメモリパッチ装置。 - 【請求項5】 前記記憶手段(20)は、前記主記憶装
置(10)の一部で構成したことを特徴とする請求項1
記載のメモリパッチ装置。 - 【請求項6】 前記記憶手段(20)は、通信回線を介
して接続された他の計算機システムで構成したことを特
徴とする請求項1記載のメモリパッチ装置。 - 【請求項7】 前記記憶手段(20)は、フレキシブル
ディスク装置で構成したことを特徴とする請求項1記載
のメモリパッチ装置。 - 【請求項8】 前記記憶手段(20)は、ハードディス
ク装置で構成したことを特徴とする請求項1記載のメモ
リパッチ装置。 - 【請求項9】 前記記憶手段(20)は、光磁気ディス
ク装置で構成したことを特徴とする請求項1記載のメモ
リパッチ装置。 - 【請求項10】 前記主記憶装置(10)は、不揮発性
メモリを含むように構成したことを特徴とする請求項1
記載のメモリパッチ装置。 - 【請求項11】 前記パッチ情報(21a)は、少なく
とも前記目的プログラム(11)を識別するための識別
子、前記オフセットアドレス(OA)及び前記パッチデ
ータ(PD)を含むように構成したことを特徴とする請
求項1記載のメモリパッチ装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5023146A JPH06242990A (ja) | 1993-02-12 | 1993-02-12 | メモリパッチ装置 |
US08/721,385 US5694566A (en) | 1993-02-12 | 1996-09-26 | Memory patching device |
US08/982,314 US6076134A (en) | 1993-02-12 | 1997-12-01 | Memory patching device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5023146A JPH06242990A (ja) | 1993-02-12 | 1993-02-12 | メモリパッチ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06242990A true JPH06242990A (ja) | 1994-09-02 |
Family
ID=12102432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5023146A Pending JPH06242990A (ja) | 1993-02-12 | 1993-02-12 | メモリパッチ装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US5694566A (ja) |
JP (1) | JPH06242990A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6915512B1 (en) | 1999-11-29 | 2005-07-05 | Fujitsu Limited | Software editing with indication of format and processing state of each process of the software |
JP2005182775A (ja) * | 2003-12-10 | 2005-07-07 | Microsoft Corp | カーネルモードシミングのためのドライバ固有コンテキスト |
KR100615890B1 (ko) * | 2004-12-08 | 2006-08-25 | 삼성에스디에스 주식회사 | 스마트 카드 운영체제의 패치 방법 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06242990A (ja) * | 1993-02-12 | 1994-09-02 | Fujitsu Ltd | メモリパッチ装置 |
US5970243A (en) * | 1996-08-27 | 1999-10-19 | Steeplechase Software, Inc. | Online programming changes for industrial logic controllers |
KR100205292B1 (ko) * | 1996-09-02 | 1999-07-01 | 윤종용 | 하드 디스크 드라이브의 프로그램 수정방법 |
JPH1185526A (ja) * | 1997-09-12 | 1999-03-30 | Hitachi Ltd | プログラムロード方法 |
US6073252A (en) * | 1997-09-25 | 2000-06-06 | Motorola, Inc. | Data processing system with memory patching and method thereof |
US6230316B1 (en) * | 1998-04-17 | 2001-05-08 | Symantec Corporation | Patching rebased and realigned executable files |
US6490721B1 (en) | 1998-07-14 | 2002-12-03 | Oc Systems Incorporated | Software debugging method and apparatus |
US20020073398A1 (en) * | 1998-12-14 | 2002-06-13 | Jeffrey L. Tinker | Method and system for modifying executable code to add additional functionality |
GB2349485B (en) * | 1999-04-23 | 2003-12-10 | Ibm | Application management |
US6463549B1 (en) * | 2000-09-28 | 2002-10-08 | Motorola, Inc. | Device and method for patching code residing on a read only memory module utilizing a random access memory for storing a set of fields, each field indicating validity of content of a group, and for receiving an address of a memory portion of the read only memory |
US6925521B2 (en) * | 2001-09-10 | 2005-08-02 | Texas Instruments Incorporated | Scheme for implementing breakpoints for on-chip ROM code patching |
US7073168B2 (en) | 2001-12-06 | 2006-07-04 | Microsoft Corporation | Customizing binary content files |
US7290081B2 (en) * | 2002-05-14 | 2007-10-30 | Stmicroelectronics, Inc. | Apparatus and method for implementing a ROM patch using a lockable cache |
DE10260103A1 (de) * | 2002-12-19 | 2004-07-01 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät |
GB2403303B (en) * | 2003-06-23 | 2005-08-17 | Matsushita Electric Ind Co Ltd | Embedded device with software registry |
US7596721B1 (en) * | 2004-01-09 | 2009-09-29 | Maxtor Corporation | Methods and structure for patching embedded firmware |
US8539469B2 (en) * | 2004-05-11 | 2013-09-17 | Microsoft Corporation | Efficient patching |
US7559058B2 (en) * | 2004-05-11 | 2009-07-07 | Microsoft Corporation | Efficient patching |
JP2008198060A (ja) * | 2007-02-15 | 2008-08-28 | Seiko Epson Corp | 情報処理装置、パッチコード実装システム、電子機器及びパッチコードの実装方法 |
US8156486B2 (en) * | 2008-10-29 | 2012-04-10 | Mediatek Inc. | Patching devices and methods thereof for patching firmware functions |
US8438558B1 (en) | 2009-03-27 | 2013-05-07 | Google Inc. | System and method of updating programs and data |
US9824021B2 (en) * | 2014-03-31 | 2017-11-21 | International Business Machines Corporation | Address translation structures to provide separate translations for instruction fetches and data accesses |
US9734083B2 (en) | 2014-03-31 | 2017-08-15 | International Business Machines Corporation | Separate memory address translations for instruction fetches and data accesses |
US9715449B2 (en) | 2014-03-31 | 2017-07-25 | International Business Machines Corporation | Hierarchical translation structures providing separate translations for instruction fetches and data accesses |
US9569115B2 (en) * | 2014-03-31 | 2017-02-14 | International Business Machines Corporation | Transparent code patching |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4028684A (en) * | 1975-10-16 | 1977-06-07 | Bell Telephone Laboratories, Incorporated | Memory patching circuit with repatching capability |
JPS63109558A (ja) * | 1986-10-28 | 1988-05-14 | Nec Corp | プログラムのロ−ド方式 |
JPH01131925A (ja) * | 1987-11-17 | 1989-05-24 | Fujitsu Ltd | プログラムパッチ方式 |
JPH01201728A (ja) * | 1988-02-08 | 1989-08-14 | Nec Corp | プログラム修正方式 |
JPH06242990A (ja) * | 1993-02-12 | 1994-09-02 | Fujitsu Ltd | メモリパッチ装置 |
JPH089435A (ja) * | 1994-06-15 | 1996-01-12 | Nec Corp | 選択呼出受信機 |
US5813043A (en) * | 1996-07-12 | 1998-09-22 | Motorola, Inc. | Method and system including memory patching utilizing a transmission control signal and circuit |
US5757690A (en) * | 1997-04-23 | 1998-05-26 | Exponential Technology, Inc. | Embedded ROM with RAM valid bits for fetching ROM-code updates from external memory |
-
1993
- 1993-02-12 JP JP5023146A patent/JPH06242990A/ja active Pending
-
1996
- 1996-09-26 US US08/721,385 patent/US5694566A/en not_active Expired - Fee Related
-
1997
- 1997-12-01 US US08/982,314 patent/US6076134A/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6915512B1 (en) | 1999-11-29 | 2005-07-05 | Fujitsu Limited | Software editing with indication of format and processing state of each process of the software |
JP2005182775A (ja) * | 2003-12-10 | 2005-07-07 | Microsoft Corp | カーネルモードシミングのためのドライバ固有コンテキスト |
KR100615890B1 (ko) * | 2004-12-08 | 2006-08-25 | 삼성에스디에스 주식회사 | 스마트 카드 운영체제의 패치 방법 |
Also Published As
Publication number | Publication date |
---|---|
US6076134A (en) | 2000-06-13 |
US5694566A (en) | 1997-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH06242990A (ja) | メモリパッチ装置 | |
US6542167B1 (en) | System and method for flexible software linking | |
US7178142B2 (en) | System and method for dynamically verifying the compatibility of a user interface resource | |
JP2664137B2 (ja) | Icカード | |
US20040205329A1 (en) | System and method for performing remote BIOS updates | |
US20110302565A1 (en) | Implicit workspace dependencies | |
US6367072B1 (en) | Apparatus and method for identifying and modifying computer operating system components | |
US7814471B2 (en) | Method and apparatus for providing DLL compatibility | |
US7581216B2 (en) | Preserving platform independence with native accelerators for performance critical program objects | |
US20070050612A1 (en) | Boot program update and restoration system and method thereof | |
US5819024A (en) | Fault analysis system | |
US20010042241A1 (en) | Apparatus and method for executing program using just-in time-compiler system | |
JPH06309204A (ja) | データ処理方法及びその装置 | |
US7028292B1 (en) | Program executing apparatus, control method therefor, and storage medium for interpreting and executing intermediate codes | |
EP1403768A2 (en) | Processor system, processor and arithmetic processing method | |
KR100436003B1 (ko) | 디바이스드라이버적재방법 | |
JPH0546378A (ja) | プログラムの修正処理方法 | |
JPH0695868A (ja) | ソフトウェア管理方式 | |
JP2845694B2 (ja) | データ処理装置 | |
JP2500770B2 (ja) | プログラム修正方式 | |
US7627859B2 (en) | Method for configuring non-script language library files to be run as scripts | |
JP3231578B2 (ja) | ジョブ制御言語用修正装置 | |
JPH0844551A (ja) | 情報処理装置 | |
US7334111B2 (en) | Method and related device for use in decoding executable code | |
JPS63109558A (ja) | プログラムのロ−ド方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20030107 |