KURT (from the English Kansas University Real-Time Linux ) is an extension of soft real-time for the Linux kernel .
This project is based on minimal Linux changes and provides the developer with two normal and real-time modes. At any given time, a process using the KURT API library can switch between these two modes, which allow the process to work both in real-time mode and in normal Linux mode. The KURT software package is designed as a separate Linux RTMod system module, which becomes an additional PB scheduler. The PB scheduler is available in several versions and can be clocked from any timer in the system or from interruptions of the standard parallel port . Since all processes work in the common space of Linux processes, the programmer uses standard Linux APIs in his programs and can switch from one mode to another by events or in the desired place of the program using the KURT APIs. When switching to the PB mode, all processes in the system fall asleep until the PB process branch is released. This is quite convenient when implementing tasks with a large number of calculations, which inherently require RV mechanisms. An example is a subset of the tasks of processing audio-video information.
By default, the RTMod scheduler is clocked from the system timer, and switching the context of the PB tasks (time slice) is 10 ms. Using KURT together with the UTIME extension, you can bring up the context switching time of tasks to 1 ms. Interrupts are handled in the standard way for Linux, that is, the driver mechanism is used.
The KURT API is divided into two parts: application and system. The application part allows the programmer to control the behavior of their processes, and the KURT system API is designed to manipulate user processes and write custom schedulers.
The application part of the KURT API consists of only 4 functions:
- set_rtparams - allows you to add a process to the kernel with the SCHED_KURT mask. Only processes whose policy in the scheduler is set as SCHED_KURT will be able to work in real time;
- get_num_rtprocs - get the rt_id identifier of the process from the RT RTMod scheduler;
- rt_suspend - allows you to suspend the scheduler RV;
- get_rt_stats - Gets the status of the process from the table of the process scheduler of the PB.
Ease of use KURT allows you to program tasks with the maximum comfort that require both a PB and the whole variety of Unix APIs. The use of soft real-time is often suitable for multimedia tasks and for processing various kinds of information flows, where the computation time is critical. A completely different approach was taken when implementing hard real-time in Linux.
Other Linux Real-Time Extensions
- RTLinux
- RTAI [1]
- Xenomai
- ART-Linux Advanced Real-Time Linux is a Linux -based rigid RV OS for use in robotics.