Operating systems are the layer of abstraction between the software and hardware. In particular an Operating System will tackle questions like how are instructions scheduled onto a processor, how is memory allocated to a process, what sort of I/O facilities are provided to processes, how do multiple processes share these resources while maximizing performance and maintaining security etc.