Software designed to control the hardware of a specific data-processing system in order to allow users and application programs to make use of it.