A resource greedy process can mean that other processes do not
get access to an object as often as necessary - an example of
this often occurs in operating systems which
over-prioritise a diskette drive, so that terminal access is
radically slowed down when the diskette is running.
Distributed systems involve another resource that must be
shared fairly - this is the network.
Reasoning about the number of possible orderings of events in distributed or centralized conncurrent systems is simply not feasible in the same as way as for sequential programs. Instead,
formal, mathematically founded systems now exist for defining and
checking the behaviour of such systems of distributed concurrent tasks -
for example:
-
Milner's CCS (Calculus of Communicating Systems)
-
Hoare's CSP (Communicating Sequential Processes)
(These are really formal languages for describing concurrent
behavior, but have an axiomatic basis which allow properties to be
derived, such as whether a particular system meets some specification)
-
LOTOS
Language of Temporal Ordering Semantics
(The OSI LOTOS language is closely based on CCS)
-
Estelle languages
-
Temporal Logic
(A logic based on operators such as ;SPM_quot;eventually;SPM_quot;, ;SPM_quot;until;SPM_quot;, etc.)
Some of these are introduced in Chapter five. It must be noted here, though,
that while it is attractive in principle that one may be able to build
provably correct distributed systems one day, recent application in
real large systems has been of limited success, and as a result,
that industrial application of formal approaches only advances in small
steps.
<#529#>#tex2html_wrap3818#<#529#>
The work of operating systems designers has meant that
most application programmers have managed to avoid dealing with
concurrency. Unfortunately, distributed systems remove that luxury.
Distributed systems inherently require the programmer to be intimately
aware of concurrent programming problems and techniques, no matter how
hard distributed systems designers have struggled to avoid this so
far.
<#530#>#tex2html_wrap3820#<#530#>