Lecture 3 :Modularity and virtualization

Scribes: Surya Mukkamalla & Sarah Wong


How do you improve a program?

  1. Increase block size (read multiple sections of data)

  2. Overlap I/O with computation

  3. Switch to disc I/O instead of the very old and slow program I/O

  4. Faster hard drive, SSD (Solid State Drive), instead of disc
  5. Go RAID (Redundant Array of Independent Disks) - or basically parallel disc reading

ALL these changes have a BIG problem: They require us to change our code to incorporate the ideas. It is too much of a pain to change our programs systematically; too much of a pain to run programs simultaneously. Also if one program fails, the other ones will follow. Instead we should use MODULARITY


Modularity

Module Abstraction

Comparing Fact Function Calls

Image cannot be loaded
What can go wrong with function calls?
  1. Hard to change conventions - complete recompilation
  2. Callee can stomp on caller's storage
  3. Caller is not insulated from callee disasters
  4. Caller can mess with callee - both sides must trust each other
  5. Callee can loop forever

Function calls are SOFT MODULARITY! We want HARD MODULARITY, which will protect modules from each other


Main Techniques for Hard Modularity

  1. Client-server or peer-to-peer
  2. Virtualization