|
|
|
|||||
|
|
|
|||||
|
|
|
Rainbow-OS documentation:Rainbow OS offers automatically a strong form of consistency whithout the need for the user or an application to spend extra effort. It is called the transactional consistency. Transactional Consistency In Rainbow OS all computations are encapsulated in transactions - replacing the traditional process concept. All transactions in the cluster are restartable and share the same address space. The computed results of a transaction are written to memory. To avoid inconsistency issues the addresses of their written pages are sent to all nodes of the cluster ("write-set") at the end of a transaction. Based on the published write-set collisions between competing transactions can be detected by participating nodes. A concurrent transaction which has read one or more modified pages is aborted and restarted automatically. To revert to the original state, shadow copies of the original memory pages the transaction has worked on are kept by the corresponding node. The set of all pages read or written during a transaction is recorded by local memory management unit (MMU) hardware and requires only marginal software action. Rainbow OS therefore needs no locks for accessing memory or shared objects during executions. It further uses an optimistic synchronisation scheme, allowing transactions proceed locally and do delayed validation at completion time. The transactional consistency is realised via an optimistic synchronisation scheme. Typically, different nodes work on separate data. So confilcts due to simultaneous write accesses to the same data are relatively seldom during normal work in the complete cluster. It ist therefore possible to always work on the original data and keep shadow copies for the rarely case of a collision to restart than always use a pessimistic approach in wich there will be only worked on copies and during validation time a transfer, e.g. copying, to the original data will be necessary. Multiconsistency In addition to transactional consistency Rainbow OS can simultaneously hosts several different consistency models. Each consistency model governs a separate logical address range of 512 GB presently. Initially Rainbow OS already includes three consistency models: local unshared memory, physically mapped memory - which can be used to host device related buffers and control registers - and transactional shared memory. Transactional Consistency is preset for all references, inhibiting improper manipulations of the kernel runtime structures and of the language type system. Additional consistency models can be included for each possible need of applications. They use weaker consistency models for indirect scalars and even for references, without putting system functions at risk. These weaker consistency models include "non-colliding single writer multiple reader", "subscribe for update", "isochronous broadcast", "arithmetic reduce" etc.. |