System calls sequence to copy the contents of one file to another file
- Programming interface to the services provided by the OS
- Typically written in a high level language (C or C++)
- Mostly accessed by programs via a high level Application Program 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)
- Why use APIs rather than system calls?
Example of System Calls

Example of Standard API
- Consider the ReadFile() function in the
- Win32 API – a function for reading from a file

- A description of the parameters passed to ReadFile()
– HANDLE file – the file to be read
– LPVOID buffer – a buffer where the data will be read into and written from
– DWORD bytes To Read – the number of bytes to be read into the buffer
– LPDWORD bytes Read – the number of bytes read during the last read
– LPOVERLAPPED ovl – indicates if overlapped I/O is being used
System Call Implementation
- Typically, a number associated with each system call – System call interface maintains a table indexed according to these numbers
- The system call interface invokes intended system call in OS kernel and returns status of the system call and any return values
- The caller need know nothing about how the system call is implemented
- Just needs to obey API and understand what OS will do as a result call
- Most details of OS interface hidden from programmer by API
- Managed by run time support library (set of functions built into libraries included with compiler)
Standard C Library Example
C program invoking printf() library call, which calls write() system call

System Call Parameter Passing
- Often, more information is required than simply identity of desired system call
- Exact type and amount of information vary according to OS and call
- Three general methods used to pass parameters to the OS
- Simplest: pass the parameters in registers
- In some cases, may be more parameters than registers
- Parameters stored in a block, or table, in memory, and address of block passed as a parameter in a register
- This approach taken by Linux and Solaris
- 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
Types of System Calls
- Process control
- File management
- Device management
- Information maintenance
- Communications
- See More : Overloading Binary Operators
- See More : Overloading Unary Operators
- See More : C++ String











