View
215
Download
0
Tags:
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
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?