21
3.5 Interprocess Communication • Many operating systems provide mechanisms for interprocess communication (IPC) – Processes must communicate with one another in multiprogrammed and networked environments • For example, a Web browser retrieving data from a distant server – Essential for processes that must coordinate activities to achieve a common goal

3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

  • View
    232

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

3.5 Interprocess Communication

• Many operating systems provide mechanisms for interprocess communication (IPC)– Processes must communicate with one

another in multiprogrammed and networked environments

• For example, a Web browser retrieving data from a distant server

– Essential for processes that must coordinate activities to achieve a common goal

Page 2: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

3.5.1 Signals• Software interrupts that notify a process that

an event has occurred– Do not allow processes to specify data to

exchange with other processes– Processes may catch, ignore or mask a signal

• Catching a signal involves specifying a routine that the OS calls when it delivers the signal

• Ignoring a signal relies on the operating system’s default action to handle the signal

• Masking a signal instructs the OS to not deliver signals of that type until the process clears the signal mask

Page 3: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

3.5.2 Message Passing• Message-based interprocess communication

– Messages can be passed in one direction at a time• One process is the sender and the other is the receiver

– Message passing can be bidirectional• Each process can act as either a sender or a receiver

– Messages can be blocking or nonblocking• Blocking requires the receiver to notify the sender when the

message is received• Nonblocking enables the sender to continue with other

processing– Popular implementation is a pipe

• A region of memory protected by the OS that serves as a buffer, allowing two or more processes to exchange data

Page 4: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

3.6 Case Study: UNIX Processes• UNIX processes

– All processes are provided with a set of memory addresses, called a virtual address space

– A process’s PCB is maintained by the kernel in a protected region of memory that user processes cannot access

– A UNIX PCB stores:• The contents of the processor registers• PID• The program counter• The system stack

– All processes are listed in the process table

Page 5: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

3.6 Case Study: UNIX Processes• UNIX processes continued

– All processes interact with the OS via system calls– A process can spawn a child process by using the fork

system call, which creates a copy of the parent process• Child receives a copy of the parent’s resources as well

– Process priorities are integers between -20 and 19 (inclusive)

• A lower numerical priority value indicates a higher scheduling priority

– UNIX provides IPC mechanisms, such as pipes, to allow unrelated processes to transfer data

Page 6: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

Figure 3.10 UNIX system calls.

3.6 Case Study: UNIX Processes

Page 7: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

Chapter 4 – Thread ConceptsOutline4.1 Introduction4.2 Definition of Thread

4.3 Motivation for Threads

4.4 Thread States: Life Cycle of a Thread

4.5 Thread Operations

4.6 Threading Models

4.6.1 User-Level Threads

4.6.2 Kernel-Level Threads

4.6.3 Combining User- and Kernel-Level Threads

4.7 Thread Implementation Considerations

4.7.1 Thread Signal Delivery

4.7.2 Thread Termination

4.8 POSIX and Pthreads

4.9 Linux Threads

4.10 Windows XP Threads

4.11 Java Multithreading Case Study, Part 1: Introduction to Java Threads

Page 8: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

Objectives• After reading this chapter, you should

understand:– the motivation for creating threads.– the similarities and differences between processes

and threads.– the various levels of support for threads.– the life cycle of a thread.– thread signaling and cancellation.– the basics of POSIX, Linux, Windows XP and

Java threads.

Page 9: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

4.1 Introduction• General-purpose languages such as Java,

C#, Visual C++ .NET, Visual Basic .NET and Python have made concurrency primitives available to applications programmer

• Multithreading– Programmer specifies applications contain

threads of execution– Each thread designate a portion of a program

that may execute concurrently with other threads

Page 10: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

4.2 Definition of Thread• Thread

– Lightweight process (LWP)– Threads of instructions or thread of control– Shares address space and other global information

with its process– Registers, stack, signal masks and other thread-

specific data are local to each thread

• Threads may be managed by the operating system or by a user application

• Examples: Win32 threads, C-threads, Pthreads

Page 11: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

Figure 4.1 Thread Relationship to Processes.

4.2 Definition of Thread

Page 12: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

4.3 Motivation for Threads

• Threads have become prominent due to trends in – Software design

• More naturally expresses inherently parallel tasks

– Performance • Scales better to multiprocessor systems

– Cooperation• Shared address space incurs less overhead than

IPC

Page 13: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

4.3 Motivation for Threads

• Each thread transitions among a series of discrete thread states

• Threads and processes have many operations in common (e.g. create, exit, resume, and suspend)

• Thread creation does not require operating system to initialize resources that are shared between parent processes and its threads– Reduces overhead of thread creation and

termination compared to process creation and termination

Page 14: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

Figure 4.2 Thread life cycle.

4.4 Thread States: Life Cycle of a Thread

Page 15: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

1. Name two types of IPC.

2. T/F A blocking send is asynchronous communication.

3. What mechanism is used popularly for implementing message passing?

4. In Unix, if a parent process wants to create a child process and then wait till the child complete, what are the system calls involved?

5. We have seen two concepts: process and threadWhat is in common between the two concepts?What is different between the two concepts?

Group Discussion 2 1/29/08, due in class

Page 16: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

4.6.1 User-level Threads• User-level threads perform threading operations in user space

– Threads are created by runtime libraries that cannot execute privileged instructions or access kernel primitives directly

• User-level thread implementation– Many-to-one thread mappings

• Operating system maps all threads in a multithreaded process to single execution context

• Advantages– User-level libraries can schedule its threads to optimize performance– Synchronization performed outside kernel, avoids context switches– More portable

• Disadvantage– Kernel views a multithreaded process as a single thread of control

» Can lead to suboptimal performance if a thread issues I/O» Cannot be scheduled on multiple processors at once

Page 17: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

Figure 4.3 User-level threads.

4.6.1 User-level Threads

Page 18: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

4.6.2 Kernel-level Threads

• Kernel-level threads attempt to address the limitations of user-level threads by mapping each thread to its own execution context– Kernel-level threads provide a one-to-one thread

mapping• Advantages: Increased scalability, interactivity, and throughput• Disadvantages: Overhead due to context switching and

reduced portability due to OS-specific APIs

• Kernel-level threads are not always the optimal solution for multithreaded applications

Page 19: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

Figure 4.4 Kernel-level threads.

4.6.2 Kernel-level Threads

Page 20: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

4.6.3 Combining User- and Kernel-level Threads

• The combination of user- and kernel-level thread implementation– Many-to-many thread mapping (m-to-n thread mapping)

• Number of user and kernel threads need not be equal• Can reduce overhead compared to one-to-one thread mappings by implementing

thread pooling

• Worker threads– Persistent kernel threads that occupy the thread pool– Improves performance in environments where threads are

frequently created and destroyed– Each new thread is executed by a worker thread

• Scheduler activation– Technique that enables user-level library to schedule its threads– Occurs when the operating system calls a user-level threading

library that determines if any of its threads need rescheduling

Page 21: 3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another

Figure 4.5 Hybrid threading model.

4.6.3 Combining User- and Kernel-level Threads