lguest: виртуализация изнутри::Журнал СА 11.2013
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

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

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

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

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6205
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6912
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4196
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2996
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3799
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3809
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6304
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3157
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3450
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7270
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10633
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12356
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13990
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9115
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7069
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5379
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4610
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3420
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3149
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3396
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3018
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 lguest: виртуализация изнутри

Архив номеров / 2013 / Выпуск №11 (132) / lguest: виртуализация изнутри

Рубрика: Карьера/Образование /  Пятая пара

Валентин Синицын ВАЛЕНТИН СИНИЦЫН, эксперт в области системных и сетевых технологий Linux, преподаватель. Доцент Уральского федерального университета, valentine.sinitsyn@gmail.com

lguest: виртуализация изнутри

Разберемся, как работает один из самых простых гипервизоров, когда-либо выходивших для платформы x86

Согласно утверждению Артура Кларка «любая достаточно развитая технология неотличима от магии», и, по довольно распространенному мнению, мониторы виртуальных машин (ВМ) или гипервизоры попадают как раз в эту категорию. Конечно, есть и специализированная литература [1], и курсы на профильных факультетах, но это все не то, что студент или просто интересующийся мог бы освоить за дождливые выходные.

Такое положение вещей едва ли идет на пользу индустрии, и, возможно, поэтому Пол «Ржавый» Рассел (Rusty Russel), тот самый, которому мы обязаны Netfilter, создал lguest [2] – паравиртуализатор архитектуры x86 для Linux, умещающийся в 5000 строк (на C и ассемблере), игрушечный, но полностью работоспособный и предназначенный специально для изучения. Он не блещет производительностью или возможностями, но использует ту же инфраструктуру, что и промышленные решения, например, Xen или KVM. lguest входит в официальные релизы ядра Linux начиная с 2.6.23, а не так давно его код был реорганизован и подготовлен к портированию на архитектуры, отличные от x86. Все это делает проект очень интересным для тех, кто хочет разобраться, как же на самом деле работает гипервизор.

В этой статье мы пошагово, с привязкой к исходному коду, рассмотрим основные операции, выполняемые lguest. Мы предполагаем, что вы успели ознакомиться со статьей «Виртуализация на платформе x86», опубликованной в предыдущем выпуске «Пятой пары» [6], и термины вроде «Trap and Emulate» или «паравиртуализированные драйверы» не вызывают вопросов.

Путеводитель по ядру

Изучение исходных текстов большого проекта, такого как Linux, невозможно без надежного средства навигации. Стандартным инструментом для этого является Cscope: перейдите в каталог с исходными текстами ядра и скомандуйте «make cscope; cscope», чтобы получить возможность искать определения функций, места, откуда они вызываются, быстро переходить к нужному файлу и т.п. Аналогичный сервис можно найти онлайн на lxr.linux.no или lxr.free-electrons.com. Имейте в виду, что эти инструменты ориентированы на C, поэтому могут спасовать, когда речь идет об ассемблере и скриптах компоновщика.

Нехорошие инструкции

Давайте посмотрим, что происходит в ядре при выполнении одной из «плохих» инструкций, нарушающих принцип Trap and Emulate – к примеру, пары pushf/popf. Для паравиртуализации ядра Linux lguest использует инфраструктуру paravirt_ops, применяемую также и Xen. Она представляет собой набор структур, хранящих указатели на функции. Когда ядро делает что-то потенциально интересное для гипервизора, вызывается одна из таких функций (в дальнейшем мы будем называть их виртуальными методами), которая в зависимости от окружения превращается или в обращение к монитору ВМ, или в родную ассемблерную инструкцию.

Для сохранения флагов ядро Linux вызывает функцию local_save_flags(), сводящуюся в конечном итоге к arch_local_save_flags(). Последняя определена в arch/x86/include/asm/irqflags.h следующим образом (здесь и далее используются фрагменты кода ядра Linux 3.11; комментарии удалены для экономии места):

#ifdef CONFIG_PARAVIRT

#include <asm/paravirt.h>

#else

static inline notrace unsigned long arch_local_save_flags(void)

{

return native_save_fl();

}

Если ядро было скомпилировано без поддержки паравиртуализации (CONFIG_PARAVIRT не определен), вызывается native_save_fl(), эквивалентная двум ассемблерным инструкциям:

pushf;

pop flags

где flags – возвращаемая функцией локальная переменная. В противном случае arch_local_save_flags() превращается в:

static inline notrace unsigned long arch_local_save_flags(void)

{

return PVOP_CALLEE0(unsigned long, pv_irq_ops.save_fl);

}

Статью целиком читайте в журнале «Системный администратор», №11 за 2013 г. на страницах 84-90.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru