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

Спеціальність: Системне програмування
Код дисципліни: 7.123.02.O.010
Кількість кредитів: 4.00
Кафедра: Електронні обчислювальні машини
Лектор: к.т.н., доц. каф. ЕОМ Бочкарьов Олексій Юрійович
Семестр: 2 семестр
Форма навчання: денна
Мета вивчення дисципліни: Виробити у студентів чітке та систематизоване уявлення про засоби системної та процесної віртуалізації комп’ютерних систем та обчислювальних середовищ, подати основні знання про принципи побудови віртуальних машин на рівні системного та прикладного програмного забезпечення; надати навички в створенні та використанні віртуальних машин.
Завдання: Загальні компетентності: ЗК2. Здатність до абстрактного мислення, аналізу і синтезу. ЗК4. Здатність до пошуку, оброблення та аналізу інформації з різних джерел. Фахові компетентності: СК3. Здатність проектувати комп’ютерні системи та мережі з урахуванням цілей, обмежень, технічних, економічних та правових аспектів. СК5. Здатність будувати архітектуру та створювати системне і прикладне програмне забезпечення комп’ютерних систем та мереж. СК10. Здатність ідентифікувати, класифікувати та описувати роботу програмно-технічних засобів, комп’ютерних систем, мереж та їхніх компонентів.
Результати навчання: Результати навчання відповідно до освітньої програми: РН3. Будувати та досліджувати моделі комп’ютерних систем і мереж, оцінювати їх адекватність, визначати межі застосовності. РН5. Розробляти і реалізовувати проекти у сфері комп’ютерної інженерії та дотичні до неї міждисциплінарні проєкти з урахуванням інженерних, соціальних, економічних, правових та інших аспектів. РН8. Застосовувати знання технічних характеристик, конструктивних особливостей, призначення і правил експлуатації програмно-технічних засобів комп’ютерних систем та мереж для вирішення складних задач комп’ютерної інженерії та дотичних проблем. Результати вивчення дисципліни: - знати принципи створення та використання віртуальних машин, гіпервізорів та програмних засобів контейнерної віртуалізації; - знати способи використання засобів системної та процесної віртуалізації комп’ютерних систем та обчислювальних середовищ; - знати методи та засоби побудови віртуальних машин на рівні системного та прикладного програмного забезпечення; - мати практичні навички по роботі з прикладними програмними інтерфейсами та бібліотеками системної та процесної віртуалізації; - вміти проектувати та реалізувати різні схеми системної та процесної віртуалізації за допомогою програмних інтерфейсів та платформ розробки віртуальних машин; - мати практичні навички по створенню, налагодженню роботи та використання віртуальних машин.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: Попередні: Архітектура комп’ютерів, Системне програмування. Супутні: Дослідження і проектування програмних систем.
Короткий зміст навчальної програми: Дисципліна “Проектування віртуальних машин” ставить на меті виробити у студентів чітке та систематизоване уявлення про засоби системної та процесної віртуалізації комп’ютерних систем та обчислювальних середовищ, подати основні знання про принципи побудови віртуальних машин на рівні системного та прикладного програмного забезпечення; надати навички в створенні та використанні віртуальних машин. В результаті освоєння учбового матеріалу дисципліни студенти повинні знати загальні принципи побудови та використання засобів системної та процесної віртуалізації комп’ютерних систем та обчислювальних середовищ, знати основні алгоритми та методи проектування апаратно-програмних компонент віртуальних системних і процесних машин, внутрішні механізми функціонування цих машин, способи верифікації їх роботи, розуміти концептуальні основи функціонування системного та прикладного програмного забезпечення віртуальних машин, вміти працювати з сучасними віртуальними машинами та засобами апаратної і програмної віртуалізації. Для освоєння даної дисципліни необхідне знання таких дисциплін: “Архітектура комп’ютерів”, “Системне програмування”.
Опис: 1. Віртуальні машини. Комп'ютерні архітектури та історія віртуалізації. Основи віртуальних машин. Основні задачі створення та використання віртуальних машин. Класифікація віртуальних машин та засобів віртуалізації. Типи віртуальних машин. Процесні (прикладні) віртуальні машини. Системні віртуальні машини. 2. Емуляція: інтерпретація і бінарна трансляція. Основи інтерпретації. Ниткова інтерпретація. Перекодування і пряма ниткова. Інтерпретація. Інтерпретація CISC архітектури. Бінарна трансляція. Дослідження коду і динамічна трансляція. Продуктивність віртуальної машини. 3. Процесні віртуальні машини. Реалізація віртуальних машин. Сумісність. Проекція станів. Емуляція архітектури пам'яті. Емуляція виключних ситуацій. Емуляція операційних систем. Керування кодовим кешем. Системне оточення. 4. Архітектури мовних віртуальних машин. Віртуальна машина Java. Низькорівнева віртуальна машина LLVM та сучасні системи компіляції. Функціональна та логічна віртуальні машини (LISP, Prolog). Інтерфейси АРІ віртуальних платформ. Інфраструктура Microsoft Common Language Runtime (.NET). 5. Проектування програмно-апаратних віртуальних машин. Проекції пам'яті та множини регістрів. Само-модифікуючий і само-референсний коди. Підтримка кодового кеша. Реалізація прецизійних пасток. Введення/виведення. Принципи та механізми для програмно-апаратних віртуальної машини. Процесор Transmeta Crusoe. 6. Класичні системні віртуальні машини. Ключові концепції. Віртуалізація ресурсів: процесор, пам'ять, підсистема введення- виведення. Апаратні технології віртуалізації фірми Intel. 7. Реальна віртуалізація. Віртуалізатори CroossOver, VirtualBox,Virtual PC. та VMware Workstation. Гіпервізори Xen та KVM. Гіпервізори для серверів Microsoft Hyper-V та VMware ESX. Технологія віртуалізації Cloud.
Методи та критерії оцінювання: Письмові звіти з лабораторних робіт, усне опитування (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).