Partitioned architecture

The partitioned architecture pattern can be used with POK. In that case, the kernel will execute several partitions on top of the POK kernel and provide time and space partitioning across partitions.

Figure 7.1: The different pok layers

Each partition contains their memory allocators, their runtime and ressources (the so-called libpok part). Partitions can have different scheduling algorithms to schedule their tasks.

In that case, the kernel provides communication isolation across partitions as well as space isolation (each partition has its own memory segment).

The overall architecture is illustrated in figure 7.1. The kernel executes the partitions, each partition contains its application code. Drivers are executed in partitions and don't reside inside the kernel.

To build a such architecture, you must have:

Figure 7.2: Build steps for a partitioned system

Then, each part of the system is compiled and integrated, as depicted in figure 7.2. The kernel is compiled and each partitions is compiled. Eeach part produces a binary file. Since POK relies on the ELF file format, each binary of each part is compiled into an ELF file.

Then, we integrate ALL ELF files to produce a single bootable binary so that the final binary contains different binaries: the code for the kernel and the code of all partitions. Since POK relies on the ELF file format, the final ELF file contains other ELF files. The organization of the final binary is depiceted in figure 7.3.

When kernel boots, it loads each elf file of each partition in a different memory segment to achieve space isolation. So, each ELF file of each partition is loaded in a single and protected memory area of the system.

Figure 7.3: ELF file format of a POK system

Copyright 2009 POK Team