<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>The Resource Allocation Problem in Software Applications: A Petri Net Perspective?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Juan-Pablo L pez-Grao</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>JosØ-Manuel Colom</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Aragonese Engineering Research Institute (I3A) University of Zaragoza</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Dpt. of Computer Science and Systems Engineering</institution>
          ,
          <addr-line>DIIS</addr-line>
        </aff>
      </contrib-group>
      <fpage>219</fpage>
      <lpage>233</lpage>
      <abstract>
        <p>Resource Allocation Systems (RAS) have been intensively studied in the last years in the domain of Flexible Manufacturing Systems (FMS). The success of this research line has been based on the identi cation of particular subclasses of Petri Nets that correspond to a RAS abstraction of this kind of systems. In this paper we take a parallel road to that travelled through for FMS, but for the case of software applications. The considered applications present concurrency and deadlocks can happen due to the allocation of shared resources. We will evince that the existing subclasses of Petri Nets used to study this kind of deadlock problems are insu cient, even for very simple software systems. From this starting point we propose a new subclass of Petri Nets that generalizes the previously known RAS subclasses and we present a taxonomy of anomalies that can be found in the context of software systems.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Among the most recurrent patterns in a wide disparity of engineering disciplines,
the competition for shared resources between concurrent processes takes a
prominent position. The reader might think of examples in the context of distributed
systems, operations research, manufacturing plants, etc. The perspective of
discrete event systems theory proves appropriate and powerful as a framework in
which provide solutions to the so-called resource allocation problem [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Systems
of this kind are often called Resource Allocation Systems (RAS) [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ].
      </p>
      <p>
        RAS are usually conceptualized around two distinct entities, processes and
resources, thanks to a prior abstraction process which is inherent in the discipline.
The resource allocation problem refers to satisfying successfully the requests for
resources made by the processes, ensuring that no process ever falls in a
deadlock. A set of processes is deadlocked when they inde nitely wait for resources
that are already held by other processes of the same set [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        RAS can be categorized both on the type of processes (sequential,
nonsequential) and resources (serially reusable, consumable) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Hereafter, we will
focus on Sequential RAS with serially reusable resources. This means that a
process can increase or decrease the quantity of free resources during its
execution. However, the process will contervail that operation before terminating, i.e.
resources are used in a conservative way.
      </p>
      <p>
        Although other models of concurrency have also been considered [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], Petri
nets [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] have arguably taken a leading role among the family of formal models
used for dealing with the resource allocation problem [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ]. One of the strengths
of this approach is the smooth mapping between the main entities of RAS and the
basic elements of Petri net models. A resource type can be modelled using a place:
the number of instances of it being modelled with tokens. Meanwhile, sequential
processes are modelled with tokens progressing through state machines. Arcs
from resource places to transitions (from transitions to resource places) represent
the acquisition (return) of some resources by a process. Petri nets thus provide
a natural formal framework for the analysis of RAS, besides bene ting from the
goods of compositionality.
      </p>
      <p>
        This fact is well notorious in the domain of Flexible Manufacturing Systems
(FMS), where Petri net models for RAS have widely succeeded since the
seminal work of Ezpeleta et al. was introduced [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. This is mostly due to a careful
selection of the subclass of Petri nets used to model these FMS, based upon two
solid pillars. First, the de nition of a rich syntax from a physical point of view,
which enables the natural expression of a wide disparity of plant con gurations.
And second, the contribution of sound scienti c results which let us characterize
deadlocks from the model structure, as well as provide a well-de ned
methodology to automatically correct them in the real system.
      </p>
      <p>
        Nowadays, there exists a plethora of Petri net models for modelling RAS in
the context of FMS, which often overcome some of the syntactical limitations of
the S3PR class [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. S4PR net models [
        <xref ref-type="bibr" rid="ref10 ref11">10, 11</xref>
        ] generalize the earlier, while allowing
multiple simultaneous allocations of resources per process. S∗PR nets [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] extend
the expressive power of the processes to that of state machines: hence internal
cycles in their control ow is allowed. However, deadlocks in S∗PR net models
are not fully comprehended from a structural perspective. Other classes such as
NS-RAP [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], ERCN-merged nets [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] or PNR nets [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] extend the capabilities of
S3PR/S4PR models beyond Sequential RAS by way of lot splitting or merging
operations.
      </p>
      <p>
        Most analysis and control techniques in the literature are based on the
computation of a structural element which univocally characterizes deadlocks in
many RAS models: the so-called bad siphon. A bad siphon is a siphon which is
not the support of a p-semi ow. If bad siphons become (su ciently) emptied,
their output transitions die since the resource places of the siphon cannot regain
tokens anymore, thus revealing the deadly embrace. Control techniques thus rely
on the insertion of monitor places [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], i.e. controllers in the real system, which
limit the leakage of tokens from the bad siphons.
      </p>
      <p>
        Although there exist obvious resemblances between the resource allocation
problem in FMS and that of parallel or concurrent software, previous attempts
to bring these well-known RAS techniques into the eld of software engineering
have been, to the best of our knowledge, either too limiting or unsuccessful.
Gadara nets [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] constitute the most recent attempt, yet they fall in the
overrestrictive side in the way the resources can be used, as a result of inheriting the
design philosophy applied for FMS. In this work, we will analyze why the net
classes and results introduced in the context of FMS fail when brought to the
eld of concurrent programming.
      </p>
      <p>Section 2 presents a motivating example and discusses the elements that
a RAS net model should desirably feature in order to successfully explore the
resource allocation problem within the software enginering discipline. Taking into
account those considerations, section 3 introduces a new Petri net class, called
PC2R. Section 4 relates the new class to those de ned in previous works and
establishes useful net transformations which forewarn us about new behavioural
phenomena. Section 5 introduces some of these anomalies which highlight the
fact that previous theoretical results in the context of FMS are insu cient in
the new framework. Finally, section 6 summarizes the results of the paper.
2</p>
      <p>
        The RAS view of a software application
Example 1 presents a humorous variation of Dijkstra’s classic problem of the
dining philosophers. We will adopt and adapt the beautiful writing by Hoare at
[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] for its enunciation.
      </p>
      <p>Example 1. The pragmatic dining philosophers. Five philosophers spend their
lives thinking and eating. The philosophers share a common dining room where
there is a circular table surrounded by ve chairs, each belonging to one
philosopher. A microwave oven is also available. In the center of the table there is a
large bowl of spaghetti which is frequently re lled (so it cannot be emptied),
and the table is laid with ve forks. On feeling hungry, a philosopher enters the
dining room, sits in his own chair, and picks up the fork on the left of his place.
Then he touches the bowl to feel its temperature. If he feels the spaghetti got too
cold, he will leave his fork and take the bowl to the microwave. Once it is warm
enough, he will come back to the table, sit on his chair and leave the bowl on the
table after recovering his left fork (please bear in mind that the philosopher is
really hungry by now). Unfortunately, the spaghetti is so tangled that he needs
to pick up and use the fork on his right as well. If he can do it before the bowl
gets cold again, he will serve himself and start eating. When he has nished, he
puts down both forks and leaves the room.</p>
      <p>According to the classic RAS nomenclature, each philosopher is a sequential
process, and the ve forks plus the bowl are serially reusable resources which are
shared among the ve processes. From a software perspective, each philosopher
can be a process or a thread which will be executed concurrently.</p>
      <p>Algorithm 1 introduces the code for each philosopher. Notationally, we
modelled the acquisition / release of resources by way of the wait() / signal()
operations, respectively. Both of them have been generalized for the acquisition
of multiple resources (separated by commas when invoking the function). Finally,
the trywait() operation is a non-blocking wait operation. If every resource is
available at the time trywait() is invoked, then it will acquire them and return
TRUE. Otherwise, trywait() will return FALSE without acquiring any resource.
For the sake of simplicity, it is assumed that the conditions with two or more
literals are evaluated atomically.</p>
      <p>Algorithm 1 - Code for Philosopher i (where i ∈ {1, 2, 3, 4, 5})
var
fork: array [1..5] of semaphores; // shared resources
bowl: semaphore; // shared resource
begin
do while (1)</p>
      <p>THINK;</p>
      <p>Enter the room;
(T1) wait(fork[i]);
do while (not(trywait(bowl, fork[i+1 mod 5]))</p>
      <p>or the spaghetti is cold )
(T2) if (trywait(bowl)</p>
      <p>and the spaghetti is cold ) then
(T3) signal(fork[i]);</p>
      <p>Go to the microwave;
Heat up spaghetti;</p>
      <p>Go back to table;
(T4) wait(fork[i]);
(T5) signal(bowl);</p>
      <p>end if;
(T 6) loop;</p>
      <p>Serve spaghetti;
(T7) signal(bowl);</p>
      <p>EAT;
(T8) signal(fork[i], fork[i+1 mod 5]);</p>
      <p>Leave the room;
loop;
R_S</p>
      <p>A1
A0</p>
      <p>A5
T1
T6
T7
A6
T8</p>
      <p>T2
T5</p>
      <p>T4</p>
      <p>T3</p>
      <p>A3
A2
A4</p>
      <p>R_F1</p>
      <p>R_F2</p>
      <p>Figure 1 depicts the net for algorithm 1, with i = 1, after abstracting the
relevant information from a RAS perspective. Figure 2 renders the composition
of the ve philosopher nets via fusion of the common shared resources. Note that
if we remove the dashed arcs from gure 2, then we can see ve disjoint strongly
connected state machines plus six isolated places.</p>
      <p>The ve state machines represent the control ow for each philosopher. Every
state machine is composed of seven states (each state being represented by a
place). Tokens in a state machine represent concurrent processes/threads which
share the same control ow. In this case, the unique token in each machine is
located at the so-called idle place. This means that, at the initial state, every
philosopher is thinking (outside the room). In general, the idle place can be seen
as a mechanism which enforces a structural bound: the number of concurrent
active threads (i.e. non-idle) is limited. Here, at most one philosopher of type i
can be inside the room, for each i ∈ {1, 2, 3, 4, 5}.</p>
      <p>The six isolated places are called resource places. A resource place represents
a certain resource type, and the number of tokens in it represents the
quantity of free instances of that resource type. In this case, every resource place
is monomarked. Thus, at the initial state there is one fork of type i, for every
i ∈ {1, 2, 3, 4, 5}, plus one bowl of spaghetti (modelled by way of the resource
place at the centre of the gure).</p>
      <p>Finally, the dashed arcs represent the acquisition or release of resources by the
active threads when they change their execution state. Every time a transition
is red, the total amount of resources available is altered. Please note, however,
that moving one isolated token of a state machine (by ring its transitions)
until the token reaches back the idle state, leaves the resource places marking
unaltered. Thus, the resource usage is conservative.</p>
      <sec id="sec-1-1">
        <title>Fork 4</title>
      </sec>
      <sec id="sec-1-2">
        <title>Fork 5</title>
      </sec>
      <sec id="sec-1-3">
        <title>Fork 3</title>
      </sec>
      <sec id="sec-1-4">
        <title>Fork 2</title>
      </sec>
      <sec id="sec-1-5">
        <title>Fork 1</title>
        <p>Fig. 2. The dining philosophers are thinking. Arcs from/to PR are dashed for clarity.</p>
        <p>At this point, we will discuss some capabilities that (in our humble opinion) a
RAS model should have so as to support the modelling of concurrent programs.</p>
        <p>
          Although acyclic sequential state machines are rather versatile as models
for sequential processes in the context of FMS (as the success of the S3PR and
S4PR classes prove), this is clearly too constraining even for very simple software
systems. Considering B hm and Jacopini’s theorem [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], however, we can assume
that every non-structured sequential program can be refactored into a structured
one using while-do loops. Meanwhile, calls to procedures and functions can be
substituted by way of inlining techniques. Let us also remind that fork/join
operations can also be unfolded into isolated concurrent sequential processes, as
evidenced in [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. As a result, we can restrict process models to state machines in
which decisions and iterations (in the form of while-do loops) are supported,
but not necessarily every kind of internal cycle.
        </p>
        <p>Another signi cant di erence between FMS and software systems from a
RAS perspective is that resources in the latter are not necessarily physical (e.g.,
a le) but can also be logical (e.g., a semaphore). This has strong implications
in the degree of freedom allowed for allocating those resources: we will return to
this issue a little later.</p>
        <p>In this domain, a resource is an object that is shared among concurrent
processes/threads and must be used in mutual exclusion. Since the number of
resources is limited, the processes will compete for the resource and will use
it in a non-preemptive way. This particular allocation scheme can be imposed
by the resources’ own access primitives, which may be blocking. Otherwise, the
resource can be protected by a binary semaphore/mutex/lock (if there is only one
instance of that resource type) or by a counting semaphore (multiple instances).
Note that this kind of resources can be of assorted nature (e.g., shared memory
locations, storage space, database table rows) but the required synchronization
scheme is inherently similar.</p>
        <p>On the other side, it is well-known that semaphores used in that aim can
be also seen as non-preemptive resources which are used in a conservative way.
For instance, a counting semaphore that limits the number of connections to a
database can be interpreted in that way from a RAS point of view. Here processes
will wait for the semaphore when attempting to establish a database connection,
and will release it when they decide to close the aforementioned connection.</p>
        <p>However, semaphores also perform a relevant role as an interprocess signaling
facility, which can also be a source of deadlocks. In this work, our goal is the
study of the resource allocation problem, so this functionality is out of scope.
We propose xing deadlock problems due to resource allocation issues rstly,
and later apply other techniques for amending those due to message passing.</p>
        <p>Due to their versatility, semaphore primitives are interesting for studying how
resources can be allocated by a process/thread. For instance, XSI semaphores
(also known as System V semaphores) have a multiple wait primitive (semop with
sem_op&lt;0). An example of multiple resource allocation appears in algorithm 1.
Besides, an XSI semaphore can be decremented atomically in more than one.</p>
        <p>Both POSIX semaphores (through sem_trywait) and XSI semaphores (through
semop with sem_op&lt;0 and sem_flag=IPC_NOWAIT) have a non-blocking wait
primitive. Again, algorithm 1 could serve as an example. Finally, XSI semaphores
also feature inhibition mechanisms (through semop with sem_op=0), i.e. processes
can wait for a zero value of the semaphore.</p>
        <p>As we suggested earlier, the fact that resources in software engineering do
not always have a physical counterpart is a very peculiar characteristic with
consequences. In this context, processes do not only consume resources but also
can create them. A process will destroy the newly created resources before its
termination. For instance, a process can create a shared memory variable (or a
service!) which can be allocated to other processes/threads. Hence the resource
allocation scheme is no longer rst-acquire-later-release, but it can be the other
way round too. Nevertheless, all the resources will be used in a conservative
way by the processes (either by a create-destroy sequence or by a wait-release
sequence). As a side e ect, and perhaps counterintuitively, there may not be free
resources during the system startup (as they still must be created), yet being
the system live.</p>
        <p>Summing up, for successfully modelling RAS in the context of software
engineering, a Petri net model should have at least the following abstract properties:
1. The control ow of the processes should be represented by state machines
with support for decisions (if-then-else blocks) and nested internal cycles
(while-do blocks).
2. There can be several resource types and multiple instances of each one.
3. State machines can have multiple tokens (representing concurrent threads).
4. Processes/threads use resources in a conservative way
5. Acquisition/release arcs can have non-ordinary weights (e.g., a semaphore
value can be atomically incremented/decremented in more than one unit)
6. Atomic multiple acquisition/release operations must be allowed
7. Processes can have decisions dependent of the allocation state of resources
(due to the non-blocking wait primitives, as in gure 2)
8. Processes can lend resources. As a side e ect, there could exist processes that
depend on resources which must be created/lent by other processes (hence
they cannot nish if executed in isolation)
3</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>PC2R nets</title>
      <p>In this section, we will present a new Petri net class, which ful lls the
requirements advanced in section 2: the class of Processes Competing for Conservative
Resources (PC2R). This class generalizes other subclasses of the SnPR family
while respecting the design philosophy on these. Hence, previous results are still
valid in the new framework. However, PC2R nets can deal with more complex
scenarios which were not yet addressed from the domain of SnPR nets.</p>
      <p>De nition 1 presents a subclass of state machines which is used for modelling
the control ow of the processes in isolation. Iterations are allowed, as well as
decisions within internal cycles, in such a way that the control ow of structured
programs can be fully supported. Non-structured processes can still be refactored
into them as discussed in Section 2.</p>
      <p>De nition 1. An iterative state machine N = h{p0} ∪ P, T, Ci is a strongly
connected state machine such that either every cycle contains p0 or P can be
partitioned into two subsets P1, P2, with a place p ∈ P2 such that:
1. The subnet generated by h{p} ∪ P1, •P1 ∪ P1•i is a strongly connected state
machine in which every cycle contains p, and
2. The subnet generated by h{p0} ∪ P2, •P2 ∪ P2•i is an iterative state machine.</p>
      <p>In gure 1, if we remove the resource places R_F 1, R_F 2 and R_S then we
obtain an iterative state machine, with P1 = {A2, A3, A4}, P2 = {A1, A5, A6},
p0 = A0 and p = A1. The de nition of iterative state machines is instrumental
for introducing the class of P C2R nets.</p>
      <p>P C2R nets are modular models. Two P C2R nets can be composed into a
new P C2R model via fusion of the common shared resources. Please note that
a P C2R net can simply be one process modelled by an iterative state machine
along with the set of resources it uses. Hence the whole net model can be seen
as a composition of the modules for each process. We will formally de ne the
class in the following:
De nition 2. Let IN be a nite set of indices. A P C2R is a connected
generalized pure P/T net N = hP, T, Ci where:
1. P = P0 ∪ PS ∪ PR is a partition such that: (a) [idle places] P0 = {p01 , ...,
p0|IN | }; (b) [process places] PS = P1 ∪ ... ∪ P|IN |, where ∀i ∈ IN : Pi 6= ∅ and
∀i, j ∈ IN : i 6= j, Pi ∩ Pj = ∅; (c) [resource places] PR = {r1, ..., rn}, n &gt; 0.
2. T = T1 ∪ ... ∪ T|IN |, where ∀i ∈ IN , Ti 6= ∅, and ∀i, j ∈ IN , i 6= j, Ti ∩ Tj = ∅.
3. For all i ∈ IN the subnet generated by restricting N to h{p0i } ∪ Pi, Tii is an
iterative state machine.
4. For each r ∈ PR, there exists a unique minimal p-semi ow associated to r,</p>
      <p>Yr ∈ IN|P |, ful lling: {r} = kYrk ∩ PR, (P0 ∪ PS ) ∩ kYrk 6= ∅, and Yr[r] = 1.
5. PS = Sr∈PR (kYrk \ {r}).</p>
      <p>Please note that the support of the Yr p-semi ows (point 4 of de nition 2)
may include P0: this is new with respect to S4P R nets. Such a resource place r is
called a lender resource place. If r is a lender, then there exists a process which
creates (lends) instances of r. In our model, processes can start their execution
creating resource instances, but before acquiring any other resource. Otherwise,
it could happen that the support of a minimal p-semi ow would contain more
than one resource place (thus infriging condition 4 of de nition 2).</p>
      <p>The class supports iterative processes, multiple resource acquisitions,
nonblocking wait operations and resource lending. Inhibition mechanisms are not
natively supported (although some cases can still be modelled with PC2R nets).</p>
      <p>
        The next de nition generalizes the notion of acceptable initial marking
introduced for the S4PR class. In software systems all processes/threads are initially
inactive and start from the same point (the begin operation). Hence, all of the
corresponding tokens are in the idle place in the initial marking (the process
places being therefore empty). Note that lender resource places may be empty
for an acceptable initial marking. Figure 2 shows a P2CR net with an acceptable
initial marking which does not belong to the S4PR class.
In [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], we introduced a new class of Petri net models for RAS, called SPQR
(Systems of Processes Quarreling over Resources). SPQR nets feature an
appealing syntactical simplicity and expressive power though they are very challenging
from an analytical point of view. They can be roughly described as RAS nets
in which the process subnets are acyclic and the processes can lend resources
in any possible (conservative) manner. Every PC2R can be transformed into a
Structurally Bounded SPQR net (SB SPQR net).
      </p>
      <p>The transformation rule is based on the idea of converting every while-do
block in an acyclic process which is activated by a lender resource place. This
lender place gets marked once the thread reaches the while-do block. The token
is removed at the exit of the iteration. This transformation must be applied
starting by the most intern loops, proceeding in decreasing nesting order. Figure
3 depicts the transformation rule. The rule preserves the language accepted by
the net (and thus liveness) since it basically consists in the addition of a implicit
place (place P 1 in the right hand net of gure 3, since R_P 1 can be seen as a
renaming of P 1 in the left hand net).</p>
      <p>Figure 4 illustrates the transformation of the net of example 1 but restricted
to two philosophers into the corresponding SB SPQR.</p>
      <p>Thanks to such transformations, the SB SPQR class can express the widest
range of systems in the Sequential RAS Petri net family. Figure 5 introduces the
inclusion relations between a variety of Petri net classes for Sequential RAS.</p>
      <p>T3</p>
      <p>P2</p>
      <p>T4 P3
P1</p>
      <p>P1</p>
      <p>R_P1
T1</p>
      <p>T2</p>
      <p>T1</p>
      <p>T2
T5</p>
      <p>T6</p>
      <p>T5</p>
      <p>T6</p>
      <p>P
R</p>
      <p>T3</p>
      <p>P2
T4 P3</p>
      <p>Fig. 3. Transforming PC2Rs into SB SPQRs: From iterative to acyclic processes</p>
      <p>Petri Nets &amp; Concurrency
TB4</p>
      <p>B4
B3</p>
      <p>TB3 B2</p>
      <p>TB5</p>
      <p>TB2
TA2
TA5</p>
      <p>A2
A4</p>
      <p>TA3
TA4</p>
      <p>A3</p>
      <p>R_F1
R_S
R_F2</p>
      <p>R_S
TA2</p>
      <p>A2</p>
      <p>TA3</p>
      <p>A3</p>
      <p>TA4</p>
      <p>A4</p>
      <p>TA5
R_A1</p>
      <p>R_F1
TA1
A1</p>
      <p>TA6
A0</p>
      <p>A5
TA7
A6</p>
      <p>TA8
TA1
A1
TA6
A0
TA7</p>
      <p>A5
A6</p>
      <p>TA8
S* PR</p>
      <sec id="sec-2-1">
        <title>Gadara</title>
        <p>+ process structure −
Fig. 5. Inclusion relations between Petri net classes for RAS
TB8
B6
TB7
B5</p>
        <p>B0
TB6
B1
TB1
TB8
B6
B5
TB7
B0
TB6
B1</p>
        <p>TB1</p>
      </sec>
      <sec id="sec-2-2">
        <title>Legend:</title>
        <p>"contains"
"contains</p>
        <p>after
transformation"
TB5</p>
        <p>B4</p>
        <p>TB4</p>
        <p>B3</p>
        <p>TB3</p>
        <p>B2</p>
        <p>TB2
5</p>
        <p>Some bad properties through examples
The bad news about the discussion in sections 2 and 3 is that siphon-based
control techniques for RAS do not work in general for concurrent software, even
ignoring (i.e., not using) the resource lending feature introduced by PC2R nets.</p>
        <p>Let us have a look back at example 1 and its related algorithm 1. It is not
di cult to see that, if every philosopher enters the room, sits down and picks
up the fork on the left of himself, the philosophers will be trapped in a livelock.
Every philosopher can eventually take the bowl of spaghetti and heat it up in the
microwave. This pattern can be repeated in nitely, but it is completely useless,
since no philosopher will ever be able to have dinner.</p>
        <p>
          This behaviour is obviously re ected in the corresponding net representation
at gure 2. Let us construct a ring sequence σ containing only the rst transition
of each state machine (i.e., the output transition of its idle place). The ring order
of these transitions is irrelevant. Now let us re such a sequence, and the net falls
in a livelock. The internal cycles are still rable in isolation, but no idle place can
ever be marked again. Unfortunately, the net has several bad siphons, but none
of them is empty or insu ciently marked in the livelock. In other words, for every
reachable marking in the livelock, there exist output transitions of the siphons
which are rable. As a result, the siphon-based non-liveness characterization for
earlier net classes (such as S4PR [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]) is not su cient in the new framework.
        </p>
        <p>A similar pattern can be observed in the upper net of gure 4. There exist
three bad siphons, which are D1 = {A2, A3, A4, A5, A6, B2, B4, B5, B6, R_F 2,
R_S}, D2 = {A2, A4, A5, A6, B2, B3, B4, B5, B6, R_F 1, R_S} and D3 = {A2,
A4, A5, A6, B2, B4, B5, B6, R_F 1, R_F 2, R_S}. Besides, every transition in
the set Ω = {T A2, T A3, T A4, T A5, T B2, T B3, T B4, T B5} is an output
transition of D1, D2 and D3. After ring T A1 and T B1 from the initial marking,
the state A1 + B1 + R_S is reached. This marking belongs to a livelock with
other six markings. The reader can check that, unfortunately, there exists a
rable transition in Ω for every marking in the livelock. A similar phenomenon
can be observed for the SB SPQR net at the bottom of gure 4.</p>
        <p>
          In general, livelocks are not a new phenomenon in the context of Petri net
models for RAS. Even for L − S3P R nets, which are the simplest models in
the family, deadlock freeness does not imply liveness [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. However, deadlocks
and livelocks always could be related to the existence of a siphon which was
‘dry’. Unfortunately, this no longer holds. Another well-known result for simpler
subclasses was that liveness equalled reversibility for nets with acceptable initial
markings. For PC2R, this is also also untrue, as gure 6 proves.
        </p>
        <p>
          We believe that the transformation of PC2R nets into SB SPQR can be
useful to understand the phenomena from a structural point of view. Intuitively
speaking, the concept of lender resource seems a simple yet powerful instrument
which still remains to be fully explored. Still, SB SPQRs can present very
complex behaviour. For instance, acceptably marked SB SPQR nets do not even
hold the directness property [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] (which e.g. was true for S4PR nets). Figure 7
shows a marked net which has no home states in spite of being live. This and
A0
        </p>
        <p>TA1
A1
TA2
A2
TA3</p>
        <p>R1
R2
R3</p>
        <p>TB3</p>
        <p>B2
TB2</p>
        <p>B1
TB1</p>
        <p>A1, B1, R2
B0</p>
        <p>A2,B1,R1,R2</p>
        <p>A1,B2,R2,R3</p>
        <p>A2,B2,R1,R2,R3
A2, B3, R3</p>
        <p>
          A3, B2, R1
other properties are profoundly discussed (along with their implications) in a
previous work [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ].
        </p>
        <p>T1</p>
        <p>A1</p>
        <p>T2</p>
        <p>A2</p>
        <p>T3</p>
        <p>A3</p>
        <p>A4</p>
        <p>T5</p>
        <p>A5</p>
        <p>T6</p>
        <p>A6</p>
        <p>T7
A0
T4
T11</p>
        <p>B0
R1</p>
        <p>R2</p>
        <p>R3</p>
        <p>R4</p>
        <p>R5
T8</p>
        <p>B1</p>
        <p>T9</p>
        <p>B2</p>
        <p>T10</p>
        <p>B3</p>
        <p>B4</p>
        <p>T12</p>
        <p>B5</p>
        <p>T13</p>
        <p>B6</p>
        <p>T14</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Conclusion and future work</title>
      <p>Although there exist a variety of Petri net classes for RAS, many of these
definition e orts have been directed to obtain powerful theoretical results for the
analysis and synthesis of this kind of systems. Nevertheless, we believe that the
process of abstraction is a central issue in order to have useful models from a
real-world point of view, and therefore requires careful attention. In this work,
we have followed that path and constructed a requirements list for obtaining
an interesting Petri net subclass of RAS models applied to the software
engineering domain. Considering that list, we de ned the class of PC2R nets, which
ful lls those requirements while respecting the design philosophy on the RAS
view of systems. We also introduced some useful transformation and class
relations so as to locate the new class among the myriad of previous models. Finally
we observed that the problem of liveness in the new context is non-trivial and
presented some cases of bad behaviour which will be subject of subsequent work.
A</p>
    </sec>
    <sec id="sec-4">
      <title>Petri Nets: Basic de nitions</title>
      <p>A place/transition net (P/T net) is a 3-tuple N = hP, T, W i, where W is a
total function W : (P × T ) ∪ (T × P ) → IN, being P , T non empty, nite and
disjoint sets. Elements belonging to the sets P and T are called respectively
places and transitions, or generally nodes. P/T nets can be represented as a
directed bipartite graph, where places (transitions) are graphically denoted by
circles (rectangles): let p ∈ P , t ∈ T , u = W (p, t), v = W (t, p), there is a directed
arc, labelled u (v), beginning in p (t) and ending in t (p ) i u 6= 0 (v 6= 0).</p>
      <p>The preset (poset ) or set of input (output) nodes of a node x ∈ P ∪ T
is denoted by •x (x•), where •x = {y ∈ P ∪ T | W (y, x) 6= 0} (x• = {y ∈
P ∪ T | W (x, y) 6= 0}). The preset (poset) of a set of nodes X ⊆ P ∪ T is denoted
by •X (X•), where •X = {y | y ∈ •x, x ∈ X} (X• = {y | y ∈ x•, x ∈ X}</p>
      <p>An ordinary P/T net is a net with unitary arc weights (i.e., W can be de ned
as a total function (P × T ) ∪ (T × P ) → {0, 1}). If the arc weights can be
nonunitary, the P/T net is also called generalized. A state machine is an ordinary
net such that for every transition t ∈ T , |•t| = |t•| = 1. An acyclic state machine
is an ordinary net such that for every transition t ∈ T , |•t|, |t•| ≤ 1, and there is
no circuit in it.</p>
      <p>A self-loop place p ∈ P is a place such that p ∈ p••. A pure P/T net (also
selfloop free P/T net) is a net with no self-loop places. In pure P/T nets, the net can
be also de ned by the 3-tuple N = hP, T, Ci, where C is called the incidence
matrix, C[p, t] = W (p, t) − W (t, p). Nets with self-loop places can be easily
transformed into pure P/T nets without altering most signi cant behavioural
properties, such as liveness, as shown in gure 8.</p>
      <p>m</p>
      <p>T
n
P
m</p>
      <p>P</p>
      <p>n
T’</p>
      <p>T’’</p>
      <p>Fig. 8. Removing self-loop places</p>
      <p>A p- ow is a vector Y ∈ ZZ|P |, Y 6= 0, which is a left annuler of the incidence
matrix, Y · C = 0. The support of a p- ow is denoted kY k, and its places are
said to be covered by Y . A p-semi ow is a non-negative p- ow, i.e. a p- ow
such that Y ∈ IN|P |. The P/T net N is conservative i every place is covered
by a p-semi ow. A minimal p-semi ow is a p-semi ow such that the g.c.d of its
non-null components is one and its support kY k is not an strict superset of the
support of another p-semi ow.</p>
      <p>A set of places D ⊆ P is a siphon i every place p ∈ •D holds p ∈ D•. The
support of a p-semi ow is a siphon but the opposite does not hold in general.</p>
      <p>Let N = hP, T, W i be a P/T net, and let P 0 ⊆ P and T 0 ⊆ T , where
P 0, T 0 6= ∅. The P/T net N 0 = hP 0, T 0, W 0i is the subnet generated by P 0, T 0 i
W 0(x, y) ⇔ W (x, y), for every pair of nodes x, y ∈ P 0 ∪ T 0.</p>
      <p>A marking m of a P/T net N is a vector IN|P |, assigning a nite number
of marks m[p] (called tokens ) to every place p ∈ P . Tokens are represented by
black dots within the places. The support of a marking, kmk, is the set of places
which are marked in m, i.e. kmk = {p ∈ P | m[p] 6= 0}. We de ne a marked P/T
net (also P/T net system) as the pair hN , m0i, where N is a P/T net, and m0
is a marking for N , also called initial marking. N is said to be the structure of
the system, while m0 represents the system state.</p>
      <p>Let hN , m0i be a marked P/T net. A transition t ∈ T is enabled (also rable )
i ∀p ∈ •t : m0[p] ≥ W (p, t), which is denoted by m0[ti. The ring of an
enabled transition t ∈ T changes the system state to hN , m1i, where ∀p ∈
P : m1[p] = m0[p] + C[p, t], and is denoted by m0[tim1. A ring sequence σ
from hN , m0i is a non-empty sequence of transitions σ = t1 t2 ... tk such that
m0[t1im1[t2i ... mk−1[tki. The ring of σ is denoted by m0[σitk. A marking m is
reachable from hN , m0i i there exists a ring sequence σ such that m0[σim. The
reachability set RS(N , m0) is the set of reachable markings, i.e. RS(N , m0) =
{m | ∃ σ : m0[σim}.</p>
      <p>A transition t ∈ T is live i for every reachable marking m ∈ RS(N , m0),
∃m0 ∈ RS(N , m) such that m0[ti. The system hN , m0i is live i every transition
is live. Otherwise, hN , m0i is non-live. A transition t ∈ T is dead i there is
no reachable marking m ∈ RS(N , m0) such that m[ti. The system hN , m0i is
a total deadlock i every transition is dead, i.e. no transition is rable. A home
state mk is a marking such that it is reachable from every reachable marking,
i.e. ∀m ∈ RS(N , m0) : mk ∈ RS(N , m). The net system hN , m0i is reversible
i m0 is a home state.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Lautenbach</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thiagarajan</surname>
            ,
            <given-names>P.S.:</given-names>
          </string-name>
          <article-title>Analysis of a resource allocation problem using Petri nets</article-title>
          . In Syre, J.C., ed.
          <source>: Proc. of the 1st European Conf. on Parallel and Distributed Processing</source>
          , Toulouse, Cepadues Editions (
          <year>1979</year>
          )
          <fpage>260</fpage>
          <lpage>266</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.M.:</given-names>
          </string-name>
          <article-title>The resource allocation problem in exible manufacturing systems</article-title>
          . In van der Aalst,
          <string-name>
            <surname>W-M-P.</surname>
          </string-name>
          and
          <string-name>
            <surname>Best</surname>
          </string-name>
          , E., ed.
          <source>: Proc. of the 24th Int. Conf. on Applications and Theory of Petri Nets</source>
          . Volume
          <volume>2679</volume>
          of LNCS.,
          <string-name>
            <surname>Eindhoven</surname>
          </string-name>
          , Netherlands, Springer Verlag (
          <year>June 2003</year>
          ) 23
          <fpage>35</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>Z.W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>M.C.</given-names>
          </string-name>
          : Deadlock Resolution in
          <source>Automated Manufacturing Systems: A Novel Petri Net Approach</source>
          . Springer, New York, USA (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Co</surname>
            <given-names>man</given-names>
          </string-name>
          , E.G.,
          <string-name>
            <surname>Elphick</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shoshani</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>System deadlocks</article-title>
          .
          <source>ACM Computing Surveys</source>
          <volume>3</volume>
          (
          <issue>2</issue>
          ) (
          <year>1971</year>
          )
          <fpage>67</fpage>
          <lpage>78</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Reveliotis</surname>
            ,
            <given-names>S.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lawley</surname>
            ,
            <given-names>M.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferreira</surname>
            ,
            <given-names>P.M.:</given-names>
          </string-name>
          <article-title>Polynomial complexity deadlock avoidance policies for sequential resource allocation systems</article-title>
          .
          <source>IEEE Transactions on Automatic Control</source>
          <volume>42</volume>
          (
          <issue>10</issue>
          ) (
          <year>1997</year>
          )
          <fpage>1344</fpage>
          <lpage>1357</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Fanti</surname>
            ,
            <given-names>M.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maione</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mascolo</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Turchiano</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Event-based feedback control for deadlock avoidance in exible production systems</article-title>
          .
          <source>IEEE Transactions on Robotics and Automation</source>
          <volume>13</volume>
          (
          <issue>3</issue>
          ) (
          <year>1997</year>
          )
          <fpage>347</fpage>
          <lpage>363</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Murata</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Petri nets: Properties, analysis and applications</article-title>
          .
          <source>Proceedings of the IEEE 77(4)</source>
          (
          <year>1989</year>
          )
          <fpage>541</fpage>
          <lpage>580</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Ezpeleta</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mart</surname>
            <given-names>nez</given-names>
          </string-name>
          , J.:
          <article-title>A Petri net based deadlock prevention policy for exible manufacturing systems</article-title>
          .
          <source>IEEE Transactions on Robotics and Automation</source>
          <volume>11</volume>
          (
          <issue>2</issue>
          ) (
          <year>April 1995</year>
          )
          <volume>173</volume>
          184
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Ezpeleta</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Recalde</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>A deadlock avoidance approach for non sequential resource allocation systems</article-title>
          .
          <source>IEEE Transactions on Systems, Man and Cybernetics</source>
          .
          <source>Part A: Systems and Humans</source>
          <volume>34</volume>
          (
          <issue>1</issue>
          ) (
          <year>January 2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Tricas</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Garc</surname>
            a-Valles,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ezpeleta</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>A Petri net structure-based deadlock prevention solution for sequential resource allocation systems</article-title>
          .
          <source>In: Proc. of the 2005 Int. Conf. on Robotics and Automation (ICRA)</source>
          , Barcelona, Spain,
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (April
          <year>2005</year>
          )
          <volume>272</volume>
          278
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Park</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reveliotis</surname>
            ,
            <given-names>S.A.</given-names>
          </string-name>
          :
          <article-title>Deadlock avoidance in sequential resource allocation systems with multiple resource acquisitions and exible routings</article-title>
          .
          <source>IEEE Transactions on Automatic Control</source>
          <volume>46</volume>
          (
          <issue>10</issue>
          ) (
          <year>2001</year>
          )
          <fpage>1572</fpage>
          <lpage>1583</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Ezpeleta</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tricas</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Garc</surname>
            a-VallØs,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.M.:</given-names>
          </string-name>
          <article-title>A banker's solution for deadlock avoidance in FMS with exible routing and multiresource states</article-title>
          .
          <source>IEEE Transactions on Robotics and Automation</source>
          <volume>18</volume>
          (
          <issue>4</issue>
          ) (
          <year>August 2002</year>
          )
          <volume>621</volume>
          625
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Xie</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jeng</surname>
          </string-name>
          , M.D.:
          <article-title>ERCN-merged nets and their analysis using siphons</article-title>
          .
          <source>IEEE Transactions on Robotics and Automation</source>
          <volume>29</volume>
          (
          <issue>4</issue>
          ) (
          <year>1999</year>
          )
          <fpage>692</fpage>
          <lpage>703</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Jeng</surname>
            ,
            <given-names>M.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xie</surname>
            ,
            <given-names>X.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peng</surname>
          </string-name>
          , M.Y.:
          <article-title>Process nets with resources for manufacturing modeling and their analysis</article-title>
          .
          <source>IEEE Transactions on Robotics</source>
          <volume>18</volume>
          (
          <issue>6</issue>
          ) (
          <year>2002</year>
          )
          <fpage>875</fpage>
          <lpage>889</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Hu</surname>
            ,
            <given-names>H.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>M.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>Z.W.</given-names>
          </string-name>
          :
          <article-title>Liveness enforcing supervision of video streaming systems using non-sequential Petri nets</article-title>
          .
          <source>IEEE Transactions on Multimedia</source>
          <volume>11</volume>
          (
          <issue>8</issue>
          ) (
          <year>December 2009</year>
          )
          <volume>1446</volume>
          1456
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liao</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reveliotis</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelly</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mahlke</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lafortune</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Gadara nets: Modeling and analyzing lock allocation for deadlock avoidance in multithreaded software</article-title>
          .
          <source>In: Proc. of the 49th IEEE Conf. on Decision and Control</source>
          , Atlanta, Georgia, USA, IEEE (
          <year>December 2009</year>
          )
          <volume>4971</volume>
          4976
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Hoare</surname>
            ,
            <given-names>C.A.R.</given-names>
          </string-name>
          :
          <article-title>Communicating sequential processes</article-title>
          .
          <source>Communications of the ACM</source>
          <volume>21</volume>
          (
          <issue>8</issue>
          ) (
          <year>1978</year>
          )
          <fpage>666</fpage>
          <lpage>677</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>On folk theorems</article-title>
          .
          <source>Communications of the ACM</source>
          <volume>23</volume>
          (
          <issue>7</issue>
          ) (
          <year>1980</year>
          )
          <fpage>379</fpage>
          <lpage>389</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <article-title>L pez-</article-title>
          <string-name>
            <surname>Grao</surname>
            ,
            <given-names>J.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.M.:</given-names>
          </string-name>
          <article-title>Lender processes competing for shared resources: Beyond the S4PR paradigm</article-title>
          .
          <source>In: Proc. of the 2006 Int. Conf. on Systems, Man and Cybernetics</source>
          , IEEE (
          <year>October 2006</year>
          )
          <volume>3052</volume>
          3059
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Garc</surname>
          </string-name>
          a-VallØs, F.:
          <article-title>Contributions to the structural and symbolic analysis of place/transition nets with applications to exible manufacturing systems and asynchronous circuits</article-title>
          .
          <source>PhD thesis</source>
          , University of Zaragoza,
          <source>Zaragoza (April</source>
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Best</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Voss</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Free choice systems have home states</article-title>
          .
          <source>Acta Informatica</source>
          <volume>21</volume>
          (
          <year>1984</year>
          )
          <fpage>89</fpage>
          <lpage>100</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>