What Happens when you execute a program?
When you execute a program on your UNIX system, the
system creates a special environment for that program.
This environment contains everything needed for the
system to run the program as if no other program were
running on the system. Each process has process context,
which is everything that is unique about the state of
the program you are currently running. Every time you
execute a program the UNIX system does a fork, which
performs a series of operations to create a process
context and then execute your program in that context.
The steps include the following:
Allocate a slot in the process table, a list of
currently running programs kept by UNIX.
Assign a unique process identifier (PID) to the process.
iCopy the context of the parent, the process that
requested the spawning of the new process.
Return the new PID to the parent process. This enables
the parent process to examine or control the process
directly. After the fork is complete, UNIX runs your
What Happens when you execute a command?
When you enter 'ls' command to look at the contents of
your current working directory, UNIX does a series of
things to create an environment for ls and the run it:
The shell has UNIX perform a fork. This creates a new
process that the shell will use to run the ls program.
The shell has UNIX perform an exec of the ls program.
This replaces the shell program and data with the
program and data for ls and then starts running that new
program. The ls program is loaded into the new process
context, replacing the text and data of the shell. The
ls program performs its task, listing the contents of
the current directory.
What is a Daemon?
A daemon is a process that detaches itself from the
terminal and runs, disconnected, in the background,
waiting for requests and responding to them. It can also
be defined as the background process that does not
belong to a terminal session. Many system functions are
commonly performed by daemons, including the sendmail
daemon, which handles mail, and the NNTP daemon, which
handles USENET news. Many other daemons may exist. Some
of the most common daemons are:
init: Takes over the basic running of the system when
the kernel has finished the boot process.
inetd: Responsible for starting network services that do
not have their own stand-alone daemons. For example,
inetd usually takes care of incoming rlogin, telnet, and
cron: Responsible for running repetitive tasks on a
What is 'ps' command for?
The ps command prints the process status for some or all
of the running processes. The information given are the
process identification number (PID),the amount of time
that the process has taken to execute so far etc.
How would you kill a process?
The kill command takes the PID as one argument; this
identifies which process to terminate. The PID of a
process can be got using 'ps' command.
What is an advantage of executing a process in
The most common reason to put a process in the
background is to allow you to do something else
interactively without waiting for the process to
complete. At the end of the command you add the special
background symbol, &. This symbol tells your shell to
execute the given command in the background.
Example: cp *.* ../backup& (cp is for copy)
How do you execute one program from within another?
The system calls used for low-level process creation are
execlp() and execvp(). The execlp call overlays the
existing program with the new one , runs that and exits.
The original program gets back control only when an
error occurs. execlp(path,file_name,arguments..); //last
argument must be NULL A variant of execlp called execvp
is used when the number of arguments is not known in
advance. execvp(path,argument_array); //argument array
should be terminated by NULL
What is IPC? What are the various schemes available?
The term IPC (Inter-Process Communication) describes
various ways by which different process running on some
operating system communicate between each other. Various
schemes available are as follows: Pipes:
One-way communication scheme through which different
process can communicate. The problem is that the two
processes should have a common ancestor (parent-child
relationship). However this problem was fixed with the
introduction of named-pipes (FIFO).
Message Queues :
Message queues can be used between related and unrelated
processes running on a machine.
This is the fastest of all IPC schemes. The memory to be
shared is mapped into the address space of the processes
(that are sharing). The speed achieved is attributed to
the fact that there is no kernel involvement. But this
scheme needs synchronization.
Various forms of synchronisation are mutexes,
condition-variables, read-write locks, record-locks, and
What is the difference between Swapping and Paging?
Swapping: Whole process is moved from the swap device to
the main memory for execution. Process size must be less
than or equal to the available main memory. It is easier
to implementation and overhead to the system. Swapping
systems does not handle the memory more flexibly as
compared to the paging systems.
Only the required memory pages are moved to main memory
from the swap device for execution. Process size does
not matter. Gives the concept of the virtual memory.
It provides greater flexibility in mapping the virtual
address space into the physical memory of the machine.
Allows more number of processes to fit in the main
memory simultaneously. Allows the greater process size
than the available physical memory. Demand paging
systems handle the memory more flexibly.
What is major difference between the Historic Unix and
the new BSD release of Unix System V in terms of Memory
Historic Unix uses Swapping – entire process is
transferred to the main memory from the swap device,
whereas the Unix System V uses Demand Paging – only the
part of the process is moved to the main memory.
Historic Unix uses one Swap Device and Unix System V
allow multiple Swap Devices.