.NETの実行モデル

● CLR(Common Language Runtime)
 CLRは,後述するCLS(Common Language Specification)に基づいて実装された言語のための中間言語ライブラリで,.NETにおけるプログラミングモデルの中心ともいうべきものです.

 CLRは,図4に示すように,基本実行クラスを各プログラミング言語に提供し,各プログラミング言語はCLSにしたがって基本実行ライブラリを呼び出すようにコンパイルされます.すなわち,中間言語に置き換えられたILコードを,CLRがJITでネイティブに変換して実行するわけです.

〔図4〕CLRの実行モデル

 

 (約14Kバイト)

● CLRにおけるILコンパイラ,JITモデル
 ILは中間言語ですから,プロセッサが実行するにはネイティブコードにコンパイルする必要性があります.これを行うのがJIT(Just In Time)コンパイラです.

 JITはすでにWeb技術の一つとして有名ですが,ILではWebだけでなく,一般のアプリケーションにおいても.NETに基づいてILを使って汎用性を確保します.

 さて,ソースからILにコンパイルされ,そのILをさらにJITがネイティブにコンパイルするわけですが,その際にネイティブコードの生成効率を上げるために,三つのコンパイルモデルがあります(図5).

〔図5〕CLRのILとJIT

 

 (約10Kバイト)

(1) Econo JIT
・ 最適化されていないネイティブコードを生成
・ 毎回コードは破棄され,生成し直す

 Econo JITでは毎回ネイティブコードが生成され,時間更新が必要な用途に適しています.たとえば,Webのデータベース更新処理などに使います.現在の利用法では,Javaアプレットのようなコンパクトなプログラムに適していると思われます.

(2) Standard JIT
・ 最適化されたネイティブコードを生成
・ ILコードの整合性検証が含まれる

 Standard JITでは,通常のアプリケーションのように実行時にスタートアップ処理が行われます.この場合,コード使用中にコードの再利用が起こったとしても再生成を行う必要がないので,比較的大きなアプリケーションなどに適しています.

(3) Pre JIT
・ インストール時または呼び出し要求時にコード生成
・ スタートアップ作業の削減

 Pre JITでは,インストール時もしくは呼び出し要求時にコンパイルされます.したがって,スタートアップ処理を行わない固定データを使ったプログラムなどに適しています.

 このように,JITの使用時期をプログラムコードに合わせて設定することでプログラム実行時の最適化のレベルを変え,より動的なプログラムの実行を実現します.

 また,動的なプログラムの実行が可能になったことによって,ASP+におけるサーバプログラムの動的な開始,停止(中断),アップデート処理などにおいて,Locked DLLのような問題を防ぎ,再起動しなくてもサーバプログラムの入れ換えができるようになります.

▲Locked DLL
 Locked DLLとは,サービスなどでOSが使用しているプログラムの書き換えといった不正な処理を行わないようにするために書き込み禁止などを行うことですが,サーバプログラムでは,サービスがスタートすると停止させるまでプログラムがロックされた状態になります.

 DLL形式で起動時に自動ローディングを行うようなとき,システム領域にDLLが読み込まれないようにするため,Windows2000などの新しいWindows Installerを使用して再起動をするときに,サービス開始前にDLLを読み込まないようにするといった対処が必要になってきます.

 Windows95/98でCOMやActiveXを開発している人の中には,デバッグの際に上書きができなくなって悩んだ経験をしている人も多いと思います.この場合,レジストリから外して再起動することによりDLLを読み込まずに起動し,その後DLLを入れ替えてデバッグを再開しなければなりませんでした.

