feat: add interactive FC01 heap4 card
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
@startuml
|
||||
scale 620 height
|
||||
top to bottom direction
|
||||
skinparam backgroundColor transparent
|
||||
skinparam shadowing false
|
||||
skinparam defaultFontName Monospace
|
||||
skinparam defaultFontSize 10
|
||||
skinparam classBorderColor #2c7794
|
||||
skinparam classBackgroundColor #edf6fa
|
||||
skinparam ArrowColor #8095a1
|
||||
title A2 STRUCTURE — in-band metadata and address order
|
||||
|
||||
class "01 Block header" as HEADER {
|
||||
next : BlockLink_t*
|
||||
size : size_t
|
||||
}
|
||||
class "Allocated block" as ALLOC {
|
||||
02 header + 13 byte request
|
||||
aligned total = 32 bytes
|
||||
payload begins after header
|
||||
}
|
||||
class "03 Free remainder" as REM {
|
||||
own header
|
||||
size = 224 bytes
|
||||
}
|
||||
|
||||
HEADER *-- ALLOC : precedes payload
|
||||
ALLOC -down-> REM : split preserves 256
|
||||
|
||||
class "04 Address-ordered free list" as LIST {
|
||||
previous < inserted < current
|
||||
}
|
||||
class "05 Right neighbour" as RIGHT {
|
||||
block + block.size == current
|
||||
}
|
||||
class "06 Left neighbour" as LEFT {
|
||||
previous + previous.size == block
|
||||
}
|
||||
|
||||
REM -down-> LIST : insert by address
|
||||
LIST -down-> RIGHT : join first
|
||||
RIGHT -down-> LEFT : then join left
|
||||
|
||||
note right of LIST
|
||||
Ordering makes both physical
|
||||
neighbours locally visible.
|
||||
end note
|
||||
@enduml
|
||||
Reference in New Issue
Block a user