An open API service indexing awesome lists of open source software.

https://github.com/hachreak/scheduler-clockdriven

Scheduler real time that allows to put in execution a set of periodic tasks according to a clock driven approach, using a static scheduling algorithm that provides the system with a schedule feasible, if it exists, before the system goes running.
https://github.com/hachreak/scheduler-clockdriven

Last synced: 4 months ago
JSON representation

Scheduler real time that allows to put in execution a set of periodic tasks according to a clock driven approach, using a static scheduling algorithm that provides the system with a schedule feasible, if it exists, before the system goes running.

Awesome Lists containing this project

README

          

/**
* Copyright (C) 2013 Leonardo Rossi
*
* This source code is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this source code; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/

# ___[ Description ]______

Scheduler real time that allows to put in execution a set of periodic tasks according to a clock driven approach, using a static scheduling algorithm that provides the system with a schedule feasible, if it exists, before the system goes running.

# ___[ Design choices ]___

# MAIN
For pure convention and practicality, it was decided to separate from the executive function main. The main function of the executive is responsible to initialize and run it accordingly.

# EXECUTIVE_QUANT
For a design choice, it is defined the quantum of time EXECUTIVE_QUANT inside interface of the executive.
Within each task-[name].c was included the executive interface only for generate an appropriate time busywait that was independent from what actually was a large quantum of time.
Would be enough to incorporate into the interface task.h this constant to eliminate the dependency. You have not done to maintain, as required, the interface unchanged task.h.
This has allowed us to introduce ourselves not to worry about what is actually a large quantum of time. Everything would be adjusted accordingly.

# SLACK_STEALING
Defining in the Makefile the constant SLACK_STEALING is possible, therefore, to activate a management task sporadic with a policy of slack-stealing.
If not defined, management is used by default.

# BUSYCALIB_ADVANCED

For educational purposes, we tried a method for calibrating a busywait so finer.
For practical reasons it was decided to separate the functionality of busywait in an appropriate busy.he busy.c, used by the task sets to simulate processing.
By defining the constant BUSYCALIB_ADVANCED in the Makefile, you can enable a more advanced calibration busycalib.
From an analysis of the busycalib this as an example in the file example.c task, it appears that the PC on which they were made many of the test, the result was that a hypothetical busywait 1ms corresponded to a value between 600000 nsec and 700000 nsec .

# FRAME_HANDLER_SAME_PRIORITY
It was decided to give the opportunity to choose at compile time between two alternatives:
- Set the same priority for each frame handler: set the constant FRAME_HANDLER_SAME_PRIORITY in the Makefile
- Set a priority for each frame to climb: do not set any constant FRAME_HANDLER_SAME_PRIORITY in the Makefile
For the purposes of the exercise, both choices lead to the same result. The activation of this feature or not can affect the behavior of the scheduler in the event of a deadline miss for a frame (frame handler which give priority to execution). As the executive exits in case of deadline miss, you do not feel any difference.

# EXCSTATE
Because that is often made use of shared variables and of these it is necessary to maintain proper control, we developed a separate feature from the name excstate.
This library allows simplified management within the executive.

# ___[ Output di esempio ]___
Per comodita', si e' salvato dentro la cartella outputs una serie di output derivate da esecuzione dei vari task set in molteplici condizioni, considerando i casi di slack stealing attiva e disattiva.

# ___[ Task set implementati ]___

- task-example.c : task set of only periodic task
- task-err.c : task set only periodic tasks with a deadline miss of a task
- task-sp.c : task set of periodic task + sporadic task
- task-sp-err.c : task set of periodic task + sporadic task with deadline miss on sporadic task
- task-sp-err-wcet.c : task set of periodic task + sporadic task that does not exceed the static test on the deadline