What kernel type does the RTOS eCos use?

841 views Asked by At

From my research I cannot find what kernel type is being used in eCos, such as monolithic or micro-kernel. All I could find from my research is that the kernel is a real-time one or websites just describe it as the eCos kernel, does this mean it is a custom made kernel?

What I know about eCos is that it is a hard RTOS although is somewhat vulnerable in terms of security, uses priority, queue based scheduling.

2

There are 2 answers

6
erenbasturk On BEST ANSWER

I think it is a monolithic kernel. If you review this page: http://ecos.sourceware.org/getstart.html

It is used instead of linux kernel and linux kernel support monolithic kernels. In addition, if it was a micro kernel , they would highlight the kernel type like QNX Kernel type which is micro kernel

0
Clifford On

A micro-kernel is:

... the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms include low-level address space management, thread management, and inter-process communication (IPC). (Wikipedia 11 Dec 2018)

The eCos kernel is described in its Reference Manual thus:

It provides the core functionality needed for developing multi-threaded applications:

  1. The ability to create new threads in the system, either during startup or when the system is already running.

  2. Control over the various threads in the system, for example manipulating their priorities.

  3. A choice of schedulers, determining which thread should currently be running.

  4. A range of synchronization primitives, allowing threads to interact and share data safely.

  5. Integration with the system's support for interrupts and exceptions.

It is quite clearly by comparison of these descriptions a micro-kernel. Other services provided by eCos such as file-systems, networking and device drivers are external and separable from the kernel. That is to say, you can deploy the kernel alone without such services and it remains viable.

In a monolithic kernel, these services are difficult or impossible to separate as they are an intrinsic part of the whole. Unlike eCos mand most other RTOS they do not scale well to small hardware platforms common in embedded systems. Monolithic kernels are suited to desktop and general purpose computing platforms, because the platforms themselves are monolithinc - a PC without a filesystem, display, keyboard etc, is not really viable, whereas in an embedded system that is not the case.

While Linux, and even Windows are used in embedded systems, a micro-kernel is deployable on platforms with a few tens of kilo-bytes of memory, whereas a minimal embedded Linux for example requires several mega-bytes and will include a great deal of code that your application may never use.

Ultimately the distinction is perhaps irrelevant, as is the terminology. It is what it is. You do not choose your kernel or OS on this criteria, but rather whether it provides the services you require, runs on your target, and fits in the available resource.