software written by the developer of a hardware component that tells the operating system how to talk to and control the hardware.
a piece of software that tells the operating system how to communicate with a device e.g. keyboard.
allow the computer to communicate with various different hardware devices