36
Banker’s Algorithm Implementation in CPN Tools Michal Žarnay Department of Transportation Networks University of Žilina, Slovakia

Banker’s Algorithm Implementation in CPN Tools Michal Žarnay Department of Transportation Networks University of Žilina, Slovakia

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Banker’s Algorithm Implementation

in CPN Tools

Michal ŽarnayDepartment of Transportation Networks

University of Žilina, Slovakia

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 2

Outline

• Background

• Banker’s algorithm: modifications and implementation

• Analysis results and conclusion

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 3

Background

• Simulation of large and complex logistic nodes using ABAsim architecture

Deadlock states occur

Over one hundred resources

Automatic instead of human control

Tenths of processes at the same time

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 4

Resource Allocation System (RAS)

Processes Resources

Limited number

Used repeatedly

Running concurrently Allocated exclusively

RAS: Modelling in CPN

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

proc

proc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7

T4

T5

T1

P8cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources

3`R1++3`R2++3`R3

cResources

P0

1`1++1`2

cProcessID

Process Subnet

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

proc

proc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7

T4

T5

T1

P8cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources

3`R1++3`R2++3`R3

cResources

P0

1`1++1`2

cProcessID

Resource Subnet

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

proc

proc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7

T4

T5

T1

P8cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources

3`R1++3`R2++3`R3

cResources

P0

1`1++1`2

cProcessID

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 8

Used Category of RAS

Processes have properties:

Flexible routing

Use of multiple resource types at once

Concurrent processing

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

proc

proc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7

T4

T5

T1

P8cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources

3`R1++3`R2++3`R3

cResources

P0

1`1++1`2

cProcessID

1 1`1 1 1`11 1`1

5

1`R1++1`R2++3`R31 1`2

Branches of Concurrent Processing

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 10

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

proc

proc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7

T4

T5

T1

P8cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources

3`R1++3`R2++3`R3

cResources

P0

1`1++1`2

cProcessID

1 1`1

1 1`1

5

2`R1++2`R2++1`R31 1`2

Variants of Flexible Routing

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 11

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

proc

proc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7

T4

T5

T1

P8cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources

3`R1++3`R2++3`R3

cResources

P0

1`1++1`2

cProcessID

9 3`R1++3`R2++3`R3

21`1++1`2

Process and Resource Instances

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 12

Deadlock-Avoidance Policy (DAP)

Processes combine concurrent processing and flexible routing

Chosen: Banker’s algorithm

DAP for such a RAS not found

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 13

Banker’s Algorithm (BA)Using information about current system state it attempts to order running process instancesin a sequence, so they can be finished

State is not ordered

State may (not) be safe State is safe

State is ordered

Success? +–

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

proc

proc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7

T4

T5

T1

P8cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources

3`R1++3`R2++3`R3

cResources

P0

1`1++1`2

cProcessID

1 1`1

1 1`2

1 1`11 1`2

4

2`R1++2`R3

Assigning at T7

Request of P2: (0,-1,1)

Allocated Needed Available

R1 R2 R3 R1 R2 R3 R1 R2 R3

P1 0 2 1 0 1 1 2 0 2

P2 1 1 0 0 2 2

Allocated Needed Available

R1 R2 R3 R1 R2 R3 R1 R2 R3

P1 0 2 1 0 1 1 2 1 1

P2 1 0 1 0 2 1

Ordered state: <P1, P2>

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 15

Unsafe states

BA Principle

Deadlock states

Safe states

States orderedby BA

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 16

Tasks

1.Modify an available version of BA to suit the needs

2.Implement it

3.Test the BA on a model with outlined properties

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 17

Why Choosing CPN Tools?

• Fast construction of the model in Petri nets

• Facilities for qualitative analysis of the model

• Availability of language for the BA implementation

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 18

Outline

• Background

• Banker’s algorithm: modifications and implementation

• Analysis results and conclusion

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 19

Original Data Structures

• For process instances:– Allocated resource units to process instances

– Needed resource units to finish process instances

– Available resource units in the system

• Overall– Set of all process instances– Set of all resource instances

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 20

Original Algorithm

• On entering, each process instance declares the maximum number of units of each resource type needed for its execution

• Elaborated versions: supportive routines update the number of remaining needed resources on the run – information related to process stages

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

proc

proc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7

T4

T5

T1

P8cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources

3`R1++3`R2++3`R3

cResources

P0

1`1++1`2

cProcessID

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 22

Modifications of BA

• Needed renamed to RemainingNeeded

• Change information not fixed to process stages, but relative to it => Change – vector of relative changes for all resource types– Bits encoding– Primary and other descriptions

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 23

Bits Encoding

0001 0010

16 2

–18

1 2–

3 released

2 planned for re-allocation

0001 0010

16 2

18

1 2

2 assigned

BA: 12 Functionsin CPN ML

Links represent calls to functions

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 25

Adding BA to CPN Model

