Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer...
-
date post
19-Dec-2015 -
Category
Documents
-
view
214 -
download
0
Transcript of Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer...
![Page 1: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/1.jpg)
1
Chair of Software Engineering
Concurrent Object-Oriented Programming
Arnaud Bailly, Bertrand Meyer and Volkan Arslan
![Page 2: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/2.jpg)
2
Chair of Software Engineering
Lecture 2: Task Creation and Communication Primitives
![Page 3: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/3.jpg)
3
Chair of Software Engineering
What is a Task?
It is an entity with resources: memory (so-called address space), and processing time.
A task may have a priority. A task may execute an activity. A task may be idle (waiting). A task may terminate. The degree of parallelism of a system at a given
time is the number of active tasks executing on that system.
![Page 4: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/4.jpg)
4
Chair of Software Engineering
Special case: Synchronous Tasks
Synchronous tasks: The same program is executed on all CPUs Progression is in lock-step. Tasks are always active. Typical of SIMD for Data-Parallelism ( )
x := 1;y:= 3;if (x = y)
x := 1;y:= 3;if (x = y)
x := 1;y:= 3;if (x = y)
x := 1;y:= 3;if (x = y)
x := 1;y:= 3;if (x = y)
x := 1;y:= 3;if (x = y)
x := 1;y:= 3;if (x = y)
x := 1;y:= 3;if (x = y)
![Page 5: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/5.jpg)
5
Chair of Software Engineering
We shall only consider the asynchronous task model!
![Page 6: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/6.jpg)
6
Chair of Software Engineering
Actions, Objects and Tasks
Tasks execute actions on behalf of objects. Assume a program counter Define a partial function is total on and can be:
surjective ( tasks for 1 object) bijective (1 task for 1 object) injective ( passive objects)
: ( )task object action
task
Actions Objects
not surjective:inter-object parallelism
intra-object parallelism
PC
1n
![Page 7: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/7.jpg)
7
Chair of Software Engineering
The Nature of and objects
An object can be passive: either not supported by any task, or supported by a task but no autonomous
behavior. Data structure or service repository. It is re-active, acting only when called.
An object can be active: Has a task of its own. Method for the object’s body (live routine). live terminates: task stops (passivation?). Active, it may or may not provide services.
Many mixed approaches (CEiffel, ProActive,…).
1. . . ( (n o objects t tasks
![Page 8: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/8.jpg)
8
Chair of Software Engineering
The nature of (Inter)actions
Message passing: explicit send/receive primitives.
Remote routine invocation: transparent remote invocation, no receive statement necessary.
Synchronous communication: the client is blocked until the supplier finishes.
Asynchronous communication: a call never blocks the client.
![Page 9: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/9.jpg)
9
Chair of Software Engineering
Relevant issues
How to create tasks?
How to make tasks active?
How to coordinate tasks?
![Page 10: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/10.jpg)
10
Chair of Software Engineering
Passive Objects without Task (1)
Essentially Routine invocations execute in client’s task.
Thread 1
c1.runb.join
Thread 3
Thread 2 c1 bc3c2
b.wait
c3.runb.join
b.wait
c2.run
b.notifyallb.join
b.waitb.join
b.notifyallb.join
CPU Time
![Page 11: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/11.jpg)
11
Chair of Software Engineering
Passive Objects without Task (1)
Allow intra-object concurrency. Use synchronous interaction. Clients can communicate through side-effects. Concerns orthogonal to task creation. Objects can be garbage-collected. Exception: implicit mobility like in Oz.
![Page 12: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/12.jpg)
12
Chair of Software Engineering
Passive objects with a Task
Essentially One or many tasks. Accessed through routine invocation. Routines execute in the supplier’s task(s). Can easily simulate active objects. Examples: SCOOP, Actors… Garbage collection is problematic (shared task).
![Page 13: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/13.jpg)
13
Chair of Software Engineering
Active objects
Upon creation, a task is idle! Creating an active object is:
create a passive object and a task, “start” the object (autonomous routine).
in Java: t = new Thread(); t.start; Starting is automated: live routine (POOL). An active objects raises the degree of parallelism. Use message passing or method invocation.
![Page 14: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/14.jpg)
14
Chair of Software Engineering
Example live routine in POOL
CLASS Queue…Method enq (item : T)BEGIN cell ! put (rear, item);
rear := (rear+1) MOD size END enq
METHOD deq (): T BEGIN RESULT cell ! get (front) ; %% early return
front := (front + 1) MOD sizeEND deq
BODY DO IF empty THEN ANSWER (enq) ELSIF full THEN ANSWER (deq) ELSE ANSWER ANY FI
OD YDOB
![Page 15: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/15.jpg)
15
Chair of Software Engineering
Other Possibility in CEiffel
Communication based on method invocation. One can place autonomy annotations. Annotated method step is repeated forever.
class MOVINGcreation Init…feature {}…
step is -->--do
position.set(…)end
…end -- MOVING
![Page 16: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/16.jpg)
16
Chair of Software Engineering
Coordination
Objects have a state. The set of available routines may depend on the
current state. The Queue exhibits such a non-uniform service. Activity-centered coordination:
clients coordinate to prevent indelicate actions. Invocations are never delayed (synchrony).
Boundary coordination: the supplier may delay the acceptance of a call.
Introduction of synchronization code.
![Page 17: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/17.jpg)
17
Chair of Software Engineering
Issues in Communication
active objects have different address spaces! Call-by-value or call-by-name? Call-by-value: sending values away. Call-by-name: sending references away. For objects:
weak versus strong mobility, mobility of active objects?
Issue with meta-classes (Smalltalk) an object needs a copy of its code to execute. replicating stateful classes is expensive. keep (meta-)classes stateless (distr. Smalltalk).
![Page 18: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/18.jpg)
18
Chair of Software Engineering
Efficiency (1)
Using synchronous interaction
Task 1 Task 2
c.run
s.f(3)
x := s.f(3)
x := s.f(3)
x := s.g(4)
![Page 19: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/19.jpg)
19
Chair of Software Engineering
Efficiency (2)
Using asynchronous interaction
Task 1 Task 2
c.run
s.p()
s.p()
s.q()
s.q()
![Page 20: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/20.jpg)
20
Chair of Software Engineering
Synchrony vs Asynchrony
Synchrony coded with asynchrony: send and return message for every interaction. Can be quite heavy!
Asynchrony coded with synchrony: intermediate passive buffer between objects.
Synchrony tends to be too strong (inefficient). Asynchrony can be cumbersome. Allow the two of them? Multicast and broadcast allow high fan-out (GARF).
![Page 21: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/21.jpg)
21
Chair of Software Engineering
Early Return Optimization
Using synchronous interaction
Task 1 Task 2
c.run
s.f(3)
x := s.f(3)
x := s.f(3)
x := s.g(4)
![Page 22: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/22.jpg)
22
Chair of Software Engineering
Other Improvements
Serve many invocations at a time using synchronization primitives, allow pure methods to execute freely, or tag concurrent methods (CEiffel).
create one task for each invocation (Diadem). Use a task pool to delegate calls (ACT++). wait-by-necessity.
![Page 23: Chair of Software Engineering 1 Concurrent Object-Oriented Programming Arnaud Bailly, Bertrand Meyer and Volkan Arslan.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d405503460f94a1abf1/html5/thumbnails/23.jpg)
23
Chair of Software Engineering
Next time
SCOOP Primer Coordinating objects, first act.