System calls are interfaces between a user program and the operating system kernel. They allow user-level processes to request services from the OS like file operations, memory management, and process control.
Below are 5 important types of system calls:
1. File Management System Calls
These system calls allow programs to create, delete, read, write, or modify files and directories.
Examples:
-
open() – Open a file
-
read() – Read data from a file
-
write() – Write data to a file
-
close() – Close an open file
Use Case: When a program wants to save user data into a file or read from a configuration file.
2. Process Control System Calls
These manage process creation, termination, and execution control.
Examples:
-
fork() – Create a new process
-
exec() – Replace current process image with a new one
-
exit() – Terminate a process
-
wait() – Wait for a child process to finish
Use Case: When launching a new program (e.g., opening a browser from a terminal).
3. Memory Management System Calls
Used to allocate and deallocate memory during program execution.
Examples:
-
malloc() (in C library, internally uses brk() or mmap())
-
mmap() – Map files or devices into memory
-
shmget() – Get shared memory segment
Use Case: When a program needs to reserve space in memory for variables, buffers, or data structures.
4. Communication System Calls
Support inter-process communication (IPC), both within a single system and over networks.
Examples:
-
pipe() – Create a communication channel between processes
-
send(), recv() – Send or receive messages
-
socket() – Create a network socket
-
connect() – Connect to a remote server
Use Case: Used in chat applications, client-server models, and networking tools.
5. Device Management System Calls
Allow interaction with I/O devices, like reading from or writing to a device.
Examples:
-
ioctl() – Control device behavior
-
read() – Read from a device (like a keyboard)
-
write() – Write to a device (like a printer)
-
open() / close() – Used for device files too
Use Case: When a program accesses hardware like reading input from a mouse or sending output to a display.