Разработка сред управляемого исполнения на примере виртуальной машины Java Занятие 2 Салищев С.И.

Презентация:



Advertisements
Похожие презентации
Виртуальная машина Java Андрей Дмитриев 2008.
Advertisements

Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Разработка сред управляемого исполнения на примере виртуальной машины Java Занятие 1 Салищев С. И.
ПРЕЗЕНТАЦИЯ НА ТЕМУ: ПРЕЗЕНТАЦИЯ НА ТЕМУ: ВИДЫ ТРАНСЛЯЦИИ Составил: Ревнивцев М.В Преподаватель: Кленина В.И.
Технология MVC в высоконагруженных проектах Андрей Шетухин Илья Космодемьянский.
Необхідність структурування даних. Послідовне і зв ' язне розподілення даних в пам ' яті ЕОМ. Статичні і динамічні структури даних.
Разработка сред управляемого исполнения на примере виртуальной машины Java Занятие 6 Салищев С.И.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
1 Лекция 5 Абстрактные структуры данных. 2 Таблицы Таблица – это набор элементов, содержащих ключ – отличительный признак для поиска элементов, и тело.
Верификация байт- кода в среде смарт- карт: использование криптографических методов К. Н. Хюппенен Кафедра информатики и математического обеспечения ПетрГУ.
Платформа Java. Компиляция Динамическая компиляция Just-in-time (оперативная) компиляция Динамическая компиляция HotSpot Непрерывная перекомпиляция.
Архитектура микропроцессоров И ее эволюция. Процессор и память: Команды и данные.
Программировани е Сергей Салищев Занятие 1. Введение.
Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Виртуальная машина для работы с деревьями 3м Автор: Ханов А.Р. Научный руководитель: Зеленчук И.В.
Технические возможности. Наши цели Максимальная гибкость Максимальная скорость считывания и обработки данных Стабильность работы Максимальная простота.
где – промежуточный аргумент (внутренняя функция) Пример.
Разработка сред управляемого исполнения на примере виртуальной машины Java Занятие 7 Салищев С.И.
Основы современных операционных систем Лекция 7. (C) В.О. Сафонов,
Транксрипт:

Разработка сред управляемого исполнения на примере виртуальной машины Java Занятие 2 Салищев С.И.

Архитектура MRE Загрузчик IR Верификатор Планировщик Менеджер памяти GC Ядро Исполнитель Интерпретатор JIT компилятор Профилятор загрузка/cохранение Данных и кода Модель данных Внешний интерфейс Инициализация

Внешний интерфейс Вызов внешних неуправляемых функций Обратный вызов управляемого кода (callback) Передача данных между управляемым и неуправляемым кодом (marshaling) Копирование Копирование Обертывание и обратный вызов Обертывание и обратный вызов Закрепление объектов (pinning) Закрепление объектов (pinning) Указатель на неуправляемую память Указатель на неуправляемую память

Внешний интерфейс Java (JNI) Внешний модуль должен использовать JNI Копирование для примитивных типов (параметры и результат) Обертывание и обратный вызов для объектов (globalRef, localRef) Требует согласования с планировщиком Требует согласования с планировщиком Потери времени при вызове Потери времени при вызове Потери времени при доступе Потери времени при доступе Возможна изоляция управляемых данных Возможна изоляция управляемых данных Групповые операции с массивами Групповые операции с массивами Усложнение внешнего модуля Усложнение внешнего модуля Абстрактный неуправляемый массив (DirectBuffer)

Внешний интерфейс CLI Прямое управление раскладкой полей объекта Уменьшает гибкость системы Уменьшает гибкость системы Закрепление объекта в памяти и получение указателя Уменьшает гибкость менеджера памяти Уменьшает гибкость менеджера памяти Потенциальная угроза безопасности Потенциальная угроза безопасности Прямая работа с указателями из управляемого кода Потенциальная угроза безопасности Потенциальная угроза безопасности pinvoke (.NET) Связывание произвольной внешней функции Связывание произвольной внешней функции копирование объектов с изменением раскладки полей копирование объектов с изменением раскладки полей

Промежуточное представление (Intermediate Representation) Задача Компактность Компактность Стандартизация Стандартизация Простота интерпретации и компиляции Простота интерпретации и компиляции Основные виды IR Язык стековой машины Язык стековой машины Язык регистровой машины Язык регистровой машины

Сравнение (IR) Язык регистровой машины На 45% меньше операций доступа к памяти* На 45% меньше операций доступа к памяти* Возможность оптимизации на уровне IR Возможность оптимизации на уровне IR Используется в статических и оптимизирующих JIT компиляторах Используется в статических и оптимизирующих JIT компиляторах Язык стековой машины На 25% более компактен* На 25% более компактен* Сохраняет семантику исходного кода Сохраняет семантику исходного кода Проще для интерпретации и шаблонной компиляции Проще для интерпретации и шаблонной компиляции Используется в JBC и CIL Используется в JBC и CIL * VEE05, Virtual Machine Showdown: Stack Versus Registers, Yunhe Shi et al.

Типы команд Простые Стековая арифметика Стековая арифметика Доступ к локальным данным Доступ к локальным данным Ветвления ВетвленияОбъектные Создание объектов Создание объектов Доступ к полям Доступ к полям Вызов методов Вызов методов Исключения Исключения

Сравнение CIL и JBC CIL по семантике расширение JBC Добавлены целые без знака Добавлены целые без знака Поддержка рефлексии (ldtoken) Поддержка рефлексии (ldtoken) Размещение памяти на стеке (localloc) Размещение памяти на стеке (localloc) Работа с внутренними ссылками Работа с внутренними ссылками Работа с указателями Работа с указателями обертывание (box/unbox) обертывание (box/unbox)

Формат класса Java ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count]; }

Верификация 1.Проверка формата класса 2.Проверка данных класса final классы и методы не перекрыты final классы и методы не перекрыты Определен суперкласс Определен суперкласс Формат пула констант Формат пула констант 3.Проверка кода класса Размер стека, тип данных на стеке Размер стека, тип данных на стеке Правильный тип локальной переменной при доступе Правильный тип локальной переменной при доступе Число аргументов при вызове метода Число аргументов при вызове метода Необходимое количество и тип аргументов инструкций Необходимое количество и тип аргументов инструкций 4.Проверка ссылок Наличие классов, методов и полей Наличие классов, методов и полей Права доступа Права доступа

Интерпретация IR Переключение по первому байту инструкции Требует глубокой оптимизации Поддержка супер-инструкций

Компиляция IR Динамическая (JIT) Шаблонная компиляция Шаблонная компиляция Оптимизирующая компиляция Оптимизирующая компиляция Различные уровни оптимизации Различные уровни оптимизации Предварительная (AOT) Статическая Статическая Сохранение кода между сессиями Сохранение кода между сессиями

Сравнение производительности

Менеджер памяти Выделение памяти под объекты Обнаружение живых объектов Сборка мусора

Планировщик Создание и разрушение нитей Распределение нагрузки между процессорами Приостановка и возобновление нитей Для синхронизации управляемого кода Для синхронизации управляемого кода Для сборки мусора Для сборки мусора Для синхронизации неуправляемого кода и сборки мусора Для синхронизации неуправляемого кода и сборки мусора