Читайте также: |
|
Кафедра ЕОМ
Звіт
лабораторної роботи №6
«Дослідження принципів віртуалізації програмного оточення на прикладі Java Virtual Machine »
з дисципліни:
«Проектування віртуальних машин»
Виконав:
ст. гр. СПРм-11
Якимець А. І.
Прийняв:
Бочкарьов О.Ю.
Львів-2012
Мета: Дослідити роботу засобів програмної віртуалізації на прикладі Java Virtual Machine
Завдання:
№ | Функція | Кількість вхідних аргументів |
Добуток квадратів |
Порядок виконання роботи:
Схема та стислий опис роботи JVM.
Програми, що написані мовою Java, є незалежними від фізичної платформи. Це означає, що можна скомпілювати Java-програму на одній архітектурі (наприклад, Pentium), а потім запустити її на виконання в іншій архітектурі (скажімо, на Sun workstation) без додаткових модифікацій і перекомпіляції.
Компілятор Java-програм не враховує архітектуру машини, на якій має викликатися результат компіляції, наприклад, число регістрів, розмір пам’яті, порти введення-виведення тощо. Після завершення компіляції для виконання програми нам потрібна так звана віртуальна машина Java - Java Virtual Machine (JVM), аби надати архітектуру для запуску і виконання скомпільованої програми. При цьому віртуальною машиною Java називають програмне забезпечення, що емулює реальну машину. VM є за своєю сутністю обгорткою ("wrapper"), в яку загорнуто реальну апаратну архітектуру. З боку Java-програми така обгортка надає стандартний інтерфейс, а з боку апаратури інтерфейс обгортки залежить від апаратної архітектури і є досить складним. Тому JVM для платформи Pentium відрізняється від JVM для платформи Sun workstation, яка, в свою чергу, відрізняється від JVM для платформи Macintosh тощо. Хоча JVM є віртуальною, вона надає яскравий приклад елегантно розробленої архітектури рівня машинних інструкцій.
Віртуальна машина Java для конкретної платформи реалізується на машинних інструкціях цієї платформи. JVM діє як інтерпретатор так званого байткоду Java (Java bytecode), що інтерпретуються під час виконання в машинні інструкції відповідної обчислювальної машини. Байткод Java є результатом компіляції текстів програм, написаних мовою Java (рис.1). Робота JVM подібна до виконання оператора switch (case) - JVM «розбирає» одну інструкцію байткоду за один раз. При цьому кожна інструкція байткоду спричиняє перехід на відповідний блок машинного коду (в архітектурі платформи виконання), який власне реалізує цю інструкцію байткоду.
Рис.1. Схема віртуалізаії програмного оточення на основі JVM
2. Порядок створення, компіляції та запуску Java-програм.
Для того щоб створювати та компілювати Java-програми потрібно встановити Java Development Kit. В моєму випадку використовувалось JDK 1.7.0_02 версії.
Далі була набрана програма згідно варіанту. Та збережена з назвою lab6.java. Наступним кроком була її компіляція javac lab6.java. Далі отримання її байт коду java –c lab6 та вивід її у файл. Останнім кроком був запуск скомпільованої програми java Maximum.
3. Текст створеної Java-програми.
public class lab6{
public static void main(String[] Args)
{
int X,Y,Res;
X = Integer.parseInt(Args[0]);
Y = Integer.parseInt(Args[1]);
Res = MulPov(X,Y);
System.out.println(Res);
}
public static int MulPov(int A, int B)
{
A = A*A;
B = B*B;
return A*B;
}
} 4. Результати компіляції та запуску на виконання створеної Java-програми.
Рис.2. Схема конфігурації віртуальної мережі на основі мостового з’єднання.
5. Текст байткоду створеної Java-програми у вигляді інструкцій JVM з поясненнями.
Compiled from "lab6.java"
public class lab6 {
public lab6();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: aload_0
1: iconst_0
2: aaload
3: invokestatic #2 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
6: istore_1
7: aload_0
8: iconst_1
9: aaload
10: invokestatic #2 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
13: istore_2
14: iload_1
15: iload_2
16: invokestatic #3 // Method MulPov:(II)I
19: istore_3
20: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream;
23: iload_3
24: invokevirtual #5 // Method java/io/PrintStream.println:(I)V
27: return
public static int MulPov(int, int);
Code:
0: iload_0
1: iload_0
2: imul
3: istore_0
4: iload_1
5: iload_1
6: imul
7: istore_1
8: iload_0
9: iload_1
10: imul
11: ireturn
}
Висновок: Під час даної лабораторної роботи я дослідив роботу засобів програмної віртуалізації на прикладі Java Virtual Machine
Дата добавления: 2015-10-21; просмотров: 87 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Послідовність дій щодо створення віртуальної мережі у заданій конфігурації. | | | Отбор переменных для исследования |