4 ms·
No reliable message delivery, does not help define distributed systems because it can be broken down into a more fundamental elements that are required to guara
by joshuak 6y ago
No reliable message delivery, does not help define distributed systems because it can be broken down into a more fundamental elements that are required to guarantee that reliability.
Shared memory works well for me because in my mind shared memory means concurrent processes and memory have a common clock and are connected to the same power supply. This avoids confusion around how one handles some parts running while other parts are not.
Since we are attempting to define distributed systems not "concurrent processing", concurrent processing can be used in the definition and memory safety can be assumed. We can say that shared memory represents a known global state between concurrent processes because that problem is solved by the common clock and the tools that concurrent processes use to synchronize.
- zvrba 6y agoYou're not coherent. > in my mind shared memory means concurrent processes and memory have a common clock You're aware that modern CPUs clock their cores independently? (E.g., AVX512 throttling.) Hence, no common clock. > and are connected to the same power supply That's irrelevant. Unused cores get powered down all the time. On x86, the OS can execute HLT instruction when there's nothing to do and the CPU gets woken up by an interrupt. > This avoids confusion around how one handles some parts running while other parts are not. What is a "part"? The system's scheduler can suspend a thread for an indefinite amount of time. > memory safety can be assumed What does that even mean? > We can say that shared memory represents a known global state [...] Except that it's false, every single point can be countered with a single modern multicore cpu. On an abstract level, distributed computation is a computation where it's possible that a message does not reach its intended destination within a fixed time bound, for any reason. If you can guarantee message deliver within an arbitrary, but fixed, time bound, you can simulate shared memory. Yes, performance will suck if the time bound is large, but you have an equivalent system. That's how HW works underneath anyway. Tip: reading Lamport's papers is illuminating. You can also read about cache coherence protocols (e.g., MESI or MOESI) and you'll see that the illusion of shared memory is fundamentally implemented by message passing on HW level. The illusion is pretty much solid precisely because HW has time bounds on message delivery.