29
Today’s Agenda Midterm: Nov 3 or 10 Finish Message Passing Race Analysis Advanced Topics in Software Engineering 1

Today’s Agenda Midterm: Nov 3 or 10 Finish Message Passing Race Analysis Advanced Topics in Software Engineering 1

Embed Size (px)

Citation preview

Page 1: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Today’s Agenda

Midterm: Nov 3 or 10

Finish Message Passing

Race Analysis

Advanced Topics in Software Engineering 1

Page 2: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 2

Race Analysis

Introduction

The Lockset Algorithm

Message Race Detection

Page 3: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 3

Race Conditions

Many factors, such as unpredictable process scheduling and variations in message latencies, can contribute to the non-deterministic behavior of concurrent programs.

These factors can be informally referred to as race conditions or just races. The activity of identifying races is referred to as race analysis.

Page 4: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 4

General & Data Races

There are two different types of races that capture different kinds of bugs.

General races cause nondeterministic execution and are failures in programs intended to be deterministic.

Data races cause non-atomic execution of critical sections and are failures in programs that access and update shared data in critical sections.

Page 5: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 5

Examples

Process 1/* deposit */amount = read_amount ();P (mutex);balance = balance + amount;interest = interest + rate * balance;V (mutex);

Process 2/* withdraw */amount = read_amount ();P (mutex);if (balance < amount)

printf (“NSF”);else

balance = balance – amount;interest = interest + rate *

balance;V (mutex);

Process 1/* deposit */amount = read_amount ();P (mutex);balance = balance + amount;interest = interest + rate * balance;V (mutex);

Process 2/* withdraw */amount = read_amount ();if (balance < amount)

printf (“NSF”);else

balance = balance – amount;interest = interest + rate *

balance;

Page 6: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 6

Race Analysis

Introduction

The Lockset Algorithm

Message Race Detection

Page 7: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 7

Locking Discipline

A locking discipline is a programming policy that ensures the absence of data races.

For example, a simple locking discipline is to require that every variable shared between threads is protected by a mutual exclusion lock.

The lockset algorithm is to ensure that all shared-memory accesses follow the simple locking discipline.

Page 8: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 8

The Algorithm (1)

For each shared variable v, the algorithm maintains the set C(v) of candidate locks as follows:

When a variable is initialized, C(v) contains all possible locks;

When a variable is accessed, C(v) is replaced with the intersection of C(v) and the set of locks held by the current thread.

If C(v) becomes empty, it signals that there is no lock that consistently protects v. (Otherwise, there is at least one lock that remains in C(v).)

Page 9: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 9

The Algorithm (2)

for each shared variable v, initialize CandidateLocks(v) to the set of all locks

On each read or write access to v by thread T

CandidateLocks(v) = CandidateLocks(v) LocksHeld (T)

if (CandidateLocks(v) == {}) issue a warning.

Page 10: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 10

Example (1)

Thread 1 LocksHeld(Thread1) CandidateLocks(s)

{ } { mutex1, mutex2}mutex1.lock(); { mutex1 } { mutex1, mutex2 }s = s + 1; { mutex1 } { mutex1, mutex2}mutex1.unlock(); { } { mutex1 }mutex2.lock(); { mutex2 } { mutex1 }s = s + 2; { mutex2 } { }mutex2.unlock(); { } { }

Page 11: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 11

Example (2)

{} {mutex1, mutex2}

mutex1.lock{mutex1} {mutex1, mutex2}

read s

{mutex1} {mutex1}

write s{mutex1} {mutex1}

mutex1.unlock

{} {mutex1}

mutex2.lock{mutex2} {mutex1}

read s{mutex2} {}

LocksHeld CandidateLocks

Page 12: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 12

False Alarms

The simple locking discipline is strict, in the sense that some common programming practices violate this discipline and are still free from data races:

Initialization: Shared variables are frequently initialized without a lock.

Read-shared Data: Some shared variables are written during initialization and are read-only thereafter.

Page 13: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 13

Initialization

There is no need for a thread to lock out others if no other can possibly hold a reference to the data being accessed.

To avoid false alarms caused by unlocked writes during initialization, we delay the refinement of a location’s candidate set until after it has been initialized.

However, there is no easy way of knowing initialization is complete. Any solution?

Page 14: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 14

Read-shared Data

