This repository is the main reference for the article that Professor T. Vardanega and I published with the above title: https://doi.org/10.1016/j.sysarc.2022.102688
The role of this repository is:
- contain and execute some bash scripts that allow you to configure and execute python scripts correctly
- aggregate two more repositories
- the former contains the Ada runtime environment implementing the semi-partitioned model by Xu & Burns.
- the latter contains some python scripts implementing the schedulability analysis (both for the RTE Platform and TSP Platform), synthetic tasksets generation (both for RTE Platform and TSP Platform) and storing the interesting Ada tasksets to be executed on the RTE Platform. Such tasksets are saved in XML format too.
- contains some python scripts that implement off-line data analysis resulting from real executions on the target HW.
If you want to execute Ada tasksets on the TSP Platform, you need to install both XtratuM 2.0.5 and RTEMS 4.9 (including its toolchain to compile Ada programs targetting RTEMS) targetting XtratuM itself. XtratuM is open-source, but you need to contact the FentISS team if you want to get it. You also need a Board Support Package (BSP) in order to execute RTEMS over XtratuM. FentISS has developed one for their applications, but you need to ask them if they are willing to share it with you.
The transition between automatic execution of Ada applications and analysis of log data is not automated. Before running the bash script, be sure that you have properly opened a terminal monitor (such as cutecom or HTerm) and connected to the target.
First of all, check each submodules' requirements.
Then, for RTA and tasksets generation, you need:
- Ubuntu (any Linux distro should be Ok)
- Python3
- pip3
- git (>= 2)
For the RTE Platform, you need:
- ... work in progress
If you have not already, read the disclaimer below. Really.
This section is still work in progress. Meanwhile, read the disclaimer below 🙃
git clone https://github.com/BottCode/Evaluating-a-multicore-Mixed-Criticality-System-implementation-against-a-temporal-isolation-kernel.git
cd Evaluating-a-multicore-Mixed-Criticality-System-implementation-against-a-temporal-isolation-kernel/
sh setup_local_repo.sh
sh execute_comparison_xuburns.sh
You need various git submodules and python modules. Before to use this infrastructure:
- execute
sh setup_local_repo.sh
This script will set-up you repository.
You can manipulate the input data via the configuration.ini file. The following is an explanation for each file section.
In this section you can choose which experiments you want to execute. Use yes
to execute an experiment. For instance, the following configuration executes only experiments 1, 3 and 4.
exp_1 = yes
exp_2 = no
exp_3 = yes
exp_4 = yes
This parameter is across all experiments.
In this section you can set how many tasksets to generate for each utilization level (see next section). We call this number
n = 10
This parameter is across all experiments.
In this section you can set the utilizations range (explained above) you want to explore. For instance, the following configuration sets
lower_bound = 1.11
upper_bound = 1.875
step = 0.012
This parameter is for experiment 2
In this section you can set the criticality factors range you want to explore. You can set this range as explained above. For instance, the following configuration generates
lower_bound = 1.5
upper_bound = 4
step = 0.25
Please Note: the criticality factor concept does not apply to a tasksets thought for the TSP approach, since a (TSP) task can have only one criticality level.
This parameter is for experiment 3
In this section you can set the HI-crit proportions range you want to explore. You can set this range as explained above. For instance, the following configuration generates
lower_bound = 0.2
upper_bound = 0.8
step = 0.1
This parameter is for experiment 4
In this section you can set the tasksets cardinality. For instance, the following configuration generates
size_list = 15, 20, 25, 30, 35
This parameter is across all experiments.
In this section you can set the Per-tasks nominal utilization range.
lower_bound = 0.048
upper_bound = 0.6
After the previous configuration setting:
- execute
sh execute_comparison_xuburns.sh
This script will execute the experiments specified into the configuration file and (incrementally) plot the results.
This work is a continuation of my master's thesis work in Computer Science at the University of Padua. In the rush to get my degree, a lot of the code I wrote (system configuration, taskset generation, schedulability analysis, and off-line data analysis) is really ugly 😭. Some things I’m ashamed of, but I think you’ll understand. I decided to publish the source code of my work anyway, both to facilitate any subsequent work to mine and because there may be someone in the community who one day decides to re-engineer the source code.