|WP2 - Architecture Specification: Deliverable D2.1 - Architecture and Components Integration|
|Prev||Chapter 5. Kernel Components||Next|
From the point of view of a developer that is building new kernel components for the OCERA project, the kernel components can be classified in two types, depending on where the source code of that component will be finally allocated.
Low-level kernel component: This kind of component is highly related with the current kernel capabilities or internal algorithms, and therefore it requires to modify the current kernel source code in order to provide the new functionality or to improve an available one.
This kind of component will be distributed in a patch-form and hopefully incorporated in the main stream of the implied kernel source.
High-level kernel component: It only needs the current API of the kernel or an extended API offered by other kernel component in order to implement its new functionality. It does not require to modify the existing kernel source code or any low-level kernel component.
The distribution of this kind of components is quite easier. It can be distributed as a separated source code tree, while the required API is ensured to be available in the corresponding kernel.
Application-level kernel component: This kind of component uses the kernel API to provide a new service. It does not require to modify the existing kernel source code or any kernel component. The main characteristic of these components is they are implemented as application-level processes/threads, offering some kind of service to other processes/threads (as a kind of a classical UNIX daemon).
This kind of components is quite easy of being distributed. It is also implemented as a separated source code tree and distributed in the same manner of high-level kernel components.
These kind of components will be developed for both kernels present in the execution platform: Linux and RTLinux. In fact, one of the goals of this project, at kernel level, is to provide the same API in Linux and RTLinux, from the real-time point of view.
The term high-level, low-level or application-level used to classify the components is not related with the complexity or criticality of the component. It only refers to the fact that requires or not to modify the current kernel source. This classification can be applied to soft and hard real-time components, being the low-level components for the Linux kernel probably the most complicated to develop and maintain, due to the complexity of this kernel.