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




              Николай Иготти
Ситуация - ужин в большой
  семье
• Одна кастрюля с супом
• Много голодных людей с разными запросами
• Как всех накормить?...
Управление памятью

• Явное определение, без освобождения
• Явное выделение, явное освобождение
   Хорошо для небольших с...
Типичная ситуация

• Ограниченный ресурс (или несколько)
• Несколько потребителей с различными,
  часто слабопредсказуемым...
Универсальный менеджер
ресурсов - ВМ
• Рассмотрим все сущности необходимые
  программе для работы (контекст)
   Память
  ...
ВМ как модель контекста
• Программы создаются в ожидании
  определѐнного контекста
• Контекст должен иметь непосредственну...
Что необходимо для реализации
  нужного контекста?

• Компьютер
• Компилятор С
• Линкер
• Загрузчик (или ОС)
• Стандартная...
Вопросы

1. Почему thin provisioning обычно работает?
2. Как делить неделимые ресурсы?
3. Что менеджер ресурсов должен зна...
Реальная виртуальная машина 
Например Java Virtual Machine, содержит:
    Загрузчик классов
      • Получение данных кла...
Спецификация JVM
• http://java.sun.com/docs/books/jvms/
• Объектная модель: классы, объекты, методы
• Формат исполняемого ...
Другие необходимые части
  экосистемы
• Система ввода-вывода
• Интерфейс к нативному коду (JNI)
• Графический интерфейс по...
А зачем все эти сложности?
• Судьба индустриальных программных
  систем
   Экосистемы, а не программы
   Неожиданное дол...
Вопросы

1. Зачем нужен стандарт на ВМ?
2. Нужно ли стандартизировать что-нибудь
   кроме ВМ для Java? Почему?
3. Чего не ...
Upcoming SlideShare
Loading in …5
×

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

481 views

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
481
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Управление ресурсами и потребность в виртуальных машинах Николай Иготти
  2. 2. Ситуация - ужин в большой семье • Одна кастрюля с супом • Много голодных людей с разными запросами • Как всех накормить? • Стратегии  Каждый берѐт кастрюлю по очереди (сериализация монопольного доступа)  Каждому по тарелке (предварительное разделение)  Каждый подходит с тарелкой своего размера (динамическое выделение)  Каждому по виртуальной кастрюле (виртуализация, thin provisioning)  Ещѐ? 2
  3. 3. Управление памятью • Явное определение, без освобождения • Явное выделение, явное освобождение  Хорошо для небольших систем  Знакомьтесь: утечки памяти • Явное выделение, неявное освобождение  Удобно, хотя выделять всѐ-таки надо  Кто же освобождает?  Когда? • Неявное выделение, неявное освобождение (где?)  Ещѐ удобнее  Ещѐ сложнее реализовать 3
  4. 4. Типичная ситуация • Ограниченный ресурс (или несколько) • Несколько потребителей с различными, часто слабопредсказуемыми, потребностями • Стратегия индивидуального потребителя определяется его нуждами, а не наличными ресурсами • Необходим менеджер ресурсов реализующий определѐнный контракт доступа  malloc()/free()  new java.lang.Object()  mmap() 4
  5. 5. Универсальный менеджер ресурсов - ВМ • Рассмотрим все сущности необходимые программе для работы (контекст)  Память  Процессорное время (как мы его потребляем?)  Сетевые соединения  Графические объекты  Другое • Ресурс – инвариант контекста • Что если управлять всем контекстом исполнения? • Виртуальная машина 5
  6. 6. ВМ как модель контекста • Программы создаются в ожидании определѐнного контекста • Контекст должен иметь непосредственную реализацию для исполнения программы • Пример, контекст для: #include <stdio.h> int main(int argc, char* argv[]) { printf(“Hello world, I’m %sn”, argv[0]); return 0; } это… 6
  7. 7. Что необходимо для реализации нужного контекста? • Компьютер • Компилятор С • Линкер • Загрузчик (или ОС) • Стандартная библиотека • Система ввода/вывода • Виртуальная машина C? 7
  8. 8. Вопросы 1. Почему thin provisioning обычно работает? 2. Как делить неделимые ресурсы? 3. Что менеджер ресурсов должен знать о потребителях? Почему много знать плохо? 4. Где у машины Тьюринга ресурсы? Контекст? 5. Есть ли программы для которых не нужен контекст? 6. Сколько может быть реализаций одного контекста? Как (и откуда) осмысленно факторизовать реализации? 8
  9. 9. Реальная виртуальная машина  Например Java Virtual Machine, содержит:  Загрузчик классов • Получение данных класса • Верификация класса  Систему исполнения байткода • Интерпретатор • Динамический профилировщик • Компилятор времени исполнения  Систему управления памятью • Выделение пула памяти • Управление объектами в пуле – Быстрое выделение – Анализ доступности – Освобождение  Предзагрузчик системных классов 9
  10. 10. Спецификация JVM • http://java.sun.com/docs/books/jvms/ • Объектная модель: классы, объекты, методы • Формат исполняемого файла • Набор инструкций (байткод) • Типы данных • Абстрактная исполняющая машина  Инициализация  Поток нормального исполнения  Исключительные ситуации  Реализация синхронизации потоков 10
  11. 11. Другие необходимые части экосистемы • Система ввода-вывода • Интерфейс к нативному коду (JNI) • Графический интерфейс пользователя • Компиляторы с высокоуровневых языков (JVM != (Java) != JVM) • Инструменты отладки • Инструменты мониторинга и профилирования • Среды разработки • Среды внедрения 11
  12. 12. А зачем все эти сложности? • Судьба индустриальных программных систем  Экосистемы, а не программы  Неожиданное долголетие  Новое аппаратное обеспечение  Утеря знаний • Обратная совместимость, вложенная виртуализация • Переносимость • Управляемость • Инерция разработчиков • Сложность создания простого 12
  13. 13. Вопросы 1. Зачем нужен стандарт на ВМ? 2. Нужно ли стандартизировать что-нибудь кроме ВМ для Java? Почему? 3. Чего не специфицирует JVMSpec? Почему? 4. Чем плохи стандарты? 5. Где специфицирована ВМ языка C/C++? 6. Почему появился Jython? Ответы, мысли: igotti@gmail.com 13

×