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
Read More Topics |
C++ String |
Overloading Binary Operators |
Delivery and Forwarding of IP Packets |
Overloading Unary Operators |
Three Level Addressing – Subnetting |