EUROSmp supports the use of multiple microcontrollers/cores on a single hardware platform or in a network. The object-oriented design of the operating system, allows the transparent use of all system services independent of both the distribution of the system objects and the number of microcontrollers/cores.
EUROSmp supports the following modes of operation in a multiprocessor environment:
• Tightly-coupled (symmetric) multiprocessing:
Several microcontroller cores provide transparent their computing power to enable parallel execution of multiple processes or tasks. This operating mode is characterized by maximum flexibility and ensures a balanced load of all microcontroller cores.
Both code and data must be stored in a so-called global memory area, to which all microcontroller cores have access.
The computing power can be increased simply by adding new microcontroller cores. In this case, the need to synchronize the accesses to the global data leads to a heavier bus load, which lows the expected processing performance.
• Loose-coupled multiprocessing:
In this operating mode several autonomous microprocessor-based systems are involved, which, when if needed, exchange information and data via a shared memory or over a network system. The advantage of this configuration lies in the clear allocation of the overall task into separate functional units. The data exchange can be done in this case, for example via the so-called Message Passing Mechanism (MPI).
The lack of flexibility with regard to the equal utilization of each microprocessor systems represents a shortcoming of this multi-computer architecture.
• Mixed multiprocessing:
To avoid the drawbacks caused by the high bus load in case of the tightly-coupled multiprocessing while retaining the flexibility of the loosely-coupled multiprocessing, the so-called "mixed multiprocessing operating mode" was introduced under EUROS. The realization of this operating mode is possible only because the object-oriented design of the operating system.
Taking into account the requirements of a specific application, the system objects like processes, tasks, drivers, communication and synchronization mechanisms, etc. can be placed either in the local or in the global memory.
For example, only those objects will be placed, in the global memory, which are involved in higher-level activities and should be executed by all microcontroller cores. In contrast, tasks and drivers, which control peripheral devices will be placed in a local memory area, which guarantees a faster execution. The decision regarding the distribution of the system objects between the local and the global memory is taken during their creation time.
The management of system objects is totally transparent to the application. The use of the system services remains for both local and global system objects also completely transparent to the application.