Development of Virtual Mashines

Major: System Programming
Code of subject: 7.123.02.O.010
Credits: 4.00
Department: Electronic Computing Machines
Lecturer: PhD, associate professor Botchkaryov Oleksy Yuriyovich
Semester: 2 семестр
Mode of study: денна
Мета вивчення дисципліни: To provide students with a clear and systematic understanding of the means of system and process virtualization of computer systems and computing environments, to provide basic knowledge of the principles of building virtual machines at the level of system and application software; provide skills in creating and using virtual machines.
Завдання: General competences: ZK2. Ability to abstract thinking, analysis and synthesis. ZK4. Ability to search, process and analyze information from various sources. Professional competences: SK3. Ability to design computer systems and networks taking into account objectives, constraints, technical, economic and legal aspects. SK5. Ability to build architecture and create system and application software of computer systems and networks. SK10. Ability to identify, classify and describe the operation of software and technical tools, computer systems, networks and their components.
Learning outcomes: Learning outcomes according to the educational program: PH3. Build and research models of computer systems and networks, evaluate their adequacy, determine applicability limits. PH5. Develop and implement projects in the field of computer engineering and related interdisciplinary projects taking into account engineering, social, economic, legal and other aspects. PH8. Apply knowledge of technical characteristics, design features, purpose and rules of operation of software and technical means of computer systems and networks to solve complex problems of computer engineering and related problems. The results of studying the discipline: - know the principles of creating and using virtual machines, hypervisors and container virtualization software; - know how to use the means of system and process virtualization of computer systems and computing environments; - know the methods and means of building virtual machines at the level of system and application software; - have practical skills in working with applied software interfaces and libraries of system and process virtualization; - be able to design and implement various schemes of system and process virtualization using software interfaces and virtual machine development platforms; - have practical skills in creating, debugging and using virtual machines.
Required prior and related subjects: Prerequisites: Computer architecture, System programming. Corequisites: Research and design of software systems.
Summary of the subject: The "Designing of Virtual Machines" discipline aims to provide students with a clear and systematic understanding of the means of system and process virtualization of computer systems and computing environments, to provide basic knowledge about the principles of building virtual machines at the level of system and application software; provide skills in creating and using virtual machines. As a result of mastering the study material of the discipline, students should know the general principles of building and using means of system and process virtualization of computer systems and computing environments, know the basic algorithms and methods of designing hardware and software components of virtual system and process machines, the internal mechanisms of the functioning of these machines, methods verification of their work, to understand the conceptual bases of functioning of system and application software of virtual machines, to be able to work with modern virtual machines and means of hardware and software virtualization. To master this discipline, knowledge of the following disciplines is necessary: ??"Computer Architecture", "System Programming".
Опис: 1. Virtual machines and virtualization. Virtualization technologies and methods of their application. The concept of virtualization. Classification of virtualization methods and technologies. Application of virtualization technologies. Provision and hardware support of virtualization. Hardware virtualization problem. Trap-and-Emulate. Binary translation (Binary Translation). Hardware support for virtualization. Hypervisors. Hypervisor "Type 0" (Type-0 hypervisor). Type-1 hypervisor. Type-2 hypervisor. Paravirtualization. Emulation. Containerization. Software virtualization. 2. Hardware virtualization. KVM hardware virtualization technology. KVM hardware support and configuration. Managing virtualization with libvirt. QEMU software emulator. Using the software emulator QEMU. Organization of KVM functioning. KVM software interface. Setting up virtualization software. Creating a virtual machine (virt-install). Automation of virtual machine creation. Using the virsh management console. Using virt-manager. Cloning of virtual machines. Creating snapshots of virtual machines. Using snapshots of virtual machines. Provision of migration of virtual machines. Dynamic migration of virtual machines. Dynamic VM migration using KVM and libvirt. Computer network virtualization (network virtualization). Computer network virtualization technologies. Internal network virtualization using libvirt. Setting up a libvirt virtual network using virsh. Using TUN/TAP virtual network drivers. Open vSwitch virtual network switch. SR?IOV device virtualization technology. Network virtualization using MacVTap. 3. Containerization. Virtualization at the operating system level. Technologies and methods of containerization. Linux namespaces system resource allocation mechanism. The cgroups system resource management mechanism. Linux Containers (LXC) containerization system. Docker containerization technology. Automating work with containers using Kubernetes. Software configuration management systems. 4. Software virtualization. Principles of software virtualization. Software virtualization technologies. JVM virtual machine. JIT compilation. Adaptive optimization of software code. LLVM software technology. Components of LLVM software technology. The structure of LLVM IR. How to work with LLVM tools. LLVM usage examples.
Assessment methods and criteria: Written reports on laboratory work, the verbal questioning (40%). Final assessment (60 %, control method, exam): written-verbal form (60%).
Критерії оцінювання результатів навчання: The semester grade is issued on the condition that the student completes the study plan. The semester grade is formed from the results of current monitoring of laboratory work and semester testing. The result of the semester testing is the product of the result of the semester test in the virtual learning environment and the coefficient of the lecture tests in the virtual learning environment. Maximum score in points - 100. Current control - 40. Examination control: written component - 50, verbal component - 10.
Порядок та критерії виставляння балів та оцінок: 100–88 points – (“excellent”) is awarded for a high level of knowledge (some inaccuracies are allowed) of the educational material of the component contained in the main and additional recommended literary sources, the ability to analyze the phenomena being studied in their interrelationship and development, clearly, succinctly, logically, consistently answer the questions, the ability to apply theoretical provisions when solving practical problems; 87–71 points – (“good”) is awarded for a generally correct understanding of the educational material of the component, including calculations, reasoned answers to the questions posed, which, however, contain certain (insignificant) shortcomings, for the ability to apply theoretical provisions when solving practical tasks; 70 – 50 points – (“satisfactory”) awarded for weak knowledge of the component’s educational material, inaccurate or poorly reasoned answers, with a violation of the sequence of presentation, for weak application of theoretical provisions when solving practical problems; 49-26 points - ("not certified" with the possibility of retaking the semester control) is awarded for ignorance of a significant part of the educational material of the component, significant errors in answering questions, inability to apply theoretical provisions when solving practical problems; 25-00 points - ("unsatisfactory" with mandatory re-study) is awarded for ignorance of a significant part of the educational material of the component, significant errors in answering questions, inability to navigate when solving practical problems, ignorance of the main fundamental provisions.
Recommended books: 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.
Уніфікований додаток: Lviv Polytechnic National University ensures the realization of the right of persons with disabilities to obtain higher education. Inclusive educational services are provided by the Service of accessibility to learning opportunities "Without restrictions", the purpose of which is to provide permanent individual support for the educational process of students with disabilities and chronic diseases. An important tool for the implementation of the inclusive educational policy at the University is the Program for improving the qualifications of scientific and pedagogical workers and educational and support staff in the field of social inclusion and inclusive education. Contact at: St. Karpinsky, 2/4, 1st floor, room 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: The policy regarding the academic integrity of the participants of the educational process is formed on the basis of compliance with the principles of academic integrity, taking into account the norms "Regulations on academic integrity at the Lviv Polytechnic National University" (approved by the academic council of the university on June 20, 2017, protocol No. 35).