• Adding one place

• Adding arcs

• Editing transition guards

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

procproc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

[CanItBeAllocated ((proc, vChangeT6), BAData)]

T8

T3

[BADataAmended = ChangeMaxNeed ((proc, vMaxNeedPrimarySecondaryDiff), BAData), CanItBeAllocated ((proc, vChangeT3), BADataAmended)]

T2

[CanItBeAllocated ((proc, vChangeT2), BAData)]

T7[CanItBeAllocated ((proc, vChangeT7), BAData)]

T4 [CanItBeAllocated ((proc, vChangeT4), BAData)]

T5

[CanItBeAllocated ((proc, vChangeT5), BAData)]

T1

[CanItBeAllocated ((proc, vChangeT1), BAData)]

P8

cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources3`R1++3`R2++3`R3

cResources

P0 1`1++1`2

cProcessID

ModifyBAData ((proc, vChangeT9), ChangeMaxNeed ((proc, vInitMaxNeedPrimary), BAData))

ModifyBAData ((proc, vChangeT8), BAData)

ModifyBAData ((proc, vChangeT7), BAData)

ModifyBAData ((proc, vChangeT6), BAData)

ModifyBAData ((proc, vChangeT5), BAData)

ModifyBAData ((proc, vChangeT4), BAData)

ModifyBAData ((proc, vChangeT3), BADataAmended)

ModifyBAData ((proc, vChangeT2), BAData)

BAData

BAData

BAData

BAData

BAData

BAData

BAData

BAData

ModifyBAData ((proc, vChangeT1), BAData)

BAData

Banker's AlgData

vInitBADatacBankerAlgData

9

3`R1++3`R2++3`R32

1`1++1`2

1 1`([(1,[0,0,0]),(2,[0,0,0])],[(1,[2,3,1]),(2,[2,3,1])],[3,3,3])

A dedicated fusion place linked to transitions via a pair of arcs

1`R1++1`R3

R3

R3

R2R2

R2

2`R2 ++ 1`R3

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

1`R1 ++ 1`R3

proc

proc proc

procproc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

[CanItBeAllocated ((proc, vChangeT6), BAData)]

T8

T3

[BADataAmended = ChangeMaxNeed ((proc, vMaxNeedPrimarySecondaryDiff), BAData), CanItBeAllocated ((proc, vChangeT3), BADataAmended)]

T2

[CanItBeAllocated ((proc, vChangeT2), BAData)]

T7[CanItBeAllocated ((proc, vChangeT7), BAData)]

T4 [CanItBeAllocated ((proc, vChangeT4), BAData)]

T5

[CanItBeAllocated ((proc, vChangeT5), BAData)]

T1

[CanItBeAllocated ((proc, vChangeT1), BAData)]

P8

cProcessID

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

Resources3`R1++3`R2++3`R3

cResources

P0 1`1++1`2

cProcessID

ModifyBAData ((proc, vChangeT9), ChangeMaxNeed ((proc, vInitMaxNeedPrimary), BAData))

ModifyBAData ((proc, vChangeT8), BAData)

ModifyBAData ((proc, vChangeT7), BAData)

ModifyBAData ((proc, vChangeT6), BAData)

ModifyBAData ((proc, vChangeT5), BAData)

ModifyBAData ((proc, vChangeT4), BAData)

ModifyBAData ((proc, vChangeT3), BADataAmended)

ModifyBAData ((proc, vChangeT2), BAData)

BAData

BAData

BAData

BAData

BAData

BAData

BAData

BAData

ModifyBAData ((proc, vChangeT1), BAData)

BAData

Banker's AlgData

vInitBADatacBankerAlgData

9

3`R1++3`R2++3`R32

1`1++1`2

1 1`([(1,[0,0,0]),(2,[0,0,0])],[(1,[2,3,1]),(2,[2,3,1])],[3,3,3])

input data

output data after the change

ModifyBAData ((proc, vChangeT8), BAData)

BAData

BAData

BAData

BAData

BAData

BAData

BAData

BAData

BAData

1`R1++1`R3

R3

R3

R2R2

R2

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

proc

proc proc

procproc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7[CanItBeAllocated ((proc, vChangeT7), BAData)]

T4

T5

T1

P8cProcessID

Banker's AlgData

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

ResourcesP0

1`1++1`2

[BADataAmended = ChangeMaxNeed ((proc, vMaxNeedPrimarySecondaryDiff), BAData), CanItBeAllocated ((proc, vChangeT3), BADataAmended)]

[CanItBeAllocated ((proc, vChangeT4), BAData)]

vInitBADatacBankerAlgData

cProcessID

[CanItBeAllocated ((proc, vChangeT2), BAData)]

