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):  Tu 1-3pm                                                                              


Welcome students! ... to the Virtual Machines course, edition Spring 2014.  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:
Ram Charan Mohan  
email: rcm372 (at)

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

Mailing List

Sign up for the Mailman mailing list for the course. If the system has not already signed you.
You can do so by clicking here. Please follow the mailing list etiquette. 
  • Use the Reply command to contribute to the current thread, but NOT to start another topic.
  • If quoting a previous message,  try to trim off irrelevant parts.
  • Use a descriptive Subject: field when starting a new topic.
  • Do not use one message to ask two unrelated questions.
  • Do NOT make the mistake of sending your completed project assignment to the mailing list!

  • Lectures

    11/29So ... What is a Virtual Machine?
    • chp 1
    22/5The Art of Emulation
    • 2.1 -2.3, 2.5-2.7
    • skim: 2.4, 2.7-2.8
    32/12Process VM- I
    • 3.1, 3.3, 3.4.1, 3.5, 3.7, 3.8
    • skim: 3.2, 3.6
    hw1 assigned
    42/19Process VM-II
    • 4.1-4.3
    4+2/26Process VM-II (cont'd)hw2 assigned
    53/5Case Studies of  Process VMshw3 assigned
    63/12Case Studies of  Process VMs
    3/19No class - Spring Recess
    73/26HLL VM  - I
    • Intro + 5.1, 5.3.1, 5.3.2. 5.3.5, 6.3
    • skim: 5.3.3, 5.3.4
    84/2HLL VM - II
    • 5.5.1, 6.6
    • skim: 5.5.2, 5.5.3, 6.7
    hw4 assigned
    94/9Co-designed VMs
    • Intro + 7.1, 7.3, 7.6
    • skim: 7.4, 7.7, 7.8
    104/16System VMs - I
    • Intro + 8.1-8.1.4, 8.2-8.2.2
    114/23System VMs - II
    • 8.2.3-8.2.5, 8.3, 8.4-8.4.3
    • skim: 8.5
    124/30Advanced Topics
    • 9.1.2, 9.1.3, 9.2, 9.3.1, 9.3.3, 9.3.4
    • skim: chp 10


    hw1 due Feb 19th  sol  comments

    hw2 (programming) due Mar 4th

    hw3 (programming) due Mar 11th

    hw4  due Apr 9th sol  


    Suggested projects (can be done in groups up to 2 students)
    1. Given an address stream, design a profile that scans this stream and generates the following: CFG, block profile, edge profile, branch behavior.
    2. 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.
    3. 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.
    4. 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).
    5. Make a translator from ISA1 (e.g. MIPS R3000) to ISA2 (e.g. IA-32)
    6. Given an address stream, decide on code rearrangement to increase locality.
    7. A project of your choice (but need to discuss it with me first).
    All the reports below are to be emailed as pdf to the instructor and grader as well as hardcopy in class.
    The subject of the email: "VM project: phase x"  (where x is the phase number)

    Phase 1: Problem definition and challenges report (Due  April 2nd, 2014) [Grade 5%]

    Phase 2: Design report (Due April 16th, 2014) [Grade 10%]

    Phase 3: Project submission (Due April 30th, 2014) [Grade 15%]

    Interesting Links (Geeky stuff about VMs)

    kaffe virtual machine
    Java Virtual Machine Instruction Set