Introduction to Operating Systems
04 Jun 2019What is an Operating System?
An operating system is a layer of software between many applications and diverse hardware that:
-
Provides a hardware abstraction so an application doesn’t have to know details about the hardware. Otherwise an application saving a file to disk would have to know how the disk operates for example.
- Arbitrates access to resources among multiple applications:
- Sharing of resources.
- Isolation protects apps from each other.
- Provides protections:
- Isolation protects apps from each other.
- Isolation also protects the OS from apps.
- Isolation limits resource consumption by any one app.
A PC operating system consists of multiple components:
- scheduler
- virtual memory system
- file system
- device management
- other…
Different OS flavors have different design goals.
- Linux is a monolithic kernel: complex, contains many components
- Mach OS is a microkernel: only contains scheduler, memory manager, and inter-processes communication (messaging)
Protection in Operating Systems
-
Prevents applications from writing into privileged memory. -e.g. of another app or OS kernel.
-
Prevents applications from invoking privileged functions. -e.g. OS kernel functions.
Privileged Instructions Examples
- Memory address mapping
- Flush or invalidate data cache
- Invalidate TLB (Transition Lookaside Buffer) entries
- Load and read system registers
- Change processor modes from K to U
- Change the voltage and frequency of processors
- Halt/reset processor
- Perform I/O operations
What is a unit of work for an OS?
- Application
- Task
- Code -> placed into memory
- Data -> stored in memory
- OS data for task -> task descriptors
- Job
- Process
How can we access the OS functionality?
The Problem: If a task is protected from getting into the OS code and data, OS functionality is restricted from these tasks.
- How does the CPU know if a certain instruction should be allowed?
- How does the OS grant a task access to certain OS data structures, but not others?
- How can we switch from running the task’s code to running the OS’s code?
The Answer: We need to use a hardware assistant called the mode bit.
Kernel Mode vs. User Mode
Processors include a hardware mode bit that identifies whether the system is in user mode or supervisor/kernel mode. This requires extra support from the CPU hardware for this OS feature.
- Supervisor or kernel mode (mode bit = 0)
- Can execute all the machine instructions, including privileged instructions.
- Can reference all memory locations.
- Kernel executes in this mode.
- User mode (mode bit = 1)
- Can only execute a subset of non-privileged instructions.
- Can only reference a subset of memory locations.
- All applications run in user mode.
Multiple Rings/Modes of Privilege
- Intel x86 cPUs support four modes or rinds of privilege.
- Common configuration:
- OS like Linux or Windows runs in ring 0 (highest privilege), apps run in ring 3, and rings 1-2 are unused.
- Virtual machines are another possible configuration.
- VM’s hypervisor runs in ring 0, guest OS runs in ring 1 or 2, and apps run in ring 3.