SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
Управление ресурсами и
потребность в виртуальных
                 машинах




              Николай Иготти
Ситуация - ужин в большой
  семье
• Одна кастрюля с супом
• Много голодных людей с разными запросами
• Как всех накормить?
• Стратегии
   Каждый берѐт кастрюлю по очереди
    (сериализация монопольного доступа)
   Каждому по тарелке (предварительное
    разделение)
   Каждый подходит с тарелкой своего размера
    (динамическое выделение)
   Каждому по виртуальной кастрюле
    (виртуализация, thin provisioning)
   Ещѐ?
                                                2
Управление памятью

• Явное определение, без освобождения
• Явное выделение, явное освобождение
   Хорошо для небольших систем
   Знакомьтесь: утечки памяти
• Явное выделение, неявное освобождение
   Удобно, хотя выделять всѐ-таки надо
   Кто же освобождает?
   Когда?
• Неявное выделение, неявное освобождение
  (где?)
   Ещѐ удобнее
   Ещѐ сложнее реализовать
                                            3
Типичная ситуация

• Ограниченный ресурс (или несколько)
• Несколько потребителей с различными,
  часто слабопредсказуемыми, потребностями
• Стратегия индивидуального потребителя
  определяется его нуждами, а не наличными
  ресурсами
• Необходим менеджер ресурсов
  реализующий определѐнный контракт
  доступа
   malloc()/free()
   new java.lang.Object()
   mmap()
                                             4
Универсальный менеджер
ресурсов - ВМ
• Рассмотрим все сущности необходимые
  программе для работы (контекст)
   Память
   Процессорное время (как мы его
    потребляем?)
   Сетевые соединения
   Графические объекты
   Другое
• Ресурс – инвариант контекста
• Что если управлять всем контекстом
  исполнения?
• Виртуальная машина
                                        5
ВМ как модель контекста
• Программы создаются в ожидании
  определѐнного контекста
• Контекст должен иметь непосредственную
  реализацию для исполнения программы
• Пример, контекст для:
  #include <stdio.h>
  int main(int argc, char* argv[]) {
      printf(“Hello world, I’m %sn”, argv[0]);
      return 0;
  }

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

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

                                  7
Вопросы

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


                                         10
Другие необходимые части
  экосистемы
• Система ввода-вывода
• Интерфейс к нативному коду (JNI)
• Графический интерфейс пользователя
• Компиляторы с высокоуровневых языков
  (JVM != (Java) != JVM)
• Инструменты отладки
• Инструменты мониторинга и
  профилирования
• Среды разработки
• Среды внедрения
                                         11
А зачем все эти сложности?
• Судьба индустриальных программных
  систем
   Экосистемы, а не программы
   Неожиданное долголетие
   Новое аппаратное обеспечение
   Утеря знаний
• Обратная совместимость, вложенная
  виртуализация
• Переносимость
• Управляемость
• Инерция разработчиков
• Сложность создания простого         12
Вопросы

1. Зачем нужен стандарт на ВМ?
2. Нужно ли стандартизировать что-нибудь
   кроме ВМ для Java? Почему?
3. Чего не специфицирует JVMSpec? Почему?
4. Чем плохи стандарты?
5. Где специфицирована ВМ языка C/C++?
6. Почему появился Jython?


  Ответы, мысли: igotti@gmail.com

                                           13

Weitere ähnliche Inhalte

Andere mochten auch

Вовлечение и удержание аудитории.
Вовлечение и удержание аудитории. Вовлечение и удержание аудитории.
Вовлечение и удержание аудитории.
Egor Abaturov
 
Muestra de informe de diagnóstico
Muestra de informe de diagnósticoMuestra de informe de diagnóstico
Muestra de informe de diagnóstico
Carlos Chaves
 
Different types of documentaries
Different types of documentariesDifferent types of documentaries
Different types of documentaries
EloiseHatton
 
20130420 mathematics and_internet-advertizing_in_internet-viktor_lobachev
20130420 mathematics and_internet-advertizing_in_internet-viktor_lobachev20130420 mathematics and_internet-advertizing_in_internet-viktor_lobachev
20130420 mathematics and_internet-advertizing_in_internet-viktor_lobachev
Computer Science Club
 
