?

Log in

No account? Create an account
Придумываем название для нового гипервизора для MIPS с аппаратно-поддерживаемой виртуализацией - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Придумываем название для нового гипервизора для MIPS с аппаратно-поддерживаемой виртуализацией [Mar. 21st, 2017|11:02 pm]
Yuri Panchul
На днях в офисе Imagination Technologies в Санта-Клара, Калифорния ко мне подходит специалист по многоядерному Линуксу Леонид Егошин и говорит:

Егошин: Вот, написал самый маленький гипервизор в мире.

Я: Да? А как называется?

Егошин: Еще не придумал. И маркетинг названия не спустил. Придумай название! Это все равно будет opensource-проект.

Я: Мне чего-то трудно такое придумать. Как говорится "как вы яхту назовете, так она и поплывет". Надо общественность спросить.

Егошин: И я еще в апреле в Долгопрудном буду, в МФТИ. Не был там с XX века. Есть ли там кто-нибудь, кого интересует MIPS-Linux/IoT/гипервизоры на MIPS?

Я: Ну об этом тоже можно спросить общественность.

Итого, я написал этот пост, чтобы спросить общественность. Но сначала я расскажу, кто такой Леонид Егошин и что такое гипервизор.

---

Не вся молодежь знает, но в СССР был свой Unix. Не при Брежневе, но уже при Андропове.

И вот одним из первых советских юниксологов и был Егошин (он единственный на фотке на Красной Площади 1980-х, кто улыбается). Потом Егошин переехал в Silicon Valley и стал работать в MIPS Technologies, которая стала Imagination Technologies. На снимке справа Егошин уже в 2015 году, с первой привезенной в Америку из России платой с российским микропроцессором Байкал-Т - Егошин помогал отлаживать на ней Линукс:



А теперь что такое гипервизор. Гипервизор - это такая программа, которая управляет работой двух или более операционных систем, которые выполняются на процессоре одновременно внутри виртуальных машин. Софтверу внутри виртуальной машины кажется, что ему принадлежит вся реальная машина, все ее порты ввода/вывода, память и прерывания.

Виртуализация - это следующий шаг после kernel / user mode (режима ядра / пользовательского режима). В kernel/user парадигме операционная система защищает себя от пользовательских программ и пользовательские программы друг от друга. Привилегированный режим ядра включается, когда во время выполнения пользовательской программы происходит прерывание. Тогда ОС смотрит, что произошло, и может переключится на выполнение другой пользовательской программы. В случае виртуализации поверх kernel/user включаются еще и режимы root/guest для защиты нескольких guest операционных систем друг от друга и разделения между ними ресурсов. Этим занимается гипервизор в режиме root:

https://www.imgtec.com/mips/architectures/virtualization/





Виртуализацию не следует путать с виртуальной памятью. Виртуальная память может существовать и без виртуализации. В парадигме виртуальной памяти ОС/kernel управляет аппаратно-поддерживаемой таблицей трансляции виртуальных адресов, используемых пользовательскими программами, в физические адреса в памяти. Тем самым ОС создает иллюзию владения адресным пространством с одинаковыми виртуальными адресами у нескольких пользовательских программ, хотя физические адреса у них могут быть разные. В случае виртуализации у таблицы трансляции виртуальных адресов появляется следующий уровень, для создания иллюзий не только у пользовательских программ, но и у guest операционных систем.

Виртуализация бывает нескольких видов, в том числе пара-виртуализация, когда необходима модификация операционных систем, которыми управляет гиперайзер, и полная виртуализация, с аппаратной поддержкой, когда управляемые гипервизором ОСы могут вообще не чувствовать присутствие гипервизора.

Вообще виртуализация как технология появилась более 40 лет назад, она была уже у IBM-овских мейнфреймов IBM/370 (но не IBM/360). В СССР виртуализация использовалась на ЕС ЭВМ, которые были аналогичны соответствующим IBM/370. Виртуализация была даже отражена в американской поп-культуре - некий стартап в художественной книжке времен первого интернет-бума 1990-х "Первые 20 миллионов долларов самые трудные" занимался в частности виртуализацией Apple Mac на сверхдешевых $300-долларовых PC (тогда это считалось фантастикой). Кстати, фильм, снятый по роману, оказался оказался одним из самых больших провалов в истории Голливуда, заработав всего $5,491 (пять тысяч с чем-то долларов) при потраченных $17 миллионах (см.)

Но вернемся к Егошину. Гипервизор Егошина работает на процессорном ядре MIPS M5150. Это экономичное ядро, которые используется для микроконтроллеров Microchip PIC32MZ и для чипов для интернета вещей.

