In previous papers we had presented an application program interface (API) that enabled applications to use application-defined scheduling algorithms in a way compatible with the scheduling model defined in POSIX. This paper presents a new more general API with three main enhancements. First, the application scheduler is described as an abstract object that needs not be implemented as a thread, thus potentially increasing efficiency in some operating system architectures. Second, we define an abstract notion of urgency that is used by the kernel to order the threads in the scheduling queue, freeing the application scheduler of the responsibility of keeping the desired ordering of threads, and thus simplifying it and reducing overhead. In third place, we also consider thread synchronization through mutexes by adding the Stack Resource Policy or the Priority Inheritance Policy adapted to the generalized concept of urgency, both of which can be used in a large variety of fixed and dynamic priority scheduling policies without explicit intervention of the application scheduler.
[1]
Mario Aldea Rivas,et al.
Michael González Harbour: MaRTE OS: An Ada Kernel for Real-Time Embedded Applications
,
2001,
Ada-Europe.
[2]
Michael González Harbour,et al.
POSIX-compatible application-defined scheduling in MaRTE OS
,
2002,
Proceedings 14th Euromicro Conference on Real-Time Systems. Euromicro RTS 2002.
[3]
Lui Sha,et al.
Priority Inheritance Protocols: An Approach to Real-Time Synchronization
,
1990,
IEEE Trans. Computers.
[4]
Theodore P. Baker,et al.
Stack-based scheduling of realtime processes
,
1991,
Real-Time Systems.