OS Services System calls and their types

download report

Transcript OS Services System calls and their types

OS Services
System calls and their types
• Review of OS Services
• User OS-Interface
– Command Interpreter
• System calls and their types
A View of Operating System Services
Operating System Services
Operating systems provide an environment for execution of programs and services to
programs and users
One set of operating-system services provides functions that are helpful to the user:
– User interface - Almost all operating systems have a user interface (UI).
• Varies between Command-Line (CLI), Graphics User Interface (GUI), Batch
– Program execution - The system must be able to load a program into memory and
to run that program, end execution, either normally or abnormally (indicating error)
– I/O operations - A running program may require I/O, which may involve a file or an
I/O device
– File-system manipulation - The file system is of particular interest. Programs need
to read and write files and directories, create and delete them, search them, list file
Information, permission management.
Operating System Services (Cont.)
– Communications – Processes may exchange
information, on the same computer or between
computers over a network
• Communications may be via shared memory or
through message passing (packets moved by the OS)
– Error detection – OS needs to be constantly
aware of possible errors
• May occur in the CPU and memory hardware, in I/O
devices, in user program
• For each type of error, OS should take the
appropriate action to ensure correct and consistent
• Debugging facilities can greatly enhance the user’s
and programmer’s abilities to efficiently use the
Message passing and shared memory
Operating System Services (Cont.)
Another set of OS functions exists for ensuring the efficient operation of the system
itself via resource sharing
– Resource allocation - When multiple users or multiple jobs running concurrently,
resources must be allocated to each of them
• Many types of resources - Some (such as CPU cycles, main memory, and file
storage) may have special allocation code, others (such as I/O devices) may
have general request and release code
– Accounting - To keep track of which users use how much and what kinds of
computer resources
– Protection and security - The owners of information stored in a multiuser or
networked computer system may want to control use of that information,
concurrent processes should not interfere with each other
• Protection involves ensuring that all access to system resources is controlled
• Security of the system from outsiders requires user authentication, extends
to defending external I/O devices from invalid access attempts
• If a system is to be protected and secure, precautions must be instituted
throughout it. A chain is only as strong as its weakest link.
User Operating System Interface - CLI
• Command Line Interface (CLI) or command
interpreter allows direct command entry
• Sometimes implemented in kernel, sometimes by
systems program
• Sometimes multiple command interpreters – shells
Examples are UNIX and LINUX
• Primarily fetches a command from user and
executes it
Bourne Shell Command Interpreter
User Operating System Interface - GUI
• User-friendly desktop metaphor interface
– Usually mouse, keyboard, and monitor
– Icons represent files, programs, actions, etc
– Various mouse buttons over objects in the interface cause
various actions (provide information, options, execute function,
open directory (known as a folder)
– Invented at Xerox PARC in 1970s
• Many systems now include both CLI and GUI interfaces
– Microsoft Windows is GUI with CLI “command” shell
– Apple Mac OS X as “Aqua” GUI interface with UNIX kernel
underneath and shells available
– Solaris is CLI with optional GUI interfaces (Java Desktop, KDE)
The Mac OS X GUI
System Calls
• Programming interface to the services provided by the OS
• Typically written in a high-level language (C or C++)
System call sequence to copy the contents of one file to another file
System Calls Contd…
• Many System calls are required even to
execute simple programs (around thousands
of system calls per second)
• But application programmers develop
programs according to Application
Programming Interface(API).
What is API? API specifies a set of functions that are available to an
application programmer along with parameters passed and return values
Example of API
Win32 API for windows systems
POSIX API for POSIX-based systems
Java API for java virtual machine
There are benefits working with APIs
– Program portability
– API are more easier to work with
– There is a correlation between a function in API and an
associated system call
Run time support system provides a system-call interface that serves as the link to
system calls made available by the OS.
System call Interface(SCI) intercepts function calls in the API and invokes the
necessary system calls within the OS
SCI invokes the intended system call in the OS kernel and returns the status of the
system call and any return values
System Call Implementation
 The system-call interface intercepts function calls in the API and invokes
the necessary system calls within the OS.
• Typically, a number associated with each system call
– System-call interface maintains a table indexed according to these
• 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)
API – System Call – OS Relationship
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
Parameter Passing via Table
Types of System Calls
Process control
File management
Device management
Information maintenance
Process Control
• Process control
– End, abort
– Load, execute
– Create process, terminate process
– Get process attributes, set process attributes
– Wait for time
– Wait event, signal event
– Allocate and free memory
MS-DOS execution
pointer is
set to first
Reloads the
rest of CI
from disk
(a) At system startup (b) running a program
CI makes
error code
available to
the user
FreeBSD Running Multiple Programs
File Management
Create file, delete file
Open , close
Read , write , reposition
Get file attributes, set file attributes
– File attributes: file name, file type, protection
codes, accounting information
Device Management
• Request device, release device
• Read , write , reposition
• Get device attributes, set device attributes
Information Maintenance
Get time or date , set time or date
Get system data , set system data
Get process, file or device attributes
Set process, file or device attributes
Create , delete communication connection
Send , receive messages
Transfer status information
Attach or detach remote devices
• Set permission, get permission
• Allow user and deny user system calls
System Boot
• The process of starting a computer by loading the kernel is
known as booting the system
• Small piece of code – bootstrap loader, locates the kernel,
loads it into memory, and starts it
• In PCs there is a two-step process where a simple bootstrap loader
fetches a more complex boot program from disk which loads the
• Tasks done by bootstrap program
– Run diagnostics to determine the state of the machine
– Initialize all aspects of the system from registers to device controllers.
System Boot Contd…
• Why EPROM is required?
– Cell phones, PDAs store the entire OS in ROM, the
entire OS is stored in ROM. Problems with this
approach is, change in booting code necessitates
change in code
• All ROM come under firmware
• Boot disk or system disk has a boot partition
BIOS stands for Basic Input/Output System
Performs some system integrity checks
Searches, loads, and executes the boot loader program.
It looks for boot loader in floppy, cd-rom, or hard drive. You
can press a key (typically F12 of F2, but it depends on your
system) during the BIOS startup to change the boot sequence.
• Once the boot loader program is detected and loaded into the
memory, BIOS gives the control to it.
• So, in simple terms BIOS loads and executes the MBR boot
• MBR stands for Master Boot Record.
• It is located in the 1st sector of the bootable disk.
Typically /dev/hda, or /dev/sda
• MBR is less than 512 bytes in size. This has three
components 1) primary boot loader info in 1st 446 bytes
2) partition table info in next 64 bytes 3) mbr validation
check in last 2 bytes.
• It contains information about GRUB (or LILO in old
• So, in simple terms MBR loads and executes the GRUB
boot loader.
• GRUB stands for Grand Unified Bootloader.
• If you have multiple kernel images installed on your
system, you can choose which one to be executed.
• GRUB displays a splash screen, waits for few seconds,
if you don’t enter anything, it loads the default kernel
image as specified in the grub configuration file.
• GRUB has the knowledge of the filesystem (the older
Linux loader LILO didn’t understand filesystem).
• Grub configuration file is /boot/grub/grub.conf
(/etc/grub.conf is a link to this). The following is
sample grub.conf of CentOS.
• Kernel
• Mounts the root file system as specified in
the “root=” in grub.conf
• Kernel executes the /sbin/init program
• Since init was the 1st program to be
executed by Linux Kernel, it has the
process id (PID) of 1. Do a ‘ps -ef | grep
init’ and check the pid.
• initrd stands for Initial RAM Disk.
• initrd is used by kernel as temporary root
file system until kernel is booted and the
real root file system is mounted. It also
contains necessary drivers compiled
inside, which helps it to access the hard
drive partitions, and other hardware.
• Looks at the /etc/inittab file to decide the Linux run level.
• Following are the available run levels
• 0 – halt
• 1 – Single user mode
• 2 – Multiuser, without NFS
• 3 – Full multiuser mode
• 4 – unused
• 5 – X11
• 6 – reboot
• Init identifies the default initlevel from /etc/inittab and uses that to load all
appropriate program.
• Execute ‘grep initdefault /etc/inittab’ on your system to identify the default run level
• If you want to get into trouble, you can set the default run level to 0 or 6. Since you
know what 0 and 6 means, probably you might not do that.
• Typically you would set the default run level to either 3 or 5.
Runlevel programs
Depending on your default init level setting, the system will execute the programs from one of
the following directories.
Run level 0 – /etc/rc.d/rc0.d/
Run level 1 – /etc/rc.d/rc1.d/
Run level 2 – /etc/rc.d/rc2.d/
Run level 3 – /etc/rc.d/rc3.d/
Run level 4 – /etc/rc.d/rc4.d/
Run level 5 – /etc/rc.d/rc5.d/
Run level 6 – /etc/rc.d/rc6.d/
Programs starts with S are used during startup. S for startup.
Programs starts with K are used during shutdown. K for kill.
There are numbers right next to S and K in the program names. Those are the sequence number
in which the programs should be started or killed.
For example, S12syslog is to start the syslog deamon, which has the sequence number of 12.
S80sendmail is to start the sendmail daemon, which has the sequence number of 80. So, syslog
program will be started before sendmail.
• Traditionally OS was written in assembly language
• Now in higher-level languages like C/C++
• Advantages of using higher-level language
– Code can be written faster
– More compact
– Easier to understand and debug
– Easier to port
• Disadvantage
– Reduced speed
– Increased storage requirements