• 検索結果がありません。

動的リンクを利用した実行中プログラムの部分入替え法における状態把握法

N/A
N/A
Protected

Academic year: 2021

シェア "動的リンクを利用した実行中プログラムの部分入替え法における状態把握法"

Copied!
8
0
0

読み込み中.... (全文を見る)

全文

(1)シ ス テ ム ソ フ ト ウ ェ ア と 90−19 オペレーティング ・ システム ( 2 0 0 2 . 6 . 2 8 ). 動的リンクを利用した実行中プログラムの部分入替え法における 状態把握法 山本 淳 y y 九州大学大学院システム情報科学府. 谷口 秀夫 z z 九州大学大学院システム情報科学研究院. 〒 812-8581 福岡市東区箱崎. TEL : 092-642-3867 E-mail : [email protected]. 6-10-1 [email protected]. あらまし 動作中のソフトウェアを変更できれば,24 時間無停止でのサービス提供を実現できる.そ こで,我々は,実行中プログラムの一部分を入れ替える制御法を提案した.プログラム部分の 動的入替えに際しては,当該プログラム部分を実行しているプロセスが存在しないことが必須 条件である.このため,各プロセスのプログラム実行状態を把握する必要がある.本稿では, 動的リンク機能を利用して,プログラムを部分分割し,動的リンカにおいて各プログラム部分 間の呼出と復帰を検出する方式を提案する.提案方式では,状態把握のためのコード を動的リ ンカに局所化できるため,状態把握を意識したプログラム作成は必要なくなり,本入替え法の 利便性が向上する.また,実装と評価により,提案方式によるプログラム部分間の呼出と復帰 に要する 1 回あたりの処理オーバヘッド は約 1.1 μ秒であることを示す. キーワード オペレーティングシステム,プロセス,プログラム,動的リンク,プログラム入替え. A Method of Grasping the Execution States of Program on Mechanism for Exchanging Parts of Executed Program Using Dynamic Linking Atsushi YAMAMOTOy and Hideo TANIGUCHIz Graduate School of Information Science and Electrical Engineering, Kyushu University 6-10-1 Hakozaki, Higashi-ku, Fukuoka-shi, 812-8581 Japan TEL : +81-92-642-3867 E-mail : [email protected] [email protected] abstract. We have proposed the mechanism for exchanging parts of executed program. Exchanging is possible only when the program part is unused. Therefore the execution states of program must be grasped. In this paper, we suggest a method of grasping the execution states of program using dynamic linking. In this method, a program is divided into load segments at compile-time and every call/return between load segments is detected by dynamic linker at run-time. This method does not force programmers to change application codes for the state grasp. We found that the overhead of this method was about 1.1 micro seconds per each call/return between load segments. keywords. operating system, process, program, dynamic linking, exchanging program −141− -1-.

