The FIRST project aims at developing a framework for a scheduling architecture that provides the ability to compose several applications or components into the system, and to flexibly schedule the available resources while guaranteeing hard real-time requirements. The FIRST Scheduling Framework (FSF) is independent of the underlying implementation, and can run on different underlying scheduling strategies. It is based on establishing service contracts that represent the complex and flexible requirements of the application, and which are managed by the underlying system to provide the required level of service.
FSF provides a generalized architecture framework that combines different kinds of requirements:
FSF has been implemented in two POSIX compliant real-time operating systems, MaRTE and SHARK, which are based on FP and EDF scheduling schemes, respectively, thus illustrating the platform independence of the presented approach.
As a result of the negotiation process, if a contract is accepted, a server is created for it. The server is a software object that is the run-time representation of the contract; it stores all the information related to the resources currently reserved for that contract, the resources already consumed, and the resources required to handle the budget consumption and replenishment events in the particular operating system being used.
Because there are various application requirements specified in the contract, they are divided into several groups, also allowing the underlying implementation to give different levels of support trading them against implementation complexity. This gives way to a modular implementation of the framework, with each module addressing specific application requirements. The minimum resources required by the application to be reserved by the system are specified in the core module. The requirements for mutual exclusive synchronization among parts of the application being scheduled by different servers or among different applications are specified in the shared objects module. Flexible resource usage is associated with the spare capacity and dynamic reclamation modules. The ability to compose applications or application components with several threads of control, thus requiring hierarchical scheduling of several threads inside the same server are supported by the hierarchical scheduling module. Finally, the requirements of distributed applications are supported by the distributed and the distributed spare capacity modules. We will now explain these modules together with their associated application requirements.