A program responsible for handling low level communication between applications and computer hardware. This includes: