software written by the developer of a hardware component that tells the operating system how to talk to and control the hardware.
provide specific interfaces between the os running a computer and hardware devices.
allow the computer to communicate with various different hardware devices