Operating Systems & Systems Programming Topics
Covers operating system fundamentals and systems programming topics, including process management, memory management, file system interfaces, inter-process communication, low-level kernel interactions, and system call interfaces (e.g., fork, exec, opendir, stat) across Unix/Linux and other OS environments.
Memory Management, Paging & Virtual Address Space
How the OS gives each process an isolated virtual address space and maps it onto physical memory: paging, page tables, the TLB, page faults, demand paging, and swapping. Covers the layout of a process address space (text, data, heap, stack), memory isolation and protection between processes, and how virtual memory enables overcommit and copy-on-write.
File Systems & Storage Internals
How file systems organize data on storage: inodes, directories, file descriptors, hard vs. symbolic links, and metadata. Covers on-disk structures, journaling and consistency, the buffer/page cache, mounting and the virtual file system layer, and how block devices and storage stacks sit beneath the file system.
Interrupts & ISR Design
Handling asynchronous hardware events: the interrupt mechanism, interrupt vectors and priorities, writing interrupt service routines, and the interplay between interrupt context and normal execution. Covers keeping ISRs short, deferring work to bottom halves, protecting shared state from interrupt preemption, and latency considerations.
Interprocess Communication (IPC)
Mechanisms that let separate processes exchange data and coordinate: pipes and named pipes, message queues, shared memory, signals, and Unix domain sockets. Covers the trade-offs between IPC methods (throughput, latency, complexity, ordering) and when each is appropriate for a given systems design.
Linux System Administration & Networking
Operating and troubleshooting Linux hosts: users and groups, packages, cron, logging, and the /proc and /sys interfaces, together with host-level networking such as interfaces, routing, DNS resolution, ports, and firewall rules. Covers diagnosing connectivity and configuration issues with standard tooling on a running Linux system.
Kernel Architecture & OS Internals
How an operating system kernel is structured and what it is responsible for: monolithic vs. microkernel designs, the role of kernel subsystems (scheduler, memory manager, VFS, drivers), kernel vs. user space, and the boot/initialization path. Includes how kernel modules and device drivers extend the kernel and how the kernel mediates access to hardware.
Real-Time Systems, RTOS Scheduling & WCET
Building systems with timing guarantees: hard vs. soft real-time, RTOS task scheduling (rate-monotonic, earliest-deadline-first), priorities and preemption, and jitter. Covers worst-case execution time analysis, schedulability, meeting deadlines deterministically, and the concurrency patterns used in real-time and control software.
Linux Command Line & Shell
Working effectively at the Linux/Unix shell: core commands, file and text manipulation, pipes and redirection, process control, permissions and ownership, and shell scripting fundamentals. Covers navigating the filesystem, chaining tools, and the everyday command-line workflow expected of anyone operating Linux systems.
CPU Scheduling & Context Switching
How the operating system decides which runnable task gets the CPU and switches between them: preemptive vs. cooperative scheduling, algorithms such as round-robin, priority, and multilevel feedback queues, time slices, and the mechanics and cost of a context switch. Covers scheduling goals like throughput, latency, fairness, and starvation avoidance.