aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcnnrznn <cnnrznn@gmail.com>2016-11-16 13:58:53 -0500
committerGitHub <noreply@github.com>2016-11-16 13:58:53 -0500
commit53e58a99885ddcf08fa5a352a917a9e6100e093a (patch)
tree4008b3419fbe0d7581bcc7bb57038147a93a01ab
parent1818c8eabf2cb1c65019bafd57198eaade8af9c0 (diff)
Update dist-langs.md
-rw-r--r--chapter/4/dist-langs.md2
1 files changed, 2 insertions, 0 deletions
diff --git a/chapter/4/dist-langs.md b/chapter/4/dist-langs.md
index 9f3a91a..8745be9 100644
--- a/chapter/4/dist-langs.md
+++ b/chapter/4/dist-langs.md
@@ -39,6 +39,8 @@ However, there are ways of making C behave in a similar fashion with minimal dow
Shuffler [citation] is a system for continuous randomization of code.
Using techniques discussed in the paper, one could dynamically replace sections of a binary.
Another, slightly hack-ish workaround would be to receive the upgrade, serialize the current state, and finally run the new binary based on the serialized state.
+A third way of circumventing this problem would be to encapsulate any code in a shared library, and have logic in the program to unmap the old code, replace the library, and remap.
+This approach is analogous to Erlang's approach.
Other than dynamic code swapping and poor error detection, Erlang does not offer anything that is not offered by a traditional OS.
Isolation, concurrency, and message passing can all be accomplished with unix-style system calls.