Architecture
Host System Integration
Host System Integration is used to embed Cohesion into the hosting environment. A sensor-driven container-controlled application lifecycle ensures most effective resource utilization while at the same time preventing interference with the hosting environment’s intended use.Sensors for CPU load, input devices (i.e. mouse and keyboard) and system time can be combined in arbitrary ways to control when an application is executed.
Communication
Communication in Cohesion is highly configurable and enables higher level virtualization services and programming models to instantiate custom communication primitives.The concept of composable channels allows to assemble communication channels from modularized quality of service (QoS) aspects, e.g. reliability, encryption or compression. Channels are established between endpoints that are first class objects and can be published and looked up using the discovery service.The communication layer provides several unicast and groupcast endpoint implementations with different performance characteristics that may be complemented by custom ones.
Virtualization
Virtualization creates an abstraction layer between distributed resources and applications.This layer provides services to discover and organize resources, to monitor their availability and to coordinate their usage. Nodes become visible within the Grid by joining a group.A group’s primary purpose is to define a scope for interaction.R esources contributed by group members are published and looked up using a discovery service.To maintain an accurate view of the available resources, an efficient failure detector is employed, that is used to detect unexpected node departures.
Task Model
Cohesions Task Model provides a generic execution infrastructure on top of which various programming models can be implemented. Tasks are put into a distributed task pool, which controls their lifecycle and enables task migrations between task queues.Lif ecycle transitions are published as events, thus enabling the adaptation of the task pool’s behavior to the requirements for implementing particular programming models.Sp ecialized load balancing and fault tolerance strategies suited for distinct Desktop Grid setups and applications can be easily plugged into Cohesion.

