Проєктування віртуальних машин

Спеціальність: Комп'ютерні системи та мережі
Код дисципліни: 7.123.01.O.010
Кількість кредитів: 4.00
Кафедра: Електронні обчислювальні машини
Лектор: к.т.н., доц. каф. ЕОМ Бочкарьов Олексій Юрійович
Семестр: 2 семестр
Форма навчання: денна
Мета вивчення дисципліни: Виробити у студентів чітке та систематизоване уявлення про засоби системної та процесної віртуалізації комп’ютерних систем та обчислювальних середовищ, подати основні знання про принципи побудови віртуальних машин на рівні системного та прикладного програмного забезпечення; надати навички в створенні та використанні віртуальних машин.
Завдання: Загальні компетентності: ЗК2. Здатність до абстрактного мислення, аналізу і синтезу. ЗК4. Здатність до пошуку, оброблення та аналізу інформації з різних джерел. Фахові компетентності: СК3. Здатність проектувати комп’ютерні системи та мережі з урахуванням цілей, обмежень, технічних, економічних та правових аспектів. СК5. Здатність будувати архітектуру та створювати системне і прикладне програмне забезпечення комп’ютерних систем та мереж. СК10. Здатність ідентифікувати, класифікувати та описувати роботу програмно-технічних засобів, комп’ютерних систем, мереж та їхніх компонентів.
Результати навчання: Результати навчання відповідно до освітньої програми: РН3. Будувати та досліджувати моделі комп’ютерних систем і мереж, оцінювати їх адекватність, визначати межі застосовності. РН5. Розробляти і реалізовувати проекти у сфері комп’ютерної інженерії та дотичні до неї міждисциплінарні проєкти з урахуванням інженерних, соціальних, економічних, правових та інших аспектів. РН8. Застосовувати знання технічних характеристик, конструктивних особливостей, призначення і правил експлуатації програмно-технічних засобів комп’ютерних систем та мереж для вирішення складних задач комп’ютерної інженерії та дотичних проблем. Результати вивчення дисципліни: - знати принципи створення та використання віртуальних машин, гіпервізорів та програмних засобів контейнерної віртуалізації; - знати способи використання засобів системної та процесної віртуалізації комп’ютерних систем та обчислювальних середовищ; - знати методи та засоби побудови віртуальних машин на рівні системного та прикладного програмного забезпечення; - мати практичні навички по роботі з прикладними програмними інтерфейсами та бібліотеками системної та процесної віртуалізації; - вміти проектувати та реалізувати різні схеми системної та процесної віртуалізації за допомогою програмних інтерфейсів та платформ розробки віртуальних машин; - мати практичні навички по створенню, налагодженню роботи та використання віртуальних машин.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: Попередні: Архітектура комп’ютерів, Системне програмування. Супутні: Дослідження і проектування програмних систем.
Короткий зміст навчальної програми: Дисципліна “Проектування віртуальних машин” ставить на меті виробити у студентів чітке та систематизоване уявлення про засоби системної та процесної віртуалізації комп’ютерних систем та обчислювальних середовищ, подати основні знання про принципи побудови віртуальних машин на рівні системного та прикладного програмного забезпечення; надати навички в створенні та використанні віртуальних машин. В результаті освоєння учбового матеріалу дисципліни студенти повинні знати загальні принципи побудови та використання засобів системної та процесної віртуалізації комп’ютерних систем та обчислювальних середовищ, знати основні алгоритми та методи проектування апаратно-програмних компонент віртуальних системних і процесних машин, внутрішні механізми функціонування цих машин, способи верифікації їх роботи, розуміти концептуальні основи функціонування системного та прикладного програмного забезпечення віртуальних машин, вміти працювати з сучасними віртуальними машинами та засобами апаратної і програмної віртуалізації. Для освоєння даної дисципліни необхідне знання таких дисциплін: “Архітектура комп’ютерів”, “Системне програмування”.
Опис: 1. Віртуальні машини та віртуалізація. Технології віртуалізації та способи їх застосування. Концепція віртуалізації. Класифікація способів та технологій віртуалізації. Застосування технологій віртуалізації. Забезпечення та апаратна підтримка віртуалізації. Проблема апаратної віртуалізації. Перехоплення та емуляція (Trap-and-Emulate). Бінарна трансляція (Binary Translation). Апаратна підтримка віртуалізації. Гіпервізори. Гіпервізор «Тип 0» (Type-0 hypervisor). Гіпервізор «Тип 1» (Type-1 hypervisor). Гіпервізор «Тип 2» (Type-2 hypervisor). Паравіртуалізація. Емуляція. Контейнеризація. Програмна віртуалізація. 2. Апаратна віртуалізація. Технологія апаратної віртуалізації KVM. Апаратна підтримка та налаштування KVM. Управління віртуалізацією за допомогою libvirt. Програмний емулятор QEMU. Використання програмного емулятора QEMU. Організація функціонування KVM. Програмний інтерфейс KVM. Налаштування програмних засобів віртуалізації. Створення віртуальної машини (virt-install). Автоматизація створення віртуальної машини. Використання консолі управління virsh. Використання virt-manager. Клонування віртуальних машин. Створення знімків віртуальних машин. Використання знімків віртуальних машин. Забезпечення міграції віртуальних машин. Динамічна міграція віртуальних машин. Динамічна міграція ВМ з викристанням KVM та libvirt. Віртуалізація комп’ютерної мережі (network virtualization). Технології віртуалізації комп’ютерної мережі. Внутрішня віртуалізація мережі засобами libvirt. Налаштування віртуальної мережі libvirt з використанням virsh. Використання віртуальних мережних драйверів TUN/TAP. Віртуальний мережний комутатор Open vSwitch. Технологія віртуалізації пристроїв SR?IOV. Віртуалізація мережі з використанням MacVTap. 3. Контейнеризація. Віртуалізація на рівні операційної системи. Технології та способи контейнеризації. Механізм розподілу системних ресурсів Linux namespaces. Механізм управління системними ресурсами cgroups. Система контейнеризації Linux Containers (LXC). Технологія контейнеризації Docker. Автоматизація роботи з контейнерами за допомогою Kubernetes. Системи управління конфігурацією програмного забезпечення. 4. Програмна віртуалізація. Принципи програмної віртуалізації. Технології програмної віртуалізації. Віртуальна машина JVM. JIT-компіляція. Адаптивна оптимізація програмного коду. Програмна технологія LLVM. Компоненти програмної технології LLVM. Структура LLVM IR. Порядок роботи з інструментами LLVM. Приклади використання LLVM.
Методи та критерії оцінювання: Письмові звіти з лабораторних робіт, усне опитування (40%). Підсумковий контроль (60 %, контрольних захід, екзамен): письмово-усна форма (60%).
Критерії оцінювання результатів навчання: Семестрова оцінка виставляється за умови виконання студентом навчального плану. Семестрова оцінка формується з результатів поточного контролю виконання лабораторних робіт і семестрового тестування. Результат семестрового тестування є добутком результату семестрового тесту у віртуальному навчальному середовищі та коефіцієнта лекційних тестів у віртуальному навчальному середовищі. Максимальна оцінка в балах - 100. Поточний контроль (лаб. Роботи) - 40. Екзаменаційний контроль: письмова компонента - 50, усна компонента - 10.
Порядок та критерії виставляння балів та оцінок: 100–88 балів – («відмінно») виставляється за високий рівень знань (допускаються деякі неточності) навчального матеріалу компонента, що міститься в основних і додаткових рекомендованих літературних джерелах, вміння аналізувати явища, які вивчаються, у їхньому взаємозв’язку і роз витку, чітко, лаконічно, логічно, послідовно відповідати на поставлені запитання, вміння застосовувати теоретичні положення під час розв’язання практичних задач; 87–71 бал – («добре») виставляється за загалом правильне розуміння навчального матеріалу компонента, включаючи розрахунки , аргументовані відповіді на поставлені запитання, які, однак, містять певні (неістотні) недоліки, за вміння застосовувати теоретичні положення під час розв’язання практичних задач; 70 – 50 балів – («задовільно») виставляється за слабкі знання навчального матеріалу компонента, неточні або мало аргументовані відповіді, з порушенням послідовності викладення, за слабке застосування теоретичних положень під час розв’язання практичних задач; 49–26 балів – («не атестований» з можливістю повторного складання семестрового контролю) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння застосувати теоретичні положення під час розв’язання практичних задач; 25–00 балів – («незадовільно» з обов’язковим повторним вивченням) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння орієнтуватися під час розв’язання практичних задач, незнання основних фундаментальних положень.
Рекомендована література: 1. Matthew Portnoy, Virtualization Essentials, 2nd Edition, Sybex, 2016. – 336 p. 2. Shashank Mohan Jain, Linux Containers and Virtualization: A Kernel Perspective, Apress, 2020. – 164 p. 3. Edouard Bugnion, Jason Nieh, Dan Tsafrir, Hardware and Software Support for Virtualization, ? Morgan & Claypool Publishers, 2017. – 208 p. 4. Xiao-Feng Li, Advanced Design and Implementation of Virtual Machines, CRC Press, 2016. – 464 p. 5. Min-Yih Hsu, LLVM Techniques, Tips, and Best Practices, Packt Publishing, 2021. – 370 p. 6. Kai Nacke, Learn LLVM 12: A beginner's guide to learning LLVM compiler tools and core libraries with C++, Packt Publishing, 2021. – 392 p. 7. Tim Lindholm, Frank Yellin. The Java Virtual Machine Specification, Java SE 7 Edition, 3rd Edition, Addison-Wesley Professional, 2013. - 608 p. 8. W. David Ashley, Foundations of Libvirt Development: How to Set Up and Maintain a Virtual Machine Environment with Python, Apress, 2019. – 408 p. 9. SK Singh, Cloud Computing and AWS Introduction: Docker, AWS Cloud Platform, Serverless Computing, Virtualization, Virtual Machine, Hypervisor, 2021 – 237 p. 10. Sachin Seth, Understanding Java Virtual Machine, Alpha Science International, 2013. – 318 p. 11. Vedran Dakic, Humble Devassy Chirammal, Prasad Mukhedkar, Anil Vettathu, Mastering KVM Virtualization: Design expert data center virtualization solutions with the power of Linux KVM, 2nd Edition, Packt Publishing, 2020. – 686 p. 12. Ted Simpson, Jason Novak, Hands on Virtual Computing, 2nd Edition, Cengage Learning, 2017. – 480 p. 10. Tuna Peyo, VMware Workstation Player: A Beginner's Guide: Your first steps into virtualization, 2017. – 190 p. 13. Robin Catling, The VirtualBox Networking Primer: Connecting and Configuring Virtual Machines, Proactivity Press, 2020. – 134 p. 14. Alan Hohn, The Book of Kubernetes: A Complete Guide to Container Orchestration, No Starch Press, 2022. – 384 p.
Уніфікований додаток: Національний університет «Львівська політехніка» забезпечує реалізацію права осіб з інвалідністю на здобуття вищої освіти. Інклюзивні освітні послуги надає Служба доступності до можливостей навчання «Без обмежень», метою діяльності якої є забезпечення постійного індивідуального супроводу навчального процесу студентів з інвалідністю та хронічними захворюваннями. Важливим інструментом імплементації інклюзивної освітньої політики в Університеті є Програма підвищення кваліфікації науково-педагогічних працівників та навчально-допоміжного персоналу у сфері соціальної інклюзії та інклюзивної освіти. Звертатися за адресою: вул. Карпінського, 2/4, І-й н.к., кімн. 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: Політика щодо академічної доброчесності учасників освітнього процесу формується на основі дотримання принципів академічної доброчесності з урахуванням норм «Положення про академічну доброчесність у Національному університеті «Львівська політехніка» (затверджене вченою радою університету від 20.06.2017 р., протокол № 35).