How apps get things done
Apps request services through two related layers:- A high-level API (application programming interface): the functions and conventions apps call (for example, “save this file” or “play this sound”).
- A low-level kernel interface implemented as system calls: the controlled entry points the kernel exposes to perform hardware operations.
fopen() or std::ofstream may call open()/write() under the hood.
Quick practical check: you can observe system calls made by a utility with tools like strace:
ls rely on system calls such as getdents, stat, and write to list directory contents and print output.

Why this design?
There are three primary goals behind this separation of concerns:| Goal | What it prevents or enables |
|---|---|
| Safety | Prevents apps from performing arbitrary or malicious operations that could compromise the system or other apps. |
| Simplicity | Lets app developers rely on stable, well-documented APIs without needing to know hardware specifics. |
| Stability | Keeps the OS in control of resources, reducing crashes and data corruption when apps fail. |
B. The app requests services from the OS, which handles hardware access.
C. The OS only gets involved if the app crashes or needs memory. Correct answer: B — apps request services from the OS. The OS enforces permissions and carries out hardware access via system calls and drivers.
Input and output: normalized events
Every user action — tapping, typing, clicking, or swiping — starts as raw input from device drivers. The OS interprets those raw events (for example, determining a touch position or a keypress) and dispatches standardized event objects to the focused application or to system subsystems. Output is handled similarly: when an app wants to display text, render graphics, play audio, or trigger haptics, it requests those outcomes from the OS. The OS decides how to draw pixels, mix audio, or route haptics to the appropriate hardware.
Modern input modalities
Operating systems normalize many input types so apps can handle them consistently. Examples include:| Input modality | How the OS helps |
|---|---|
| Mouse / Touch / Keyboard | Translated into pointer and keyboard events with coordinates, button/state information. |
| Voice | Converted to text or commands via speech recognition frameworks. |
| Stylus | Provides pressure, tilt, and precise coordinates through a common API. |
| Game controllers | Exposed via standardized gamepad APIs with mapping for buttons/axes. |
| Eye tracking / Face tracking | Normalized gaze or face landmarks exposed as events or state objects. |

Accessibility as a core feature
Accessibility features are integrated into every major OS, not bolted on as optional extras. Common accessibility capabilities include:- High-contrast and large-text modes for low-vision users
- Screen readers and text-to-speech for blind users
- Closed captions and audio descriptions for hearing-impaired users
- Voice control and alternative input methods for motor impairments
- Speech-to-text and dictation for users with speech differences
Recap
- Users interact with the OS through graphical and command-line interfaces.
- Apps are managed by the OS and request services via APIs that invoke system calls.
- The OS normalizes diverse inputs and routes outputs, providing a single, stable interface for apps.
- Accessibility is a first-class OS responsibility to make devices usable for more people.
Key idea: Apps ask, the OS decides, and the kernel (via system calls and drivers) talks to the hardware. This separation provides safety, simplicity, and stability.
Links and references
- Kernel and system calls overview
- strace — trace system calls and signals
- Kubernetes Documentation
- Accessibility in operating systems (concepts)