1 / 25

Integer Java Virtual Machine エミュレータ試作

Integer Java Virtual Machine エミュレータ試作. 作成者:森 考史. 目次. 1. Java プログラムの実行. 2.研究の目的と結果. 3. IJVM(Integer Java Virtual Machine). 4. JVM について. 5. IJVM エミュレータの概要. 6.まとめ. Java プログラムの実行. Java プログラム. コンパイル. Class ファイル. Java VM. Java VM. Java VM. Java VM. Java VM. Java VM. Free BSD.

alayna
Download Presentation

Integer Java Virtual Machine エミュレータ試作

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Integer Java Virtual Machine エミュレータ試作 作成者:森 考史

  2. 目次 1.Javaプログラムの実行 2.研究の目的と結果 3.IJVM(Integer Java Virtual Machine) 4.JVMについて 5.IJVMエミュレータの概要 6.まとめ

  3. Javaプログラムの実行 Javaプログラム コンパイル Classファイル Java VM Java VM Java VM Java VM Java VM Java VM Free BSD Windows Linux MacOS Solaris Solaris SPARC Power PC x86

  4. JVM Classファイルを 読み込み、 そこで指定された 操作を正しく 実行する。 JVM (Java Virtual Machine) ・ 命令セットが用意され、命令の実行時に様々な記憶領域の操作が行われる。 Classファイル Javaプログラム • CA FE BA BE • 00 00 00 2E • 2D 0A 00 0D • A0 07 00 • 1E 0A 00 • 00 20 0A • 22 0A 00. • ・・・・・・・・・・・・ • ・・・・・・・・・・・・ Class xx { public void xxx { ・・・・    ・・・・    ・・・・ } }

  5. 目次 1. Javaプログラムの実行 2.研究の目的と結果 3.IJVM(Integer Java Virtual Machine) 4.JVMについて 5.IJVMエミュレータの概要 6.まとめ

  6. 研究の目的と結果 Javaの実行環境であるJVM(Java Virtual Machine) をコストを少なく効果的に高速化させる ための材料を探すこと 本研究の成果物 JVMのエミュレータを作る足がかりとして、 JVMのサブセットである Integer Java Virtual Machine のエミュレータを作成した。 様々なアプリケーションにおいて 1.JVMの各命令の使用頻度を取り、アプリケーション   の性格によって差異が生まれるかどうかを調査する。 2. JVMの各命令が使用される順序や組み合わせに   規則性がないかを調査する。 JVMの各命令の使用頻度や使用 順序を調べることができるJVMの エミュレータを作る

  7. 目次 1. Javaプログラムの実行 2.研究の目的と結果 3.IJVM(Integer Java Virtual Machine) 4.JVMについて 5.IJVMエミュレータの概要 6.まとめ

  8. Integer Java Virtual Machine Javaバイトコードの部分集合のためのアセンブラ およびインタープリタから成るもの。 命令 : 20種類

  9. IJVMの命令セット

  10. IJVMの命令セット

  11. IJVMの命令セット

  12. 目次 1.Javaプログラムの実行 2.研究の目的と結果 3.IJVM (Integer Java Virtual Machine) (1)Classファイル 4.JVMについて (2)JVMの命令 5.IJVMエミュレータの概要 (3)JVMの構造 6.まとめ

  13. Classファイル Class ファイル マジックナンバー あるプログラムの Classファイルの一部 マイナーバージョン CA FE BA BE 00 00 00 2E 00 2D 0A 00 0D 00 1C 03 00 01 86 A0 07 00 1D 09 00 0C 00 1E 0A 00 0C 00 1F 0A 00 03 00 20 0A 00 0C 00 21 07 00 22 0A 00 08 00 1C 0A 00 08 00 23 0A 00 08 00 24 07 00 25 07 00 26 01 00 0D 63 6F 6E 73 74 61 6E 74 5F 70 6F 6F 6C 01 00 13 5B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 01 00 06 3C 69 6E 69 74 3E 01 00 03 28 29 56 01 00 04 43 6F 64 65 01 00 0F 4C 69 6E 65 4E メジャーバージョン コンスタントプール アクセスフラグ this_class super_class インターフェース フィールド メソッド 属性リスト

  14. メソッド1 ・ ・ ・ アクセスフラグ(2バイト) メソッドの個数 (2バイト) メソッド名CPエントリ番号 (2バイト) メソッド1 ディスクプリタCPエント番号 (2バイト) メソッドn 属性リスト Classファイル中のメソッド情報記述部分 メソッドの属性の種類 ・Code属性 ・Exceptions属性 ・Deprecated属性 ・Synthetic属性 JVMの命令が記述されて いるのはCode属性だけ

  15. 1.Javaプログラムの実行 目次 2.研究の目的と結果 3.IJVM(Integer Java Virtual Machine) 4.JVMについて (1)Classファイル (2)JVMの命令 (3)JVMの構造 5.IJVMエミュレータの概要 6.まとめ

  16. JVMの命令 オペコード : 実行する操作を定義したもの(1バイト) オペランド : 操作が用いるデータ(引数) オペコードは約200種類 オペコード オペコード オペランドを 持たない命令 オペランド を持つ 命令 オペランド1 オペランド2 ・・・ Javaバイトコード : JVMの命令の集合によって記述されたもの

  17. Javaバイトコード の読み込み例 あるClassファイルのJavaバイトコード (16進表記) 命令 命令 引数 21 return 01 B1 iload 01 do { { } } オペコードの取得 ; if (オペランドが必要か?) オペランドの取得 ; while (オペコードが残っているか?) ;

  18. 1.Javaプログラムの実行 目次 2.研究の目的と結果 3.IJVM(Integer Java Virtual Machine) 4.JVMについて (1)Classファイル (2)JVMの命令 (3) JVMの構造 5.IJVMエミュレータの概要 6.まとめ

  19. インスタンス クラス システム クラスローダ インスタンス クラス クラス インスタンス インスタンス クラス ユーザ クラスローダ インスタンス クラス クラス インスタンス インスタンス クラス クラス ユーザ クラスローダ インスタンス クラス インスタンス フレーム フレーム オペランド スタック オペランド スタック ローカル変数 ローカル変数 Javaスタック フレーム オペランド スタック プログラム カウンタ ローカル変数 メソッドエリア ヒープ JVM JVMの構造 Classファイル の取得先 CLASSPATH インターネット ス レ ッ ド Javaスタック プログラム カウンタ ス レ ッ ド データサーバ

  20. あるJavaのスレッド(スレッドAとする)がmethod1あるJavaのスレッド(スレッドAとする)がmethod1 というメソッドを実行した場合 Javaスタック スレッドA フレーム2 フレーム3 フレーム1 method1() { method2(); … } method2() { method3(); … } 先頭のフレームが作業中のフレーム

  21. (例)method1の バイトコードのある部分 命令 命令 iload 1 istore 2 21 01 36 02 フレーム ローカル変数配列 オペランドスタック method1 a 0 1 2 a

  22. 1.Javaプログラムの実行 目次 2.研究の目的と結果 3.IJVM(Integer Java Virtual Machine) 4.JVMについて (1)Classファイル (2)JVMの命令 (3) JVMの構造 5.IJVMエミュレータの概要 6.まとめ

  23. 5.IJVMエミュレータの概要 Classファイルを読み込み様々な情報を格納するプログラム 保存しておく情報 定数 フィールド インターフェース メソッド 配列に格納 メソッドの情報を受け取りJavaバイトコードを実行するプログラム フレームを可視化するプログラム

  24. 目次 1.Javaプログラムの実行 2.研究の目的と結果 3.JVMについて 4.IJVM(Integer Java Virtual Machine) 5.IJVMエミュレータの概要 6.まとめ

  25. IJVMには存在しないJVMの命令を作成 6.まとめ Integer Java Virtual Machine (命令20種類)のエミュレータ この研究で 作成したもの Java Virtual Machine (命令約200種類)のエミュレータを作成 JVMの高速化のために、 様々なアプリケーションの実行時におけるJVMの 各命令の使用頻度及び使用順序の調査を行う。

More Related