0% found this document useful (0 votes)
7 views3 pages

Understanding System Calls in Linux

system calls in linux
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views3 pages

Understanding System Calls in Linux

system calls in linux
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Understanding System Calls in Linux

System calls are fundamental mechanisms that allow user-space


applications to request services from the Linux kernel. They serve as the
interface between user programs and the operating system kernel.

What Are System Calls?


System calls are:

 Special functions that provide controlled entry points into the kernel

 The only way user programs can access hardware and system resources

 Protected operations that switch the CPU to privileged mode

Common Linux System Call Categories


1. Process Control
o fork() - Create new process

o exec() - Execute program

o exit() - Terminate process

o wait() - Wait for process to change state

2. File Management
o open() - Open or create file

o read()/write() - File I/O operations

o close() - Close file descriptor

o stat() - Get file status

3. Device Management
o ioctl() - Device-specific operations
o read()/write() - Also used for devices

4. Information Maintenance
o getpid() - Get process ID

o time() - Get system time

o sysinfo() - Get system statistics

5. Communication
o pipe() - Create interprocess channel

o shmget() - Shared memory operations

o msgget() - Message queue operations

How System Calls Work


1. Invocation: User program calls a wrapper function from standard library

2. Transition: CPU switches from user mode to kernel mode

3. Execution: Kernel verifies parameters and performs requested operation

4. Return: Kernel returns result to user space

Key Technical Details


 Each system call has a unique number (defined in syscall.h)

 On x86-64, system calls are invoked using the syscall instruction

 Parameters are passed through registers (RAX for syscall number, RDI,
RSI, RDX, etc. for arguments)

 Return values are placed in RAX register

Viewing System Calls


You can monitor system calls using:
bash
Copy
strace command # Trace system calls of a command
strace -p PID # Trace running process
ltrace # Similar but for library calls

Examples
1. Simple write system call in C:

c
Copy
#include <unistd.h>

int main() {
write(1, "Hello\n", 6); // 1 is stdout file descriptor
return 0;
}

2. Making a direct system call in x86-64 assembly (for exit):

asm
Copy
mov rax, 60 ; syscall number for exit
mov rdi, 0 ; exit status
syscall ; invoke system call

Important Notes
 System calls are relatively expensive due to context switching

 Modern programs minimize direct system calls through buffering and


other optimizations

 The set of available system calls varies slightly between Linux versions
and architectures

Would you like more detailed information about any specific aspect of
Linux system calls?

New chat

You might also like