![]() |
Home |
RTKernel-32 - Real-Time Scheduler for On Time RTOS-32
|
20 MHz 386EX |
100 MHz AMD Élan SC520 |
1.46 GHz Intel Atom |
RTKernel-32 Operation | |
---|---|---|---|---|
43 | 1.45 | 0.07 | Round-Robin task switch | |
79 | 2.88 | 0.16 | Semaphore task switch | |
37 | 3.31 | 0.19 | Semaphore Signal | |
25 | 3.84 | 0.10 | Semaphore Wait | |
100 | 6.20 | 0.38 | Task activation (Signal, Wait) | |
31 | 4.21 | 0.15 | Store data in a mailbox | |
30 | 5.87 | 0.18 | Retrieve data from a mailbox | |
96 | 5.70 | 0.28 | Task-to-task communication | |
107 | 11.83 | 0.38 | Task-to-mailbox-to-task communication | |
All times are microseconds |
RTKernel-32's scheduler is event-driven. It was developed specifically for real-time requirements and adheres to the following rules:
The application can dynamically change thread priorities and it can turn preemptions and time-slicing on and off at run-time.
The application's interrupt handlers can suspend or activate threads. Interrupt handlers can be programmed completely in C/C++ within the application. They can freely exchange signals or data with threads using semaphores or mailboxes. Semaphore or mailbox operations may then initiate a task switch, if required. Interrupts from any hardware can be processed. Interrupt sharing for PCI devices is also supported. If APIC mode is enabled, up to 32 unique IRQs can be used.
RTKernel-32 includes two schedulers: the single-CPU scheduler and a multiprocessor scheduler which can manage up to 32 CPUs (multi-cores, multi-CPUs, Hyperthreads, or a combination thereof). The multiprocessor scheduler automatically distributes threads among all available CPUs. If an OpenMP compatible compiler such as Microsoft Visual Studio is used, parallel algorithms can be distributed onto all available CPUs automatically through compiler directives.
RTKernel-32 is delivered in two versions. The Standard version is optimized for minimum size and best performance, while the Debug version contains additional code for parameter and consistency checks at run-time. The Debug version recognizes usage errors and issues corresponding error messages. Moreover, the Debug version offers various debugging aids. For example, the current source code position of a thread can be displayed, all locked resources can be listed, or the CPU time requirements can be determined for each thread and interrupt handler. Additional powerful tools are the Performance Profiler and the Kernel Tracer which can log kernel and application events in real-time for off-line analysis.
As an additional aid to debugging, RTKernel-32 (Debug and Standard version) offers a number of informational functions. For example, a list of all threads, semaphores, or mailboxes can be displayed, or the state of a specific thread can be queried. RTKernel-32 can also determine the current and maximum stack usage of each thread and interrupt handler.
To allow porting existing multithreaded programs from Win32, almost all Win32 thread API functions are supported by RTKernel-32. Applications can use Win32 threads, events, mutexes, semaphores, and critical sections. Unlike Windows, RTKernel-32 allows hardware interrupt handlers and hardware accesses within the application code.
RTKernel-32 is supplied with the following supplemental modules, always delivered with full source code:
Last update: November 28, 2021 | Copyright © 1996,2021 On Time |