Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Управление ресурсами и
потребность в виртуальных
                 машинах




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

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

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

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

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

528 views

Published on

Published in: Technology, News & Politics
  • Be the first to comment

  • Be the first to like this

Н. Иготти. Виртуализация и виртуальные машины. Лекция 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

×