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 and Virtual Memory
Comprehensive knowledge of memory management and virtual memory concepts used in modern operating systems. Candidates should be able to explain logical versus physical addressing, page tables including multilevel page tables, the translation lookaside buffer and its role, page faults and demand paging, swapping and working set concepts, and internal and external fragmentation. Also discuss segmentation and how it differs from paging, allocation strategies, memory protection and isolation, and performance trade offs such as page size, swap policy, and how to diagnose problems such as thrashing.
Interprocess Communication Basics
Core mechanisms and trade offs for communication and coordination between processes and services. Topics include signals, anonymous and named pipes, message queues, local and network sockets, shared memory, and synchronization primitives such as semaphores and mutexes. Candidates should be able to compare synchronous and asynchronous patterns, discuss ordering and delivery guarantees, explain security and access control implications, and choose appropriate mechanisms based on latency, throughput, message size, and deployment topology.
Operating System Process Management
Fundamentals of process and thread lifecycle, scheduling, and resource management in operating systems. Cover process creation and termination semantics, differences between processes and threads, common process states such as new, ready, running, blocked, and terminated, context switching and process control block responsibilities, and scheduling algorithms including round robin, priority scheduling, and multilevel feedback queue. Discuss concurrency concerns such as priority inversion and starvation and mitigation approaches, plus the memory layout of a process including code, data, heap, and stack regions.
File Systems and Storage
Key file system concepts and how storage layers work together. Topics include directory hierarchies and semantics, metadata and inode concepts, file descriptors and file input and output semantics, block allocation and free space management, journaling and crash recovery, caching and buffer management, and the differences between block storage, file storage, and object storage. Candidates should reason about performance implications of file system choices, consistency and durability guarantees, and interactions with underlying storage devices and networks.
Kernel Architecture and Functions
Understanding the role and major responsibilities of the kernel and common kernel architectures. Discuss resource management, the system call interface, device driver models, interrupt handling, process scheduling, memory management, security primitives, loadable kernel modules, and differences between monolithic kernel and microkernel architectures. Candidates should explain user mode versus kernel mode separation, performance implications of kernel design choices, and trade offs in driver and module placement.