Portability comparison (1/3) Traditional "copy and modify" approach (SVR4, BSD) Leads to major maintenance headaches Different feature sets between platforms Much harder to support odd hardware combinations #ifdef approach (Mach) Less headaches than above, but $till difficult to support odd hardware Abstractions tend to be driver specific