|
Unix Interview Questions and Answers
What is a shell?
A shell is an interactive user interface to an operating
system services that allows an user to enter commands as
character strings or through a graphical user interface.
The shell converts them to system calls to the OS or
forks off a process to execute the command. System call
results and other information from the OS are presented
to the user through an interactive interface. Commonly
used shells are sh,csh,ks etc.
Brief about the initial process sequence while the
system boots up.
While booting, special process called the 'swapper' or
'scheduler' is created with Process-ID 0. The swapper
manages memory allocation for processes and influences
CPU allocation. The swapper inturn creates 3 children:
the process dispatcher,
vhand and
dbflush
with IDs 1,2 and 3 respectively.
This is done by executing the file /etc/init. Process
dispatcher gives birth to the shell. Unix keeps track of
all the processes in an internal data structure called
the Process Table (listing command is ps -el).
What are various IDs associated with a process?
Unix identifies each process with a unique integer
called ProcessID. The process that executes the request
for creation of a process is called the 'parent process'
whose PID is 'Parent Process ID'. Every process is
associated with a particular user called the 'owner' who
has privileges over the process. The identification for
the user is 'UserID'. Owner is the user who executes the
process. Process also has 'Effective User ID' which
determines the access privileges for accessing resources
like files.
getpid() -process id
getppid() -parent process id
getuid() -user id
geteuid() -effective user id
Explain fork() system call.
The `fork()' used to create a new process from an
existing process. The new process is called the child
process, and the existing process is called the parent.
We can tell which is which by checking the return value
from `fork()'. The parent gets the child's pid returned
to him, but the child gets 0 returned to him.
Predict the output of the following program code
main()
{
fork();
printf("Hello World!");
}
Answer:
Hello World!Hello World!
Explanation:
The fork creates a child that is a duplicate of the
parent process. The child begins from the fork().All the
statements after the call to fork() will be executed
twice.(once by the parent process and other by child).
The statement before fork() is executed only by the
parent process.
Predict the output of the following program code
main()
{
fork(); fork(); fork();
printf("Hello World!");
}
Answer:
"Hello World" will be printed 8 times.
Explanation:
2^n times where n is the number of calls to fork()
List the system calls used for process management:
System calls Description
fork() To create a new process
exec() To execute a new program in a process
wait() To wait until a created process completes its
execution
exit() To exit from a process execution
getpid() To get a process identifier of the current
process
getppid() To get parent process identifier
nice() To bias the existing priority of a process
brk() To increase/decrease the data segment size of a
process
How can you get/set an environment variable from a
program?:
Getting the value of an environment variable is done by
using `getenv()'. Setting the value of an environment
variable is done by using `putenv()'.
How can a parent and child process communicate?
A parent and child can communicate through any of the
normal inter-process communication schemes (pipes,
sockets, message queues, shared memory), but also have
some special ways to communicate that take advantage of
their relationship as a parent and child. One of the
most obvious is that the parent can get the exit status
of the child.
What is a zombie?
When a program forks and the child finishes before the
parent, the kernel still keeps some of its information
about the child in case the parent might need it - for
example, the parent may need to check the child's exit
status. To be able to get this information, the parent
calls `wait()'; In the interval between the child
terminating and the parent calling `wait()', the child
is said to be a `zombie' (If you do `ps', the child will
have a `Z' in its status field to indicate this.)
What are the process states in Unix?
As a process executes it changes state according to its
circumstances. Unix processes have the following states:
Running : The process is either running or it is ready
to run .
Waiting : The process is waiting for an event or for a
resource.
Stopped : The process has been stopped, usually by
receiving a signal.
Zombie : The process is dead but have not been removed
from the process table.
Page Numbers
:
1
2
3
4
5
6
7
8
9
Have a Question ?
post your questions here. It
will be answered as soon as possible.
Check
HTML Interview
Questions for more HTML Interview Questions with Answers
Check
Job Interview Questions
for more Interview Questions with Answers
|