● CTS(Common Type System)
 CRLにより言語依存性が解消されることが理解できたと思いますが,次にプログラム間のタイプ依存性について,CTSを例にして解説します.

 CTSはその名前が示すように,コードなどのタイプ情報をチェックする機構のことです.プログラム言語ではサポートされていないタイプ情報を提供することで,異なる言語間であってもクラス継承(C#とC++のクラスの継承)が可能になります.

 もちろん,クラスの継承がなされるということは,言語間のデータサイズの問題などもCTSによって管理が行われるということです.VBScriptやCOMなどでおなじみのVARIANT型のようなタイプ情報付き変数の概念をプログラムコードにまで拡張し,異種言語間のタイプの適合や依存性のチェック機構を提供するものです.

 CTSによる利点をまとめると,次のようになります.
(1) プログラミング言語間のクラスの継承
(2) ILコンパイル時,ネイティブ実行時の依存性チェック
(3) タイプセーフ機構(安全なメモリ管理機構と堅牢な実行管理)
(4) バージョニング(アプリケーション間の独立実効可能)
(5) タイプ情報の保存と配置

● サポートされる予定の言語
 CLRを使用することで,言語仕様によるプログラミング制限は非常に少なくなり,目的とするソフトウェアによって言語を選択するのではなく,なじんでいる言語を使用してプログラミングを相互に行うことができるようになります.

 7月末現在の予定では,Visual Basic,Visual C++,C#が対象にあげられていますが,表1に示す言語が.NETに対応する予定と発表されています. 

〔表1〕発表されている.NET対応言語

COBOL Eiffel Mercury ML(Machine Language) Oberon
Perl Python Profiling Small Talk Scheme

http://www.microsoft.com/presspass/press/2000/Jul00/PDCGroundswellPR.asp



Copyright 2000 広畑 由紀夫

コラム目次
New

Engineering Life in Silicon Valley 第79回 フリー・エンジニアという仕事(第一部)
移り気な情報工学 第36回 時代間通信アーキテクチャ
フリーソフトウェア徹底活用講座 第14回 GCC2.95から追加変更のあったオプションの補足と検証(その3)

Back Number

フリーソフトウェア徹底活用講座
第13回 続々・GCC2.95から追加変更のあったオプションの補足と検証
第12回 続・GCC2.95から追加変更のあったオプションの補足と検証
第11回 GCC2.95から追加変更のあったオプションの補足と検証
第10回 続・C99規格についての説明と検証
第9回 C99規格についての説明と検証
第8回 C言語におけるGCCの拡張機能(3)
第7回 C言語におけるGCCの拡張機能(2)
第6回 GCCのインストールとC言語におけるGCCの拡張機能
第5回 続・C言語をコンパイルする際に指定するオプション
第4回 C言語をコンパイルする際に指定するオプション
第3回 GCCのC言語最適化以外のオプション
第2回 GCCの最適化オプション ――Cとアセンブラの比較
第1回 GCCの最適化オプション

移り気な情報工学
第36回 ITもの作りの原点
第35回 ビットの化石
第34回 ユビキタスなエネルギー
第33回 ロゼッタストーンとWWW
第32回 情報家電のリテラシー
第31回 草の根グリッドの心理学
第30回 自分自身を語るオブジェクト指向「物」
第29回 電子キットから始まるエレクトロニクス
第28回 映画に見る,できそうでできないIT
第27回 ITも歴史を学ぶ時代
第26回 1テラバイトで作る完全なる記憶
第25回 日本はそんなにIT環境の悪い国なのか
第24回 10年後にも生きている技術の法則
第23回 ITなギズモ
第22回 ブロードバンドネットワークに関する三つの質問

Engineering Life in Silicon Valley
第78回 インドに流れ出るシリコンバレーエンジニアの仕事
第77回 エンジニア達の健康管理・健康への努力(第二部)
第76回 エンジニア達の健康管理・なぜエンジニア達は太る?(第一部)
第75回 ユーザーインターフェースのスペシャリスト(第二部)
第74回 ユーザーインターフェースのスペシャリスト(第一部)
第73回 放浪の旅を経てエンジニアに……
第72回 凄腕女性エンジニアリングマネージャ(第二部)
第71回 凄腕女性エンジニアリングマネージャ(第一部)
第70回 ビジネススキルを修行しながらエンジニアを続ける
第69回 専門分野の第一線で活躍するエンジニア
第68回 シリコンバレーに夫婦で出向(第二部)
第67回 シリコンバレーに夫婦で出向(第一部)
第66回 目に見えないシリコンバレーの成功要因
第65回 起業・独立のステップ
第64回 インターネットバブルの前と後の比較
第63回 日本でシリコンバレースタートアップを体験する(第四部)
第62回 日本でシリコンバレースタートアップを体験する(第三部)
第61回 日本でシリコンバレースタートアップを体験する(第二部)
第60回 日本でシリコンバレースタートアップを体験する(第一部)

フジワラヒロタツの現場検証
第72回 現場検証,最後の挨拶
第71回 マイブーム
第70回 OSぼやき放談
第69回 技術者生存戦略
第68回 読書案内(2)
第67回 周期
第66回 歳を重ねるということ
第65回 雑誌いろいろ
第64回 となりの芝生は
第63回 夏休み
第62回 雑用三昧
第61回 ドリームウェア
第60回 再び人月の神話
第59回 300回目の昔語り
第58回 温泉紀行
第57回 人材ジャンク
第56回 知らない強さ
第55回 プレゼン現場にて


Copyright 1997-2000 CQ Publishing Co.,Ltd.