CS680V -- Virtualization
Prof. Kartik Gopalan
Computer Science, Binghamton University
[Syllabus]
[Lectures]
[Policies]
Virtualization has revolutionized modern computing and communication systems over the last decade. Virtualization techniques play a key role across a range of computing environments, from small mobile devices, embedded systems, and personal computers to large-scale data centers, enterprise networks, and cloud platforms besides influencing the emerging IoT and connected vehicle platforms. Virtualization techniques have fundamental functional, security, and performance implications across the computing stack, from processor architectures, operating systems, runtime systems, and networking infrastructure. This course will cover fundamental techniques as well as cutting-edge research problems in virtualization. Topics include:
- Architecture support for virtualization
- System virtual Machines
- Unikernels
- Microkernels
- Library Operating Systems
- Security and virtual environments
- Network Function Virtualization
- Live migration
- Virtualization-at scale in cloud computing and High-performance Computing
Course Information:
- Time: Friday 1:10PM to 4:10PM
- Location: ENGB G-14
- Instructor:Prof. Kartik Gopalan (kartik@bighamton.edu)
- Office Hours: Friday 12noon-1pm or by appointment.
Prerequisites:
- CS350 -- Undergraduate OS. You must be familiar with the fundamentals concepts in Operating Systems as covered in CS350.
- You must be proficient with C programming and use of debuggers (such as gdb).
- You must be comfortable working and programming in the Linux environment.
Evaluation Criteria:
- 50% - Paper summaries
- 50% - Presentation, leading discussions, and participation
Course Materials:
The primary source of course materials will be papers posted online on this website.
Recommended Material:
- Hardware and Software Support for Virtualization, Editors: Edouard Bugnion, Jason Nieh, and Dan Tsafrir. Synthesis Lectures in Computer Science, 2017. Morgan and Claypool Publishers. [PDF]
- Virtual Machines: Versatile Platforms for Systems and Processes, By James E. Smith Jim, Jr. Smith, Ravi Nair. Publisher Morgan Kaufmann. Excerpts available online.
- Modern Operating Systems, by Andrew Tanenbaum, Prentice Hall; 4th edition.
- Kernighan, Ritchie, The C Programming Language
- Linux Device Drivers, 3rd Edition by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. (This book is also available online at http://lwn.net/Kernel/LDD3/).
Credit hours and course expectations:
This is a 3-credit course, which means that students are expected to do at least 9 to 9.5 hours of course-related work or activity each week during the semester. This includes scheduled class lecture/discussion meeting times as well as time spent completing assigned readings, studying for tests and examinations, participating in lab sessions, preparing written assignments, and other course-related tasks.
[Syllabus]
[Lectures]
[Policies]
More lectures and slides will be added below as the course progresses.
Please clear your browser's cache and reload this page to see the latest listing of slides below.
- Introduction to Virtual Machines
- Principles of System Design
- Conditions for ISA Virtualizability
- Para-virtualization and Hybrid VMs: Disco, VMWare, Xen
- Unikernels
- Multi-kernels
- Barrelfish OS
- Library OS: Graphene
- Live Hypervisor Replacement
- Dune and Arrakis
- Elasticizing Linux via Joint Disaggregation of Memory and Computation
- Library OS for Containers
[Syllabus]
[Lectures]
[Policies]