Exobiont Systems

⌂ Home

Types in the Context of Distributed Systems

Type systems generally assume a fixed representation of values within a single platform. With this design, they achieve to provide a safe island of abstraction for computation on one machine, where values can be stored, manipulated, and passed between functions. This happens however without regard for heterogeneous architectures or external communication. It is implicitly assumed that all participants in a program share the same representation conventions.

Depending on the specific programming language implementation, many possibilities to realize the languages fundamental data grammar exist: System-level languages such as C expose representations bottom-up through explicit control of memory layout, whereas high-level languages rely on boxed and uniform representations that abstract away low-level details. In both cases, however, the guiding principle is the same: values are assumed to stay within the language and platform boundary, while cross-platform compatibility is not a concern. In distributed or multi-platform systems, this assumption no longer holds. Message- passing must bridge differences in machine architecture, endianness, alignment rules, and programming languages.

To implement a successful communication routine free of data-misinterpretation, values must be transformed into an alternative representation that preserves their semantics while being portable across boundaries. This process is known as marshaling, and appears in many forms throughout systems code such as IPC / RPC argument marshalling, protocol header serialization or communication with hardware devices.


Related