Gfi branding guide
Gfi branding guideGfi branding guide
Gfi branding guide
Lauren Lorey
 
20081130 auctions nikolenko_lecture12
20081130 auctions nikolenko_lecture1220081130 auctions nikolenko_lecture12
20081130 auctions nikolenko_lecture12
Computer Science Club
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
Computer Science Club
 

Andere mochten auch (20)

Expresion oral cero papel
Expresion oral  cero papelExpresion oral  cero papel
Expresion oral cero papel
 
Conf conafet
Conf conafetConf conafet
Conf conafet
 
Reputation management tips from Shashi Bellamkonda of Network Solutions
Reputation management tips from Shashi Bellamkonda of Network SolutionsReputation management tips from Shashi Bellamkonda of Network Solutions
Reputation management tips from Shashi Bellamkonda of Network Solutions
 
Rogaine
RogaineRogaine
Rogaine
 
Mcdi u1 ea_lula
Mcdi u1 ea_lulaMcdi u1 ea_lula
Mcdi u1 ea_lula
 
Вовлечение и удержание аудитории.
Вовлечение и удержание аудитории. Вовлечение и удержание аудитории.
Вовлечение и удержание аудитории.
 
Muestra de informe de diagnóstico
Muestra de informe de diagnósticoMuestra de informe de diagnóstico
Muestra de informe de diagnóstico
 
Different types of documentaries
Different types of documentariesDifferent types of documentaries
Different types of documentaries
 
Marli Mesibov - What's in a Story?
Marli Mesibov - What's in a Story?Marli Mesibov - What's in a Story?
Marli Mesibov - What's in a Story?
 
El software-sesión 03
El software-sesión 03El software-sesión 03
El software-sesión 03
 
Mifotoyunatuya
MifotoyunatuyaMifotoyunatuya
Mifotoyunatuya
 
The Dissertation (2)
The Dissertation (2)The Dissertation (2)
The Dissertation (2)
 
Deber Leonardo Guerrero
Deber Leonardo GuerreroDeber Leonardo Guerrero
Deber Leonardo Guerrero
 
20130420 mathematics and_internet-advertizing_in_internet-viktor_lobachev
20130420 mathematics and_internet-advertizing_in_internet-viktor_lobachev20130420 mathematics and_internet-advertizing_in_internet-viktor_lobachev
20130420 mathematics and_internet-advertizing_in_internet-viktor_lobachev
 
Time managment
Time managmentTime managment
Time managment
 
Démythification des croyances
Démythification des croyancesDémythification des croyances
Démythification des croyances
 
Gfi branding guide
Gfi branding guideGfi branding guide
Gfi branding guide
 
20081130 auctions nikolenko_lecture12
20081130 auctions nikolenko_lecture1220081130 auctions nikolenko_lecture12
20081130 auctions nikolenko_lecture12
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
 
personajes del hip hop
personajes del hip hoppersonajes del hip hop
personajes del hip hop
 

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

Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Ontico
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
Alex Chistyakov
 
20100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture0520100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture05
Computer Science Club
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
Dmitry Buzdin
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
Regn
 
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest
 

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

Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
20100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture0520100307 virtualization igotti_lecture05
20100307 virtualization igotti_lecture05
 
Android для начинающих. занятие 1
Android для начинающих. занятие 1Android для начинающих. занятие 1
Android для начинающих. занятие 1
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
JVM: краткий курс общей анатомии
JVM: краткий курс общей анатомииJVM: краткий курс общей анатомии
JVM: краткий курс общей анатомии
 
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilation
 
Управление ресурсами в Linux и OpenVZ
Управление ресурсами в Linux и OpenVZ Управление ресурсами в Linux и OpenVZ
Управление ресурсами в Linux и OpenVZ
 
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
 
Разговор про Java 9. Extended version
Разговор про Java 9. Extended versionРазговор про Java 9. Extended version
Разговор про Java 9. Extended version
 
Sivko
SivkoSivko
Sivko
 
Real-time данные на фронтенде
Real-time данные на фронтендеReal-time данные на фронтенде
Real-time данные на фронтенде
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действии
 
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionJVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
 
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 

Mehr von Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
Computer Science Club
 

Mehr von Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

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

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