A collection of programs that controls the overall operation of a computer and performs such tasks as assigning places in memory to programs and data, processing interrupts, scheduling jobs and controlling the overall input/output of the system