Module 1 System Calls
Module 1 System Calls
System Calls
• A system call is a mechanism that provides the interface between a
process and the operating system.
• It is a programmatic method in which a computer program requests a
service from the kernel of the OS.
• Programming interface to the services provided by the OS
• Typically written in a high-level language (C or C++)
– resemble predefined function or subroutine calls
• Mostly accessed by programs via a high-level Application
Programming Interface (API) rather than direct system call use
• Three most common APIs are Win32 API for Windows, POSIX API for
POSIX-based systems (including virtually all versions of UNIX, Linux,
and Mac OS X), and Java API for the Java virtual machine (JVM)
Example of System Calls
System call sequence to copy the contents of one file to another
file
Example of Standard API
System Call Implementation
• For most programming languages, the run-time support system (a
set of functions built into libraries included with a compiler)
provides a system call interface that serves as the link to
system calls made available by the operating system
• Often, more information is required than simply identity of desired system call
1. Simplest: pass the parameters in registers (In some cases, may be more parameters
than registers)
3. Parameters placed, or pushed, onto the stack by the program and popped off the stack
by the operating system
• Block and stack methods do not limit the number or length of parameters being passed
Parameter Passing via Table
Types of System Calls
• Process control
– create process, terminate process
– end, abort
– load, execute
– get process attributes, set process attributes
– wait for time
– wait event, signal event
– allocate and free memory
– Dump memory if error
– Debugger for determining bugs, single step execution
– Locks for managing access to shared data between
processes
Example: MS-DOS
• Single-tasking
• Shell invoked when
system booted
• Simple method to
run program
– No process created
• Single memory space
• Loads program into
memory, overwriting
all but the kernel
• Program exit -> shell
reloaded At system startup running a program
Example: FreeBSD
• Unix variant
• Multitasking
• User login -> invoke user’s choice of
shell
• Shell executes fork() system call to
create process
– Executes exec() to load program into
process
– Shell waits for process to terminate
or continues with user commands
• Process exits with:
– code = 0 – no error
– code > 0 – error code
Types of System Calls
• File management
– create file, delete file
– open, close file
– read, write, reposition
– get and set file attributes
• Device management
– request device, release device
– read, write, reposition
– get device attributes, set device attributes
– logically attach or detach devices
Types of System Calls (Cont.)
• Information maintenance
• Communications
– create, delete communication connection
• Protection
– Control access to resources
– File manipulation
– Communications
– Background services
– Application programs
System Programs (Cont.)
• File management - Create, delete, copy, rename, print, dump, list, and
generally manipulate files and directories
• Status information
– Some programs ask the system for info - date, time, amount of available
memory, disk space, number of users
– Typically, these programs format and print the output to the terminal or
other output devices
of the text
– Provide facilities like disk checking, process scheduling, error logging, printing
subsystems
• Application programs