(2) 1 まえがき. SURJUDPSDUW; VWDUW. SURJUDPSDUW<. SURJUDPSDUW=. 常時接続のネットワークの普及により,利用者の 計算機システムに対する要望として,24 時間無停. FDOO. 止でのサービス提供を要求する声がますます高まっ. FDOO. ている.一方,計算機システムの利用者の増加に伴 UHWXUQ. い,その利用形態も多様化し,提供サービスの保守 HQG. 作業を頻繁に行う必要が生じている.この 2 つの要 件を同時に満たすためには,提供中のサービスを停 止させることなく,そのプログラムを変更する方法. 図. の確立が不可欠である. このような背景から,我々は,サービスを提供し. UHWXUQ. SURJUDPSDUWWREHH[FKDQJHG XQXVHGúWKHVWDWHRIH[HFXWLQJSURJUDPSDUW; UXQQLQJúWKHVWDWHRIH[HFXWLQJSURJUDPSDUW< FDOOLQJúWKHVWDWHRIH[HFXWLQJSURJUDPSDUW=. 1 実行状態と入替え対象プログラム部分の関係. プログラムを部分分割し,動的リンカにおいて各プ. ているプロセスを終了させることなしに,そのプロ. ログラム部分間の呼出と復帰を検出する方式を示す.. グラムの一部分を動的に入れ替える方法を提案して. 具体的には,動的にロード / リンクされるロード セ. いる [1] .我々の提案法は,従来法 [2; 3] の問題点を解. グメント(以降,LS と略す)を単位として,プログ. 消し,次の大きな 2 つの特徴を持つ.1 つは,サー. ラムを部分分割する.これにより,入れ替えるプロ. ビスプログラムが入替えの契機を意識する必要がな. グラム部分の作成を容易にでき,かつ入替え内容の. い点である.もう 1 つは,入替え対象のプログラム. 柔軟性も確保できる.また,各プログラム部分間の. 部分が入替え対象でない別のプログラム部分を呼び. 呼出と復帰の検出に関しては,実行時の動的リンカ. 出している場合も考慮している点である.さらに,. による関数シンボルのアド レス解決時の処理メカニ. 複数のプロセス間で共有されたプログラム部分の入. ズムを利用して,各プログラム部分内で定義された. 替え法を示し [4] ,入替え要求から入替え処理を終了. 関数の呼出と復帰を検出し,それを状態把握用シス テムコールにより OS に通知する.これにより,状. するまでの時間(以降,入替え時間と呼ぶ)の定式 化 [5] ,および入替え時間を短縮化する方法を示した. 態把握のためのコード を動的リンカに局所化でき,. [6] .. 状態把握を意識したプログラム作成は必要なくなる.. 一方,プログラム部分の動的入替えに際しては,. また,実装と評価により,状態把握用システムコー. 当該プログラム部分を実行しているプロセスが存在. ルを AP のソースコードに埋め込む方式と比較して,. しないことが必須条件である.このため,各プロセ. 状態把握用システムコールを動的リンカに組み込む. スのプログラム実行状態を把握する必要がある.具. 方式によるプログラム部分間の呼出と復帰に要する. 体的には,各プロセスのプログラム部分の呼出と復. 1 回あたりの処理オーバヘッド は約 1.1 μ秒だけ大. 帰を検出し,それをオペレーティングシステム(以. きいことを示す.. 降,OS と略す)に通知する必要がある.先の研究. [1; 4; 5; 6]. 2 プログラム実行状態の分類. では,入替えの制御メカニズムの検討に重. 図 1 に示すように,プログラム部分の実行状態は. 点を置いていたため,各プログラム部分間の呼出と 復帰を検出する方式については,プログラム作成時 にプログラム部分の呼出と復帰を通知するシステム コール(以降,状態把握用システムコールと呼ぶ) をアプリケーション(以降,AP と略す)のソース コード に埋め込む方式を採用していた.しかし,当. 3 つの状態に分類できる.すなわち,入替え対象の プログラム部分に対し,以下の 3 状態である. ( 1 )未使用:実行する前または実行を終えた状態 ( 2 )走行中:実行中の状態 ( 3 )呼出中:別のプログラム部分を呼び出してい る状態. 然のことながら,状態把握を意識したプログラム作. 図 1 において,入替え対象のプログラム部分はプ. 成は必要ないことが望ましい.文献 [7] では,動的 リンク機能を利用してプログラムを部分分割するこ. ログラム部分 Y である.未使用の状態とは,入替え. とにより,動的リンカにおいて各プログラム部分間. 対象のプログラム部分を実行する前または実行を終. の呼出と復帰を検出できることを示唆している.し. えた状態である.図 1 では,プログラム部分 X の位. かし,具体的な課題と対処および評価を示してない.. 置を実行している状態である.走行中の状態とは,. そこで,本稿では,動的リンク機能を利用して,. 入替え対象のプログラム部分を実行中の状態である.. -2-. −142−.

(3) 図 1 では,プログラム部分 Y の位置を実行してい. 回目以降の参照の様子である.なお,図 2 と図 3 で. は,LS( refobj )から LS( defobj )内で定義された. る状態である.呼出中の状態とは,入替え対象のプ. 関数シンボル( function )を参照する場合を想定し. ログラム部分が別のプログラム部分を呼び出してい る状態である.図 1 では,プログラム部分 Z の位置. ている.. を実行している状態である.3 状態のうち,走行中. 関数シンボル( function )の 1 回目の参照は,LS. ( refobj )が保持する symbol-location 表の当該エン. の状態では,内部変数値が過渡的であるため,当該. トリは未解決であるため,動的リンカ( rtld )に制御. プログラム部分の入替えは不可能である. 図 1 を見てわかるように,プログラム部分の実行. が移る.このとき,引数としては refobj-symbol 情報. が渡される.動的リンカ( rtld )は,引数として渡さ. 状態は,別のプログラム部分から当該プログラム部. れた refobj-symbol 情報をもとに,ロード されてい. 分の呼出と復帰時,および当該プログラム部分から. る全 LS を検索してその定義を見つけ出しアド レス. 別のプログラム部分の呼出と復帰時に遷移する.す. 解決する.そして,解決したアドレスを LS( refobj ). なわち,各プログラム部分間の呼出と復帰を検出で きれば,各プロセスのプログラム実行状態を把握で. が保持する symbol-location 表の当該エントリに登. き,当該プログラム部分の入替え可否を判別できる.. 録し,その解決したターゲットアド レスにジャンプ. なお,各プログラム部分間の呼出と復帰を検出でき. する.これにより,当該関数シンボル( function )の. た際のプログラム部分の状態管理方式については, 文献 [1] と [4] において,フラグ方式とスタック方. ずに直接当該関数へ制御が移る. 以上のように,LS 内で定義された関数の呼出に. 式を示している.. おいて,動的リンカを経由するのは,当該関数の 1. 3 プログラム実行状態の把握法 3.1. 回目の呼出時だけであり,2 回目以降の呼出時には. 動的リンク機能の利用. 動的リンカを経由せずに直接当該関数へ制御が移る.. 動的リンク機能を利用する場合,1 つのプログラ. また,いずれの場合も,当該関数からの復帰時には. ムは複数の LS から構成される.各 LS はプログラム. 動的リンカを経由しない.. の実行時に動的ローダによってロードされ,各 LS 間. 動的リンカにおいて各プログラム部分間の呼出と. のシンボルによる参照は実行時の動的リンカによっ て解決される.. 由しなければならない.すなわち,以下の 2 つの課. 位で部分分割したものとし,LS 単位での入替えを. 題に対処する必要がある.. 可能にすることにより,以下の 3 つの利点がある.. ( 1 )2 回目以降の関数呼出時にも動的リンカを経. ( 1 )LS 毎にコンパイルできるため,高級言語で入. 由するようにする.. れ替えるプログラム部分を作成することが可. ( 2 )関数からの復帰時にも動的リンカを経由する. 能になる.. ようにする.. ( 2 )動的ローダを利用した LS の入替え処理を実. 上記 2 つの課題への対処の様子を図 4 と図 5 に示. 現することにより,入れ替えるプログラム部. し,以下に説明する.. 分の大きさに制限がなくなる.. 2 回目以降の関数呼出時に動的リンカを経由しな いのは,図 2 の( 3 )において,symbol-location 表. ( 3 )各 LS 内で定義された関数シンボルのアド レ ス解決時の処理メカニズムを利用することに. の当該関数シンボルのエント リに解決したアド レ. より,動的リンカにおいて各プログラム部分. スを登録するためである.したがって,解決したア. 間の呼出と復帰を検出することが可能になる. べる. 3.2. 課題と対処. 復帰を検出するためには,各プログラム部分内で定 義された関数の呼出と復帰時に必ず動的リンカを経. 動的リンク機能を利用して,プログラムを LS 単. ここでは, ( 3 )を実現する上での課題と対処を述. 2 回目以降の参照は,動的リンカ( rtld )を経由せ. ド レスを symbol-location 表の当該エントリに登録 しないようにすることで,必ず関数の呼出時に動的 リンカを経由するようにできる.これにより,動的 リンカにおいて各プログラム部分の呼出を検出でき. 図 2 と図 3 に,実行時の動的リンカ( rtld )によ. る.しかし,毎回,関数呼出時に当該関数シンボル. る関数シンボルのアド レス解決時の処理の流れを示. のアド レス解決のために,ロード されている全 LS. す.図 2 は関数シンボルの 1 回目の参照,図 3 は 2. を検索するのは処理オーバヘッドが大きい.そこで,. -3−143−.

(4) V\PEROORFDWLRQ WDEOH. 

(5) UHIHUHQFH WR. V\PERO. ORFDWLRQ. IXQFWLRQ. XQUHVROYHG. . . 

(6) SDVV UHIREMV\PERO LQIRPDWLRQ. IXQFWLRQ

(7). 

(8) VDYH UHVROYHG ORFDWLRQ /6 UHIREM

(9). UWOG. /6 GHIREM

(10). UHVROYH

(11). 

(12) HQWHU IXQFWLRQ

(13). 

(14) OHDYH. IXQFWLRQ

(15) ^. `. IXQFWLRQ

(16). 図. 2 アド レス解決時の処理流れ( 1 回目,対処前). V\PEROORFDWLRQ WDEOH. 

(17) UHIHUHQFH WR. V\PERO. ORFDWLRQ. IXQFWLRQ. UHVROYHG. . . IXQFWLRQ

(18). /6 UHIREM

(19). UWOG. /6 GHIREM

(20). 

(21) HQWHU IXQFWLRQ

(22). 

(23) OHDYH. IXQFWLRQ

(24) ^. `. IXQFWLRQ

(25). 図. 3 アド レス解決時の処理流れ( 2 回目以降,対処前). 図 4 と図 5 に示すように,関数シンボルの参照と定 義の対応を動的リンカで管理することにする.具体. 関数からの復帰時に動的リンカを経由するように するためには,関数シンボル( function )のターゲッ. 的には, ( refobj,symbol,defobj,location )の組. トアドレスを call 命令で呼び出すようにすればよい.. をセットで管理する.動的リンカは,引数として渡. これにより,動的リンカにおいて各プログラム部分. される refobj-symbol 情報から当該関数シンボルが すでにアド レス解決済であるかを対応表から調査す る.対応表に登録されていなければ,1 回目の参照. であるため,ロード されている全 LS を検索してア. ド レス解決し,その結果を対応表に登録する(図 4 の( 3 )).対応表に登録されていれば,2 回目以降. の参照であるため,当該の解決済アド レスを使用す る(図 5 の( 3 )).これにより,2 回目以降の関数 呼出時の処理オーバヘッド を削減できる.. の脱出も検出できる.しかし,この場合には,LS. ( refobj )内の真のリターンアド レスが上書きされ てしまう.このため,真のリターンアド レスを動的. リンカで保存する必要がある.LS( defobj )が LS. ( refobj )にもなりうることを考慮すると,リターン アドレスはプロセス毎にスタックで管理する必要が ある.図 4 と図 5 において,push. retaddr() は真の. リターンアド レスをスタックにプッシュして保存す る処理,pop. -4−144−. retaddr() は真のリターンアド レスを.

(26) V\PEROORFDWLRQ WDEOH. 

(27) UHIHUHQFH WR. V\PERO. ORFDWLRQ. IXQFWLRQ. XQUHVROYHG. . . 

(28) SDVV UHIREMV\PERO LQIRPDWLRQ. UHIREMV\PERO. IXQFWLRQ

(29). GHIREMORFDWLRQ WDEOH. /6 UHIREM

(30). UWOG. /6 GHIREM

(31) 

(32) VDYH UHVROYHG. UHVROYH

(33). HQWU\. V\VFDOOBHQWHU

(34) 

(35) HQWHU SXVKBUHWDGGU

(36). IXQFWLRQ

(37). IXQFWLRQ

(38) ^. SRSBUHWDGGU

(39) V\VFDOOBOHDYH

(40). 

(41) OHDYH. `. IXQFWLRQ

(42). 図. 4 アド レス解決時の処理流れ( 1 回目,対処後). V\PEROORFDWLRQ WDEOH. 

(43) UHIHUHQFH WR. V\PERO. ORFDWLRQ. IXQFWLRQ. XQUHVROYHG. . . 

(44) SDVV UHIREMV\PERO LQIRPDWLRQ. UHIREMV\PERO. IXQFWLRQ

(45). GHIREMORFDWLRQ WDEOH. /6 UHIREM

(46). UWOG. /6 GHIREM

(47) 

(48) ORDG UHVROYHG HQWU\. V\VFDOOBHQWHU

(49) 

(50) HQWHU SXVKBUHWDGGU

(51). IXQFWLRQ

(52). IXQFWLRQ

(53) ^. SRSBUHWDGGU

(54) V\VFDOOBOHDYH

(55). 

(56) OHDYH. `. IXQFWLRQ

(57). 図. 5 アド レス解決時の処理流れ( 2 回目以降,対処後). スタックからポップして回復する処理に相当する.. 実行状態を把握でき,当該プログラム部分の入替え. 6 に,動的リンカ( rtld )の処理手順を示す. 最初の条件分岐( resolved entry? )は,先に述べた 当該関数シンボルの参照が 1 回目であるか,2 回 目以降であるかによる分岐である.syscall enter() と syscall leave() は,それぞれ,プログラム部分の. 可否を判別できる.. 図. 呼出と復帰を通知するシステムコールに相当する.. push retaddr() と pop retaddr() は,先に述べた図 4 と図 5 における意味と同様である.図 6 に示した 処理手順により,動的リンカにおいて各プログラム 部分間の呼出と復帰を検出できる.すなわち,それ を契機として状態把握用システムコールを発行する ことにより,OS において各プロセスのプログラム. 4 評価と考察 4.1. 測定条件. 図 7 に,測定に用いたテストプログラムの処理の. 流れを示す.メインプログラム( a.out )は,ライブ. ラリ( libtest )内の関数( test() )の呼出を 10 回繰 り返す.ライブラリ関数( test() )は,何も処理を行. わず,復帰するのみの関数である.プログラム部分 間の呼出と復帰に要する処理時間として,ライブラ リ関数( test() )の呼出直前と復帰直後のハードウェ アクロックを取得し,その差分のクロック数を測定. −145− -5-.

(58) UWOGBELQGHU

(59). ˆ‡. UHIREMV\PERO GHIREMORFDWLRQ WDEOH. . ¾É¸ÊǶÆÅÀÅÁ¼ºËÀÆÅ€ ¾É¸ÊǶƽ½ÀÅÁ¼ºËÀÆÅ€. . UHVROYHG HQWU\" 1R UHVROYH VDYH UHVROYHG HQWU\ <HV. ËÀļÊ:ʼº €. »¼½¸ÌÃË. V\VFDOOBHQWHU

(60). Ž  Œ ‹ Š. SXVKBUHWDGGU

(61). ‰ ˆ. FDOO WDUJHW. ‡ ˆ. SRSBUHWDGGU

(62). ‰. Š. ‹. Œ. . ÅÌĹ¼ÉwƽwÃÆÆÇÊ. Ž. . . ˆ‡. 8 プログラム部分間の呼出と復帰に要する処理. 図. 時間(静的リンク). V\VFDOOBOHDYH

(63). ˆ‡ . 6 動的リンカの処理手順. DRXW. UWOG. *HW&ORFN EHIRUH

(64) ORRS  *HW&ORFN DIWHU

(65). ¾É¸ÊǶƽ½¹ÌÀÃ˄Àŀ »¼½¸ÌÃË. ËÀļÊ:ʼº €. 図. ¾É¸ÊǶÆÅ¹ÌÀÃ˄Àŀ. . OLEWHVW^DVR`. Ž  Œ ‹ Š. FDOO UHWXUQ. WHVW

(66) ^. ‰ ˆ. `. ‡ ˆ. 図 UHVXOW DIWHUEHIRUH. 図. ‰. Š. ‹. Œ. . ÅÌĹ¼ÉwƽwÃÆÆÇÊ. Ž. . . ˆ‡. 9 プログラム部分間の呼出と復帰に要する処理. 時間(動的リンク). 7 テストプログラムの処理の流れ. としては,静的リンクと動的リンクの両方をサポー. した.プログラムのリンクには,静的リンクと動的. トしている FreeBSD. 4.3-RELEASE が走行する計 算機( PentiumIII 550MHz )を使用した.. リンクがあるため,ライブラリ( libtest )が静的リ. ンクライブラリ( libtest.a )の場合と動的リンクラ イブラリ( libtest.so )の場合について測定した.. 4.2. 結果と考察. 測定結果を図 8 と図 9 に示す. 図 8 は静的リン. 状態把握による処理オーバヘッド を明らかにする. クの場合,図 9 は動的リンクの場合のプログラム部. ため,状態把握なし( default )の場合と状態把握あ. り( grasp )の場合について測定した.状態把握あり. 分間の呼出と復帰に要する処理時間である.また,. 合にはライブラリ関数( test() )の最初と最後に状態. を示す.. 表 1 に静的リンクと動的リンクの場合の処理時間比. ( grasp )の場合の実現方式としては,静的リンクの場. 把握用システムコールを埋め込む方式( injection ), 動的リンクの場合には動的リンカに状態把握用シス. まず,図 8 から以下がわかる.. ( 1 )状態把握なしの場合と状態把握ありの場合を 比較したとき( 2 回目以降),状態把握ありの. テムコールを組み込む方式( built-in )とし,両方式. 場合のほうが把握無効時で平均 2.12 μ秒,把. のプログラム部分間の呼出と復帰に要する処理時間 を比較した.なお,文献 [4] では,状態把握用シス. 握有効時で平均 2.77 μ秒だけ要する処理時間. テムコールの処理オーバヘッド を削減するため,状. が長い.この差分の処理時間は,そのまま,プ. 態把握開始と状態把握終了を宣言するシステムコー. ログラム部分の呼出と復帰を通知するシステ. ルを実現し,その有効性を示している.そこで,状. ムコールの処理時間に相当すると考えられる. ( 2 )1 回目よりも 2 回目以降のほうが要する処理. 態把握あり( grasp )の場合の測定については,それ. ぞれ,状態把握を無効にした場合( grasp 効にした場合( grasp. o )と有. 時間が短い.これは,命令キャッシュの影響. on )について行った.測定機. であると考えられる.同じ処理を繰り返し実 行するため,命令キャッシュのヒット率が上が. −146−. -6-.

(67) 表. GHIDXOW JUDVSBRII JUDVSBRQ. 1 プログラム部分間の呼出と復帰に要する処理時間比 VWDWLF LQMHFWLRQ

(68) G\QDPLF EXLOWLQ

(69) G\QDPLFVWDWLF >:VHF@ >:VHF@ >UDWLR@. VW   . QG   . VW   . でほぼ一定であるが,1 回目は 2.02 μ秒と 2 回目以降に比べ. 1.37 μ秒だけ長い.これは,. VW   . QG   . には解決済アド レスを使用するが,静的リン. り,要する処理時間が短くなったと推察する. ( 3 )把握無効時と把握有効時を比較したとき,そ の差分の処理時間は,2 回目以降は 0.65 μ秒. QG   . クと比較すると間接呼出を 1 回行うため,動 的リンクのほうが要する処理時間は長くなる. ( 2 )状態把握ありの場合について比較したとき( 2 回目以降),動的リンクのほうが静的リンク に比べ,把握無効時で平均 1.12 μ秒,把握有. 把握有効時には最初のプログラム部分の呼出 の際に,当該プロセスのプログラム実行状態. 効時で平均 1.14 μ秒だけ要する処理時間が長. を管理するための管理表を作成する処理を行. い.これは,プログラムのリンクの違い,お. うためである.. よび動的リンカの処理内容の変更による処理. 次に,図 9 から以下がわかる.. オーバヘッド であると推察する.プログラム. ( 1 )状態把握なしの場合と状態把握ありの場合を. のリンクの違いによる処理オーバヘッドは,把. 場合のほうが把握無効時で平均 3.23 μ秒,把. 握有効時で平均 3.90 μ秒だけ要する処理時間. 0.05 μ秒であった.したがって,残りの平均 1.09 μ秒は,動的リンカの処理内容の変更に. が長い.この差分の処理時間は,プログラム. よる処理オーバヘッド である.. 比較したとき( 2 回目以降),状態把握ありの. 部分の呼出と復帰を通知するシステムコール. 握無効時で平均 0.03 μ秒,把握有効時で平均. ( 3 )状態把握ありの場合について比較したとき( 1. の処理時間,および動的リンカの処理内容の. 回目),動的リンクのほうが静的リンクに比べ,. 変更による処理オーバヘッド であると考えら. 把握無効時で 4.09 μ秒,把握有効時で 4.07 μ. れる.. 秒だけ要する処理時間が長い.これは,未解. ( 2 )1 回目よりも 2 回目以降のほうが要する処理. 決シンボルのアド レス解決処理に要する処理. 時間が短い.これは,先に述べた命令キャッ. 時間,および動的リンカの処理内容の変更に. シュの影響と,1 回目には未解決シンボルの. よる処理オーバヘッド である. 以上のことから,built-in 方式は injection 方式に. アド レス解決処理を行うためである. ( 3 )把握無効時と把握有効時を比較したとき,そ の差分の処理時間は,2 回目以降は 0.67 μ秒. でほぼ一定であるが,1 回目は 2.00 μ秒と 2 回目以降に比べ. 1.33 μ秒だけ長い.これは,. 先に述べた当該プロセスのプログラム実行状 態を管理するための管理表作成処理に要する 処理時間であると推察する. 最後に,図 8 と図 9 の比較から以下がわかる.. 比べて,状態把握を意識したプログラム作成は必要 なくなるという反面,プログラム部分間の呼出と復 帰に要する処理時間は動的リンカを経由する分だけ 長くなるといえる.具体的には,2 回目以降のプロ. グラム部分間の呼出と復帰時には,built-in 方式は. injection 方式に比べて約 1.1 μ秒の処理オーバヘッ ド があり,injection 方式の約 1.5 倍の処理時間を要 することがわかる.この処理オーバヘッド が性能上. ( 1 )状態把握なしの場合について比較したとき,動. の問題になるか否かは,各プログラム部分の粒度と. 的リンクのほうが静的リンクに比べ,1 回目は. 各プログラム部分間の移動頻度に依存する.すなわ. 1.97 μ秒,2 回目以降は平均 0.01 μ秒だけ要. ち,各プログラム部分の粒度が約 1.1 μ秒に比べて. する処理時間が長い.これは,動的リンクの. ずっと大きく,各プログラム部分間の移動頻度も低. 場合には,1 回目には未解決シンボルのアド. い場合には問題にならないが,その逆の場合には問. レス解決処理を行うためである.2 回目以降. 題になる可能性がある.. −147− -7-.

(70) 5 むすび. ピュータシステム・シンポジウム論文集,. 実行中プログラムの部分入替え法において,プロ グラム部分の実行状態を把握する方法について述べ た.具体的には,動的リンク機能を利用して,プロ グラムを LS 単位で部分分割し,動的リンカにおい て各プログラム部分間の呼出と復帰を検出する方式 を提案した.提案方式では,状態把握のためのコー ドを動的リンカに局所化できるため,状態把握を意 識したプログラム作成は必要なくなり,本入替え法 の利便性が向上する. また,実装および評価を行い,提案方式によるプ ログラム部分間の呼出と復帰時の処理オーバヘッド を示した.具体的には,従来方式と比較して,プロ グラム部分間の呼出と復帰時には,約 1.1 μ秒の処 理オーバヘッド があり,従来方式の約 1.5 倍の処理 時間を要することを示した.すなわち,提案方式は 従来方式に比べて,状態把握を意識したプログラム 作成は必要なくなるという反面,プログラム部分間 の呼出と復帰に要する処理時間は動的リンカを経由 する分だけ長くなるというトレード オフがあること を示した. 残された課題として,提案方式におけるプログラ ム部分間の呼出と復帰に要する処理時間の短縮化, および動的ローダを利用した入替え処理方式の実現 がある. 参考文献 [1] 谷口秀夫, 伊藤健一, 牛島和夫, \プロセス走行 時におけるプログラムの部分入替え法," 信学 論 (D-I), Vol.J78-D-I, No.5, pp.492-499, May. 1995. [2] B.Snead, F.Ho, and B.Engram, \Operating system features real time and fault tolerance," Computer Design, pp.177-185, Aug. 1984. [3] 郷原純一, \OS プログラム入替処理とユーザア クセスの競合制御に関する一考察," 1989 信学 春季全大, D-356, March 1989. [4] 谷口秀夫, 後藤真孝, \走行中のプロセス間で 共有されたプログラムの部分入替え法," 信学 論 (D-I), Vol.J80-D-I, No.6, pp.495-504, June 1997. [5] 谷口秀夫, 後藤真孝, \実行中プログラムの部分 入替え法における入替え時間の評価," 信学論 (D-I), Vol.J82-D-I, No.8, pp.998-1007, Aug. 1999. [6] 中島雷太, 谷口秀夫, \実行中プログラム部分入 替え法における入替え処理時間の短縮," 情処 学論, Vol.41, No.6, pp.1734-1744, June 2000. [7] 伊藤健一, 箱守聴, 横山和俊, 谷口秀夫, \走行 中プログラムの部分入れ替え法," 情処学コン. −148− -8-E. 78, Nov. 1994.. pp.71-.

(71)

表 1 プログラム部分間の呼出と復帰に要する処理時間比 GHIDXOW JUDVSBRII JUDVSBRQ VWDWLFLQMHFWLRQ&gt;:VHF@VW QG G\QDPLFEXLOWLQ&gt;:VHF@VWQG G\QDPLFVWDWLF&gt;UDWLR@VW QG り,要する処理時間が短くなったと推察する. ( 3 )把握無効時と把握有効時を比較したとき,そ の差分の処理時間は, 2 回目以降は 0.65 μ秒 でほぼ一定であるが, 1 回目は 2.02 μ秒と 2 回目以降に比べ 1.3

参照

関連したドキュメント

Standard domino tableaux have already been considered by many authors [33], [6], [34], [8], [1], but, to the best of our knowledge, the expression of the

Finally, in Figure 19, the lower bound is compared with the curves of constant basin area, already shown in Figure 13, and the scatter of buckling loads obtained

This relies on the theory of polynomial hulls of curves due to Wermer [W], Bishop and Stolzenberg [St]as well as on the Harvey-Lawson [HL] theorem for curves that involves the

The purpose of the Graduate School of Humanities program in Japanese Humanities is to help students acquire expertise in the field of humanities, including sufficient

Amount of Remuneration, etc. The Company does not pay to Directors who concurrently serve as Executive Officer the remuneration paid to Directors. Therefore, “Number of Persons”

JAPAN STUDIES PROGRAMS IN ENGLISH AT THE GRADUATE SCHOOL OF HUMANITIES THE INTERNATIONAL MASTER’S PROGRAM (IMAP) IN JAPANESE HUMANITIES AND THE INTERNATIONAL DOCTORATE (IDOC)

「社会福祉法の一部改正」の中身を確認し、H29年度の法施行に向けた準備の一環として新

[21] Tomoaki Kodama, Yasuhiro Honda: A Study on the Modeling and Simulation Method of Torsional Vibration Considering Dynamic Properties of Rubber Parts for Engine Crankshaft