As a software engineer, most of the code you write will be run by an operating system. Understanding the internals of operating systems will help you write more performant programs.
An operating system (OS) is the software that manages a computer’s resources for the computer’s users and their applications [1, P. 4].
An OS provides:
- Resource allocation
An OS is responsible for resource allocation. It must allocate finite memory and processors to running applications.
An OS must provide isolation. A bug in one program shouldn’t bring down the system, and users shouldn’t be able to access or change another user’s data [1, P. 9].
Sometimes isolated programs need to communicate with each other. An OS provides mechanisms for communication between running programs [1, P. 9].
-  T. Anderson and M. Dahlin, Operating Systems: Principles and Practice. 2012.