(57)【要約】      （修正有）【課題】プログラムを異なるプラットフォームに移行する際に設計の見直しが発生するのを有効に防止して、プログラムの移行作業を容易化させ得るプログラム移行支援装置及び方法を提供する。【解決手段】プログラム移行元の移行元コントローラ４内の第１のメモリ４１に対するプログラムごとのアクセス権限に関する情報である第１のメモリアクセス権限情報から、プログラムが移行先の移行先コントローラ５で実行される際の当該移行先コントローラ内の第２のメモリ５１に対するプログラムごとのアクセス権限に関する情報である第２のメモリアクセス権限情報を生成し、各プログラムのソースコードである第１のソースコードにそれぞれ記述された命令を第２のメモリアクセス権限情報を含む命令にそれぞれ置き換えることにより、移行先コントローラ上で実行される際のプログラムのソースコードである第２のソースコードを生成する。【選択図】図１
2017117091.tif 000002
【特許請求の範囲】
【請求項１】
移行元コントローラで実行される移行対象の１又は複数のプログラムを移行先コントローラに移行する際の支援を行うプログラム移行支援装置において、
前記移行元コントローラ内の第１のメモリに対する前記プログラムごとのアクセス権限に関する情報である第１のメモリアクセス権限情報から、前記プログラムが前記移行先コントローラで実行される際の当該移行先コントローラ内の第２のメモリに対する前記プログラムごとのアクセス権限に関する情報である第２のメモリアクセス権限情報を生成するメモリアクセス権限情報生成部と、
各前記プログラムのソースコードである第１のソースコードにそれぞれ記述された命令を前記第２のメモリアクセス権限情報を含む命令にそれぞれ置き換えることにより、前記移行先コントローラ上で実行される際の前記プログラムのソースコードである第２のソースコードを生成する命令変換部と
ことを備えることを特徴とするプログラム移行支援装置。
【請求項２】
前記移行先コントローラは、保護キーを用いて各前記プログラムのメモリアクセス権限を管理し、
前記第１のメモリは、複数のメモリ領域に分割して管理され、
前記メモリ領域ごとに、当該メモリ領域に対する各前記プログラムのアクセス権限がそれぞれ設定され、
前記第１のメモリアクセス権限情報は、
各前記メモリ領域の開始アドレス及び各前記メモリ領域のサイズと、各前記メモリ領域に対する各前記プログラムのアクセス権限とを含み、
前記第２のメモリアクセス権限情報は、
複数の前記保護キーと、各前記保護キーに対する各前記プログラムのアクセス権限とを含む
ことを特徴とする請求項１に記載のプログラム移行支援装置。
【請求項３】
前記メモリアクセス権限情報生成部は、
前記第１のメモリアクセス権限情報から認識される複数の前記メモリ領域の中から、すべての前記プログラムから同じアクセス権限でアクセスされる前記メモリ領域を抽出してグループ化し、
当該グループ化により得られた前記メモリ領域の各グループにそれぞれ異なる前記保護キーを割り当てて第２のメモリアクセス権限情報を生成する
ことを特徴とする請求項２に記載のプログラム移行支援装置。
【請求項４】
前記メモリアクセス権限情報生成部は、
前記グループの総数が前記移行先コントローラ上で使用可能な前記保護キーの個数以下であった場合に、各前記グループにそれぞれ異なる前記保護キーを割り当てる
ことを特徴とする請求項３に記載のプログラム移行支援装置。
【請求項５】
前記メモリアクセス権限情報生成部は、
前記グループの総数が前記移行先コントローラ上で使用可能な保護キーの個数を上回った場合には、前記グループの中からアクセス権限が類似した複数の前記グループを抽出し、
抽出した複数の前記グループを表示させる
ことを特徴とする請求項３に記載のプログラム移行支援装置。
【請求項６】
前記第１のソースコードにおいて変換する命令がプログラムの実行開始命令であり、
前記命令変換部は、
前記移行元コントローラのプロセッサ及びＯＳ上で実行可能な第１のプログラム実行開始命令を、前記移行先コントローラのプロセッサ及びＯＳ上で実行可能な第２のプログラム実行開始命令に置き換え、
前記第２のプログラム実行開始命令に、前記保護キーと、前記保護キーに対する前記プログラムのアクセス権限との組み合わせを付加するようにして前記第１のソースコードを前記第２のソースコードに変換する
ことを特徴とする請求項２に記載のプログラム移行支援装置。
【請求項７】
前記第１のソースコードにおいて変換する命令がページテーブルの作成命令であり、
前記命令変換部は、
前記移行元コントローラのプロセッサ及びＯＳ上で実行可能な第１のページテーブル作成命令を、前記移行先コントローラのプロセッサ及びＯＳ上で実行可能な第２のページテーブル作成命令に置き換え、
前記第２のページテーブル作成命令に、前記第１のページテーブル作成命令の引数として与えられた前記メモリ領域の開始アドレスに対応する前記保護キーの番号を付加するようにして前記第１のソースコードを前記第２のソースコードに変換する
ことを特徴とする請求項２に記載のプログラム移行支援装置。
【請求項８】
移行元コントローラで実行される移行対象の１又は複数のプログラムを移行先コントローラに移行する際の支援を行うプログラム移行支援装置において実行されるプログラム移行支援方法であって、
前記移行元コントローラ内の第１のメモリに対する前記プログラムごとのアクセス権限に関する情報である第１のメモリアクセス権限情報から、前記プログラムが前記移行先コントローラで実行される際の当該移行先コントローラ内の第２のメモリに対する前記プログラムごとのアクセス権限に関する情報である第２のメモリアクセス権限情報を生成する第１のステップと、
各前記プログラムのソースコードである第１のソースコードにそれぞれ記述された命令を前記第２のメモリアクセス権限情報を含む命令にそれぞれ置き換えることにより、前記移行先コントローラ上で実行される際の前記プログラムのソースコードである第２のソースコードを生成する第２のステップと
ことを備えることを特徴とするプログラム移行支援方法。
【請求項９】
前記移行先コントローラは、保護キーを用いて各前記プログラムのメモリアクセス権限を管理し、
前記第１のメモリは、複数のメモリ領域に分割して管理され、
前記メモリ領域ごとに、当該メモリ領域に対する各前記プログラムのアクセス権限がそれぞれ設定され、
前記第１のメモリアクセス権限情報は、
各前記メモリ領域の開始アドレス及び各前記メモリ領域のサイズと、各前記メモリ領域に対する各前記プログラムのアクセス権限とを含み、
前記第２のメモリアクセス権限情報は、
複数の前記保護キーと、各前記保護キーに対する各前記プログラムのアクセス権限とを含む
ことを特徴とする請求項８に記載のプログラム移行支援方法。
【請求項１０】
前記第１のステップにおいて、前記プログラム移行支援装置は、
前記第１のメモリアクセス権限情報から認識される複数の前記メモリ領域の中から、すべての前記プログラムから同じアクセス権限でアクセスされる前記メモリ領域を抽出してグループ化し、
当該グループ化により得られた前記メモリ領域の各グループにそれぞれ異なる前記保護キーを割り当てて第２のメモリアクセス権限情報を生成する
ことを特徴とする請求項９に記載のプログラム移行支援方法。
【請求項１１】
前記第１のステップにおいて、前記プログラム移行支援装置は、
前記グループの総数が前記移行先コントローラ上で使用可能な前記保護キーの個数以下であった場合に、各前記グループにそれぞれ異なる前記保護キーを割り当てる
ことを特徴とする請求項１０に記載のプログラム移行支援方法。
【請求項１２】
前記第１のステップにおいて、前記プログラム移行支援装置は、
前記グループの総数が前記移行先コントローラ上で使用可能な保護キーの個数を上回った場合には、前記グループの中からアクセス権限が類似した複数の前記グループを抽出し、
抽出した複数の前記グループを表示させる
ことを特徴とする請求項１０に記載のプログラム移行支援方法。
【請求項１３】
前記第１のソースコードにおいて変換する命令がプログラムの実行開始命令であり、
前記第２のステップにおいて、前記プログラム移行支援装置は、
前記移行元コントローラのプロセッサ及びＯＳ上で実行可能な第１のプログラム実行開始命令を、前記移行先コントローラのプロセッサ及びＯＳ上で実行可能な第２のプログラム実行開始命令に置き換え、
前記第２のプログラム実行開始命令に、前記保護キーと、前記保護キーに対する前記プログラムのアクセス権限との組み合わせを付加するようにして前記第１のソースコードを前記第２のソースコードに変換する
ことを特徴とする請求項９に記載のプログラム移行支援方法。
【請求項１４】
前記第１のソースコードにおいて変換する命令がページテーブルの作成命令であり、
前記第２のステップにおいて、前記プログラム移行支援装置は、
前記移行元コントローラのプロセッサ及びＯＳ上で実行可能な第１のページテーブル作成命令を、前記移行先コントローラのプロセッサ及びＯＳ上で実行可能な第２のページテーブル作成命令に置き換え、
前記第２のページテーブル作成命令に、前記第１のページテーブル作成命令の引数として与えられた前記メモリ領域の開始アドレスに対応する前記保護キーの番号を付加するようにして前記第１のソースコードを前記第２のソースコードに変換する
ことを特徴とする請求項９に記載のプログラム移行支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム移行支援装置及び方法に関し、例えば、プログラムを異なるプラットフォームに移行する際の支援を行う計算機に適用して好適なものである。
【背景技術】
【０００２】
特許文献１では、共有メモリなど特定のメモリ領域の特性を前提としたアプリケーションを異なるプラットフォームに移行する場合に、プラットフォームが提供するメモリ領域をアプリケーションが期待する特定のメモリアドレスとして見せる機能が記載されている。これにより他のプラットフォームにアプリケーションを移行する際にプログラム設計を見直す必要がなくなり、移行作業を容易に実施できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２６２３５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プログラムの移行において設計の見直しが発生する要因は、メモリ領域の特性の違い以外にも存在する。例えば、移行元と移行先のプラットフォームで提供されるメモリ保護の機能が異なる場合が挙げられる。メモリ保護は、アプリケーションやオペレーティングシステム（以下、これをＯＳ（Operating System）と呼ぶ）のタスクのようなプログラムごとにメモリアクセス権限を設定し、プログラムがアクセス可能なメモリ領域を限定する機能である。かかるメモリ保護機能によれば、ＯＳタスクが利用するメモリ領域はアプリケーションからアクセス不可とし、反対にアプリケーションが利用するメモリ領域はＯＳタスクからは読み出しのみを許可するなどの設定を行うことが可能となる。メモリ保護機能はプロセッサに搭載されるハードウェア機能であるが、移行元と移行先のプラットフォームで異なるプロセッサが採用されている場合、移行元の設定と同等のメモリアクセス権限を移行先で再現できない可能性がある。
【０００５】
メモリ保護機能としては、保護キー（Protection Key）と呼ばれる情報に基づき、プログラム内の個々のスレッドに対して、スレッドがアクセス可能なメモリ領域をメモリページ単位で設定可能とする機能が普及している。プログラムに対してメモリ保護専用の命令を追加で実装することで、このようなメモリ保護機能を活用できる。
【０００６】
特に制御向けのプログラムでは、制御コントローラ上で動作するリアルタイムＯＳや複数のアプリケーションが互いのメモリ領域に不正なアクセスを行ってメモリの内容を破壊しないよう、アクセス権限を設定することが重要であり、移行によりプラットフォームが変更されたとしても、移行元と移行先で同等のメモリ保護を実現することが求められる。しかしながら、上述した特許文献１ではプラットフォームの違いによるメモリ保護の設定までは考慮していない。
【０００７】
本発明は以上の点を考慮してなされたもので、プログラムを異なるプラットフォームに移行する際に設計の見直しが発生するのを有効に防止して、プログラムの移行作業を容易化させ得るプログラム移行支援装置及び方法を提案しようとするものである。
【課題を解決するための手段】
【０００８】
かかる課題を解決するため本発明においては、移行元コントローラで実行される移行対象の１又は複数のプログラムを移行先コントローラに移行する際の支援を行うプログラム移行支援装置において、前記移行元コントローラ内の第１のメモリに対する前記プログラムごとのアクセス権限に関する情報である第１のメモリアクセス権限情報から、前記プログラムが前記移行先コントローラで実行される際の当該移行先コントローラ内の第２のメモリに対する前記プログラムごとのアクセス権限に関する情報である第２のメモリアクセス権限情報を生成するメモリアクセス権限情報生成部と、各前記プログラムのソースコードである第１のソースコードにそれぞれ記述された命令を前記第２のメモリアクセス権限情報を含む命令にそれぞれ置き換えることにより、前記移行先コントローラ上で実行される際の前記プログラムのソースコードである第２のソースコードを生成する命令変換部とを設けるようにした。
【０００９】
また本発明においては、移行元コントローラで実行される移行対象の１又は複数のプログラムを移行先コントローラに移行する際の支援を行うプログラム移行支援装置において実行されるプログラム移行支援方法であって、前記移行元コントローラ内の第１のメモリに対する前記プログラムごとのアクセス権限に関する情報である第１のメモリアクセス権限情報から、前記プログラムが前記移行先コントローラで実行される際の当該移行先コントローラ内の第２のメモリに対する前記プログラムごとのアクセス権限に関する情報である第２のメモリアクセス権限情報を生成する第１のステップと、各前記プログラムのソースコードである第１のソースコードにそれぞれ記述された命令を前記第２のメモリアクセス権限情報を含む命令にそれぞれ置き換えることにより、前記移行先コントローラ上で実行される際の前記プログラムのソースコードである第２のソースコードを生成する第２のステップとを設けるようにした。
【００１０】
本発明のプログラム移行支援装置及び方法によれば、メモリアクセス権限の設定を維持したまま移行対象の各プログラムを移行元コントローラから移行先コントローラに移行することができる。
【発明の効果】
【００１１】
本発明によれば、プログラムを異なるプラットフォームに移行する際に設計の見直しが発生するのを有効に防止して、プログラムの移行作業を容易化させ得るプログラム移行支援装置及び方法を実現できる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態によるプログラム移行システムの構成例を示すブロック図である。
【図２】メモリアクセス権限管理テーブルの構成例を示す概念図である。
【図３】メモリ領域管理テーブルの構成例を示す概念図である。
【図４】保護キー管理テーブルの構成例を示す概念図である。
【図５】プロセッサ機能管理テーブルの構成例を示す概念図である。
【図６】ＯＳ機能管理テーブルの構成例を示す概念図である。
【図７】メモリアクセス権限設定画面の構成例を略線的に示す略線図である。
【図８】保護キー生成処理の処理手順を示すフローチャートである。
【図９】保護キー生成処理の説明に供する図表である。
【図１０】命令変換処理の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下図面について、本発明の一実施の形態を詳述する。
【００１４】
（１）本実施の形態によるプログラム移行システムの構成
図１は、本実施の形態によるプログラム移行システム１の構成例を示す。本プログラム移行システム１は、ネットワーク２を介して相互に接続されたプログラム移行支援装置３、移行元コントローラ４及び移行先コントローラ５を備えて構成される。
【００１５】
プログラム移行支援装置３は、例えば、工場などにおいて機械の制御を行う移行元コントローラ４上で動作するタスクをプロセッサの種類が異なる移行先コントローラ５に移行する際の支援を行うコンピュータ装置である。このプログラム移行支援装置３は、プロセッサ１０、メモリ１１及び入出力装置１２を備えて構成される。
【００１６】
プロセッサ１０は、プログラム移行支援装置３全体の動作制御を司るハードウェアであり、メモリ１１に格納されたプログラムを読み出し、プログラムに記述された様々な処理を実行する。またメモリ１１は、例えば半導体メモリから構成され、プログラム等を保持するために利用される。ＯＳ２０や、後述するメモリアクセス権限設定ファイル２１等もこのメモリ１１に格納されて保持される。入出力装置１２には、キーボード、ディスプレイ、ネットワークアダプタ及びディスクアダプタなどが含まれる。
【００１７】
移行元コントローラ４及び移行先コントローラ５は、プログラム移行支援装置３と同様に、それぞれプロセッサ４０，５０、メモリ４１，５１、入出力装置４２，５２を備えて構成される制御処理向けコントローラである。入出力装置４２，５２は制御ネットワーク用アダプタやアナログ・デジタル入出力アダプタなどを含み、アダプタには制御対象の機械装置が接続される。
【００１８】
移行元コントローラ４及び移行先コントローラ５のメモリ４１，５１には、それぞれリアルタイムＯＳ４３，５３が格納される。リアルタイムＯＳ４３，５３は、機械装置などを制御する際に求められるリアルタイム性能を向上させたＯＳであり、１つ以上のＯＳタスク４４，５４及びユーザタスク４５，５５が当該リアルタイムＯＳ４３，５３上で稼働する。ＯＳタスク４４，５４はリアルタイムスケジューリングやメモリ管理などのＯＳが処理するプログラムであり、ユーザタスク４５，５５は移行元コントローラ４の使用者が開発した制御処理を実行するプログラムである。これらＯＳタスク４４，５４及びユーザタスク４５，５５は、メモリ４１，５１に格納され、必要時にプロセッサ４０，５０に読み出されて実行される。
【００１９】
また移行先コントローラ５のメモリ５１には、リソース制御部５６及び外部タスク５７も格納される。
【００２０】
リソース制御部５６は、移行先コントローラ５に搭載されたプロセッサ５０、メモリ５１、入出力装置５２などのリソースを管理し、これらリソースを分割して複数のプログラムに割り当てる機能を持つプログラムである。かかるリソースを利用して仮想的なハードウェアを生成してＯＳを実行するハイパーバイザや、仮想的なハードウェアを生成せずにＯＳのリソースや名前空間の分割のみを行うコンテナなどのプログラムがリソース制御部５６に相当する。図１においては、リアルタイムＯＳ５３及び外部タスク５７に対してリソース制御部５６によって移行先コントローラ５のリソースが割り当てられ、ＯＳタスク５４、ユーザタスク５５及び外部タスク５７が並行して動作する構成を想定している。
【００２１】
また外部タスク５７は、リソース制御部５６からリソースが割り当てられ、リアルタイムＯＳ５３と並行して動作するプログラムであり、リアルタイムＯＳ５３以外の別のリアルタイムＯＳや、リアルタイム処理を必要としない汎用ＯＳなどのプログラムである。
【００２２】
なお、移行先コントローラ５においては、リソース制御部５６が存在しない構成をとってもよい。そのような場合は、移行先コントローラ５上ではリアルタイムＯＳ５３とＯＳタスク５４とユーザタスク５５とが動作し、外部タスク５７は動作しない。
【００２３】
プロセッサ４０，５０は、対応する移行元コントローラ４又は移行先コントローラ５全体の動作制御を司る機能を有するハードウェアである。これらプロセッサ４０，５０は、内部にメモリ保護機構４０Ａ，５０Ａを備えており、そのプロセッサ４０，５０が搭載された移行元コントローラ４又は移行先コントローラ５上で動作するプログラム（ＯＳタスク４４，５４及びユーザタスク４５，５５）のメモリアクセスを制限することでメモリ保護を行う。これは、例えば、ユーザタスクＡがプログラムの実行中にＯＳのリアルタイムスケジューリングタスクが使用しているメモリ領域に対して不正な値を書き込んだ場合、ＯＳのスケジューリングが停止しタスクを実行できなくなる可能性があることから、これを防止するためである。
【００２４】
ここで、一般にメモリ保護機構は、プロセッサの種別が異なると、メモリアクセス権限の管理方法やメモリアクセス権限を制御する命令が異なる。本実施の形態においては、移行元コントローラ４及び移行先コントローラ５はプロセッサを含むプラットフォームが異なり、それによってメモリ保護機構も異なる場合を想定している。また、移行先コントローラ５のメモリ保護機構５０Ａは保護キーを用いてメモリアクセス権限を管理する場合を想定している。
【００２５】
次に、保護キーによるメモリ保護機能について説明する。このメモリ保護機能は、一部の種別のプロセッサに搭載されており、メモリ領域に対して保護キーを割り当てる保護キー割当て機能と、プログラムに対して保護キーごとのアクセス権限を設定するアクセス権限設定機能とからなる。
【００２６】
保護キー割当て機能は、メモリの記憶領域を１つ以上のメモリ領域に分割し、それぞれのメモリ領域に対して保護キー番号を割り当てる機能である。このとき複数のメモリ領域に同じ保護キー番号を割り当ててもよい。同じ保護キー番号を割り当てられたメモリ領域は、同じアクセス権限を持つことを意味する。なお、保護キー番号の個数は有限であり、４個や16個などプロセッサの種別に応じて異なる。一般の計算機では、メモリはメモリページと呼ばれる４ＫＢや２ＭＢなどの固定サイズの領域に分割され、ページテーブルと呼ばれるデータ構造を用いて管理される。保護キーによるメモリ保護機能が有効なプロセッサにおいては、ページテーブルに新たに保護キー番号を格納する領域が追加されることで、固定サイズのメモリページごとに保護キー番号を割り当てることができる。
【００２７】
またアクセス権限設定機能は、プロセッサ上で実行されるプログラムごとに、プロセッサがもつすべての保護キー番号に対するアクセス権限を個別に設定する機能である。例えば、「プログラムＡは、保護キー番号０番及び１番が割り当てられたメモリ領域に対して読書き可能」、「プログラムＢは、保護キー番号０番が割り当てられたメモリ領域に対しては読み出しのみ可能であり、保護キー番号１番が割り当てられたメモリ領域に対しては読書き可能」のようにアクセス権限を設定する。このようにアクセス権限を設定することにより、プログラムＢが保護キー番号０番が割り当てられたメモリ領域に対して不正な値を書き込むことを防ぐことができる。
【００２８】
一般の計算機では、プログラムをプロセッサ上でプロセスやスレッドとして実行する。保護キーによるメモリ保護機能が有効なプロセッサにおいては、プロセスやスレッド固有のレジスタが追加され、レジスタ内に各保護キー番号に対するアクセス権限がそれぞれ格納される。実行するプロセスやスレッドが切り替わる場合には、レジスタ内のアクセス権限も切り替わる先のものに変更される。プロセスやスレッドがメモリにアクセスする際、プロセッサは、アクセス先のメモリ領域に割り当てられた保護キー番号をページテーブル内から読み取り、かかるレジスタに格納されたアクセス権限と照合して、実行中のプロセスやスレッドがそのメモリ領域に対するアクセス権限を有しているか否かを判断し、有していない場合はメモリアクセスを禁止することで、不正なメモリアクセスを防ぐ。
【００２９】
（２）本実施の形態によるプログラム移行支援機能
次に、プログラム移行支援装置３に搭載されたプログラム移行支援機能について説明する。本プログラム移行支援機能は、移行元コントローラ４上で動作するＯＳタスク４４やユーザタスク４５をプロセッサの種別が異なる移行先コントローラ５へ移行する場合において、移行元コントローラ４におけるメモリアクセス権限設定情報を元に、移行先コントローラ５に搭載されたメモリ保護機構５０Ａに適合した保護キーを生成し、メモリ保護機構５０Ａを利用するための制御命令を移行対象のＯＳタスク４４やユーザタスク４５のソースコード（移行元ソースコード３０）に自動で埋め込んだ上で、このソースコードを移行先コントローラ５に移行する機能である。
【００３０】
このような本実施の形態によるプログラム移行支援機能を実現するための手段として、プログラム移行支援装置３のメモリ１１には、図１に示すように、ＯＳ２０に加えて、メモリアクセス権限設定ファイル２１、メモリアクセス権限設定画面表示部２２、保護キー生成部２３、命令変換部２４、メモリアクセス権限管理テーブル２５、メモリ領域管理テーブル２６、保護キー管理テーブル２７、プロセッサ機能管理テーブル２８、及び、ＯＳ機能管理テーブル２９が格納されている。
【００３１】
メモリアクセス権限設定ファイル２１は、移行元コントローラ４のメモリ４１内の各メモリ領域と、移行元コントローラ４において動作する移行対象の個々のＯＳタスク４４及びユーザタスク４５と、これらＯＳタスク４４及びユーザタスク４５にそれぞれ設定されたメモリアクセス権限とを対応付けて記述したファイルである。メモリアクセス権限としては、「アクセス不可」、「読書き可」及び「読出しのみ可」などが設定される。このメモリアクセス権限設定ファイル２１は、プログラム移行支援装置３が移行元コントローラ４から取得したものである。
【００３２】
メモリアクセス権限設定画面表示部２２は、メモリ４１，５１の記憶領域を分割することにより得られた複数のメモリ領域と、これらメモリ領域にそれぞれ割り当てられた保護キー番号と、移行元コントローラ４及び移行先コントローラ５上で動作する個々のプログラム（ＯＳタスク４４，５４及びユーザタスク４５，５５）に設定されたメモリアクセス権限とを対応付けた後述するメモリアクセス権限設定画面６０（図７）を表示する機能を有するプログラムである。メモリアクセス権限設定画面６０の詳細については、後述する。
【００３３】
保護キー生成部２３は、移行元コントローラ４に設定されているメモリアクセス権限の情報（以下、適宜、これを移行元メモリアクセス権限情報と呼ぶ）を入力として受け取り、当該移行元メモリアクセス権限情報を元に移行先コントローラ５上のメモリ保護機構５０Ａを用いてメモリアクセス権限を設定するために必要な保護キーを生成する機能を有するプログラムである。この機能の詳細については、図８を用いて後述する。
【００３４】
命令変換部２４は、保護キー生成部２３が生成した保護キーに基づき、移行元コントローラ４上で動作する移行対象のＯＳタスク４４及びユーザタスク４５のソースコード（以下、これを移行元ソースコードと呼ぶ）３０に対し、移行先コントローラ５がプロセッサ５０のメモリ保護機構５０Ａを用いてメモリアクセス制御を行うための保護命令３２を組み込むことにより、タスク移行後に移行先コントローラ５上で動作するＯＳタスク５４やユーザタスク５５のソースコードである移行先ソースコード３１を生成する機能を有するプログラムである。この機能の詳細については、図９を用いて後述する。
【００３５】
加えて、プログラム移行支援装置３のメモリ１１には、移行元ソースコード３０及び移行先ソースコード３１も格納される。移行元ソースコード３０及び移行先ソースコード３１は、それぞれ移行元コントローラ４又は移行先コントローラ５上で動作するＯＳタスク４４，５４及びユーザタスク４５，５５のソースコードである。本実施の形態においては、命令変換部２４によって移行元ソースコード３０に保護命令３２が組み込まれることで、移行先ソースコード３１が生成される。
【００３６】
なお、プログラム移行支援装置３に格納される移行元ソースコード３０及び移行先ソースコード３１は、ＯＳタスク４４，５４とユーザタスク４５，５５のどちらか片方のみでもよい。例えば、ＯＳタスク４４，５４の開発者とユーザタスク４５，５５の開発者とが異なる場合、１つのプログラム移行支援装置３にＯＳタスク４４，５４のみを格納し、別のプログラム移行支援装置３にユーザタスク４５，５５のみを格納することで、個別にプログラムの開発及び移行を行うことができる。
【００３７】
メモリアクセス権限管理テーブル２５は、移行元コントローラ４上で動作する移行対象のＯＳタスク４４やユーザタスク４５のメモリアクセス権限の設定情報と、移行先コントローラ５のメモリ保護機構５０Ａが有する保護キーとを対応付けて管理するために利用されるテーブルであり、図２に示すように、タスクＩＤ欄２５Ａ、タスク名欄２５Ｂ、アクセス権限欄２５Ｃ及びソースコード欄２５Ｄを備えて構成される。
【００３８】
そしてタスクＩＤ欄２５Ａには、対応するタスクに付与されたそのタスクに固有の識別子（タスクＩＤ）が格納され、タスク名欄２５Ｂには、そのタスクに付与された名称（タスク名）が格納される。なおタスク名は、各々のタスクの用途などを表す名前であり、任意の名前を付与することができる。
【００３９】
またアクセス権限欄２５Ｃは、移行先コントローラ５上のメモリ保護機構５０Ａにおいて使用できる保護キーの個数と同じ数の保護キー毎アクセス権限欄２５ＣＡに区分されており、各保護キー毎アクセス権限欄２５ＣＡに、対応する保護キーと対応付けられたメモリ領域に対するそのタスクのアクセス権限がそれぞれ格納される。なお図２では、アクセスが禁止（アクセス不可）の場合は「ＮＡ」、読出しのみ可能の場合には「Ｒ」、読書きが可能な場合には「Ｒ／Ｗ」が保護キー毎アクセス権限欄２５ＣＡに格納される例を示している。
【００４０】
またソースコード欄２５Ｄには、プログラム移行支援装置３が移行元コントローラ４から取得した移行元ソースコード３０において各々のタスク（ＯＳタスク４４及びユーザタスク４５）のソースコードが保存されている位置が格納される。位置を表す情報としては、ソースコードのファイル名やディレクトリ名から成るファイルパスのほか、ソースコード内に記述された関数名やファイル内における行番号などが挙げられる。また、複数のファイル名を記載してもよい。
【００４１】
またメモリ領域管理テーブル２６は、移行先コントローラ５のメモリ５１を分割してなる複数のメモリ領域と、各々のメモリ領域に割り当てられた保護キーとを対応付けて管理するために利用されるテーブルであり、図３に示すように、メモリ領域ＩＤ欄２６Ａ、メモリ領域名欄２６Ｂ、開始アドレス欄２６Ｃ、サイズ欄２６Ｄ及び保護キー番号欄２６Ｅを備えて構成される。
【００４２】
そしてメモリ領域ＩＤ欄２６Ａには、対応するメモリ領域に付与されたそのメモリ領域に固有の識別子（メモリ領域ＩＤ）が格納され、メモリ領域名欄２６Ｂには、そのメモリ領域に付与された名称（メモリ領域名）が格納される。なおメモリ領域名は各々のメモリ領域の用途などを表す名前であり、任意の名前を付与することができる。
【００４３】
また開始アドレス欄２６Ｃには、対応するメモリ領域の開始アドレスが格納され、サイズ欄２６Ｄには、そのメモリ領域のサイズが格納される。なお、メモリ領域のサイズは、一般にはバイト単位で記述される。開始アドレス欄２６Ｃに格納されている開始アドレスと、サイズ欄２６Ｄに格納されているサイズとの組み合わせによって、移行先コントローラ５のメモリ５１内における対応するメモリ領域の位置を特定することができる。
【００４４】
さらに保護キー番号欄２６Ｅには、対応するメモリ領域に割り当てられた保護キーの番号（保護キー番号）が格納される。なお、図３の例では、「Area4」というメモリ領域ＩＤが付与されたメモリ領域と、「Area6」というメモリ領域ＩＤが付与されたメモリ領域に対して同じ「３」という保護キー番号が割り当てられているが、これは「Area4」及び「Area6」の役割が同じであり、そのために同じアクセス権限が設定されていることを意味する。
【００４５】
一方、保護キー管理テーブル２７は、移行先コントローラ５のメモリ保護機構５０Ａにおいて使用できる保護キーの情報を管理するテーブルであり、図４に示すように、保護キー番号欄２７Ａ及び保護キー名欄２７Ｂを備えて構成される。
【００４６】
そして保護キー番号欄２７Ａには、移行先コントローラ５のメモリ５１の各メモリ領域にそれぞれ割り当てた各保護キーの保護キー番号がそれぞれ格納され、保護キー名欄２７Ｂには、対応する保護キー番号の保護キーに付与されたその保護キーの名称（保護キー名）が格納される。
【００４７】
なお、保護キー管理テーブル２７に格納される行の個数は、移行先コントローラ５のメモリ保護機構５０Ａにおいて使用できる保護キーの個数に等しい。例として、使用できる保護キーの数が16個である場合、図４の最下段の保護キー番号欄２７Ａに格納された「Ｎ」の値は「15」であり、保護キー管理テーブル２７は16行で保護キー番号が０番から15番までの情報を管理することとなる。保護キー名欄２７Ｂに格納される保護キー名は、各々の保護キーの用途などを表す名前であり、任意の名前を格納してよい。
【００４８】
他方、プロセッサ機能管理テーブル２８は、移行元コントローラ４や移行先コントローラ５に搭載されるプロセッサの種別に応じて異なるメモリ保護機構の保護キー数や制御命令を管理するために利用されるテーブルであり、図５に示すように、プロセッサ種別欄２８Ａ、保護キー機能搭載フラグ欄２８Ｂ、保護キー数欄２８Ｃ、タスク実行開始命令欄２８Ｄ及びページテーブル作成命令欄２８Ｅを備えて構成される。
【００４９】
そしてプロセッサ種別欄２８Ａには、移行元コントローラ４や移行先コントローラ５に搭載される各プロセッサの種別がそれぞれ格納され、保護キー機能搭載フラグ欄２８Ｂには、対応する種別のプロセッサが保護キーによるメモリ保護機能を搭載しているか否かを表す情報が格納される。また保護キー数欄２８Ｃには、対応するプロセッサが保護キーによるメモリ保護機能を搭載している場合には、そのプロセッサで使用可能な保護キーの個数が格納され、かかるメモリ保護機能が未搭載の場合には「０」などの未搭載を表す任意の値が格納される。
【００５０】
さらにタスク実行開始命令欄２８Ｄには、対応する種別のプロセッサにおいてタスクの実行開始時に発行されるプロセッサの命令（タスク実行開始命令）が格納される。このとき、保護キーによるメモリ保護機能を搭載しているプロセッサにおいては、タスク実行開始時に発行される命令に加え、タスクに対して保護キーによるアクセス権限を設定する命令が合わせて格納される。この際、アクセス権限は、タスクによって異なるため変数として記述される。
【００５１】
さらにページテーブル作成命令欄２８Ｅには、対応する種別のプロセッサにおいてページテーブルの作成時に発行されるプロセッサの命令（ページテーブル作成命令）が格納される。このとき、対応するプロセッサが保護キーによるメモリ保護機能を搭載している場合には、ページテーブル作成時に発行される命令の引数として、該当するページテーブルが管理するメモリ領域に割り当てられた保護キー番号が合わせて格納される。この際、割り当てられる保護キー番号は、メモリ領域ごとに異なるため変数として記述される。
【００５２】
上述のタスク実行開始命令及びページテーブル作成命令はプロセッサ種別ごとに異なる命令であり、アセンブラなどの言語で記述される。これらの情報を用いて、後述の命令変換処理により保護キーによるメモリ保護機能を利用しない移行元ソースコードを、保護キーによるメモリ保護機能を利用した移行先ソースコードに変換する。
【００５３】
ＯＳ機能管理テーブルは、移行元コントローラ４や移行先コントローラ５で実行するＯＳ４４，４５，５４，５５の種別に応じて異なる、メモリアクセス権限制御命令を管理するために利用されるテーブルであり、ＯＳ種別欄２９Ａ、保護キー機能対応フラグ欄２９Ｂ、タスク実行開始命令欄２９Ｃ及びページテーブル作成命令欄２９Ｄを備えて構成される。
【００５４】
そしてＯＳ種別欄２９Ａには、移行元コントローラ４及び移行先コントローラ５にそれぞれ実行されるＯＳ４４，４５，５４，５５の種別が格納され、保護キー機能対応フラグ欄２９Ｂには、対応する種別のＯＳ４４，４５，５４，５５が保護キーによるメモリ保護機能に対応しているか否かを表す情報が格納される。
【００５５】
またタスク実行開始命令欄２９Ｃには、対応する種別のＯＳ４４，４５，５４，５５がタスクの実行開始時に発行する命令（タスク実行開始命令）が格納され、ページテーブル作成命令欄２９Ｄには、対応する種別のＯＳ４４，４５，５４，５５がページテーブルの作成時に発行する命令（ページテーブル作成命令）が格納される。なお、保護キーによるメモリ保護機能に対応している種別のＯＳについては、タスク実行開始命令欄２９Ｃには保護キーによるアクセス権限の設定が、ページテーブル作成命令欄２９Ｄにはメモリ領域に割り当てられた保護キー番号の設定がそれぞれ格納される点はプロセッサ機能管理テーブル２８と同様である。これらタスク実行開始命令及びページテーブル作成命令はＯＳ種別ごとに異なる命令であり、Ｃなどの言語で記述される。
【００５６】
プロセッサ機能管理テーブル２８（図５）及びＯＳ機能管理テーブル２９（図６）に格納する情報は、プロセッサ４０，５０やＯＳ４４，４５，５４，５５の開発元より公開されている仕様情報から作成可能なものであり、これらのテーブルは図８及び図９について後述する処理の開始以前に人手により作成しておくものとする。
【００５７】
（３）メモリアクセス権限設定画面
図７は、プログラム移行支援装置３の入出力装置１２（図１）を所定操作することにより、当該入出力装置１２に表示されるメモリアクセス権限設定画面６０の構成例を示す。
【００５８】
メモリアクセス権限設定画面６０は、移行元コントローラ４や移行先コントローラ５に搭載されたメモリ４１，５１を複数の領域に分割したメモリ領域と、各メモリ領域にそれぞれ割り当てられた保護キー番号と、移行先コントローラ５に移行される個々のタスクと、これらタスクに設定されたメモリアクセス権限とを対応付けて表示し、編集することができる画面である。
【００５９】
このメモリアクセス権限設定画面６０は、メモリアドレス表示フィールド６１、メモリ領域表示フィールドと６２、保護キー表示フィールド６３、タスク表示フィールド６４及びアクセス権限表示フィールド６５と、編集ボタン６６及びＯＫボタン６７とを備えて構成される。
【００６０】
そしてメモリ領域表示フィールド６２には、移行元コントローラ４又は移行先コントローラ５のメモリ４１，５１の記憶領域のうち、各タスク（ＯＳタスク４４，５４及びユーザタスク４５，５５）が使用する領域（以下、これをタスク使用領域と呼ぶ）を模した長方形６２Ａが表示される。そして長方形６２Ａは、そのメモリ４１，５１の各メモリ領域とそれぞれ対応付けられた複数の矩形部６２ＡＡ〜６２ＡＦに区分されている。この場合、各矩形部６２ＡＡ〜６２ＡＦの大きさは、メモリ４１，５１のタスク使用領域全体に対する対応するメモリ領域のサイズに応じた大きさで表示される。
【００６１】
また、メモリアドレス表示フィールド６１には、各矩形部６２ＡＡ〜６２ＡＦにそれぞれ対応させて、対応するメモリ領域の開始アドレスが記述されたテキストボックス６１ＡＡ〜６１ＡＦが表示されると共に、メモリ４１，５１のタスク使用領域の終端アドレスが記述されたテキストボックス６１ＡＧが表示される。またメモリアドレス表示フィールド６１には、各テキストボックス６１ＡＡ〜６１ＡＦから対応する矩形部６２ＡＡ〜６２ＡＦの上端に向けて延びる矢印６１ＢＡ〜６１ＢＦと、テキストボックス６１ＡＧから長方形６２Ａの最下端に向けて延びる矢印６１ＢＧとが表示される。
【００６２】
さらに保護キー表示フィールド６３には、メモリ領域表示フィールド６２の各矩形部６２ＡＡ〜６２ＡＦとそれぞれ対応させて、対応する矩形部６２ＡＡ〜６２ＡＦと同じ高さの矩形部６３Ａ〜６３Ｆがそれぞれ表示されると共に、これら矩形部６３Ａ〜６３Ｆ内に、対応するメモリ領域に対して割り当てられた保護キーの保護キー番号が表示される。
【００６３】
さらにタスク表示フィールド６４には、移行元コントローラ４上で動作している移行対象の各タスクにそれぞれ対応させて、そのタスクのタスク名がそれぞれ表記されたテキストボックス６４Ａ〜６４Ｄが表示される。ただし、移行対象のタスクの数が多く一画面で表示できない場合には、一部のタスクを省略して特定のメモリ領域に対するアクセス権限のみを表示するなどの処理を行ってもよい。
【００６４】
また、アクセス権限表示フィールド６５には、タスク表示フィールド６４に表示された各テキストボックス６４Ａ〜６４Ｄにそれぞれ対応させて、対応するテキストボックス６４Ａ〜６４Ｄと対応付けられたタスクが有する、そのとき指定されているメモリ領域（以下、これを指定メモリ領域と呼ぶ）に対するアクセス権限が表記されたテキストボックス６５Ａ〜６５Ｄが表示される。図７は、「ＯＳタスク」というメモリ領域に対する移行対象の各タスクのアクセス権限を表示した例である。
【００６５】
この際、各テキストボックス６５Ａ〜６５Ｄは、それぞれメモリ領域表示フィールド６２に表示された指定メモリ領域と対応する矩形部６２ＡＡ〜６２ＡＦと、アクセス権限の種類に応じた形態の線６６Ａ〜６６Ｄにより結ばれる。図７では、指定メモリ領域に対して対応するタスクが有するアクセス権限が「Ｒ／Ｗ（読書き可）」の場合には太線、「Ｒ（読出しのみ可）」の場合には細線、「ＮＡ（アクセス不可）」の場合には破線としている。
【００６６】
なお指定メモリ領域は、メモリ領域表示フィールド６２に表示された所望するメモリ領域に対応する矩形部６２ＡＡ〜６２ＡＦをクリックすることにより、そのメモリ領域に切り替えることができる。この場合、アクセス権限表示フィールド６５の各テキストボックス６５Ａ〜６５Ｄ内に表記されるアクセス権限は、切替え後の指定メモリ領域に対する対応するタスクのアクセス権限に切り替えられ、さらに各線６６Ａ〜６６Ｄの接続先も切替え後の指定メモリ領域に対応する矩形部６２ＡＡ〜６２ＡＦに切り替えられる。
【００６７】
このような構成を有するメモリアクセス権限設定画面６０では、編集ボタン６６をクリックすることにより、各メモリ領域のサイズや、各メモリ領域に対する各タスクのアクセス権限が編集可能な状態となる編集モードに表示モードを切り替えることができる。
【００６８】
そして表示モードを編集モードに切り替えた場合、オペレータは、入出力装置１２を操作してメモリアドレス表示フィールド６１に表示されたテキストボックス６１ＡＡ〜６１ＡＦのうちの必要なテキストボックス６１ＡＡ〜６１ＡＦに記述された開始アドレスを書き換えることにより、各メモリ領域のサイズを変更することができる。
【００６９】
ただし、各メモリ領域のサイズ変更は、メモリ領域表示フィールド６２に表示された矩形部６２ＡＡ〜６２ＡＦ間の境界線をドラッグして長方形６２Ａの長手方向に移動させることによっても行うことができる。この場合、かかる境界線の移動に連動して、メモリアドレス表示フィールド６１におけるその境界線に向けて矢印６１ＢＡ〜６１ＢＦが接続されたテキストボックス６１ＡＡ〜６１ＡＦも同じ距離だけ上下動すると共に、そのテキストボックス６１ＡＡ〜６１ＡＦないに表記されているメモリアドレスもそのときの境界線の位置に応じたアドレスに変動表示される。
【００７０】
さらにメモリアクセス権限設定画面６０では、編集モード時、アクセス権限表示フィールド６５に表示された移行対象の各タスクにそれぞれ対応するテキストボックス６５Ａ〜６５Ｄ内に記述されたアクセス権限も変更することができる。
【００７１】
実際上、メモリアクセス権限設定画面６０では、編集モード時に所望するテキストボックス６５Ａ〜６５Ｄをクリックすると、設定可能なアクセス権限（「Ｒ／Ｗ」、「Ｒ」及び「ＮＡ」）がすべて掲載されたプルダウンメニューが表示される。かくしてオペレータは、かかるプルダウンメニューに掲載されたアクセス権限の中から対応するタスクに対して設定したいアクセス権限を選択することにより、そのときの指定メモリ領域に対するそのタスクのアクセス権限をそのアクセス権限に変更することができる。この場合、プルダウンメニューが閉じて、そのとき選択された新たなアクセス権限がそのテキストボックス６５Ａ〜６５Ｄ内に表記される。
【００７２】
そしてメモリアクセス権限設定画面６０では、以上のようにして必要な編集を行った後にＯＫボタン６７をクリックすることにより、編集内容を確定することができる。この場合、このとき確定された編集内容が後述のように保護キー生成部２３に通知されると共に、当該編集内容に従ってメモリアクセス権限管理テーブル２５（図２）及びメモリ領域管理テーブル２６（図３）が更新される。
【００７３】
（４）本プログラム移行支援機能に関する各種処理
次に、本実施の形態のプログラム移行支援機能に関連してプログラム移行支援装置３（図１）内で実行される各種処理の処理内容について説明する。なお、以下においては、各種処理の処理主体をプログラム（「〜部」）として説明するが、実際上は、そのプログラムに基づいてプログラム移行支援装置３のプロセッサ１０（図１）がその処理を実行することは言うまでもない。
【００７４】
（４−１）保護キー生成処理
図８は、保護キー生成部２３（図１）により実行される保護キー生成処理の処理手順を示す。この保護キー生成処理は、プログラム移行支援装置３の保護キー生成部２３が、移行元コントローラ４のメモリアクセス権限設定情報と、メモリアクセス権限の編集の有無と、移行先コントローラ５のプロセッサ５０（図１）の種別情報とを含む保護キー生成要求を入力として受け取ることで開始される。
【００７５】
入力となるメモリアクセス権限設定情報は、メモリアクセス権限設定ファイル２１（図１）から読み込まれる場合と、メモリアクセス権限設定画面６０（図７）において指定される場合とがある。なお、メモリアクセス権限の編集の有無は、保護キー生成要求の入力ではなく、メモリアクセス権限設定画面６０の編集ボタン６６のクリックによって指定されるものとしてもよい。本手順の出力として、移行先コントローラ５における保護キーを用いたメモリアクセス権限設定情報がメモリアクセス権限管理テーブル２５に格納される。
【００７６】
保護キー生成部２３は、かかる保護キー生成要求を入力するとこの図８に示す保護キー生成処理を開始し、まず、メモリアクセス権限設定画面６０を表示する（Ｓ１）。このステップＳ１の時点では、メモリアドレス表示フィールド６１の各テキストボックス６１ＡＡ〜６１ＡＧや、メモリ領域表示フィールド６２の各矩形部６２ＡＡ〜６２ＡＦ、保護キー表示フィールド６３の各矩形部６３Ａ〜６３Ｆ、タスク表示フィールド６４の各テキストボックス６４Ａ〜６４Ｄ、及び、アクセス権限表示フィールド６５の各テキストボックス６５Ａ〜６５Ｄはすべて空欄のままである。
【００７７】
続いて、保護キー生成部２３は、かかる保護キー生成要求において、メモリアクセス権限設定情報の情報源としてメモリアクセス権限設定ファイル２１が指定されているか否かを判断する（Ｓ２）。そして、保護キー生成部２３は、この判断で否定結果を得ると、ステップＳ５に進む。
【００７８】
これに対して、保護キー生成部２３は、ステップＳ２の判断で否定結果を得ると、メモリアクセス権限設定ファイル２１の内容をメモリアクセス権限設定画面６０上に表示する（Ｓ３）。具体的に、保護キー生成部２３は、メモリアクセス権限設定ファイル２１に含まれる情報を元に、メモリアクセス権限設定画面６０のメモリアドレス表示フィールド６１の各テキストボックス６１ＡＡ〜６１ＡＧや、メモリ領域表示フィールド６２の各矩形部６２ＡＡ〜６２ＡＦ、タスク表示フィールド６４の各テキストボックス６４Ａ〜６４Ｄ、及び、アクセス権限表示フィールド６５の各テキストボックス６５Ａ〜６５Ｄにそれぞれ表示する情報を生成し、生成した情報をメモリアクセス権限設定画面表示部２２に通知する。これにより、保護キー生成部２３により生成された上述の各情報がそれぞれ対応箇所に表示される。なお、ステップＳ３の時点では保護キーは生成されていないため、保護キー表示フィールド６３の各矩形部６３Ａ〜６３Ｆは空欄となる。
【００７９】
続いて、保護キー生成部２３は、メモリアクセス権限設定ファイル２１に記述されたメモリアクセス権限を編集する必要があるか否かを判断する（Ｓ４）。具体的に、保護キー生成部２３は、メモリアクセス権限設定画面６０において、編集ボタン６６がクリックされた場合には、メモリアクセス権限を編集する必要があると判断し、編集ボタン６６がクリックされることなくＯＫボタン６７がクリックされた場合には、メモリアクセス権限を編集する必要がないと判断する。そして保護キー生成部２３は、この判断で否定結果を得るとステップＳ６に進む。
【００８０】
これに対して、保護キー生成部２３は、ステップＳ４の判断で肯定結果を得ると、メモリアクセス権限設定画面６０上でオペレータによりメモリアドレス、メモリサイズ、タスク、タスクごとのアクセス権限などのメモリアクセス権限設定情報の編集が行われ、その後、ＯＫボタン６７がクリックされるのを待ち受ける。そして保護キー生成部２３は、やがてＯＫボタン６７がクリックされると、編集後のメモリアクセス権限設定情報をメモリアクセス権限設定画面表示部２２から取得する（Ｓ５）。
【００８１】
次いで、保護キー生成部２３は、メモリアクセス権限設定ファイル２１又はステップＳ５で取得したメモリアクセス権限設定情報から認識される移行対象のタスクと、編集後の各メモリ領域とに関する情報をメモリアクセス権限管理テーブル２５（図２）及びメモリ領域管理テーブル２６（図３）に登録する（Ｓ６）。
【００８２】
具体的に、保護キー生成部２３は、ステップＳ５を経由していない場合にはメモリアクセス権限設定ファイル２１から、ステップＳ５を経由した場合には当該ステップＳ５で取得した編集後のメモリアクセス権限設定情報から認識される移行対象の各タスクについて、メモリアクセス権限管理テーブル２５にそのタスクの行を追加し、その行のタスクＩＤ欄２５Ａに任意のＩＤを格納し、その行のタスク名欄２５Ｂ及びソースコード欄２５Ｄにそれぞれ対応する情報を格納する。
【００８３】
また、保護キー生成部２３は、メモリアクセス権限設定ファイル２１又はかかる編集後のメモリアクセス権限設定情報から得られる各メモリ領域について、メモリ領域管理テーブル２６にそのメモリ領域の行を追加し、その行のメモリ領域ＩＤ欄２６Ａに任意のＩＤを格納し、その行のメモリ領域名欄２６Ｂ、開始アドレス欄２６Ｃ及びサイズ欄２６Ｄにそれぞれ対応する情報を格納する。なおこの時点では、保護キーはまだ生成されていないため、メモリ領域管理テーブル２６の保護キー番号欄２６Ｅは空欄のままである。
【００８４】
次いで、保護キー生成部２３は、メモリ領域管理テーブル２６に登録したメモリ領域の中から後述するステップＳ８の処理が未処理のメモリ領域を１つ選択し（Ｓ７）し、選択したメモリ領域に対する移行対象の各タスクのアクセス権限を取得する（Ｓ８）。具体的に、保護キー生成部２３は、メモリアクセス権限管理テーブル２５に登録されているタスクの中から１つのタスクを選択する。続いて、保護キー生成部２３は、選択したタスクについて、ステップＳ７で選択したメモリ領域に対するアクセス権限をメモリアクセス権限設定ファイル２１又は編集後のメモリアクセス権限設定情報から取得する。以上の処理を、メモリアクセス権限管理テーブル２５に格納されたすべてのタスクについて行う。
【００８５】
さらに保護キー生成部２３は、メモリ領域管理テーブル２６に登録されているすべてのメモリ領域について、メモリアクセス権限管理テーブル２５に登録されているすべてのタスクのアクセス権限をそれぞれ取得したか否かを判断する（Ｓ９）。そして、保護キー生成部２３は、この判断で否定結果を得るとステップＳ７に戻り、この後、ステップＳ７で選択するメモリ領域を順次他の未処理のメモリ領域に切り替えながら、ステップＳ７〜ステップＳ９の処理を繰り返す。以上の処理により、例えば図９に示すように、各メモリ領域（「Area0」、「Area1」、……）に対する移行対象の各タスク（「Task0」、「Task1」、……）のアクセス権限（「Ｒ（読出しのみ可）」、「Ｒ／Ｗ（読書き可）」、「ＮＡ（アクセス不可）」）を取得することができる。
【００８６】
そして保護キー生成部２３は、やがてすべてのメモリ領域についてステップＳ８の処理を実行し終えることによりステップＳ９で肯定結果を得ると、ステップＳ７〜ステップＳ９の処理において得られた、各々のメモリ領域に対する各々のタスクのアクセス権限の組み合わせについて、すべてのタスクからのアクセス権限が同じであるメモリ領域をグループ化する（Ｓ１０）。
【００８７】
例えば、図９の例の場合、「Area0」というメモリ領域に対する「Task0」〜「Task3」という各タスクのアクセス権限がそれぞれ「Ｒ」、「Ｒ／Ｗ」、「ＮＡ」、「Ｒ／Ｗ」であり、「Area2」というメモリ領域に対する「Task0」〜「Task3」という各タスクのアクセス権限も同様にそれぞれ「Ｒ」、「Ｒ／Ｗ」、「ＮＡ」、「Ｒ／Ｗ」であるため、保護キー生成部２３は、「Area0」及び「Area2」という２つのメモリ領域を同一グループにまとめる。この処理により得られたグループが、同じ保護キー番号を割り当てるメモリ領域に相当する。
【００８８】
続いて、保護キー生成部２３は、ステップＳ１０のグループ化により得られたメモリ領域のグループの数が移行先コントローラ５のプロセッサ５０において使用可能な保護キーの数以下であるか否かを判断する（Ｓ１１）。具体的に、保護キー生成部２３は、保護キー生成要求の入力に含まれる移行先コントローラ５のプロセッサ種別情報に基づいてプロセッサ機能管理テーブル２８（図５）の保護キー数欄２８Ｃ（図５）を参照し、移行先コントローラ５のメモリ保護機構５０Ａ（図１）において使用できる保護キーの個数を取得する。続けて、保護キー生成部２３は、ステップＳ１０で生成したメモリ領域のグループの個数が、かかる保護キーの個数以下であるか否かを判断する。
【００８９】
この判断で否定結果を得た場合、ステップＳ１０のグループ化により得られたメモリ領域の各グループに保護キーをそれぞれ割り当てることができない。かくして、このとき保護キー生成部２３は、移行先コントローラ５で使用できる保護キーの個数では移行元コントローラ４と同様のメモリアクセス権限を設定できない旨をメモリアクセス権限設定画面６０のメッセージ表示などを用いてオペレータに通知すると共に、類似のアクセス権限を持つメモリ領域のグループを入出力装置１２（図１）に表示させる（Ｓ１２）。
【００９０】
例えば、図９の例の場合、「Area0」というメモリ領域及び「Area2」というメモリ領域のグループと、「Area1」というメモリ領域のグループとは、「Task3」というタスクに対するアクセス権限のみが異なるため、「Area1」というメモリ領域に対する「Task3」というタスクのアクセス権限を「ＮＡ」から「Ｒ」に変更することをオペレータが許容できる場合、「Area1」、「Area2」及び「Area3」という３つのメモリ領域を同じグループにまとめることで、グループの総数を減らすことができる。グループの総数を減らして保護キーの個数以下にできれば全てのグループへの保護キーの割り当てが可能となる。そこで、保護キー生成部２３は、この例のように一部のタスクのアクセス権限を変更することで複数のグループを１つにまとめることができる場合には、それらのグループが類似のアクセス権限を持つと見なしてオペレータに提示する。
【００９１】
そして保護キー生成部２３は、この後、この保護キー生成処理を終了する。なお、この後、ステップＳ１の処理に戻るようにしてもよい。
【００９２】
一方、保護キー生成部２３は、ステップＳ１１の判断で肯定結果を得ると、ステップＳ１０で作成した各グループに対してそれぞれ１つの保護キー（保護キー番号）を割り当てる（Ｓ１３）。
【００９３】
このとき保護キー生成部２３は、異なるグループには異なる保護キー番号を割り当てる。また保護キー生成部２３は、メモリ領域管理テーブル２６（図３）の各メモリ領域の保護キー番号欄２６Ｅに、対応するメモリ領域が含まれるグループに割り当てた保護キー番号をそれぞれ格納する。
【００９４】
また保護キー生成部２３は、メモリアクセス権限管理テーブル２５（図２）の各タスクの各保護キー毎アクセス権限欄２５ＣＡ（図２）にそれぞれ対応するアクセス権限を格納する。このときメモリ領域と保護キー番号の対応付けにはメモリ領域管理テーブル２６に格納された開始アドレスと保護キー番号の情報を用いる。
【００９５】
さらに保護キー生成部２３は、移行先コントローラ５で使用できる保護キーの個数と同じ行数を有する保護キー管理テーブル２７（図４）を作成し、各行の保護キー番号欄２７Ａに、いずれかのメモリ領域のグループに付与した保護キー番号を降順にそれぞれ格納し、各行の保護キー名欄２７Ｂに、保護キーを割り当てたグループに含まれるメモリ領域の名前などの任意の名前をそれぞれ格納する。
【００９６】
そして保護キー生成部２３は、この後、この保護キー生成処理を終了する。なお、この後、ステップＳ１の処理に戻るようにしてもよい。
【００９７】
以上の処理により、保護キー生成部２３は、保護キーによるメモリ保護機能を持たない移行元コントローラ４におけるメモリアクセス権限設定情報からも、保護キーによるメモリ保護機能を持つ移行先コントローラ５におけるメモリアクセス権限設定情報を生成できる。
【００９８】
（４−２）命令変換処理
図１０は、命令変換部２４（図１）により実行される命令変換処理の処理手順を示す。命令変換部２４は、この図１０に示す処理手順に従って、移行元ソースコード３０（図１）に保護命令３２（図１）を挿入することにより移行先ソースコード３１（図１）を生成して出力する。
【００９９】
この命令変換処理は、プログラム移行支援装置３上の命令変換部２４が、移行先コントローラ５のメモリアクセス権限設定情報と、移行元コントローラ４及び移行先コントローラ５のプロセッサ４０，５０（図１）の種別と、移行元コントローラ４及び移行先コントローラ５のＯＳ（リアルタイムＯＳ４３，５３）の種別と、移行元コントローラ４上の各々のＯＳタスク４４及びユーザタスク４５に対応する移行元ソースコード３０と、を含む命令変換要求を入力として受け取ることで開始される。入力であるメモリアクセス権限設定情報としては、メモリアクセス権限管理テーブル２５（図２）に格納された情報が相当する。また、かかる命令変換要求は、オペレータがプログラム移行支援装置３の入出力装置１２を介して所定の操作入力を行うことにより命令変換部２４に与えられる。
【０１００】
そして命令変換部２４は、かかる命令変換要求を入力すると、まず、その命令変換要求に含まれる移行元コントローラ４上の移行対象の各タスク（ＯＳタスク４４及びユーザタスク４５）に対応する移行元ソースコード３０の情報を元に、メモリアクセス権限管理テーブル２５のソースコード欄２５Ｄ（図２）に移行元ソースコード３０の格納場所などの情報を格納する（Ｓ２０）。
【０１０１】
続いて、命令変換部２４は、移行元コントローラ４及び移行先コントローラ５の各プロセッサ４０，５０及び各ＯＳ（リアルタイムＯＳ４３，５３）の種別にそれぞれ対応するタスク実行開始命令及びページテーブル作成命令を取得する（Ｓ２１）。
【０１０２】
具体的に、命令変換部２４は、プロセッサ機能管理テーブル２８（図５）を参照して、かかる命令変換要求に含まれる移行元コントローラ４及び移行先コントローラ５の各プロセッサ４０，５０の種別にそれぞれ対応する保護キー数（対応する保護キー数欄２８Ｃに格納されている値）と、タスク実行開始命令（対応するタスク実行開始命令欄２８Ｄに格納されている値）と、ページテーブル作成命令（対応するページテーブル作成命令欄２８Ｅに格納されている値）とをそれぞれ取得する。
【０１０３】
また、命令変換部２４は、ＯＳ機能管理テーブル２９を参照して、かかる命令変換要求に含まれる移行元コントローラ４及び移行先コントローラ５のＯＳの種別に対応するタスク実行開始命令（対応するタスク実行開始命令欄２９Ｃに格納されている値）と、ページテーブル作成命令（対応するページテーブル作成命令欄２９Ｄに格納されている値）とをそれぞれ取得する。
【０１０４】
次いで、命令変換部２４は、ステップＳ２０で取得した移行対象のタスクのソースコード（移行元ソースコード３０）を１つ選択する（Ｓ２２）。また命令変換部２４は、ステップＳ２１で取得した移行元コントローラ４のプロセッサ４０及びＯＳ（リアルタイムＯＳ４３）のタスク実行開始命令を用いてステップＳ２２で選択した移行元ソースコード３０内を検索することにより、当該移行元ソースコード３０内に当該タスク実行開始命令と一致する記述が存在するか否かを判断する（Ｓ２３）。
【０１０５】
この判断で否定結果を得ることは、移行元コントローラ４のプロセッサ４０及びＯＳ（リアルタイムＯＳ４３）がタスク実行開始命令をソースコードに埋め込むタイプのものではないことを意味する。かくして、このとき命令変換部２４はステップＳ２６に進む。
【０１０６】
これに対して、ステップＳ２３の判断で肯定結果を得ることは、移行元コントローラ４のプロセッサ４０及びＯＳ（リアルタイムＯＳ４３）がタスク実行開始命令をソースコードに埋め込むタイプのものであることを意味する。かくして、このとき命令変換部２４は、メモリアクセス権限管理テーブル２５（図２）を参照して、ステップＳ２２で選択したソースコードに対応するタスクについて設定された保護キーごとのアクセス権限情報を当該メモリアクセス権限管理テーブル２５の対応するアクセス権限欄２５Ｃから取得する（Ｓ２４）。なおアクセス権限情報は、図２について上述したように、各保護キーの保護キー番号と、その保護キー番号に対応したアクセス権限との組み合わせで表現されており、両者の組み合わせが移行先コントローラ５で使用可能な保護キーの個数と同じ数だけ存在する。
【０１０７】
続いて、命令変換部２４は、ステップＳ２３のソースコード検索により取得したタスク実行開始命令の記述を、ステップＳ２１で取得した移行先コントローラ５のプロセッサ５０及びＯＳ（リアルタイムＯＳ５３）のタスク実行開始命令に変換することにより、移行先ソースコード３１を生成する（Ｓ２５）。このとき、取得したタスク実行開始命令が移行元コントローラ４のプロセッサ４０の命令であった場合は、移行先コントローラ５のプロセッサ５０の命令に、移行元コントローラ４のＯＳ（リアルタイムＯＳ４３）の命令であった場合は移行先コントローラ５のＯＳ（リアルタイムＯＳ５３）の命令にそれぞれ変換する。また、変換の際にはステップＳ２４で取得した移行先コントローラ５におけるそのタスクのアクセス権限情報を付与する。このアクセス権限情報を付与する箇所は、移行先ソースコード３１のタスク実行開始命令に記述されている。
【０１０８】
続いて、命令変換部２４は、ステップＳ２１で取得した移行元コントローラ４のプロセッサ４０及びＯＳ（リアルタイムＯＳ４３）のページテーブル作成命令を用いてステップＳ２２で選択した移行元ソースコード３０内を検索することにより、当該移行元ソースコード３０内に当該ページテーブル作成命令と一致する記述が存在するか否かを判断する（Ｓ２６）。
【０１０９】
この判断で否定結果を得ることは、移行元コントローラ４のプロセッサ４０及びＯＳ（リアルタイムＯＳ４３）がページテーブル作成命令をソースコードに埋め込むタイプのものではないことを意味する。かくして、このとき命令変換部２４はステップＳ２９に進む。
【０１１０】
これに対して、ステップＳ２６の判断で肯定結果を得ることは、移行元コントローラ４のプロセッサ４０及びＯＳ（リアルタイムＯＳ４３）がページテーブル作成命令をソースコードに埋め込むタイプのものであることを意味する。かくして、このとき命令変換部２４は、ステップＳ２６で取得したページ作成命令の引数を参照して、当該ページテーブル作成命令により作成されるページテーブルのメモリ領域の開始アドレスを取得する。また、命令変換部２４は、取得したアドレスに基づいてメモリ領域管理テーブル２６（図３）の対応する開始アドレス欄２６Ｃ（図３）及び保護キー番号欄２６Ｅ（図３）を参照して、そのアドレスが含まれるメモリ領域に割り当てられた保護キーの保護キー番号を取得する。
【０１１１】
次いで、命令変換部２４は、ステップＳ２６のソースコード検索により取得したページテーブル作成命令を、ステップＳ２１で取得した移行先コントローラ５のプロセッサ５０及びＯＳ（リアルタイムＯＳ５３）のページテーブル作成命令に変換することにより、移行先ソースコード３１を生成する（Ｓ２８）。このとき、取得したページテーブル作成命令が移行元コントローラ４のプロセッサ４０の命令であった場合は移行先コントローラ５のプロセッサ５０の命令に、移行元コントローラ４のＯＳ（リアルタイムＯＳ４３）の命令であった場合は移行先コントローラ５のＯＳ（リアルタイムＯＳ５３）の命令にそれぞれ変換する。また、変換の際にはステップＳ２７で取得した保護キー番号を付与する。この保護キー番号を付与する箇所は、移行先のページテーブル作成命令に記述されている。
【０１１２】
この後、命令変換部２４は、移行対象のすべてのタスクについてタスク実行開始命令やページテーブル作成命令を移行先コントローラ５のプロセッサ５０及びＯＳ（リアルタイムＯＳ５３）に応じたものに変換し終えたか否かを判断する（Ｓ２９）。
【０１１３】
そして命令変換部２４は、この判断で否定結果を得るとステップＳ２２に戻り、この後、ステップＳ２２で選択する移行元ソースコード３０を未処理の他の移行元ソースコード３０に順次切り替えながら、ステップＳ２２〜ステップＳ２９の処理を繰り返す。そして命令変換部２４は、やがて移行対象のすべてのタスクのソースコード（移行元ソースコード３０）に対するステップＳ２３〜ステップＳ２８の処理を実行し終えることによりステップＳ２９で肯定結果を得ると、メモリアクセス権限設定画面６０（図７）での通知の表示や、当該メモリアクセス権限設定画面６０の保護キー表示フィールド６３（図３）への保護キー番号の表示を行った後にこの命令変換処理を終了する。
【０１１４】
なおステップＳ２３〜ステップＳ２５のタスク実行開始命令の変換処理と、ステップＳ２６〜ステップＳ２８のページテーブル作成命令の変換処理との２種の処理には依存関係がないため、これら２つの変換処理を並行して実行しても、順番を入れ替えて実行してもよい。
【０１１５】
（５）本実施の形態の効果
以上のように本実施の形態のプログラム移行支援システム１では、移行対象のタスクのソースコード（移行元ソースコード３０）のタスク実行開始命令にタスクごとのメモリアクセス権限情報を付与すると共に、ページテーブル作成命令にメモリ領域に割り当てられた保護キー番号を付与する形で命令変換を行うことにより、移行先ソースコード３１を生成する。
【０１１６】
従って、本プログラム移行支援システム１によれば、ハードウェアやＯＳなどが異なるプラットフォームを持つコントローラ間でプログラムを移行する際に、メモリアクセス権限の設定を維持したままプログラムを移行することができる。この場合、移行元及び移行先のメモリ保護機能の違いに起因して設計の見直しが発生するおそれもない。よって、本プログラム移行支援システム１によれば、タスク（プログラム）を異なるプラットフォームに移行する移行作業を容易化することができる。
【０１１７】
（６）他の実施の形態
なお上述の実施の形態においては、移行先コントローラ５が保護キーを用いたメモリアクセス制御を行うコントローラであり、移行元コントローラ４内のメモリ４１に対するプログラム（ＯＳタスク４４及びユーザタスク４５）ごとのアクセス権限に関する情報である移行元メモリアクセス権限情報から、当該プログラムが移行先コントローラ５で実行される際の当該移行先コントローラ５内のメモリ５１に対するプログラムごとのアクセス権限に関する情報である移行先メモリアクセス権限情報を生成するメモリアクセス権限情報生成部として、移行先コントローラ５に搭載されたメモリ保護機構５０Ａに適合した保護キーを生成する保護キー生成部２３を適用するようにした場合について述べたが、本発明はこれに限らず、メモリアクセス権限情報生成部の構成としては、移行先コントローラ５のメモリ保護機構５０Ａの種類に応じて、保護キーを作成するもの以外のこの他種々の構成を適用することができる。
【０１１８】
また上述の実施の形態においては、移行対象の各プログラム（ＯＳタスク４４及びユーザタスク４５）のメモリアクセス権限や、メモリ領域、保護キー、プロセッサ機能及びＯＳ機能を図２〜図６のようなテーブルにより管理するようにした場合について述べたが、本発明はこれに限らず、テーブル以外の形態でこれらの情報を管理するようにしてもよい。
【産業上の利用可能性】
【０１１９】
本発明はプログラムの移行を支援する種々の構成の計算機に広く適用することができる。
【符号の説明】
【０１２０】
１……プログラム移行システム、３……プログラム移行支援装置、４……移行元コントローラ、５……移行先コントローラ、１０，４０，５０……プロセッサ、１１，４１，５１……メモリ、２１……メモリアクセス権限設定ファイル、２２……メモリアクセス権限設定画面表示部、２３……保護キー生成部、２４……命令変換部、２５……メモリアクセス権限管理テーブル、２６……メモリ領域管理テーブル、２７……保護キー管理テーブル、２８……プロセッサ機能管理テーブル、２９……ＯＳ機能管理テーブル、３０……移行元ソースコード、３１……移行先ソースコード、３２……保護命令、４０Ａ，５０Ａ……メモリ保護機構、４３，５３……リアルタイムＯＳ，４４，５４……ＯＳタスク、４５，５５……ユーザタスク、６０……メモリアクセス権限設定画面。
【図１】
2017117091.tif 000003
【図２】
2017117091.tif 000004
【図３】
2017117091.tif 000005
【図４】
2017117091.tif 000006
【図５】
2017117091.tif 000007
【図６】
2017117091.tif 000008
【図７】
2017117091.tif 000009
【図８】
2017117091.tif 000010
【図９】
2017117091.tif 000011
【図１０】
2017117091.tif 000012