"О зачем на микроконтроллере виртуализация?!" - может воскликнуть читатель. Для секьюрити. Даже на небольшом чипе для IoT могут одновременно работать скажем встроенный Линукс и скажем очень защищенный код для работы с финансовыми транзакциями. Теперь если пользователь установит взломанную операционную систему, она не сможет получить доступ к другой ОС, выполняющей критические операции, потому что между двумя ОС стоит гипервизор. Это становится особенно важно в случае интернета вещей, когда подброшенный в домашнюю сеть утюг или тостер может теоретически обмениваться информацией с главным компьютером хозяина.

Егошинский гипервизор может работать вот на такой плате Digilent chiKIT WI-FIRE:



А теперь предоставим слово Леониду:


Юра, основные сведения про hypervisor:

Память - 35Kilobyte code, 24KB data

Real-time values -

1. Basic hypervisor call (HYPCALL): 74 clock cycles
2. Force context switch to root and back: 336 clock cycles
3. Emulation of guest access to a guarded device register: 207 clock cycles
4. SW IRQ injection timing, no context switch: 173 clock cycles

Общие устройства в совместном доступе, эмулируемые как собственные для каждого Guest:


  • PIC32MZ Interrupt controller в EIC моде.

  • Console UART.

  • Read-only регистры типа clock etc. Минимальный размер регистрового блока - 16байт.



В настоящий момент поддержка только PIC32MZ(EF) модели, её Interrupt controller и устройства - плата, которую можно купить недорого.

Конфигурация статическая, при помощи десктоп Python скриптов, которые делают пересчеты адресов расположения Guest-ов и их IRQ в таблицы для TLB (PTE) и управления прерываниями. В конце конфигурации все превращается в один .srec файл, который можно засунуть в PIC32MZ при помощи программы pic32prog от Вакуленко.


UPD: Доплнительно, свежая ссылка на актуальность проблемы (вирус в банкоматах) - https://www.gazeta.ru/tech/2017/03/20/10584965/atm_virus.shtml#page2


В общем если у вас есть хорошее название для гипервизора или желание пересечься в МФТИ во время визита Леонида Егошина в альма-матер в апреле, вы можете либо ему писать на Leonid.Yegoshin@imgtec.com, либо оставлять здесь комментарии.


Справка из Википедии про фото в начале поста слева:



http://ru.wikipedia.org/wiki/%D0%94%D0%95%D0%9C%D0%9E%D0%A1

Примерно в 1982—1983 годах копии операционной системы UNIX (v6 и v7) были привезены в Москву. На их основе в Институте атомной энергии им. И. В. Курчатова, при участии ряда специалистов других организаций, проводилось приспособление системы к местным условиям — локализация на русский язык и адаптация к отечественной технике, прежде всего — к машинам СМ-4 и СМ-1420. В то же время локализация проводилась в Институте повышения квалификации Минавтопрома, там новая система называлась «МНОС» (Машинно-Независимая Операционная Система). Позже две команды объединились, а система была переименована в «ДЕМОС» (Диалоговая Единая Мобильная Операционная Система). В 1985 году была выпущена версия 2.0 ОС Демос (с использованием исходных текстов BSD4.2). Проект закрыт в начале 1990-х.

Разработчики ДЕМОС были награждены в 1988 году премией Совета министров СССР по науке и технике.

Авторы Валерий Бардин, Сергей Аншуков, Вадим Антонов, Алексей Руднев, Сергей Рыжков, Николай Саух, Дмитрий Володин, Сергей Вакуленко, Михаил Коротаев, Павел Ходаков, Андрей «ache» Чернов, Михаил Паремский, Сергей Усиков, Леонид Егошин, Михаил Давидов, Михаил Флёров и др.




Уважаемый читатель! Мне для статистики интересно:

Умеете ли вы программировать на Си
32(16.7%)
Умеете ли вы программировать на ассемблере
26(13.5%)
Знаете ли вы, для чего предназначены и как работают режимы kernel / user в операционных системах
29(15.1%)
Знаете ли вы, как работает виртуальная память?
28(14.6%)
Знакомы ли вы, для чего предназначена виртуализация?
26(13.5%)
Знакомы ли вы, как работает виртуализация?
21(10.9%)
Знакомы ли вы как работает контроль распределения ресурсов SoC c гипервайзером?
4(2.1%)
Разрабатываете ли вы для микроконтроллеров
11(5.7%)
Разрабатываете ли вы для интегрированных чипов для интернета вещей
6(3.1%)
Из-за бугра плюете?
9(4.7%)
LinkReply

Comments:
[User Picture]From: freedom_of_sea
2017-03-22 06:25 am (UTC)
а будет ли ваш гипервизор работать на ESP8266 чтобы я мог установить на ней Виндовс и Линукс?
(Reply) (Thread)
[User Picture]From: exshvonder
2017-03-22 08:53 am (UTC)
- Доктор, я буду ходить?
- Будете, больной, но исключительно под себя.
(Reply) (Parent) (Thread)
[User Picture]From: spamsink
2017-03-22 07:13 am (UTC)
Самые маленькие гипервизоры традиционно называются Диспетчерами Виртуальных Систем (ДВС).
(Reply) (Thread)
[User Picture]From: natoha
2017-03-22 07:45 am (UTC)
Что мешает для названия использовать путь гл.конструкторов Нивы, использовавших первые буквы имен своих детей?
(Reply) (Thread)
[User Picture]From: amigofriend
2017-03-22 07:48 am (UTC)
Маркетинговый слоган, например:

