User programs run in user mode, so they need a safe way to ask the kernel to open a file, create a process or send data. A system call is that request, usually hidden behind a library function like read() or printf(). Reach for it when you trace what really happens under a file or process operation, and for the classic fork() counting puzzles. Remember that exec replaces the current program; it does not create a new process the way fork() does.