summaryrefslogtreecommitdiff
path: root/system/doc/design_principles
diff options
context:
space:
mode:
authorMaria-12648430 <maria-12648430@hnc-agency.org>2021-04-21 18:03:21 +0200
committerMaria-12648430 <maria-12648430@hnc-agency.org>2021-04-21 18:03:21 +0200
commitf2219677422354e71cb11bbfd2a0e0bbd92a8e7d (patch)
tree7547f2805c67d89a82cf51f0c46d01d6aba239b3 /system/doc/design_principles
parent2822067a6931c123fe14f7c634c72158fc7c039a (diff)
downloaderlang-f2219677422354e71cb11bbfd2a0e0bbd92a8e7d.tar.gz
Improve illustrations in supervisor chapter of design principles
Diffstat (limited to 'system/doc/design_principles')
-rw-r--r--system/doc/design_principles/Makefile7
-rwxr-xr-xsystem/doc/design_principles/sup-one_for_all.svg127
-rwxr-xr-xsystem/doc/design_principles/sup-one_for_one.svg86
-rwxr-xr-xsystem/doc/design_principles/sup-rest_for_one.svg125
-rw-r--r--system/doc/design_principles/sup4.fig32
-rw-r--r--system/doc/design_principles/sup4.gifbin1974 -> 0 bytes
-rw-r--r--system/doc/design_principles/sup5.fig43
-rw-r--r--system/doc/design_principles/sup5.gifbin2536 -> 0 bytes
-rw-r--r--system/doc/design_principles/sup_princ.xml16
9 files changed, 356 insertions, 80 deletions
diff --git a/system/doc/design_principles/Makefile b/system/doc/design_principles/Makefile
index 833e66ca43..5ba09513ab 100644
--- a/system/doc/design_principles/Makefile
+++ b/system/doc/design_principles/Makefile
@@ -56,13 +56,14 @@ GIF_FILES = \
dist4.gif \
dist5.gif \
inclappls.gif \
- sup4.gif \
- sup5.gif \
sup6.gif
SVG_FILES = \
code_lock.svg \
- code_lock_2.svg
+ code_lock_2.svg \
+ sup-one_for_all.svg \
+ sup-one_for_one.svg \
+ sup-rest_for_one.svg
IMAGE_FILES = $(GIF_FILES) $(SVG_FILES)
diff --git a/system/doc/design_principles/sup-one_for_all.svg b/system/doc/design_principles/sup-one_for_all.svg
new file mode 100755
index 0000000000..e4cfb8fbbd
--- /dev/null
+++ b/system/doc/design_principles/sup-one_for_all.svg
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
+<svg width="21cm" height="14.4cm" viewBox="-5 -5 330 220" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <style type="text/css">
+ .link {stroke: #000000; stroke-width: 2;}
+
+ .sup.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;}
+ .sup.body {fill: #ddddff; fill-opacity: 1; stroke-width: 3; stroke: #000000;}
+
+ .child.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;}
+ .child.label.index {font-size: 12px;}
+ .child.body {fill: #eeeeee; fill-opacity: 1; stroke-width: 3; stroke: #000000;}
+ .child.body.terminated {fill: #ff8888;}
+ .child.body.sup-terminated {fill: #ffaa00;}
+ .child.body.restarted {stroke: #00aa00;}
+
+ .ellipsis {fill: #000000; fill-opacity: 1; stroke: none;}
+ .ellipsis.sup-terminated {fill: #ffaa00;}
+ .ellipsis.restarted {stroke: #00aa00;}
+
+ .arrow {stroke-width: 2; stroke-linecap: round;}
+ .arrow.shutdown {stroke: #ffaa00;}
+ .arrow.restart {stroke: #00aa00;}
+
+ .divider {stroke: #000000; stroke-width: 0.2; stroke-dasharray: 1 3;}
+
+ .legend.label {font-size: 10px; fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal;}
+ .legend.body.terminated {fill: #ff8888; fill-opacity: 1; stroke: none;}
+ .legend.body.sup-terminated {fill: #ffaa00; fill-opacity: 1; stroke: none;}
+ .legend.body.restarted {fill: none; fill-opacity: 1; stroke: #00aa00; stroke-width: 2;}
+ </style>
+ <!-- illustration for the one_for_all strategy -->
+
+ <!-- linking lines -->
+ <line class="link" x1="140" y1="40" x2="20" y2="100" />
+ <line class="link" x1="140" y1="40" x2="100" y2="100" />
+ <line class="link" x1="140" y1="40" x2="180" y2="100" />
+ <line class="link" x1="140" y1="40" x2="300" y2="100" />
+
+ <!-- supervisor -->
+ <g transform="translate(140 20)">
+ <rect class="sup body" x="-20" y="-20" width="40" height="40"/>
+ <text class="sup label" x="0" y="8.5">S</text>
+ </g>
+
+ <!-- child process 1 -->
+ <g transform="translate(20 100)">
+ <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">1</tspan></text>
+ </g>
+
+ <!-- child process 2 -->
+ <g transform="translate(100 100)">
+ <ellipse class="child body terminated restarted" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">2</tspan></text>
+ </g>
+
+ <!-- child process 3 -->
+ <g transform="translate(180 100)">
+ <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">3</tspan></text>
+ </g>
+
+ <!-- ... -->
+ <g class="ellipsis sup-terminated restarted" transform="translate(240 100)">
+ <ellipse cx="-15" cy="0" rx="2" ry="2"/>
+ <ellipse cx="0" cy="0" rx="2" ry="2"/>
+ <ellipse cx="15" cy="0" rx="2" ry="2"/>
+ </g>
+
+ <!-- child process n -->
+ <g transform="translate(300 100)">
+ <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">n</tspan></text>
+ </g>
+
+ <!-- shutdown order arrow -->
+ <g class="arrow shutdown" transform="translate(0 130)">
+ <line x1="300" y1="0" x2="140" y2="0" />
+ <line x1="140" y1="0" x2="60" y2="0" style="stroke-dasharray: 1 5" />
+ <line x1="60" y1="0" x2="20" y2="0" />
+ <line x1="20" y1="0" x2="30" y2="-3" />
+ <line x1="20" y1="0" x2="30" y2="3" />
+ </g>
+
+ <!-- restart order arrow -->
+ <g class="arrow restart" transform="translate(0 140)">
+ <line x1="20" y1="0" x2="300" y2="0" />
+ <line x1="300" y1="0" x2="290" y2="-3" />
+ <line x1="300" y1="0" x2="290" y2="3" />
+ </g>
+
+ <!-- divider -->
+ <line class="divider" transform="translate(0 150)" x1="-5" y1="0" x2="330" y2="0" />
+
+ <!-- legend -->
+ <g transform="translate(5 155)">
+ <g transform="translate(0 10)">
+ <ellipse class="legend body terminated" cx="0" cy="0" rx="5" ry="5"/>
+ <text class="legend label" x="10" y="3">Terminated process</text>
+ </g>
+ <g transform="translate(0 22)">
+ <ellipse class="legend body sup-terminated" cx="0" cy="0" rx="5" ry="5"/>
+ <text class="legend label" x="10" y="3">Process terminated by the supervisor</text>
+ </g>
+ <g transform="translate(0 34)">
+ <ellipse class="legend body restarted" cx="0" cy="0" rx="5" ry="5"/>
+ <text font-size="10" style="fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal" x="10" y="3">Process restarted by the supervisor</text>
+ </g>
+ <g transform="translate(0 46)">
+ <g class="arrow shutdown" style="stroke-width: 1.5">
+ <line x1="5" y1="0" x2="-5" y2="0" />
+ <line x1="-5" y1="0" x2="0" y2="-2" />
+ <line x1="-5" y1="0" x2="0" y2="2" />
+ </g>
+ <text class="legend label" x="10" y="3">Shutdown order</text>
+ </g>
+ <g transform="translate(0 58)">
+ <g class="arrow restart" style="stroke-width: 1.5">
+ <line x1="-5" y1="0" x2="5" y2="0" />
+ <line x1="5" y1="0" x2="0" y2="-2" />
+ <line x1="5" y1="0" x2="0" y2="2" />
+ </g>
+ <text class="legend label" x="10" y="3">Restart order</text>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/system/doc/design_principles/sup-one_for_one.svg b/system/doc/design_principles/sup-one_for_one.svg
new file mode 100755
index 0000000000..d422246124
--- /dev/null
+++ b/system/doc/design_principles/sup-one_for_one.svg
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
+<svg width="21cm" height="11.2cm" viewBox="-5 -5 330 180" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <style type="text/css">
+ .link {stroke: #000000; stroke-width: 2;}
+
+ .sup.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;}
+ .sup.body {fill: #ddddff; fill-opacity: 1; stroke-width: 3; stroke: #000000;}
+
+ .child.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;}
+ .child.label.index {font-size: 12px;}
+ .child.body {fill: #eeeeee; fill-opacity: 1; stroke-width: 3; stroke: #000000;}
+ .child.body.terminated {fill: #ff8888;}
+ .child.body.sup-terminated {fill: #ffaa00;}
+ .child.body.restarted {stroke: #00aa00;}
+
+ .ellipsis {fill: #000000; fill-opacity: 1; stroke: none}
+ .ellipsis.sup-terminated {fill: #ffaa00;}
+ .ellipsis.restarted {stroke: #00aa00;}
+
+ .divider {stroke: #000000; stroke-width: 0.2; stroke-dasharray: 1 3;}
+
+ .legend.label {font-size: 10px; fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal;}
+ .legend.body.terminated {fill: #ff8888; fill-opacity: 1; stroke: none;}
+ .legend.body.restarted {fill: none; fill-opacity: 1; stroke: #00aa00; stroke-width: 2;}
+ </style>
+ <!-- illustration for the one_for_one strategy -->
+
+ <!-- linking lines -->
+ <line class="link" x1="140" y1="40" x2="20" y2="100" />
+ <line class="link" x1="140" y1="40" x2="100" y2="100" />
+ <line class="link" x1="140" y1="40" x2="180" y2="100" />
+ <line class="link" x1="140" y1="40" x2="300" y2="100" />
+
+ <!-- supervisor -->
+ <g transform="translate(140 20)">
+ <rect class="sup body" x="-20" y="-20" width="40" height="40"/>
+ <text class="sup label" x="0" y="8.5">S</text>
+ </g>
+
+ <!-- child process 1 -->
+ <g transform="translate(20 100)">
+ <ellipse class="child body" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" font-size="27" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">1</tspan></text>
+ </g>
+
+ <!-- child process 2 -->
+ <g transform="translate(100 100)">
+ <ellipse class="child body terminated restarted" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">2</tspan></text>
+ </g>
+
+ <!--- child process 3 -->
+ <g transform="translate(180 100)">
+ <ellipse class="child body" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">3</tspan></text>
+ </g>
+
+ <!-- ... -->
+ <g class="ellipsis" transform="translate(240 100)">
+ <ellipse cx="-15" cy="0" rx="2" ry="2"/>
+ <ellipse cx="0" cy="0" rx="2" ry="2"/>
+ <ellipse cx="15" cy="0" rx="2" ry="2"/>
+ </g>
+
+ <!-- child process n -->
+ <g transform="translate(300 100)">
+ <ellipse class="child body" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" font-size="27" x="0" y="8.5">P</tspan><tspan class="child label index" font-size="12" x="8" y="12">n</tspan></text>
+ </g>
+
+ <!-- divider -->
+ <line class="divider" transform="translate(0 135)" x1="-5" y1="0" x2="330" y2="0" />
+
+ <!-- legend -->
+ <g transform="translate(5 140)">
+ <g transform="translate(0 10)">
+ <ellipse class="legend body terminated" cx="0" cy="0" rx="5" ry="5"/>
+ <text class="legend label" x="10" y="3">Terminated process</text>
+ </g>
+ <g transform="translate(0 25)">
+ <ellipse class="legend body restarted" cx="0" cy="0" rx="5" ry="5"/>
+ <text class="legend label" x="10" y="3">Process restarted by the supervisor</text>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/system/doc/design_principles/sup-rest_for_one.svg b/system/doc/design_principles/sup-rest_for_one.svg
new file mode 100755
index 0000000000..33de28e99f
--- /dev/null
+++ b/system/doc/design_principles/sup-rest_for_one.svg
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
+<svg width="21cm" height="14.4cm" viewBox="-5 -5 330 220" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <style type="text/css">
+ .link {stroke: #000000; stroke-width: 2;}
+
+ .sup.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;}
+ .sup.body {fill: #ddddff; fill-opacity: 1; stroke-width: 3; stroke: #000000;}
+
+ .child.label {font-size: 27px; fill: #000000; text-anchor: middle; font-family: monospace; font-style: normal; font-weight: bold;}
+ .child.label.index {font-size: 12px;}
+ .child.body {fill: #eeeeee; fill-opacity: 1; stroke-width: 3; stroke: #000000;}
+ .child.body.terminated {fill: #ff8888;}
+ .child.body.sup-terminated {fill: #ffaa00;}
+ .child.body.restarted {stroke: #00aa00;}
+
+ .ellipsis {fill: #000000; fill-opacity: 1; stroke: none;}
+ .ellipsis.sup-terminated {fill: #ffaa00;}
+ .ellipsis.restarted {stroke: #00aa00;}
+
+ .arrow {stroke-width: 2; stroke-linecap: round;}
+ .arrow.shutdown {stroke: #ffaa00;}
+ .arrow.restart {stroke: #00aa00;}
+
+ .divider {stroke: #000000; stroke-width: 0.2; stroke-dasharray: 1 3;}
+
+ .legend.label {font-size: 10px; fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal;}
+ .legend.body.terminated {fill: #ff8888; fill-opacity: 1; stroke: none;}
+ .legend.body.sup-terminated {fill: #ffaa00; fill-opacity: 1; stroke: none;}
+ .legend.body.restarted {fill: none; fill-opacity: 1; stroke: #00aa00; stroke-width: 2;}
+ </style>
+ <!-- illustration for the rest_for_one strategy -->
+
+ <!-- linking lines -->
+ <line class="link" x1="140" y1="40" x2="20" y2="100" />
+ <line class="link" x1="140" y1="40" x2="100" y2="100" />
+ <line class="link" x1="140" y1="40" x2="180" y2="100" />
+ <line class="link" x1="140" y1="40" x2="300" y2="100" />
+
+ <!-- supervisor -->
+ <g transform="translate(140 20)">
+ <rect class="sup body" x="-20" y="-20" width="40" height="40"/>
+ <text class="sup label" x="0" y="8.5">S</text>
+ </g>
+
+ <!-- child process 1 -->
+ <g transform="translate(20 100)">
+ <ellipse class="child body" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">1</tspan></text>
+ </g>
+
+ <!-- child process 2 -->
+ <g transform="translate(100 100)">
+ <ellipse class="child body terminated restarted" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">2</tspan></text>
+ </g>
+
+ <!-- child process 3 -->
+ <g transform="translate(180 100)">
+ <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">3</tspan></text>
+ </g>
+
+ <!-- ... -->
+ <g class="ellipsis sup-terminated restarted" transform="translate(240 100)">
+ <ellipse cx="-15" cy="0" rx="2" ry="2"/>
+ <ellipse cx="0" cy="0" rx="2" ry="2"/>
+ <ellipse cx="15" cy="0" rx="2" ry="2"/>
+ </g>
+
+ <!-- child process n -->
+ <g transform="translate(300 100)">
+ <ellipse class="child body sup-terminated restarted" cx="0" cy="0" rx="20" ry="20"/>
+ <text><tspan class="child label" x="0" y="8.5">P</tspan><tspan class="child label index" x="8" y="12">n</tspan></text>
+ </g>
+
+ <!-- shutdown order arrow -->
+ <g class="arrow shutdown" transform="translate(0 130)">
+ <line x1="300" y1="0" x2="180" y2="0" />
+ <line x1="180" y1="0" x2="190" y2="-3" />
+ <line x1="180" y1="0" x2="190" y2="3" />
+ </g>
+
+ <!-- restart order arrow -->
+ <g class="arrow restart" transform="translate(0 140)">
+ <line x1="100" y1="0" x2="300" y2="0" />
+ <line x1="300" y1="0" x2="290" y2="-3" />
+ <line x1="300" y1="0" x2="290" y2="3" />
+ </g>
+
+ <!-- divider -->
+ <line class="divider" transform="translate(0 150)" x1="-5" y1="0" x2="330" y2="0" />
+
+ <!-- legend -->
+ <g transform="translate(5 155)">
+ <g transform="translate(0 10)">
+ <ellipse class="legend body terminated" cx="0" cy="0" rx="5" ry="5"/>
+ <text class="legend label" x="10" y="3">Terminated process</text>
+ </g>
+ <g transform="translate(0 22)">
+ <ellipse class="legend body sup-terminated" cx="0" cy="0" rx="5" ry="5"/>
+ <text class="legend label" x="10" y="3">Process terminated by the supervisor</text>
+ </g>
+ <g transform="translate(0 34)">
+ <ellipse class="legend body restarted" cx="0" cy="0" rx="5" ry="5"/>
+ <text font-size="10" style="fill: #000000; text-anchor: left; font-family: sans-serif; font-style: normal; font-weight: normal" x="10" y="3">Process restarted by the supervisor</text>
+ </g>
+ <g transform="translate(0 46)">
+ <g class="arrow shutdown" style="stroke-width: 1.5">
+ <line x1="5" y1="0" x2="-5" y2="0" />
+ <line x1="-5" y1="0" x2="0" y2="-2" />
+ <line x1="-5" y1="0" x2="0" y2="2" />
+ </g>
+ <text class="legend label" x="10" y="3">Shutdown order</text>
+ </g>
+ <g transform="translate(0 58)">
+ <g class="arrow restart" style="stroke-width: 1.5">
+ <line x1="-5" y1="0" x2="5" y2="0" />
+ <line x1="5" y1="0" x2="0" y2="-2" />
+ <line x1="5" y1="0" x2="0" y2="2" />
+ </g>
+ <text class="legend label" x="10" y="3">Restart order</text>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/system/doc/design_principles/sup4.fig b/system/doc/design_principles/sup4.fig
deleted file mode 100644
index 9127f9797c..0000000000
--- a/system/doc/design_principles/sup4.fig
+++ /dev/null
@@ -1,32 +0,0 @@
-#FIG 3.1
-Landscape
-Center
-Inches
-1200 2
-6 2100 750 2550 1200
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
- 2100 750 2550 750 2550 1200 2100 1200 2100 750
-4 0 -1 0 0 2 14 0.0000 4 150 105 2250 1050 1\001
--6
-1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 4762 2700 293 293 4575 2475 4950 2925
-1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 3112 2775 293 293 2925 2550 3300 3000
-1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 1987 2775 293 293 1800 2550 2175 3000
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
- 675 2550 1125 2550 1125 3000 675 3000 675 2550
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 900 2550 2250 1200
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 1950 2475 2325 1200
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 2400 1200 3000 2475
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 2475 1200 4500 2550
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 2625 2325 3450 3150
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 2625 3225 3525 2325
-4 0 -1 0 0 2 14 0.0000 4 150 240 1875 2850 P1\001
-4 0 -1 0 0 2 14 0.0000 4 150 240 3000 2850 P2\001
-4 0 -1 0 0 2 14 0.0000 4 150 255 4650 2775 Pn\001
-4 0 -1 0 0 0 14 0.0000 4 195 2025 3450 975 One for one supervision\001
-4 0 -1 0 0 0 14 0.0000 4 195 2490 3450 1200 If any child dies it is restarted\001
diff --git a/system/doc/design_principles/sup4.gif b/system/doc/design_principles/sup4.gif
deleted file mode 100644
index fc099f9b06..0000000000
--- a/system/doc/design_principles/sup4.gif
+++ /dev/null
Binary files differ
diff --git a/system/doc/design_principles/sup5.fig b/system/doc/design_principles/sup5.fig
deleted file mode 100644
index 554ab28ba0..0000000000
--- a/system/doc/design_principles/sup5.fig
+++ /dev/null
@@ -1,43 +0,0 @@
-#FIG 3.1
-Landscape
-Center
-Inches
-1200 2
-1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 4762 2700 293 293 4575 2475 4950 2925
-1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 3112 2775 293 293 2925 2550 3300 3000
-1 4 0 1 -1 7 0 0 -1 0.000 1 0.0000 1987 2775 293 293 1800 2550 2175 3000
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
- 675 2550 1125 2550 1125 3000 675 3000 675 2550
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 900 2550 2250 1200
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 1950 2475 2325 1200
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 2400 1200 3000 2475
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 2475 1200 4500 2550
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
- 2100 750 2550 750 2550 1200 2100 1200 2100 750
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 2775 2325 3450 3225
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 2775 3150 3525 2400
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 4350 3075 5100 2250
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 4425 2175 5100 3150
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 1650 2325 2325 3150
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 1650 3150 2325 2400
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 525 2325 1350 3150
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
- 525 3150 1350 2325
-4 0 -1 0 0 2 14 0.0000 4 150 240 1875 2850 P1\001
-4 0 -1 0 0 2 14 0.0000 4 150 240 3000 2850 P2\001
-4 0 -1 0 0 2 14 0.0000 4 150 255 4650 2775 Pn\001
-4 0 -1 0 0 0 14 0.0000 4 195 2310 3525 1005 If any child dies all children\001
-4 0 -1 0 0 0 14 0.0000 4 150 3015 3525 1260 are terminated and all are restarted\001
-4 0 -1 0 0 2 14 0.0000 4 105 105 2250 1050 a\001
-4 0 -1 0 0 0 14 0.0000 4 195 2040 3525 750 all-for-one supervision\001
diff --git a/system/doc/design_principles/sup5.gif b/system/doc/design_principles/sup5.gif
deleted file mode 100644
index 1197278f63..0000000000
--- a/system/doc/design_principles/sup5.gif
+++ /dev/null
Binary files differ
diff --git a/system/doc/design_principles/sup_princ.xml b/system/doc/design_principles/sup_princ.xml
index f03c317492..75ca085ed5 100644
--- a/system/doc/design_principles/sup_princ.xml
+++ b/system/doc/design_principles/sup_princ.xml
@@ -125,11 +125,18 @@ SupFlags = #{strategy => Strategy, ...}</code>
<p>The <c>strategy</c> key is optional in this map. If it is not
given, it defaults to <c>one_for_one</c>.</p>
+ <note>
+ <p>For simplicity, the diagrams shown in this section display a
+ setup where all the depicted children are assumed to have
+ a <seeguide marker="#restart">restart type</seeguide> of
+ <c>permanent</c>.</p>
+ </note>
+
<section>
<title>one_for_one</title>
<p>If a child process terminates, only that process is restarted.</p>
<marker id="sup4"></marker>
- <image file="../design_principles/sup4.gif">
+ <image file="../design_principles/sup-one_for_one.svg" width="80%">
<icaption>One_For_One Supervision</icaption>
</image>
</section>
@@ -140,7 +147,7 @@ SupFlags = #{strategy => Strategy, ...}</code>
terminated, and then all child processes, including
the terminated one, are restarted.</p>
<marker id="sup5"></marker>
- <image file="../design_principles/sup5.gif">
+ <image file="../design_principles/sup-one_for_all.svg" width="80%">
<icaption>One_For_All Supervision</icaption>
</image>
</section>
@@ -151,6 +158,10 @@ SupFlags = #{strategy => Strategy, ...}</code>
processes (that is, the child processes after the terminated
process in start order) are terminated. Then the terminated
child process and the rest of the child processes are restarted.</p>
+ <marker id="sup6"></marker>
+ <image file="../design_principles/sup-rest_for_one.svg" width="80%">
+ <icaption>Rest_For_One Supervision</icaption>
+ </image>
</section>
<section>
@@ -721,3 +732,4 @@ supervisor:terminate_child(Sup, Pid)</code>
</section>
</section>
</chapter>
+