Instructor: Mythili Vutukuru (mythili @ cse.iitb.ac.in) |
Virtualization and Cloud Computing (CS695) is a graduate-level course open to undergraduate and postgraduate students. A previous course on operating systems (CS347/CS333 for UGs, CS744 for PGs) is a hard pre-requisite. The course also involves significant hands-on programming, so an interest and aptitude for systems programming is highly desirable. Please talk to the instructor if you do not meet these criteria but still wish to take the class.
This course covers basic and advanced concepts related to the virtualization and how it enables the latest revolution of cloud computing. You will understand the various virtualization paradigms of full virtualization, para virtualization, and hardware-assisted virtualization, for CPU, memory, and I/O. You will also learn about containers and related concepts. The later part of the course will cover various advanced topics related to virtual machine live migration, modern cloud storage frameworks, and so on. The programming assignments in the course are designed to reinforce the concepts learnt in class.
System requirements: You must have access to a machine with a native Linux installation to solve the programming asignments in the course.
Related courses: Links to other related courses for which I have made lecture videos available:
Practice Problems: This PDF practice-problems.pdf contains some sample exam questions from the course offering at IIT Bombay.
Lecture# | Topic | Video | Slides | References | Programming Assignments |
1 | Introduction to the course | video | slides | ||
2 | Review of concepts from operating systems | video | slides |
|
|
3 | Techniques to design virtual machine monitors | video | slides | ||
4 | Hardware-assisted CPU virtualization in KVM/QEMU | video | slides |
|
Programming Assignment 1 |
5 | Full virtualization via dynamic binary translation | video | slides |
|
|
6 | Memory virtualization techniques | video | slides | ||
7 | I/O virtualization techniques | video | slides | ||
8 | Paravirtualization in Xen | video | slides | ||
9 | VM live migration | video | slides | Programming Assignment 2 | |
10 | VM checkpointing and cloning | video | slides | ||
11 | Containers: namespaces, cgroups, frameworks | video | slides | Programming Assignment 3 | |
12 | Introduction to the cloud | video | slides | ||
13 | Cloud storage: key-value stores: Dynamo | video | slides | ||
14 | Cloud storage: semi-structured data storage: Bigtable | video | slides | ||
15 | Cloud storage: application-specific optimizations: Haystack | video | slides | ||
16 | Cloud storage: caching: Memcache | video | slides |