An operating system is the program that owns the hardware and rents it out. It multiplexes a small number of processors across many runnable threads, gives every process a private address space that is larger than the memory actually installed, turns spinning or flash storage into named files with permissions, mediates every device through drivers, and exposes the whole arrangement to applications through a few hundred system calls. Between an application and the machine there is always an operating system deciding what actually happens.
The abstractions are what make the subject worth learning. A process is an address space plus one or more threads plus a set of open handles. A scheduler decides which thread runs next, and its policy determines whether a system feels fast or merely busy. Virtual memory, page tables and the memory management unit create the illusion of contiguous private memory, backed by demand paging, page cache and eviction. Filesystems layer naming, allocation, journalling and caching over block devices. Interrupts, DMA and device drivers move data without the processor copying every byte. Concurrency primitives — locks, semaphores, condition variables, atomics — exist because those shared resources are contended, and deadlock, priority inversion and lock convoys are the failure modes that follow.
All of it is directly operational. Operating systems knowledge is what turns "the server is slow" into a specific answer: a run queue that is saturated, a working set that no longer fits in memory, a filesystem journal flushing synchronously, a process blocked in uninterruptible sleep on a device that is not responding. Linux, Windows and the BSDs differ in implementation and terminology, but the concepts transfer, and containers and virtual machines are themselves nothing more than operating system mechanisms — namespaces and cgroups in one case, hardware-assisted privilege separation in the other.
Why this skill matters now
Abstractions have moved upward and the failures have not. Engineers work in managed services, containers and frameworks, and then hit a problem that only makes sense one or two layers down — a container throttled by a cgroup quota, a pod killed by the out-of-memory killer, a database stalling on a synchronous write, a service whose tail latency is entirely scheduler queuing. Without operating systems fundamentals those look like mysteries; with them they are diagnosable in minutes.
The demand shows up in three roles particularly. Site reliability engineers are hired substantially on their ability to reason about system-level behaviour under load. Performance engineers work almost entirely at this layer. And platform engineers building on Kubernetes are, whether they describe it that way or not, configuring operating system primitives — namespaces, cgroups, capabilities, seccomp filters, page cache behaviour — through a YAML interface.
There is also a security argument. Privilege boundaries, isolation guarantees, capability models and the syscall surface are operating system concepts, and container escape, privilege escalation and side-channel issues are only comprehensible in those terms. Teams that cannot reason about the kernel boundary cannot reason about what their isolation actually guarantees.