Concurrent UNIX Processes by zwj23860

VIEWS: 53 PAGES: 8

									Concurrent UNIX Processes



     Pthreads Programming in C
        Robert Brummayer
           FMV, SS 2009
UNIX Processes
   A process is an instance of a program
   Processes are managed by the kernel
   UNIX is a multitasking operating system
     » Scheduler assigns time slices to processes (typically 1/100 or 1/1000 sec)
     » Concurrency at process level
   A process has several attributes
     »   PID: unique process id
     »   PPID: process id of parent
     »   UID: user id of process owner
     »   priority: execution priority
     »   state: state of the process, e.g. running, sleeping, zombie, ...
     »   ...
   Try ps ­el on your LINUX system




Programmiersprache C++
Pthreads Programming in C                   SS 2009
                                           Winter 2005                      Operator overloading (2)
                                                                       Concurrent UNIX Processes (2)
Process + Virtual Memory Layout (LINUX and x86)




Pthreads Programming in C
Programmiersprache C++       SS 2009
                            Winter 2005        Operator overloading (3)
                                          Concurrent UNIX Processes (3)
Exec
   Exec
     »   Reinitialize a process from a designated program
     »   The program changes while the process remains
     »   The only way programs get executed on UNIX
     »   Many variants available: execl, execv, execlp, execvp, ...

   Example
     » execl.c




Programmiersprache C++
Pthreads Programming in C                  SS 2009
                                          Winter 2005                      Operator overloading (4)
                                                                      Concurrent UNIX Processes (4)
Process Creation
   Fork
     »   Creates a child process that is identical to its parent process
     »   Child has its own PID
     »   Sets PPID of child to PID of parent
     »   Fork returns different return values to parent and child
           • Returns PID of child to the parent
           • Returns 0 to child
           • In this way we can determine if we are the parent or the child
     » Forked child typically calls exec
     » Parent waits for child to complete
           • Otherwise child is zombie:
                – Completed execution but has not delivered status to parent
           • Wait returns status encoded as integer
                – See macros in man 2 wait, e.g. WEXITSTATUS


   Examples
     » fork.c
     » fork_execl.c

Pthreads Programming in C
Programmiersprache C++                            SS 2009
                                                 Winter 2005                        Operator overloading (5)
                                                                               Concurrent UNIX Processes (5)
Inter Process Communication (IPC) on UNIX
   Pipes
     » Data flows in one direction
     » One process writes and the other reads
   Message Queues
     » Supports priorities
   Shared Memory (see example later)
     » Memory space managed by the kernel
     » Can be accessed by different processes
     » Synchronization necessary
           • Semaphores
   Sockets
     » Network programming
     » De facto standard




Programmiersprache C++
Pthreads Programming in C              SS 2009
                                      Winter 2005        Operator overloading (6)
                                                    Concurrent UNIX Processes (6)
Example
   unix_sum.c




Programmiersprache C++
Pthreads Programming in C    SS 2009
                            Winter 2005        Operator overloading (7)
                                          Concurrent UNIX Processes (7)
Question
   We already have concurrent processes in UNIX­like systems
     » They can be run in parallel (if we have multiple processing units)
     » They can be synchronized
     » As we have seen before (IPC), they can communicate with each other in many 
       different ways, even over networks
   So why should we need lightweight processes, e.g. threads? 




Pthreads Programming in C
Programmiersprache C++                 SS 2009
                                      Winter 2005                   Operator overloading (8)
                                                               Concurrent UNIX Processes (8)

								
To top