Concurrent Programming Abstraction 2

23
Concurrent Programming CT074-3-2 Concurrent Programming Abstraction

description

Concurrent Programming Abstraction 2

Transcript of Concurrent Programming Abstraction 2

Page 1: Concurrent Programming Abstraction 2

Concurrent Programming CT074-3-2

Concurrent Programming Abstraction

Page 2: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 2

Learning Outcomes

At the end of this module, you should be able to do the following:

1. Explain and apply the fundamental concepts of concurrency in the design and construction of a concurrent system using Java application.

2. Discuss the safety aspects of multi threaded system3. Discuss the need for encapsulation in concurrent

systems

Page 3: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 3

Multitasking System

• The non-intuitive aspect of the abstraction is not the interleaving of atomic statements (that actually occurs), but the requirement that any arbitrary interleaving is acceptable.

Page 4: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 4

Multiprocessor Computer

Page 5: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 5

Multiprocessor Computers

• 16-bit cells of local memory associated with two processors; one cell contains the value 0 · · · 01 and one contains 0 · · · 10 = 2. If both processors write to the cell of global memory at the same time, the value might be undefined; for example, it might be the value 0 · · · 11 = 3 obtained by ‘or‘ ing together the bit representations of 1 and 2.

Page 6: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 7

Multiprocessor Computers

• In practice, this problem does not occur because memory hardware is designed so that (for some size memory cell) one access completes before the other commences.

• We can assume that if two CPUs attempt to read or write the same cell in global memory, the result is the same as if the two instructions were executed in either order. In effect, atomicity and interleaving are performed by the hardware.

Page 7: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 8

• Stop

Page 8: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 9

Arbitrary interleaving

• What this means, in effect, is that we ignore time in our analysis of concurrent programs

Page 9: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 10

Arbitrary interleaving

• Ensures that we only have to deal with finite or countable sequences of statements a1, a2, a3,. . ., and need not analyze the actual time intervals between the statements.

• The only relation between the statements is that ai precedes or follows (or immediately precedes or follows) aj

Page 10: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 11

Arbitrary interleaving

• The second reason for using the arbitrary interleaving abstraction is that it enables us to build systems that are robust to modification of their hardware and software. Systems are always being upgraded with faster components and faster algorithms. If the correctness of a concurrent program depended on assumptions about time of execution, every modification to the hardware or software would require that the system be rechecked for correctness

Page 11: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 12

Arbitrary interleaving

• It is difficult, if not impossible, to precisely repeat the execution of a concurrent program.

• Systems that accept input from humans• Even in a fully automated system, there will always be

some jitter, that is some unevenness in the timing of events.

• A concurrent program cannot be "debugged" in the familiar sense

• The solution is to develop programming and verification techniques that ensure that a program is correct under all interleavings.

Page 12: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 13

Atomic statements

• Executed to completion without the possibility of interleaving statements from another process

Page 13: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 14

Atomic statements

• In both scenarios, the final value of the global variable n is 2, and the algorithm is a correct concurrent algorithm with respect to the postcondition n = 2.

Page 14: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 15

Correct Scenario for Assignment Statements

Page 15: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 16

Incorrect Scenario for Assignment Statements

Page 16: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 17

• Unexpected results that are caused by interleaving are sometimes called race conditions.

Page 17: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 18

Correctness

Page 18: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 19Slide 4 (of 15) Slide 2 (of 17)

Property, Safety and Liveness

A property is an attribute of a program that is true for every possible execution of that program

Properties of interest for concurrent programs fall into two categories:Safety – asserts that nothing bad happens during executionLiveness – asserts that something good eventually happens.

Page 19: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 20

• For example, the following program for an operating system satisfies the safety property Always, a mouse cursor is displayed:

while true display the mouse cursor

Page 20: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 21Slide 5 (of 15) Slide 2 (of 17)

Safety vs. Liveness

Safety is concerned with a program not reaching a bad state and that liveness is concerned with a program eventually reaching a good state.

Page 21: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 22Slide 6 (of 15) Slide 2 (of 17)

Sequential vs. Concurrent Program

The most important liveness property for a sequential program is that it eventually

terminates. However, in concurrent programming, we are frequently concerned with

systems that do not terminate.

Page 22: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 23

Fairness

• A scenario is (weakly) fair if at any state in the scenario, a statement that is continually enabled eventually appears in the scenario.

• does this algorithm necessarily halt?

Page 23: Concurrent Programming Abstraction 2

CT074-3-2 Concurrent Programming 24

Q & A

Question and Answer Session