From cf130c134ba025b25ec5af136b114ac6dab4621f Mon Sep 17 00:00:00 2001 From: Connor Zanin Date: Wed, 14 Dec 2016 16:32:37 -0500 Subject: . --- chapter/4/dist-langs.md | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'chapter') diff --git a/chapter/4/dist-langs.md b/chapter/4/dist-langs.md index a26c42f..c445d2e 100644 --- a/chapter/4/dist-langs.md +++ b/chapter/4/dist-langs.md @@ -397,15 +397,29 @@ Because many real-world applications, like social media "connections," are natur ## Comparing Design -* level of implementation - * OS - * compiler (language) - * library -* granularity +Here, we present a taxonomy which can be used to classify each of the examples. +Among these distributed systems appear to be three major defining characteristics: level of implementation, granularity, and level of abstraction. +Importantly, these characteristics are orthogonal and each present an opportunity for a design decision. + +### Level of Implementation + +The programming model exposed by each of the examples is implemented at some level in the computer system. +In Mirage, the memory management needed to enable DSM is implemented within the operating system. +Mirage's model of DSM lends itself to an OS implementation because data is shared by address. +In other systems, such as Orca, Argus, and Erlang, the implementation is at the compiler level. +These are languages that support distribution through syntax and programming style. +Finally, some systems are implemented as libraries (e.g. Linda, MapReduce). +In such cases, the underlying language is powerfull enough to support desired operations. +The library is used to ease programmer burden and supply domain-specific syntax. + +### granularity + * logic, state * course (batch) * fine (actors) -* abstractions + +### Level of Abstraction + * location * scalability * fault tolerance -- cgit v1.2.3