A system call is a request to the OS kernel to do something your program cannot do alone. Reading a file, opening a socket, or allocating memory all end in system calls.
A normal function call stays inside your program's own code and privileges. A system call crosses a hard boundary. The CPU switches from user mode into kernel mode, runs trusted kernel code, then switches back with a result.
That crossing is why system calls cost more than plain calls. There is mode-switching overhead and saved state on each side. Libraries often batch or buffer work to make fewer of them. So treat system calls as the expensive doorway between your code and the machine's protected parts.
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.