backlink to all of my Software Engineering notes :)
sits between the hardware and programs. its job is to make sure programs run efficiently, but it has many goals which often conflict with each other
responsible for resource management and allocation
resources like CPU time or memory space are limited, so the OS must decide how to allocate & keep track of system resources
the OS is responsible for abstracting away the details of the hardware (so that coders don’t have to worry about hardware specifics)
multiple programs means that resources will be shared, so the OS creates and enforces the rules so everyone gets along
the “core” of the OS → the part that is always present in main memory and the central part that makes it all work
confidentiality, integrity, and availability
the OS must enforce these properties or else malicious users can exploit them
internal threats
enforce policies about responsible usage