The embedded world is currently undergoing massive change.
IIoT (Industry 4.0 or whatever you want to call it) has opened the doors, communication is at the top of the priority list, development is accelerating and industry has recognized the value of open source software as a means to solve this race.
In addition, hardware is becoming more powerful while costs are decreasing. This means that multi-core CPUs, for example, are now acceptable for the embedded world when it comes to the BOM.
In addition to these changes in hardware and software, the role of automation has also changed in the wake of cyber-physical systems. One approach is to bring parts of the IT world into the OT world. These approaches, known as edge and fog computing, see realtime data (= low-latency data) being processed on-site. So roughly with what was previously called a controller (or even sensor). A kind of data collection point, the edge or fog computer, then resides above the controller.
Due to the progress made by hardware manufacturers, edge computers have the capacity to run applications locally that were previously run on servers. And with that, the programming approaches of the IT world are also making their way into the embedded world. The embedded world now has to deal with virtual machines (VM) and their management software (Virtual Machine Manager, VMM, also known as hypervisor) or containers, and assess which is the better solution. Whereby specific embedded requirements, such as real-time, still must be considered and achieved.
A virtual machine is always the package of operating system and application code that runs in the virtual environment, i.e. in user space. With the aid of an emulator, the package can even be made to appear as having a different hardware architecture to the one physically present.
In the container approach, the virtual machine, the pretence of its own hardware and operating system are abandoned. The operating system is identical for all containers, and all containers share the same hardware. The separation of the individual containers takes place via special functions of the operating system (under Linux these are for example CGROUPS and Namespaces). This makes the containers lean, meaning they don't need much additional code to your actual task. You can find more information on the topic in our white paper.
Figure 2 shows the schematic structure of a VM (left) and a container-based solution (right)