"ВАШ ГИПЕРВАЙЗЕР - ЭТО ГЕ
КОЛЬ НЕ БЕЖИТ НА УТЮГЕ!"
(Reply) (Thread)
[User Picture]From: abbat81
2017-03-22 08:32 am (UTC)
Сделай перерыв.
(Reply) (Thread)
[User Picture]From: panchul
2017-03-22 04:08 pm (UTC)
Из какого города девушка? Киев или Днепропетровск? Это ваша сестра?
(Reply) (Parent) (Thread)
[User Picture]From: dom3d
2017-03-22 08:56 am (UTC)
Ты бы объяснил простым людям, что такое гипервизор.
(Reply) (Thread)
[User Picture]From: panchul
2017-03-22 02:35 pm (UTC)
Вы не прочитали пост и откомментировали заголовок
(Reply) (Parent) (Thread)
[User Picture]From: dom3d
2017-03-22 02:44 pm (UTC)
Да, зайчик.
(Reply) (Parent) (Thread)
[User Picture]From: evilwoodpecker
2017-03-22 07:09 pm (UTC)
Octovisor
Minima
Irukandji
Progenetica
HyperMellisuga
(Reply) (Thread)
From: asox
2017-05-30 05:41 pm (UTC)
HyperMini
HyperMNOS (Беззастенчивый подхалимаж. Или то был альтернативный проект?)
(Reply) (Parent) (Thread)
[User Picture]From: ledernierheros
2017-03-23 12:24 pm (UTC)
К слову, о гипервизорах. Команда QEMU серьёзно подумывает выкинуть поддержку хостов MIPS - поскольку не на чем тестировать. Imagination Technologies всё ещё раздаёт разработчикам какие-нибудь платы?
(Reply) (Thread)
[User Picture]From: panchul
2017-03-23 02:32 pm (UTC)
*** Команда QEMU серьёзно подумывает выкинуть поддержку хостов MIPS ***

Это вы что-то перепутали. Непосредственно в Imagination работают люди, в обязанности которых входит поддержка QEMU для MIPS. Приведите ссылку, откуда вы прочитали то что вы сказали. Я в свою очередь могу спросить менеджера, под крылом которого поддерживается QEMU, а также хорошо знакомого мне инженера, который в Imagination отлаживает Андроид на QEMU.

(Reply) (Parent) (Thread)
[User Picture]From: ledernierheros
2017-03-23 03:38 pm (UTC)
Ну, раз всё еще работают, тогда всё хорошо. Просто никто из Imagination за неделю не отклинулся на

http://lists.nongnu.org/archive/html/qemu-devel/2017-03/msg03390.html

Peter Maydell - это лидер проекта QEMU если что.
(Reply) (Parent) (Thread)
[User Picture]From: bftoday
2017-03-24 11:18 am (UTC)

самое лучшее название гипервизора

hyperputin.
потому что putin, падла, everywhere, как только успевает.
(Reply) (Thread)
From: karpion
2017-04-12 12:48 am (UTC)
Софтверу внутри виртуальной машины кажется, что ему принадлежит вся реальная машина, все ее порты ввода/вывода, память и прерывания.
Дебильный путь, обусловленный тем, что писюки строились по принципу "примитивный BIOS загружает операционку с диска". Если бы изначально операционка была в ПЗУ - гостевые операционки писались бы так, чтобы учитывать присутствие хозяйской систьемы, и большинство запросов передавали бы хозяйке.

Даже на небольшом чипе для IoT могут одновременно работать скажем встроенный Линукс и скажем очень защищенный код для работы с финансовыми транзакциями. Теперь если пользователь установит взломанную операционную систему
А отуда вообще дурная идея о том, что юзер может устанавливать систему?

Это становится особенно важно в случае интернета вещей, когда подброшенный в домашнюю сеть утюг или тостер может теоретически обмениваться информацией с главным компьютером хозяина.
Ну, а тут как поможет виртуализация?
(Reply) (Thread)
[User Picture]From: mnogo_hodovka
2017-11-25 09:54 am (UTC)
Скажите, Юрий, а существуют ли вообще в природе какие-либо средства формальной верификации VHDL-кода?
(Reply) (Thread)
[User Picture]From: panchul
2017-11-25 04:23 pm (UTC)
Конечно. Model checking, equivalence checking - см. напр. https://www.synopsys.com/verification/static-and-formal-verification/formality-and-formality-ultra.html
(Reply) (Parent) (Thread)