CSCI-GA.3033-016

Virtual Machines: Concepts and Applications

Prof. Mohamed Zahran   (aka Prof. Z)
mzahran AT cs DOT nyu DOT edu
 Wednesdays: 5:10PM — 7:00PM   WWH 312
                                                                              Office Hours (WWH 320):  Tuesdays 2-4pm                                                                             


Announcements

Welcome students! ... to the Virtual Machines course, edition Spring 2017.  I will keep updating this page regularly. If you have questions related to this course feel free to email me. Here is some basic information:

Virtualization technology from VMware, IBM, Xen, Microsoft, and others is an indication of the importance of this technology, especially in this era where almost everything is in the cloud. Virtualization became the IT world's hottest trend in recent years. Have you ever wondered how you can run multiple operating systems, at the same time, on a single physical system and share the underlying hardware resources? How does your operating system see a hardware that differs from the actual hardware, and why we need to do so? What is a virtual server? Virtual machine is the answer to all that and much more. In this course we will study the design and implementation of virtual machines, virtual machine monitors (aka hypervisors), as well other recent trends in virtualization. We will study virtual machines across the disciplines that use them: operating systems, programming languages, and computer architecture.

Our grader: Sharan Agrawal  sa4413 AT NYU dot EDU  

Final exam: May 10th, 5:10-7pm WWH 312

Getting in Touch

By order of preference

Lectures

# Date Lecture Reading Comments
1 1/25 So ... What is a Virtual Machine?
  • chp 1
2 2/1 The Art of Emulation
  • beginning chp 2 - 2.4.2
  • 2.5
  • skim: 2.6-2.8
3 2/8 The Art of Emulation (cont'd)


  • hw1 assigned
4 2/15 Process VM- I
  • beginning chp 3 - 3.1, 3.3, 3.5.2
  • skim: 3.2,
5 2/22 Process VM-II
  • 4.1-4.3
6 3/1 Case Studies of  Process VMs
7 3/8 Case Studies of  Process VMs (cont'd)
3/15 No class - Spring Recess
  • hw3 assigned
8 3/22 HLL VM- I
  • Intro
  • 5.1-5.2
  • 6.3
9 3/29 HLL VM II
  • 6.6
  • hw4 assigned
10 4/5 System VMs
  • Intro + 8.1-8.1.4
  • 8.2-8.2.1
  • 8.2.3-8.2.4
11 4/12 System VMs (cont'd)
Advanced  Topics
12 4/19 Advanced  Topics
13 4/26 Project Presentations
14 5/3 Revision

Assignments


Project

Two deliverables:
Format of each presentation:

Duration
: 15 minutes (10 mins presentation + 5 Q&A)
Number of slides (not including the title slide):  7 slides
1. Problem definition (1 slide)
2. Challenges (1 slide)
3. How did you implement it given the challenges? (2 slides)
4. Results (2 slides)
5. The conclusions you can draw from the slides (1 slide)

The presentations will be done in the following oder:

Youngsun Kim
Project: Make a translator from ISA1  to ISA2 

Nikita Sharma 
Project: Make a translator from ISA1  to ISA2 

Yuheng Zhan 
Yixian Fu 
Project: Make a translator from ISA1  to ISA2 

Zhe Xu
Project: Given an address stream, design a profile that scans this stream and generates the following: CFG, block profile, edge profile, branch behavior.

Zhen Sun
Project: Given an address stream, decide on code rearrangement to increase locality.

Aric Werner 
Project: Given an assembly (in some ISA) file, emulate it on the x86 machine, generating the exact output as if the initial code is running on the native machine.

Ramani Kothadia 
Project: Use PIN to generate start and end addresses of dynamic blocks and the frequency of each one dynamically. Then form superblocks (using profiling all blocks and a heuristic and compare the two).

Gowtham Goli
Lakshay Sharma 
Project: Given specs of dynamic basic blocks (start address, size in bytes, end address, number of instructions) as well as the stream of their execution and the code cache size, design a code cache simulator with replacement policy to reduce code cache miss.



Interesting Links (Geeky stuff about VMs)

Virtualbox
virt-manager
kaffe virtual machine
PIN
Valgrind
Dynamo
DynamoRIO
LLVM
Java Virtual Machine Instruction Set