Hardware Reference
In-Depth Information
12.2.2
OSE
OSE is a real-time operating system produced by ENEA [OSE04]. It comes in three
flavors: OSE, OSEck and Epsilon. OSE is the portable kernel written mostly in C,
OSEck is the compact kernel version aimed at digital signal processors (DSPs), and
Epsilon is a set of highly optimized assembly kernels. The different kernels implement
the OSE API in different levels, from A to D: A is the smallest set of features that is
guaranteed to exist on all OSE supported platforms, while D is the full set of features
including virtual memory, memory protection and concept of users. OSE operating
systems are widely used in the automotive industry and the communications industry.
OSE processes can either be static or dynamic; that is, created at compile-time or at
run-time. Five different types of processes are supported: interrupt process, timer in-
terrupt process, prioritized process, background process, and phantom process. There
are different scheduling principles for different processes: priority-based, cyclic, and
round-robin. The interrupt processes and the prioritized processes are scheduled ac-
cording to their priority, while timer interrupt processes are triggered cyclically. The
background processes are scheduled in a round-robin fashion. The phantom processes
are not scheduled at all and are used as signal redirectors.
Processes can be grouped into blocks, and each block may be treated as a single pro-
cess; for example, one can start and stop a whole block at once. Moreover, one can
associate each block a memory pool that specifies the amount of memory available
for that block. Pools can be grouped into segments that can feature hardware memory
protection if available. There is a special pool for the system.
OSE processes use messages (called signals) as their primary communication method.
Signals are sent from one process to another and do not use the concept of mailboxes.
Each process has a single input queue from which it can read signals. It is possible
to use filters to read only specific types of messages. A process may also have a redi-
rection table that forwards certain types of messages to other processes. By the use of
“link handlers” signals may be sent between OSE systems over various communica-
tion channels (network, serial lines, etc).
There is an API functionality to get information about processes on other OSE sys-
tems so the right receiver can be determined. Sending signals to a higher-priority
process transfers the execution to the receiver. Sending to lower processes does not.
Signals going between processes inside the same memory area do not undergo copy-
ing. Only when it is necessary from memory point of view, the signal buffer is copied.
Semaphores also exist in more than one flavor, but the use of these is discouraged due
to priority inversion problems.
Search WWH ::




Custom Search