3`R1++3`R2++3`R3

cResources

[CanItBeAllocated ((proc, vChangeT1), BAData)]1`R1 ++ 1`R3

2`R2 ++ 1`R3

[CanItBeAllocated ((proc, vChangeT6), BAData)]

[CanItBeAllocated ((proc, vChangeT5), BAData)]

ModifyBAData ((proc, vChangeT9), ChangeMaxNeed ((proc, vInitMaxNeedPrimary), BAData))

ModifyBAData ((proc, vChangeT5), BAData)

ModifyBAData ((proc, vChangeT7), BAData)

ModifyBAData ((proc, vChangeT6), BAData)

ModifyBAData ((proc, vChangeT4), BAData)

ModifyBAData ((proc, vChangeT2), BAData)

ModifyBAData ((proc, vChangeT3), BADataAmended)

ModifyBAData ((proc, vChangeT1), BAData)

1 1`([(1,[0,0,0]),(2,[0,0,0])],[(1,[2,3,1]),(2,[2,3,1])],[3,3,3])

9

3`R1++3`R2++3`R3

21`1++1`2

Allocation

No allocation BA is called only by an allocation request (7 from 9 transitions)

ModifyBAData ((proc, vChangeT8), BAData)

BAData

BAData

BAData

BAData

BAData

BAData

BAData

BAData

BAData

1`R1++1`R3

R3

R3

R2R2

R2

2`R1

1`R2++1`R3

1`R1 ++ 1`R2

proc

proc proc

procproc

proc

proc

proc

procproc

proc

proc

procproc

proc

proc

R2

proc

proc

proc

proc

proc

proc

T9

T6

T8

T3T2

T7[CanItBeAllocated ((proc, vChangeT7), BAData)]

T4

T5

T1

P8cProcessID

Banker's AlgData

P7 cProcessID

P5

cProcessID

P3

cProcessID

P9 cProcessID

P6

cProcessID

P2 cProcessID

P4

cProcessID

P1cProcessID

ResourcesP0

1`1++1`2

[BADataAmended = ChangeMaxNeed ((proc, vMaxNeedPrimarySecondaryDiff), BAData), CanItBeAllocated ((proc, vChangeT3), BADataAmended)]

[CanItBeAllocated ((proc, vChangeT4), BAData)]

vInitBADatacBankerAlgData

cProcessID

[CanItBeAllocated ((proc, vChangeT2), BAData)]

3`R1++3`R2++3`R3

cResources

[CanItBeAllocated ((proc, vChangeT1), BAData)]1`R1 ++ 1`R3

2`R2 ++ 1`R3

[CanItBeAllocated ((proc, vChangeT6), BAData)]

[CanItBeAllocated ((proc, vChangeT5), BAData)]

ModifyBAData ((proc, vChangeT9), ChangeMaxNeed ((proc, vInitMaxNeedPrimary), BAData))

ModifyBAData ((proc, vChangeT5), BAData)

ModifyBAData ((proc, vChangeT7), BAData)

ModifyBAData ((proc, vChangeT6), BAData)

ModifyBAData ((proc, vChangeT4), BAData)

ModifyBAData ((proc, vChangeT2), BAData)

ModifyBAData ((proc, vChangeT3), BADataAmended)

ModifyBAData ((proc, vChangeT1), BAData)

1 1`([(1,[0,0,0]),(2,[0,0,0])],[(1,[2,3,1]),(2,[2,3,1])],[3,3,3])

9

3`R1++3`R2++3`R3

21`1++1`2

Change from primaryto secondary variant

Specific update, when changing the variants

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 30

Outline

• Background

• Banker’s algorithm: modifications and implementation

• Analysis results and conclusion

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 31

Analysis via CPN Tools

• Main criterion: number of deadlock states in the occurrence graphs of 2 models:– without BA– with BA

• Validation and verification phases:– All transitions occurring in the model without BA must

occur in the model with BA– All reachable markings must form a home space

• Restriction of state space by BA

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 32

Analysis Results

Banker’s algorithm– Avoids deadlock states– Does not influence behaviour of the model

inappropriately– Restricts the state space

Model versionState space

Deadlock states States TransitionsWithout BA 12 152 378With BA 0 113 260

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 33

Benefits

• Banker’s algorithm works for the outlined RAS with processes containing at the same time:– Concurrent processing– Flexible routing– Use of multiple resource types at once

• CPN Tools – integration of the properties:– Fast construction of the model in Petri nets– Facilities for qualitative analysis of the model– Availability of language for the BA implementation

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 34

Shortcomings

Implementation of BA in 12 CPN ML functions is rather complicated compared to sequential programming

Use of external routines?

Maintaining information about global states makes the CPN more difficult to read

Use of hierarchy

University of ŽilinaDept. of Transportation Networks

CPN'08 Workshop 35

Further Issues

• Complex models produce too large state spaces– Algorithm should be effective – verify it!– Challenge: How to make its run more effective for

such systems?

• More complicated way of allocation and release of resources – already implemented and requires further testing

• More complicated versions of BA – are they effective and beneficial for our purpose?

Thank you for your attention!

[email protected]