11.
What is a shell?
Answer:
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.
12.
Brief about the initial process sequence while the
system boots up.
Answer:
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.
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).
13.
What are various IDs associated with a process?
Answer:
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
getpid() -process id
getppid() -parent process id
getuid() -user id
geteuid() -effective user id
14.
Explain fork() system call.
Answer:
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.
15.
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.
16.
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()
17.
List the system calls used for process management:
Answer:
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
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
18.
How can you get/set an environment variable from a
program?
Answer:
Getting the value of an
environment variable is done by using 'getenv()'.
Setting the value of an environment variable is done by using 'putenv()'.
Setting the value of an environment variable is done by using 'putenv()'.
19.
How can a parent and child process communicate?
Answer:
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.
20.
What is a zombie?
Answer:
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.)
0 comments:
Post a Comment