Linux System Call in Detail


Introduction

The system call is a mechanism in Linux that allows user-space applications to connect with the kernel, which is also a component of what makes up the operating system's core. A user-space application needs to send a system call to the kernel that is used to have a privileged functioning performed on its behalf, including writing or reading information to a file or beginning a new process. In this article, we will be discussing the Linux System Call in detail along with its various types.

How Linux System Calls Work?

The system calls are carried out in the kernel as performs that consumer-space applications can access through the C library's standard library functions. Among them are open(), read(), write(), close(), fork(), exec(), and numerous other functions.

In most cases, a user-space application puts together a set of disputes, such as the URL of a file to be opened, and moves them to the suitable typical library perform to make a system call. The library operates and then organizes all of the arguments in order that they can be enacted to the kernel, generally by replicating them into the system called table, a special buffering in memory.

The library function calls a trap when its parameters are in the system call table, and this moves the command from user space to the kernel. The kernel then executes the action requested using the system call table arguments and converts the outcome to the user-space utilization via the framework call's exchange value.

System calls are essential components of the operating system Linux because they enable user-space programs to perform privileged activities in a controlled and safe manner. It also provides an established interface for gaining access to kernel performance, which aids utilization along with system compatibility and seamless integration.

Types of System Calls in Linux

System calls in Linux are classified into five types based on the operation they perform. These are the categories −

  • Process management system calls − These system calls are used to manage processes, such as starting new ones, stopping existing ones, and waiting for them to finish. Fork(), exec(), wait(), and exit() are all examples of process management system calls ().

    fork() − This system call duplicates the calling process to create a new process. The child process is the new process that runs the same program as the parent process.

    exec() − The system call exec() is used to replace the current process image with a new process image. It loads the specified program into memory and executes it.

    wait() − A parent process uses this system call to wait for its child process to terminate. The parent process is halted until the child process completes.

    exit() − The present-day process is terminated and a status code is returned to the originating process.

  • File management system calls − These calls to the system are used to open, read, write, and close documents, as well as to create, rename, and delete them. Some file management system calls () are open(), read(), write(), close(), mkdir(), and rmdir().

    open() − broadens a file and goes back to a file descriptor (an integer identifying the open file.

    read() − The above system call examines data from an open file into a memory buffer.

    write() − It is an internal call that is used to write information stored in a buffer of memory to an open file.

    close() − It is a system call for closing a file determined by its file descriptive term.

  • Device management system calls − These system calls are used to manage I/O devices, such as reading from and writing to them, setting device attributes, and controlling device operations. System calls for device management include read(), write(), ioctl(), and select ().

    read() − This system call reads data from an input device into a memory buffer.

    write() − It is a system call that is used to write data from a memory buffer to an output device.

    ioctl() − This system call controls the behavior of a device by setting or retrieving device attributes.

    select() − This system call is used to wait for I/O operations to complete on multiple devices.

  • Network management system calls − These system calls are used to manage network resources such as connecting and disconnecting from networks, sending and receiving data over networks, and resolving network addresses. Socket(), connect(), send(), and recv() are examples of network management system calls ().

    socket() − It establishes a socket, and this is a network of things endpoint which can be used to communicate.

    connect() − It is an internal call used to establish a connection to an external network endpoint.

    send() − It is an application call used to transfer data across a computer's connection.

    recv() − A network connection is used to send data to this system call.

  • System information system calls − Such system calls are utilized to query and change system parameters such as time, configuration, and performance statistics. System information system calls () include getpid(), getuid(), gethostname(), and sysinfo().

    getpid() − The program ID of the process that is currently running is returned by this system call.

    getuid() − The system call in question is used to get the user ID of the current process.

    gethostname() − This call to the system is used to get the hostname of the system.

    sysinfo() − The above system call returns information about the system, such as the amount of memory free and the overall amount of processes.

Conclusion

System calls are a vital component in Linux and other systems of operation that allow consumer-space programs to make use of kernel functionality via a standardized interface. System calls are classified into five categories based on the type of operation they perform: process management, file management, device management, network management, and system information. A single system call group contains a set of operations that allow consumer-space applications to execute particular kinds of operations on the operating system that is underneath. System calls contribute to application and operating system compatibility and interoperability by offering a defined interface for accessing the kernel that is used functionality.

Updated on: 03-May-2023

4K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements