Our model is based on a set of passive objects distributed among the processes of the application. These objects may be shared in a transparent way by these processes. The user has only to declare his objects and the read/write operations realized on these variables. The effective location of his data is hidden to the user. Our system manages the mapping of the objects and their accesses with a classical client-server protocol. For the moment, our system is based on a one writer and many readers model. By this way we have a lot of copies of the same object in different processes. We use a weak consistency to assume the coherence of objects copies in our system, but if the user needs it, it's possible to declare objects with a strong coherence protocol (management of synchronization barriers).
As the links between processors are physically the same way of communication (Ethernet), we introduce the notion of groups in our system. These groups virtually merge together processes which globally share the same set of objects. This hierarchy allows to avoid global communications, between all the processors, required to maintain objects coherence. By this way, we propose a structural approach of parallel programming (with a hierarchical merge). This rich model permits to take into account of a wide number of architectures and complex and diversified applications (for example: databases (each group has a dedicated database), imagery (scene splitting)...).
Figure 1: Groups
A group can be created at compilation-time by the user if he knows which processes of the application share the same set of objects. When a process wants to access an objects shared by an other group, it can do an occassional access (see Chapter 4.2). The copy, returned by this request, is correct at a given instant but the coherence of this copy will not be maintain by DOSMOS. For further information on DOSMOS model see [BL94].