What is the Difference Between System Call and Function Call?

🆚 Go to Comparative Table 🆚

The main difference between a system call and a function call lies in their implementation and the resources they interact with. Here are the key differences:

  1. Implementation: A system call is implemented by the operating system (OS) and provides services related to the underlying system, such as file access and process management. In contrast, a function call is implemented by a library or within the program itself and is used to access services provided by the libraries or other parts of the program.
  2. Privilege: System calls require more privilege than function calls because they interact with the OS and can access hardware resources. Function calls, on the other hand, are executed in user mode address space and do not require kernel-mode privileges.
  3. Execution Speed: System calls are generally more expensive and slower than function calls because they involve a transition from user mode to kernel mode and back, which requires more instructions and execution time. Function calls, being portable and not requiring privilege level changes, are faster to execute.
  4. Sandboxing: Certain functions, like fopen(), can call system calls internally to handle I/O operations, but the initial call to the function is not a system call itself. This means that although a function may rely on system calls to perform some of its tasks, the function call itself is not a system call.

In summary, system calls are used to interact with the underlying OS and require more privileges, while function calls are used to access services within the program and are faster to execute. Both system calls and function calls play essential roles in modern programming languages, providing various services and enabling code reuse.

Comparative Table: System Call vs Function Call

Here is a table comparing the differences between system calls and function calls:

Feature System Call Function Call
Purpose A request made by a program to access operating system services A call to a subroutine within the program
Mode Executed in kernel mode Executed in user mode
Resource Accessibility Direct access to memory and hardware resources Indirect access to memory and hardware resources
Portability Not portable Portable
Privileges Higher privileges, as it runs in supervisory mode Lower privileges, as it runs in user mode
Execution Executed by the system kernel Executed by the program
Overhead More expensive, as it involves a mode switch Less expensive, as it remains in user mode

System calls are requests made by a program to access operating system services, such as reading from or writing to a file. They are executed in kernel mode and have direct access to memory and hardware resources. On the other hand, function calls are calls to subroutines within the program itself, executed in user mode with indirect access to memory and hardware resources. System calls have higher privileges than function calls, as they run in supervisory mode, while function calls have lower privileges, as they run in user mode.