Definition: software to operate/control a device connected to a computer

  • Serial ports
  • Printers
  • NICs
  • Storage controllers (e.g. SATA)


  • Abstract away specific hardware from users
    • Write software independently of the hardware
  • App developers don’t have to write code for every possible device
    • E.g. every make and model of printer.
  • Written for specific architecture
  • Might run in
    • User mode (errors can’t crash a computer as no access to memory used by kernel)
    • Kernel mode (errors in a badly written driver can crash a computer as direct access to

memory used by kernel)

Virtual Device Drivers

  • Emulate hardware e.g. old Soundblaster soundcard
  • E.g. older DOS programs can send interrupts etc. that

are handled by a virtual device driver