3 ms·
If you have the slightest interest in the history of operating systems, I strongly recommend reading Joe Armstrong's thesis. While it is mostly about Erlang, he
by lkrubner 4y ago
If you have the slightest interest in the history of operating systems, I strongly recommend reading Joe Armstrong's thesis. While it is mostly about Erlang, he also goes into detail about many of the experimental systems of the 1960s, 1970s and 1980s, which gave him his ideas:
https://erlang.org/download/armstrong_thesis_2003.pdf https://erlang.org/download/armstrong_thesis_2003.pdf
Chapter 5 is especially relevant:
excerpt:
What is a fault-tolerant system and how can we program it? This question is central to this thesis and to our understanding of how to build fault-tolerant systems. In this chapter we define what we mean by “fault-tolerance” and present a specific method for programing fault-tolerant systems. We start with a couple of quotations:
We say a system is fault-tolerant if its programs can be properly executed despite the occurrence of logic faults. — [16]
...
To design and build a fault-tolerant system, you must under- stand how the system should work, how it might fail, and what kinds of errors can occur. Error detection is an essential com- ponent of fault tolerance. That is, if you know an error has occurred, you might be able to tolerate it by replacing the ocending component, using an alternative means of compu- tation, or raising an exception. However, you want to avoid adding unnecessary complexity to enable fault tolerance be- cause that complexity could result in a less reliable system. — Dugan quoted in Voas [67].
The presentation here follows Dugan’s advice, I explain exactly what happens when an abnormal condition is detected and how we can make a sodware structure which detects and corrects errors.
The remainder of this chapter describes:
• A strategy for programming fault-tolerance — the strategy is to fail immediately if you cannot correct an error and then try to do some- thing that is simpler to achieve.
• Supervision hierarchies — these are hierarchical organisations of tasks.
• Well-behaved functions — are functions which are supposed to work correctly. The generation of an exception in a well-behaved function is interpreted as a failure.
- rramadass 4y agoJust an FYI in case you don't already know of this, i found the following two papers by Armstrong useful too; * A History of Erlang * The Development of Erlang
- HeckFeck 4y agoSome of my most enjoyable days were spent programming Erlang. I often wondered what an entire operating system would be like were it designed along the same principles.