Fundamentals
Processes vs Threads
Main : Processes are executed by threads
Memory
Stack
- Stack allocation called by function
- Each function gets its own memory for local variables
- Freed immediately when function ends
- Too many function calls exceed stack capacity -> stack overflow error (JAVA) / segmentation fault (CPP)
Heap
- Manual deallocation required
- Accessible by multiple threads
- Heap is persistent until program termination
- Memory leak : allocated data is not freed after use
File I/O
Concurrency
Scheduling
System Calls
Processes vs Threads
-
Process: own address space
-
Thread: shared address space
-
Context switching overhead
-
When threads help vs hurt
Memory
-
Stack vs heap
-
Virtual memory
-
Paging vs segmentation
-
What a segmentation fault actually is
-
Memory leaks and how they happen
File I/O
-
File descriptors
-
stdin/stdout/stderr
-
Blocking vs non-blocking I/O
Concurrency
-
Race conditions
-
Mutex vs semaphore
-
Deadlocks (4 conditions)
Scheduling
-
Preemptive vs cooperative
-
CPU-bound vs I/O-bound
System calls
-
What they are
-
Why they exist
-
User mode vs kernel mode
Practice explaining out loud
If she asks:
“What happens when a program starts?”
You should mention:
-
Executable loaded
-
Virtual memory allocated
-
Stack/heap setup
-
Entry point (
main) -
Syscalls for I/O