ch03: processes in unix

Post on 19-Jan-2016

55 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

ch03: Processes in UNIX. Ju, Hong Taek Computer Network Lab. Keimyung University juht@kmu.ac.kr Rm: 1228, Tel: 580-5234. Objectives. Learn how to create processes Experiment with fork and exec Explore the implications of process inheritance Use wait for process cleanup - PowerPoint PPT Presentation

TRANSCRIPT

2005 System Programming

ch03: Processes in UNIX

Ju, Hong TaekComputer Network Lab.

Keimyung Universityjuht@kmu.ac.kr

Rm: 1228, Tel: 580-5234

Objectives

Learn how to create processes Experiment with fork and exec Explore the implications of process

inheritance Use wait for process cleanup Understand the UNIX process model

3.1 Process Identification

Unix identifies process by a unique value called the process ID Each process also has a parent process ID The getpid and getppid funtions return the process ID

and the parent process ID, respectively A UNIX process has several user and group IDs th

at convey privileges to the process real user and group ID: process ownership effective user and group ID: determining access permissi

on for resources The getegid, geteuid, getgid, getuid function

s are used for retrieve relative value

3.2 Process State

The state of a process indicates its status at a particular time

State Meaning

new Being created

running Instructions are being executed

blocked Waiting for an event such as I/O

ready Waiting to be assigned to a processor

done Finished

new ready blocked

running done

process created

selected to run

quantumexpired

I/O completed

I/O requested

normal or abnormaltermination

The ps utility display information about processes

3.3 UNIX Process Creation and fork

A process can create a new process by calling fork The calling process becomes the parent, and the

created process is called the child

#include <sys/types.h>#include <unistd.h> pid_t fork(void);

return -1 if errorreturn 0 to childreturn child's pid to parent

1

2

3

4

5

1 2 3

4

3.4 The wait Function

The parent can execute wait or waitpid to block until the child finishes

waitIf a child terminated, return its pidOtherwise return -1 and set errno

waitpidAllows you to wait for a particular process, or all process if pid is -1. Important option is NOHANG which will return 0 if there is a specified child to wait for but it has not yet terminated.

#include <sys/wait.h>pid_t wait(int *stat_loc);pid_t waitpid(pid_t pid, int *stat_loc, int options);

Describe the possible forms of the output?

3.5 The exec Function

The exec family of functions provides a facility for overlaying the process image of the calling process with a new image#include <unistd.h>extern char **environ;int execl(const char *path, const char *arg0, ... /*, char *(0) */);int execle (const char *path, const char *arg0, ... /*, char *(0),*/ char *const envp[]);int execlp (const char *file, const char *arg0, ... /*, char *(0) */);int execv(const char *path, char *const argv[]);int execve (const char *path, char *const argv[], char *const envp[]);int execvp (const char *file, char *const argv[]);

3.6 Background Processes and Daemons

A daemon is a background process that normally runs indefinitely When a shell create a background process, it does

not wait for the process to complete before issuing a prompt and accepting additional commands

3.7 Critical Section

The portion of code in which each process access, but should be used by only one process at a time, is called a critical section

Programs with critical section must be sure not to violate the mutual exclusion

One method of providing mutual exclusion uses a locking mechanism

Operating systems manages many shared devices that requires exclusive access by the processes in the system

A common approach is to have only one daemon handle the device with message queue

Question and Answer

top related