Top Banner
Управление ресурсами и потребность в виртуальных машинах Николай Иготти
13

Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Jun 30, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Управление ресурсами и потребность в виртуальных

машинах

Николай Иготти

Page 2: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Ситуация - ужин в большой семье

• Одна кастрюля с супом

• Много голодных людей с разными запросами

• Как всех накормить?

• Стратегии

Каждый берѐт кастрюлю по очереди

(сериализация монопольного доступа)

Каждому по тарелке (предварительное

разделение)

Каждый подходит с тарелкой своего размера

(динамическое выделение)

Каждому по виртуальной кастрюле

(виртуализация, thin provisioning)

Ещѐ?

2

Page 3: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Управление памятью

• Явное определение, без освобождения

• Явное выделение, явное освобождение

Хорошо для небольших систем

Знакомьтесь: утечки памяти

• Явное выделение, неявное освобождение

Удобно, хотя выделять всѐ-таки надо

Кто же освобождает?

Когда?

• Неявное выделение, неявное освобождение

(где?)

Ещѐ удобнее

Ещѐ сложнее реализовать3

Page 4: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Типичная ситуация

• Ограниченный ресурс (или несколько)

• Несколько потребителей с различными,

часто слабопредсказуемыми, потребностями

• Стратегия индивидуального потребителя

определяется его нуждами, а не наличными

ресурсами

• Необходим менеджер ресурсов

реализующий определѐнный контракт

доступа

malloc()/free()

new java.lang.Object()

mmap()

4

Page 5: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Универсальный менеджер ресурсов - ВМ

• Рассмотрим все сущности необходимые

программе для работы (контекст)

Память

Процессорное время (как мы его

потребляем?)

Сетевые соединения

Графические объекты

Другое

• Ресурс – инвариант контекста

• Что если управлять всем контекстом

исполнения?

• Виртуальная машина5

Page 6: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

ВМ как модель контекста

• Программы создаются в ожидании

определѐнного контекста

• Контекст должен иметь непосредственную

реализацию для исполнения программы

• Пример, контекст для:

#include <stdio.h>

int main(int argc, char* argv[]) {

printf(“Hello world, I’m %s\n”, argv[0]);

return 0;

}

это…6

Page 7: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Что необходимо для реализации нужного контекста?

• Компьютер

• Компилятор С

• Линкер

• Загрузчик (или ОС)

• Стандартная библиотека

• Система ввода/вывода

• Виртуальная машина C?

7

Page 8: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Вопросы

1. Почему thin provisioning обычно работает?

2. Как делить неделимые ресурсы?

3. Что менеджер ресурсов должен знать о

потребителях? Почему много знать плохо?

4. Где у машины Тьюринга ресурсы?

Контекст?

5. Есть ли программы для которых не нужен

контекст?

6. Сколько может быть реализаций одного

контекста? Как (и откуда) осмысленно

факторизовать реализации?8

Page 9: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Реальная виртуальная машина

Например Java Virtual Machine, содержит:

Загрузчик классов

• Получение данных класса

• Верификация класса

Систему исполнения байткода

• Интерпретатор

• Динамический профилировщик

• Компилятор времени исполнения

Систему управления памятью

• Выделение пула памяти

• Управление объектами в пуле

– Быстрое выделение

– Анализ доступности

– Освобождение

Предзагрузчик системных классов

9

Page 10: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Спецификация JVM

• http://java.sun.com/docs/books/jvms/

• Объектная модель: классы, объекты, методы

• Формат исполняемого файла

• Набор инструкций (байткод)

• Типы данных

• Абстрактная исполняющая машина

Инициализация

Поток нормального исполнения

Исключительные ситуации

Реализация синхронизации потоков

10

Page 11: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Другие необходимые части экосистемы

• Система ввода-вывода

• Интерфейс к нативному коду (JNI)

• Графический интерфейс пользователя

• Компиляторы с высокоуровневых языков

(JVM != (Java) != JVM)

• Инструменты отладки

• Инструменты мониторинга и

профилирования

• Среды разработки

• Среды внедрения

11

Page 12: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

А зачем все эти сложности?

• Судьба индустриальных программных

систем

Экосистемы, а не программы

Неожиданное долголетие

Новое аппаратное обеспечение

Утеря знаний

• Обратная совместимость, вложенная

виртуализация

• Переносимость

• Управляемость

• Инерция разработчиков

• Сложность создания простого12

Page 13: Н. Иготти. Виртуализация и виртуальные машины. Лекция 02

Вопросы

1. Зачем нужен стандарт на ВМ?

2. Нужно ли стандартизировать что-нибудь

кроме ВМ для Java? Почему?

3. Чего не специфицирует JVMSpec? Почему?

4. Чем плохи стандарты?

5. Где специфицирована ВМ языка C/C++?

6. Почему появился Jython?

Ответы, мысли: [email protected]

13