Since simultaneous reads of a shared variable by multiple threads are not races, there is also no need to protect variable if it is read-only.

To avoid false alarms caused by unlocked read-sharing for such data, we report races only after an initialized variable has become write-shared by more than one thread.

Page 15: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 15

State Transitions

virgin

exclusive

shared

shared-modified

rd/wr, first threadwr

rd, new thread rd

wr, new thread

wr

Page 16: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 16

Race Analysis

Introduction

The Lockset Algorithm

Message Race Detection

Page 17: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 17

Asynchronous vs. Synchronous

In an asynchronous message-passing program, each process uses non-blocking send and blocking receive operations to send and receive messages.

This is in contrast with synchronous message-passing, where blocking send and blocking receive operations are used.

Page 18: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 18

Communication Scheme (1)

A communication scheme may impose certain restrictions on the relationship between the order in which messages are sent and the order in which messages are received.

The behavior of an asynchronous message-passing program depends on its underlying communication scheme.

Page 19: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 19

Communication Scheme (2)

The fully asynchronous scheme allows that messages are received out of order.

The FIFO scheme requires that messages exchanged between any two processes be received in the same order as they are sent.

The causal scheme requires that all the messages are received in the same order as they are sent.

Page 20: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 20

SR-sequence

An execution of an asynchronous message-passing program exercises a sequence of send and receive events, or an SR-sequence.

Formally, an SR-sequence is defined as a triple (S, R, Y), where S is a set of send events, R a set of receive events, and Y a set of synchronizations.

Page 21: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 21

Example

r1

P1 P2 P3

s1

s2

s3

r2

r3

s1

P1 P2 P3

s2

s3

r2

r1

r3

s2

P1 P2

s1

r2

r1

Causal

FIFO Fully Asyn.

Causal FIFO Fully Asyn.

s4

r4

s5r5

Page 22: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 22

Message Race (1)

Informally, there exists a message race between two send events if the messages sent by the two events may be received by the same receive event.

Given an SR-sequence, we can perform race analysis, and determine, for each receive event, the set of send events that may send messages to this receive event.

Page 23: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 23

Message Race (2)

Message race shall be independent from program implementation.

r1

P1 P2 P3

s1

r2

s2

Page 24: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 24

Message Race (3)

Message race depends on the underlying communication scheme.

r1

P1 P2 P3

s1

s2

s3

r2

r3

Causal FIFO or Asyn.

r1

P1 P2 P3

s1

s2

s3

r2

r3

Page 25: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 25

Message Race Detection (1)

Let P be an asynchronous message-passing program consisting of processes P1, P2, ..., and Pn. Let Q be the SR-sequence exercised by one execution of P.

Let r be a receive event in Q. Assume that r receives the message sent by a send event s in Q. A send event s’ is in the race set, race(r), of r if the message sent by s’ can be received by r in another execution.

Race analysis of Q is to determine race(r) for every receive event r in Q.

Page 26: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 26

Message Race Detection (2)

Assume that the fully asynchronous communication scheme is used. Let r be a receive event of Pi. A send event s of Pj is in race(r) if the following two conditions are met:

the message sent by s is destined to Pi.

r does not happen before s

if s is received by r’, then r must happen before r’.

Page 27: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 27

Message Race Detection (3)

Assume that the FIFO communication scheme is used. Let r be a receive event of Pi. A send event s of Pj is in race(r) if the following three conditions are met:

the message sent by s is destined to Pi.

r does not happen before s

if s is received by r’, then r must happen before r’.

there does not exist another send event s’ of Pj such that s’ happens before s and s’ satisfies the above two conditions or is synchronized with r.

Page 28: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 28

Message Race Detection (4)

Assume that the Causal communication scheme is used. Let r be a receive event of Pi. A send event s of Pj is in race(r) if the following three conditions are met:

the message sent by s is destined to Pi.

r does not happen before s

if s is received by r’, then r must happen before r’.

there does not exist another send event s’ of any process such that s’ happens before s and s’ satisfies the above two conditions or is synchronized with r.

Page 29: Today’s Agenda  Midterm: Nov 3 or 10  Finish Message Passing  Race Analysis Advanced Topics in Software Engineering 1

Advanced Topics in Software Engineering 29

Message Race Detection (5)

r1

P1 P2 P3

s1s2

s3

r2 r3

P4

s4

r4

s5

r5

s6

r6 s7r7

s8r8