SlideShare a Scribd company logo
1 of 27
Download to read offline
RTAI
&

Earliest Deadline First
Real-Time Operative Systems M
Stefano Bragaglia
stefano.bragaglia@unibo.it
Overview
Introduction
—  RTAI: Real-Time Application Interface

—  1996: feasibility study to abandon DOS in favour of
the Linux kernel

—  1999: first working release on Linux kernel 2.2
—  2001: further extended to run several kernels
together
Overview
RTHAL: Real-Time Hardware Abstraction Layer
User Space
Linux
Kernel

Real-Time
Kernel
System Calls

Standard
Processes

Real-Time
Processes

—  Introduces a new layer

between the hardware and
the Linux kernel

—  Involves minimal changes
with respect to the
standard kernel

—  The first releases required

to replace about 70 lines of
code

Hardware
Overview
RTHAL: Real-Time Hardware Abstraction Layer
User Space
Linux
Kernel

Real-Time
Kernel
System Calls

Standard
Processes

Real-Time
Processes

—  Critical data and t-functions
held in a single place

—  Interrupts, system calls,

timers are easier to capture

—  Native operations are replaced
by operations on dynamic
RTHAL pointers

—  When RTAI is on, they lead to
the real-time kernel
structures, otherwise to the
original ones

Hardware
Linux can not enable/disable interruptions anymore!
Overview
RTHAL: Real-Time Hardware Abstraction Layer
User Space
Linux
Kernel

Real-Time
Kernel

—  RTHAL does not provide

real-time services, it only
intercept system calls

—  Calls are redirected towards
System Calls
Standard
Processes

Real-Time
Processes

structures referenced by
RTHAL

—  Hardware only accessed by
real-time functions, hence
Linux run as a low priority
process

Hardware
RTAI is a kernel module which does not require to be loaded at boot: can be enabled at will!
Overview
ADEOS: Adaptive Domain Environment for Operating Systems
User Space
Linux
Kernel

Real-Time
Kernel
System Calls

Standard
Processes

Real-Time
Processes

—  RTHAL further improved into
ADEOS

—  Hierarchy of operative systems
divided in layers

—  A flexible environment to share

hardware among several
(instances of) operative systems

—  A micro-kernel handles the

communication between the
different domains

—  Chains of responsibility

Hardware
RTAI is a kernel module which does not require to be loaded at boot: can be enabled at will!
Architecture
ADEOS: Adaptive Domain Environment for Operating
Systems
User Space

User Space

User Space

Linux Kernel

Linux Kernel

Linux Kernel

Standard
Processes

Real-Time Processes

Standard
Processes

I/O

Scheduler
Real-Time Kernel
SW Interrupts

HW Interrupts
RTHAL / ADEOS

Interrupts

Hardware

SW Interrupts

I/O
RTAI Inter-Process
Communication
—  Real-time FIFOs
— 

Basic mechanism to asynchronously exchange data between RT and user space
processes

—  Shared Memory
— 

Shares memory areas between RT and user space processes

—  Messages
— 

Allows to send messages both asynchronously and synchronously (RPC) among RT
processes

—  Mailboxes
— 

Send/receive messages of any size (ordered by priority, arrival time, etc.) between RT
and user space processes

—  Semaphores
— 

A process synchronisation method when accessing shared resources which avoids
unsupervised priority inversions
RTAI Inter-Process
Communication
—  Real-time extensions of the POSIX standard poorly

supported
—  Only pthread, mutex and pqueue partially supported

—  LXRT (LinuX Real-Time)
—  Native RTAI processes run in kernel mode
(RTAI API only available in kernel modules)
—  LXRT allows to use of RTAI API in user space
(the APIs in kernel mode and user space are the same,
where possible)
—  A more gradual transition from Linux processes to RT ones
—  Hardware is more protected
(memory can be freely accessed in kernel space)
—  More convenient, but less efficient
Module
setup

Real-time
part

Declarative
part

An example of RTAI kernel
module
#include	
  <rtai.h>	
  	
  
#include	
  <rtai_sched.h>	
  	
  
...	
  	
  
RT_TASK	
  task;	
  	
  
...	
  	
  
void	
  task_routine()	
  {	
  	
  
	
  	
  while(1)	
  {	
  	
  
	
  	
  	
  	
  /*	
  Codice	
  real-­‐time	
  */	
  	
  
	
  	
  	
  	
  rt_task_wait_period();	
  
	
  	
  }	
  
}	
  
...	
  
int	
  init_module(void)	
  {	
  	
  
	
  	
  ...	
  
	
  	
  rt_task_init(&task,	
  task_routine,	
  0,	
  stack_size,	
  priority,	
  0,	
  0);	
  	
  
	
  	
  timer_period	
  =	
  start_rt_timer(nano2count(1e9));	
  	
  
	
  	
  task_period	
  =	
  2*timer_period;	
  	
  
	
  	
  rt_task_make_periodic(&task,	
  now,	
  task_period);	
  	
  
}	
  
...	
  
void	
  cleanup_module(void)	
  {	
  	
  
	
  	
  rt_task_delete(&task);	
  	
  
	
  	
  stop_rt_timer();	
  	
  
}	
  
Process
termination

Real-time
part

Process
initialisation

Decl.
part

An example of RTAI LXRT
process
#include	
  <rtai_lxrt.h>	
  
	
  ...	
  	
  
int	
  main(void)	
  {	
  	
  
	
  	
  RT_TASK	
  *task;	
  
	
  	
  ...	
  
	
  	
  sched_setscheduler(0,	
  SCHED_FIFO,	
  &priorita);	
  	
  
	
  	
  mlockall(MCL_CURRENT	
  |	
  MCL_FUTURE);	
  
	
  	
  task	
  =	
  rt_task_init(nam2num("Name"),	
  priority,	
  stack_size,	
  0);	
  	
  
	
  	
  timer_period	
  =	
  start_rt_timer(nano2count(1e9));	
  	
  
	
  	
  task_period	
  =	
  2*timer_period;	
  
	
  	
  ...	
  
	
  	
  rt_make_hard_real_time();	
  	
  
	
  	
  rt_task_make_periodic(task,	
  now,	
  task_period);	
  	
  
	
  	
  while(1)	
  {	
  	
  
	
  	
  	
  	
  /*	
  Real-­‐time	
  code	
  */	
  
	
  	
  	
  	
  rt_task_wait_period();	
  
	
  	
  }	
  	
  
	
  	
  rt_make_soft_real_time();	
  	
  
	
  	
  rt_task_delete(task);	
  	
  
	
  	
  return	
  0;	
  	
  
}	
  
RT Scheduling: EDF
RTAI Scheduling
—  RTAI supports various scheduling policies
—  Priority-driven (native; process priorities are assigned
manually):
—  FIFO: First-In-First-Out
—  RR: Round Robin
—  More advanced solutions:
—  RM: Rate Monotonic
—  EDF: Earliest Deadline First
Priority-driven Scheduling
Policies
FIFO – same priority
Proc1:	
  started	
  
Proc1:	
  iteration	
  1	
  
Proc1:	
  iteration	
  2	
  
Proc1:	
  iteration	
  3	
  
Proc1:	
  iteration	
  4	
  
Proc1:	
  terminated	
  
Proc2:	
  started	
  
Proc2:	
  iteration	
  1	
  
Proc2:	
  iteration	
  2	
  
Proc2:	
  iteration	
  3	
  
Proc2:	
  terminated	
  
Proc3:	
  started	
  
Proc3:	
  iteration	
  1	
  
Proc3:	
  iteration	
  2	
  
Proc3:	
  terminated	
  
	
  

FIFO – specific priorities RR – same priority
Proc3:	
  started	
  
Proc1:	
  started	
  
Proc3:	
  iteration	
  1	
  
Proc2:	
  started	
  
Proc3:	
  iteration	
  2	
  
Proc3:	
  started	
  
Proc3:	
  terminated	
  
Proc1:	
  iteration	
  1	
  
Proc1:	
  started	
  
Proc2:	
  iteration	
  1	
  
Proc1:	
  iteration	
  1	
  
Proc3:	
  iteration	
  1	
  
Proc1:	
  iteration	
  2	
  
Proc1:	
  iteration	
  2	
  
Proc1:	
  iteration	
  3	
  
Proc2:	
  iteration	
  2	
  
Proc1:	
  iteration	
  4	
  
Proc3:	
  iteration	
  2	
  
Proc1:	
  terminated	
  
Proc1:	
  iteration	
  3	
  
Proc2:	
  started	
  
Proc2:	
  iteration	
  3	
  
Proc2:	
  iteration	
  1	
  
Proc1:	
  iteration	
  4	
  
Proc2:	
  iteration	
  2	
  
Proc1:	
  terminated	
  
Proc2:	
  iteration	
  3	
  
Proc2:	
  terminated	
  
Proc2:	
  terminated	
  
Proc3:	
  terminated	
  
	
  
	
  
Other Scheduling Policies
RM – Rate Monotonic

EDF – Earliest Deadline
First

—  Can be easily implemented

—  Can be similarly implemented

—  Process priority is inferred

—  Priority is given to the process

from FIFO scheduling

from the frequency of its
activation

—  RTAI functions:
—  rt_task_make_periodic(…)
finds priority of available
processes from their period

—  void	
  rt_spv_RMS(<cpu>)

sets priority of processes on
given CPU by their frequency

from FIFO scheduling

that is ready and has to
complete first

—  RTAI functions:
— 

void	
  rt_task_set_resume_	
  
end_times(<resume>,<end>) sets

the absolute resume and
deadline of the process;
rescheduled on resume;
periodicity with neg values
Other Scheduling Policies
RM – rate monotonic scheduling
Proc	
  HF:	
  started	
  
Proc	
  HF:	
  terminated	
  
Proc	
  LF:	
  started	
  
Proc	
  LF:	
  terminated	
  
Proc	
  HF:	
  started	
  
Proc	
  HF:	
  terminated	
  
Proc	
  HF:	
  started	
  
Proc	
  HF:	
  terminated	
  
Proc	
  LF:	
  started	
  
Proc	
  HF:	
  started	
  	
  <preemption!>	
  
Proc	
  HF:	
  terminated	
  
Proc	
  LF:	
  terminated	
  
Proc	
  HF:	
  started	
  
Proc	
  HF:	
  terminated	
  
Proc	
  LF:	
  started	
  
Proc	
  LF:	
  terminated	
  
	
  

EDF – earliest deadline first scheduling
Proc	
  1:	
  started	
  
Proc	
  1:	
  terminated	
  
Proc	
  2:	
  started	
  	
  	
  <preemption!>	
  
Proc	
  1:	
  started	
  	
  <desp.	
  prior.>	
  
Proc	
  1:	
  terminated	
  
Proc	
  1:	
  started	
  
Proc	
  1:	
  terminated	
  
Proc	
  2:	
  terminated	
  
Proc	
  1:	
  started	
  
Proc	
  1:	
  terminated	
  
Proc	
  2:	
  started	
  
Proc	
  1:	
  started	
  
Proc	
  1:	
  terminated	
  
Proc	
  1:	
  started	
  
Proc	
  1:	
  terminated	
  
Proc	
  2:	
  terminated	
  
	
  
EDF – Earliest Deadline First
—  Optimal scheduling algorithm on preemptive
uniprocessors

—  100% utilisation bound with processes whose
deadline is equal to their period
—  EDF guarantees that all the processes meet their

deadlines if CPU utilisation is not more than 100%

—  No fault signal (ASAP execution policy)
—  Missed deadlines are handled by the user
EDF – Earliest Deadline First
—  Create the RT processes with priorities (discarded later)
—  rt_task_init(&task1,	
  task_execution,	
  "1",	
  10000,	
  LOW_PR,	
  0,	
  0);	
  	
  
—  rt_task_init(&task2,	
  task_execution,	
  "2",	
  10000,	
  HIGH_PR,	
  0,	
  
0);	
  	
  

—  Make the RT processes periodic (period useless)
—  rt_task_make_periodic(&task1,	
  now	
  +	
  ...,	
  PERIOD_1);	
  	
  
—  rt_task_make_periodic(&task2,	
  now	
  +	
  ...,	
  PERIOD_2);	
  	
  

—  Set activation and deadline per process
—  rt_task_set_resume_end_times(now	
  +	
  ...,	
  -­‐REL_DEADL_1);	
  	
  
—  rt_task_set_resume_end_times(now	
  +	
  ...,	
  -­‐REL_DEADL_2);	
  	
  

—  Reset activation and deadline on completion
—  rt_task_set_resume_end_times(-­‐PERIOD_n,-­‐REL_DEADL_n);	
  	
  
EDF – Earliest Deadline First (LXRT)
— 

Create a child process
— 

— 

Create a real-time “agent” for each process
— 
— 

— 

rt_make_hard_real_time();	
  

rt_task_make_periodic(task1,	
  now	
  +	
  ...,	
  PERIOD_1);	
  	
  
rt_task_make_periodic(task2,	
  now	
  +	
  ...,	
  PERIOD_2);	
  	
  

Set activation and deadline per process
— 
— 

— 

rt_task_init(nam2num(“Task2”),	
  HIGH_PR,	
  0,	
  0);	
  	
  

Make the processes periodic
— 
— 

— 

rt_task_init(nam2num(“Task1”),	
  LOW_PR,	
  0,	
  0);	
  	
  

Start real-time mode
— 

— 

fork();	
  

rt_task_set_resume_end_times(now	
  +	
  ...,	
  -­‐REL_DEADL_1);	
  	
  
rt_task_set_resume_end_times(now	
  +	
  ...,	
  -­‐REL_DEADL_2);	
  	
  

Reset activation and deadline on completion
— 

rt_task_set_resume_end_times(-­‐PERIOD_n,-­‐REL_DEADL_n);	
  
Installing and Using RTAI
Installing RTAI
1.  Install Linux (any common distro will do)
—  Ubuntu, Fedora, Mandrake, Slackware, Gentoo…

2.  Download the source code of a vanilla kernel
—  http://www.kernel.org

3.  Download a compatible RTAI version
—  http://www.rtai.org (match the kernel version!)

4.  Patch the kernel source code
— 

cd	
  sources	
  &&	
  patch	
  –p1	
  <	
  ../rtai/…/file.patch	
  
Installing RTAI
5.  Configure the kernel (default .config as reference)
— 

cp	
  /boot/config-­‐current_version	
  .config	
  

— 

make	
  menuconfig	
  

6.  Set the code maturity level
— 

Code	
  maturity	
  level	
  -­‐-­‐>	
  Promptfordevelopmentand/or	
  incomplete	
  drivers	
  -­‐-­‐>	
  YES	
  

— 
— 

Loadable	
  module	
  support	
  -­‐-­‐>	
  Enable	
  loadable	
  module	
  support	
  -­‐-­‐>	
  YES	
  	
  

— 

Processor	
  type	
  and	
  features	
  -­‐-­‐>	
  Preemptible	
  kernel	
  -­‐-­‐>	
  NO	
  	
  

— 

Processor	
  type	
  and	
  features	
  -­‐-­‐>	
  Use	
  register	
  arguments	
  -­‐-­‐>	
  NO	
  

— 

Processor	
  type	
  and	
  features	
  -­‐-­‐>	
  Interrupt	
  pipeline	
  (IPIPE)	
  -­‐-­‐>	
  YES	
  

— 

File	
  systems	
  -­‐-­‐>	
  Pseudo	
  filesystems	
  -­‐-­‐>	
  /proc	
  file	
  system	
  support	
  -­‐-­‐>	
  YES	
  	
  

Module	
  versioning	
  support	
  -­‐-­‐>	
  NO	
  
Installing RTAI
7.  Compile and install the kernel
—  make	
  
—  make	
  modules_install	
  
— 
— 
— 
— 

mkinitrd	
  /boot/initrd-­‐versione_kernel.img	
  vesione_kernel	
  	
  
cparch/i386/boot/bzImage/boot/vmlinuz-­‐versione_kernel	
  	
  
cp	
  System.map	
  /boot/System.map-­‐versione_kernel	
  	
  
ln	
  –s	
  /boot/System.map-­‐versione_kernel	
  /boot/System.map	
  	
  

8.  Add entry to the bootloader config file
—  vi	
  /boot/grub/menu.lst	
  

9.  Reboot into the new kernel
Installing RTAI
10. Configure and install RTAI
—  cd	
  /rtai/	
  
—  make	
  menuconfig	
  
—  Machine --> Number of CPUs = 1
—  General à Installation directory = /path/to/
patched_kernel/

11. Reboot
12. Test
—  cd	
  /rtai/testsuite/user/latency	
  
—  ./run	
  
Using RTAI
—  Write your own module
—  See example

—  Compile it
—  Makefiles are a convenient solution

—  Verify that only 1 CPU is enabled
—  sudo	
  nano	
  /etc/default/grub	
  	
  
—  GRUB_CMDLINE_LINUX=“maxcpus=1”

—  Put it into execution…
Using RTAI
—  Put it into execution
—  Load a RTAI module to kernel:
sudo	
  insmod	
  /usr/realtime/modules/<module>.ko	
  
—  Unload a RTAI module from kernel:
sudo	
  rmmod	
  <module>	
  	
  

—  “Debug” it
—  See the output of the real-time subsystem:
dmesg	
  
—  It prints errors messages as well as the outcome of calls to
printntk(…) and rt_printk(…)
—  If other modules are required (rtai_hal.ko, rtai_shm.ko,
rtai_sched.ko, etc.), you have to load them first!

More Related Content

What's hot

CPU Scheduling in OS Presentation
CPU Scheduling in OS  PresentationCPU Scheduling in OS  Presentation
CPU Scheduling in OS Presentationusmankiyani1
 
Clock driven scheduling
Clock driven schedulingClock driven scheduling
Clock driven schedulingKamal Acharya
 
Reference model of real time system
Reference model of real time systemReference model of real time system
Reference model of real time systemKamal Acharya
 
Approaches to real time scheduling
Approaches to real time schedulingApproaches to real time scheduling
Approaches to real time schedulingKamal Acharya
 
Unit 5 Advanced Computer Architecture
Unit 5 Advanced Computer ArchitectureUnit 5 Advanced Computer Architecture
Unit 5 Advanced Computer ArchitectureBalaji Vignesh
 
Real Time Kernels
Real Time KernelsReal Time Kernels
Real Time KernelsArnav Soni
 
Design challenges in embedded systems
Design challenges in embedded systemsDesign challenges in embedded systems
Design challenges in embedded systemsmahalakshmimalini
 
Real time scheduling - basic concepts
Real time scheduling - basic conceptsReal time scheduling - basic concepts
Real time scheduling - basic conceptsStudent
 
Process management in os
Process management in osProcess management in os
Process management in osMiong Lazaro
 
RTOS- Real Time Operating Systems
RTOS- Real Time Operating Systems RTOS- Real Time Operating Systems
RTOS- Real Time Operating Systems Bayar shahab
 
First-Come-First-Serve (FCFS)
First-Come-First-Serve (FCFS)First-Come-First-Serve (FCFS)
First-Come-First-Serve (FCFS)nikeAthena
 
Computer architecture virtual memory
Computer architecture virtual memoryComputer architecture virtual memory
Computer architecture virtual memoryMazin Alwaaly
 
Embedded firmware
Embedded firmwareEmbedded firmware
Embedded firmwareJoel P
 
Semophores and it's types
Semophores and it's typesSemophores and it's types
Semophores and it's typesNishant Joshi
 
TRAFFIC LIGHT CONTROL SYSTEM USING 8085 MICROPROCESSOR
TRAFFIC LIGHT CONTROL SYSTEM USING 8085 MICROPROCESSORTRAFFIC LIGHT CONTROL SYSTEM USING 8085 MICROPROCESSOR
TRAFFIC LIGHT CONTROL SYSTEM USING 8085 MICROPROCESSORSubash Sambath Kumar
 
Rtos concepts
Rtos conceptsRtos concepts
Rtos conceptsanishgoel
 

What's hot (20)

Process scheduling
Process schedulingProcess scheduling
Process scheduling
 
Cs8493 unit 3
Cs8493 unit 3Cs8493 unit 3
Cs8493 unit 3
 
CPU Scheduling in OS Presentation
CPU Scheduling in OS  PresentationCPU Scheduling in OS  Presentation
CPU Scheduling in OS Presentation
 
Clock driven scheduling
Clock driven schedulingClock driven scheduling
Clock driven scheduling
 
Reference model of real time system
Reference model of real time systemReference model of real time system
Reference model of real time system
 
Approaches to real time scheduling
Approaches to real time schedulingApproaches to real time scheduling
Approaches to real time scheduling
 
Unit 5 Advanced Computer Architecture
Unit 5 Advanced Computer ArchitectureUnit 5 Advanced Computer Architecture
Unit 5 Advanced Computer Architecture
 
Real Time Kernels
Real Time KernelsReal Time Kernels
Real Time Kernels
 
Design challenges in embedded systems
Design challenges in embedded systemsDesign challenges in embedded systems
Design challenges in embedded systems
 
Real time scheduling - basic concepts
Real time scheduling - basic conceptsReal time scheduling - basic concepts
Real time scheduling - basic concepts
 
Multi processing
Multi processingMulti processing
Multi processing
 
Process management in os
Process management in osProcess management in os
Process management in os
 
RTOS- Real Time Operating Systems
RTOS- Real Time Operating Systems RTOS- Real Time Operating Systems
RTOS- Real Time Operating Systems
 
Routing protocols
Routing protocolsRouting protocols
Routing protocols
 
First-Come-First-Serve (FCFS)
First-Come-First-Serve (FCFS)First-Come-First-Serve (FCFS)
First-Come-First-Serve (FCFS)
 
Computer architecture virtual memory
Computer architecture virtual memoryComputer architecture virtual memory
Computer architecture virtual memory
 
Embedded firmware
Embedded firmwareEmbedded firmware
Embedded firmware
 
Semophores and it's types
Semophores and it's typesSemophores and it's types
Semophores and it's types
 
TRAFFIC LIGHT CONTROL SYSTEM USING 8085 MICROPROCESSOR
TRAFFIC LIGHT CONTROL SYSTEM USING 8085 MICROPROCESSORTRAFFIC LIGHT CONTROL SYSTEM USING 8085 MICROPROCESSOR
TRAFFIC LIGHT CONTROL SYSTEM USING 8085 MICROPROCESSOR
 
Rtos concepts
Rtos conceptsRtos concepts
Rtos concepts
 

Viewers also liked

Real Time Application Interface for Linux
Real Time Application Interface for LinuxReal Time Application Interface for Linux
Real Time Application Interface for LinuxSarah Hussein
 
Evaluation of Chemotherapy Response in Women with Breast Cancer Using US Elas...
Evaluation of Chemotherapy Response in Women with Breast Cancer Using US Elas...Evaluation of Chemotherapy Response in Women with Breast Cancer Using US Elas...
Evaluation of Chemotherapy Response in Women with Breast Cancer Using US Elas...Sarah Hussein
 

Viewers also liked (6)

Rtai
RtaiRtai
Rtai
 
Real Time Application Interface for Linux
Real Time Application Interface for LinuxReal Time Application Interface for Linux
Real Time Application Interface for Linux
 
Rtai
RtaiRtai
Rtai
 
Real time system tsp
Real time system tspReal time system tsp
Real time system tsp
 
Multi Media
Multi MediaMulti Media
Multi Media
 
Evaluation of Chemotherapy Response in Women with Breast Cancer Using US Elas...
Evaluation of Chemotherapy Response in Women with Breast Cancer Using US Elas...Evaluation of Chemotherapy Response in Women with Breast Cancer Using US Elas...
Evaluation of Chemotherapy Response in Women with Breast Cancer Using US Elas...
 

Similar to RTAI - Earliest Deadline First

Chapter 2 (Part 2)
Chapter 2 (Part 2) Chapter 2 (Part 2)
Chapter 2 (Part 2) rohassanie
 
RTOS Material hfffffffffffffffffffffffffffffffffffff
RTOS Material hfffffffffffffffffffffffffffffffffffffRTOS Material hfffffffffffffffffffffffffffffffffffff
RTOS Material hfffffffffffffffffffffffffffffffffffffadugnanegero
 
RTOS implementation
RTOS implementationRTOS implementation
RTOS implementationRajan Kumar
 
Rate.docx
Rate.docxRate.docx
Rate.docxkradha5
 
Operating System Scheduling
Operating System SchedulingOperating System Scheduling
Operating System SchedulingVishnu Prasad
 
DEV PATEL-IU1941090008-Interrupt Handling in RTOS.pptx
DEV PATEL-IU1941090008-Interrupt Handling in RTOS.pptxDEV PATEL-IU1941090008-Interrupt Handling in RTOS.pptx
DEV PATEL-IU1941090008-Interrupt Handling in RTOS.pptxjaytanwani
 
Ch6
Ch6Ch6
Ch6C.U
 
OVERVIEW OF RTOS
OVERVIEW OF RTOSOVERVIEW OF RTOS
OVERVIEW OF RTOStaruian
 
Real Time Operating Systems
Real Time Operating SystemsReal Time Operating Systems
Real Time Operating SystemsRohit Joshi
 
Chapter 19 - Real Time Systems
Chapter 19 - Real Time SystemsChapter 19 - Real Time Systems
Chapter 19 - Real Time SystemsWayne Jones Jnr
 
Operating System 5
Operating System 5Operating System 5
Operating System 5tech2click
 

Similar to RTAI - Earliest Deadline First (20)

Chapter 2 (Part 2)
Chapter 2 (Part 2) Chapter 2 (Part 2)
Chapter 2 (Part 2)
 
RTOS Material hfffffffffffffffffffffffffffffffffffff
RTOS Material hfffffffffffffffffffffffffffffffffffffRTOS Material hfffffffffffffffffffffffffffffffffffff
RTOS Material hfffffffffffffffffffffffffffffffffffff
 
RTOS implementation
RTOS implementationRTOS implementation
RTOS implementation
 
Rate.docx
Rate.docxRate.docx
Rate.docx
 
Rtos Concepts
Rtos ConceptsRtos Concepts
Rtos Concepts
 
Cp usched 2
Cp usched  2Cp usched  2
Cp usched 2
 
Rtos
RtosRtos
Rtos
 
Operating System Scheduling
Operating System SchedulingOperating System Scheduling
Operating System Scheduling
 
DEV PATEL-IU1941090008-Interrupt Handling in RTOS.pptx
DEV PATEL-IU1941090008-Interrupt Handling in RTOS.pptxDEV PATEL-IU1941090008-Interrupt Handling in RTOS.pptx
DEV PATEL-IU1941090008-Interrupt Handling in RTOS.pptx
 
Process management
Process managementProcess management
Process management
 
rtos.ppt
rtos.pptrtos.ppt
rtos.ppt
 
exp 3.docx
exp 3.docxexp 3.docx
exp 3.docx
 
Ch6
Ch6Ch6
Ch6
 
OVERVIEW OF RTOS
OVERVIEW OF RTOSOVERVIEW OF RTOS
OVERVIEW OF RTOS
 
Real Time Operating Systems
Real Time Operating SystemsReal Time Operating Systems
Real Time Operating Systems
 
Chapter 19 - Real Time Systems
Chapter 19 - Real Time SystemsChapter 19 - Real Time Systems
Chapter 19 - Real Time Systems
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
ERTS UNIT 5.pptx
ERTS UNIT 5.pptxERTS UNIT 5.pptx
ERTS UNIT 5.pptx
 
Os2
Os2Os2
Os2
 
Operating System 5
Operating System 5Operating System 5
Operating System 5
 

More from Stefano Bragaglia

ILP 2014 - Nonmonotonic Learning in Large Biological Network
ILP 2014 - Nonmonotonic Learning in Large Biological NetworkILP 2014 - Nonmonotonic Learning in Large Biological Network
ILP 2014 - Nonmonotonic Learning in Large Biological NetworkStefano Bragaglia
 
Stefano Bragaglia CV (January 2014)
Stefano Bragaglia CV (January 2014)Stefano Bragaglia CV (January 2014)
Stefano Bragaglia CV (January 2014)Stefano Bragaglia
 
A Distributed System Using MS Kinect and Event Calculus for Adaptive Physioth...
A Distributed System Using MS Kinect and Event Calculus for Adaptive Physioth...A Distributed System Using MS Kinect and Event Calculus for Adaptive Physioth...
A Distributed System Using MS Kinect and Event Calculus for Adaptive Physioth...Stefano Bragaglia
 
ePolicy's internal GlobalOpt webapp
ePolicy's internal GlobalOpt webappePolicy's internal GlobalOpt webapp
ePolicy's internal GlobalOpt webappStefano Bragaglia
 
Approximate Inference for Logic Programs with Annotated Disjunctions (RCRA 2009)
Approximate Inference for Logic Programs with Annotated Disjunctions (RCRA 2009)Approximate Inference for Logic Programs with Annotated Disjunctions (RCRA 2009)
Approximate Inference for Logic Programs with Annotated Disjunctions (RCRA 2009)Stefano Bragaglia
 
Stefano Bragaglia MSc Thesis, awarded as Best Italian thesis in AI 2009/2010
Stefano Bragaglia MSc Thesis, awarded as Best Italian thesis in AI 2009/2010Stefano Bragaglia MSc Thesis, awarded as Best Italian thesis in AI 2009/2010
Stefano Bragaglia MSc Thesis, awarded as Best Italian thesis in AI 2009/2010Stefano Bragaglia
 
Introducing PRSs and Drools (in Italian)
Introducing PRSs and Drools (in Italian)Introducing PRSs and Drools (in Italian)
Introducing PRSs and Drools (in Italian)Stefano Bragaglia
 
Promotional poster for the ePolicy project
Promotional poster for the ePolicy projectPromotional poster for the ePolicy project
Promotional poster for the ePolicy projectStefano Bragaglia
 

More from Stefano Bragaglia (11)

A Study in (P)rose
A Study in (P)roseA Study in (P)rose
A Study in (P)rose
 
ILP 2014 - Nonmonotonic Learning in Large Biological Network
ILP 2014 - Nonmonotonic Learning in Large Biological NetworkILP 2014 - Nonmonotonic Learning in Large Biological Network
ILP 2014 - Nonmonotonic Learning in Large Biological Network
 
Stefano Bragaglia CV (January 2014)
Stefano Bragaglia CV (January 2014)Stefano Bragaglia CV (January 2014)
Stefano Bragaglia CV (January 2014)
 
A Distributed System Using MS Kinect and Event Calculus for Adaptive Physioth...
A Distributed System Using MS Kinect and Event Calculus for Adaptive Physioth...A Distributed System Using MS Kinect and Event Calculus for Adaptive Physioth...
A Distributed System Using MS Kinect and Event Calculus for Adaptive Physioth...
 
ePolicy's internal GlobalOpt webapp
ePolicy's internal GlobalOpt webappePolicy's internal GlobalOpt webapp
ePolicy's internal GlobalOpt webapp
 
Bolognese sauce
Bolognese sauceBolognese sauce
Bolognese sauce
 
Approximate Inference for Logic Programs with Annotated Disjunctions (RCRA 2009)
Approximate Inference for Logic Programs with Annotated Disjunctions (RCRA 2009)Approximate Inference for Logic Programs with Annotated Disjunctions (RCRA 2009)
Approximate Inference for Logic Programs with Annotated Disjunctions (RCRA 2009)
 
Stefano Bragaglia MSc Thesis, awarded as Best Italian thesis in AI 2009/2010
Stefano Bragaglia MSc Thesis, awarded as Best Italian thesis in AI 2009/2010Stefano Bragaglia MSc Thesis, awarded as Best Italian thesis in AI 2009/2010
Stefano Bragaglia MSc Thesis, awarded as Best Italian thesis in AI 2009/2010
 
Ontology development
Ontology developmentOntology development
Ontology development
 
Introducing PRSs and Drools (in Italian)
Introducing PRSs and Drools (in Italian)Introducing PRSs and Drools (in Italian)
Introducing PRSs and Drools (in Italian)
 
Promotional poster for the ePolicy project
Promotional poster for the ePolicy projectPromotional poster for the ePolicy project
Promotional poster for the ePolicy project
 

Recently uploaded

Textual Evidence in Reading and Writing of SHS
Textual Evidence in Reading and Writing of SHSTextual Evidence in Reading and Writing of SHS
Textual Evidence in Reading and Writing of SHSMae Pangan
 
Dust Of Snow By Robert Frost Class-X English CBSE
Dust Of Snow By Robert Frost Class-X English CBSEDust Of Snow By Robert Frost Class-X English CBSE
Dust Of Snow By Robert Frost Class-X English CBSEaurabinda banchhor
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
The Contemporary World: The Globalization of World Politics
The Contemporary World: The Globalization of World PoliticsThe Contemporary World: The Globalization of World Politics
The Contemporary World: The Globalization of World PoliticsRommel Regala
 
Measures of Position DECILES for ungrouped data
Measures of Position DECILES for ungrouped dataMeasures of Position DECILES for ungrouped data
Measures of Position DECILES for ungrouped dataBabyAnnMotar
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
EMBODO Lesson Plan Grade 9 Law of Sines.docx
EMBODO Lesson Plan Grade 9 Law of Sines.docxEMBODO Lesson Plan Grade 9 Law of Sines.docx
EMBODO Lesson Plan Grade 9 Law of Sines.docxElton John Embodo
 
Expanded definition: technical and operational
Expanded definition: technical and operationalExpanded definition: technical and operational
Expanded definition: technical and operationalssuser3e220a
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfPatidar M
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 

Recently uploaded (20)

Textual Evidence in Reading and Writing of SHS
Textual Evidence in Reading and Writing of SHSTextual Evidence in Reading and Writing of SHS
Textual Evidence in Reading and Writing of SHS
 
Dust Of Snow By Robert Frost Class-X English CBSE
Dust Of Snow By Robert Frost Class-X English CBSEDust Of Snow By Robert Frost Class-X English CBSE
Dust Of Snow By Robert Frost Class-X English CBSE
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
The Contemporary World: The Globalization of World Politics
The Contemporary World: The Globalization of World PoliticsThe Contemporary World: The Globalization of World Politics
The Contemporary World: The Globalization of World Politics
 
Measures of Position DECILES for ungrouped data
Measures of Position DECILES for ungrouped dataMeasures of Position DECILES for ungrouped data
Measures of Position DECILES for ungrouped data
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
EMBODO Lesson Plan Grade 9 Law of Sines.docx
EMBODO Lesson Plan Grade 9 Law of Sines.docxEMBODO Lesson Plan Grade 9 Law of Sines.docx
EMBODO Lesson Plan Grade 9 Law of Sines.docx
 
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptxINCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
 
Expanded definition: technical and operational
Expanded definition: technical and operationalExpanded definition: technical and operational
Expanded definition: technical and operational
 
Paradigm shift in nursing research by RS MEHTA
Paradigm shift in nursing research by RS MEHTAParadigm shift in nursing research by RS MEHTA
Paradigm shift in nursing research by RS MEHTA
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdf
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 

RTAI - Earliest Deadline First

  • 1. RTAI & Earliest Deadline First Real-Time Operative Systems M Stefano Bragaglia stefano.bragaglia@unibo.it
  • 3. Introduction —  RTAI: Real-Time Application Interface —  1996: feasibility study to abandon DOS in favour of the Linux kernel —  1999: first working release on Linux kernel 2.2 —  2001: further extended to run several kernels together
  • 4. Overview RTHAL: Real-Time Hardware Abstraction Layer User Space Linux Kernel Real-Time Kernel System Calls Standard Processes Real-Time Processes —  Introduces a new layer between the hardware and the Linux kernel —  Involves minimal changes with respect to the standard kernel —  The first releases required to replace about 70 lines of code Hardware
  • 5. Overview RTHAL: Real-Time Hardware Abstraction Layer User Space Linux Kernel Real-Time Kernel System Calls Standard Processes Real-Time Processes —  Critical data and t-functions held in a single place —  Interrupts, system calls, timers are easier to capture —  Native operations are replaced by operations on dynamic RTHAL pointers —  When RTAI is on, they lead to the real-time kernel structures, otherwise to the original ones Hardware Linux can not enable/disable interruptions anymore!
  • 6. Overview RTHAL: Real-Time Hardware Abstraction Layer User Space Linux Kernel Real-Time Kernel —  RTHAL does not provide real-time services, it only intercept system calls —  Calls are redirected towards System Calls Standard Processes Real-Time Processes structures referenced by RTHAL —  Hardware only accessed by real-time functions, hence Linux run as a low priority process Hardware RTAI is a kernel module which does not require to be loaded at boot: can be enabled at will!
  • 7. Overview ADEOS: Adaptive Domain Environment for Operating Systems User Space Linux Kernel Real-Time Kernel System Calls Standard Processes Real-Time Processes —  RTHAL further improved into ADEOS —  Hierarchy of operative systems divided in layers —  A flexible environment to share hardware among several (instances of) operative systems —  A micro-kernel handles the communication between the different domains —  Chains of responsibility Hardware RTAI is a kernel module which does not require to be loaded at boot: can be enabled at will!
  • 8. Architecture ADEOS: Adaptive Domain Environment for Operating Systems User Space User Space User Space Linux Kernel Linux Kernel Linux Kernel Standard Processes Real-Time Processes Standard Processes I/O Scheduler Real-Time Kernel SW Interrupts HW Interrupts RTHAL / ADEOS Interrupts Hardware SW Interrupts I/O
  • 9. RTAI Inter-Process Communication —  Real-time FIFOs —  Basic mechanism to asynchronously exchange data between RT and user space processes —  Shared Memory —  Shares memory areas between RT and user space processes —  Messages —  Allows to send messages both asynchronously and synchronously (RPC) among RT processes —  Mailboxes —  Send/receive messages of any size (ordered by priority, arrival time, etc.) between RT and user space processes —  Semaphores —  A process synchronisation method when accessing shared resources which avoids unsupervised priority inversions
  • 10. RTAI Inter-Process Communication —  Real-time extensions of the POSIX standard poorly supported —  Only pthread, mutex and pqueue partially supported —  LXRT (LinuX Real-Time) —  Native RTAI processes run in kernel mode (RTAI API only available in kernel modules) —  LXRT allows to use of RTAI API in user space (the APIs in kernel mode and user space are the same, where possible) —  A more gradual transition from Linux processes to RT ones —  Hardware is more protected (memory can be freely accessed in kernel space) —  More convenient, but less efficient
  • 11. Module setup Real-time part Declarative part An example of RTAI kernel module #include  <rtai.h>     #include  <rtai_sched.h>     ...     RT_TASK  task;     ...     void  task_routine()  {        while(1)  {            /*  Codice  real-­‐time  */            rt_task_wait_period();      }   }   ...   int  init_module(void)  {        ...      rt_task_init(&task,  task_routine,  0,  stack_size,  priority,  0,  0);        timer_period  =  start_rt_timer(nano2count(1e9));        task_period  =  2*timer_period;        rt_task_make_periodic(&task,  now,  task_period);     }   ...   void  cleanup_module(void)  {        rt_task_delete(&task);        stop_rt_timer();     }  
  • 12. Process termination Real-time part Process initialisation Decl. part An example of RTAI LXRT process #include  <rtai_lxrt.h>    ...     int  main(void)  {        RT_TASK  *task;      ...      sched_setscheduler(0,  SCHED_FIFO,  &priorita);        mlockall(MCL_CURRENT  |  MCL_FUTURE);      task  =  rt_task_init(nam2num("Name"),  priority,  stack_size,  0);        timer_period  =  start_rt_timer(nano2count(1e9));        task_period  =  2*timer_period;      ...      rt_make_hard_real_time();        rt_task_make_periodic(task,  now,  task_period);        while(1)  {            /*  Real-­‐time  code  */          rt_task_wait_period();      }        rt_make_soft_real_time();        rt_task_delete(task);        return  0;     }  
  • 14. RTAI Scheduling —  RTAI supports various scheduling policies —  Priority-driven (native; process priorities are assigned manually): —  FIFO: First-In-First-Out —  RR: Round Robin —  More advanced solutions: —  RM: Rate Monotonic —  EDF: Earliest Deadline First
  • 15. Priority-driven Scheduling Policies FIFO – same priority Proc1:  started   Proc1:  iteration  1   Proc1:  iteration  2   Proc1:  iteration  3   Proc1:  iteration  4   Proc1:  terminated   Proc2:  started   Proc2:  iteration  1   Proc2:  iteration  2   Proc2:  iteration  3   Proc2:  terminated   Proc3:  started   Proc3:  iteration  1   Proc3:  iteration  2   Proc3:  terminated     FIFO – specific priorities RR – same priority Proc3:  started   Proc1:  started   Proc3:  iteration  1   Proc2:  started   Proc3:  iteration  2   Proc3:  started   Proc3:  terminated   Proc1:  iteration  1   Proc1:  started   Proc2:  iteration  1   Proc1:  iteration  1   Proc3:  iteration  1   Proc1:  iteration  2   Proc1:  iteration  2   Proc1:  iteration  3   Proc2:  iteration  2   Proc1:  iteration  4   Proc3:  iteration  2   Proc1:  terminated   Proc1:  iteration  3   Proc2:  started   Proc2:  iteration  3   Proc2:  iteration  1   Proc1:  iteration  4   Proc2:  iteration  2   Proc1:  terminated   Proc2:  iteration  3   Proc2:  terminated   Proc2:  terminated   Proc3:  terminated      
  • 16. Other Scheduling Policies RM – Rate Monotonic EDF – Earliest Deadline First —  Can be easily implemented —  Can be similarly implemented —  Process priority is inferred —  Priority is given to the process from FIFO scheduling from the frequency of its activation —  RTAI functions: —  rt_task_make_periodic(…) finds priority of available processes from their period —  void  rt_spv_RMS(<cpu>) sets priority of processes on given CPU by their frequency from FIFO scheduling that is ready and has to complete first —  RTAI functions: —  void  rt_task_set_resume_   end_times(<resume>,<end>) sets the absolute resume and deadline of the process; rescheduled on resume; periodicity with neg values
  • 17. Other Scheduling Policies RM – rate monotonic scheduling Proc  HF:  started   Proc  HF:  terminated   Proc  LF:  started   Proc  LF:  terminated   Proc  HF:  started   Proc  HF:  terminated   Proc  HF:  started   Proc  HF:  terminated   Proc  LF:  started   Proc  HF:  started    <preemption!>   Proc  HF:  terminated   Proc  LF:  terminated   Proc  HF:  started   Proc  HF:  terminated   Proc  LF:  started   Proc  LF:  terminated     EDF – earliest deadline first scheduling Proc  1:  started   Proc  1:  terminated   Proc  2:  started      <preemption!>   Proc  1:  started    <desp.  prior.>   Proc  1:  terminated   Proc  1:  started   Proc  1:  terminated   Proc  2:  terminated   Proc  1:  started   Proc  1:  terminated   Proc  2:  started   Proc  1:  started   Proc  1:  terminated   Proc  1:  started   Proc  1:  terminated   Proc  2:  terminated    
  • 18. EDF – Earliest Deadline First —  Optimal scheduling algorithm on preemptive uniprocessors —  100% utilisation bound with processes whose deadline is equal to their period —  EDF guarantees that all the processes meet their deadlines if CPU utilisation is not more than 100% —  No fault signal (ASAP execution policy) —  Missed deadlines are handled by the user
  • 19. EDF – Earliest Deadline First —  Create the RT processes with priorities (discarded later) —  rt_task_init(&task1,  task_execution,  "1",  10000,  LOW_PR,  0,  0);     —  rt_task_init(&task2,  task_execution,  "2",  10000,  HIGH_PR,  0,   0);     —  Make the RT processes periodic (period useless) —  rt_task_make_periodic(&task1,  now  +  ...,  PERIOD_1);     —  rt_task_make_periodic(&task2,  now  +  ...,  PERIOD_2);     —  Set activation and deadline per process —  rt_task_set_resume_end_times(now  +  ...,  -­‐REL_DEADL_1);     —  rt_task_set_resume_end_times(now  +  ...,  -­‐REL_DEADL_2);     —  Reset activation and deadline on completion —  rt_task_set_resume_end_times(-­‐PERIOD_n,-­‐REL_DEADL_n);    
  • 20. EDF – Earliest Deadline First (LXRT) —  Create a child process —  —  Create a real-time “agent” for each process —  —  —  rt_make_hard_real_time();   rt_task_make_periodic(task1,  now  +  ...,  PERIOD_1);     rt_task_make_periodic(task2,  now  +  ...,  PERIOD_2);     Set activation and deadline per process —  —  —  rt_task_init(nam2num(“Task2”),  HIGH_PR,  0,  0);     Make the processes periodic —  —  —  rt_task_init(nam2num(“Task1”),  LOW_PR,  0,  0);     Start real-time mode —  —  fork();   rt_task_set_resume_end_times(now  +  ...,  -­‐REL_DEADL_1);     rt_task_set_resume_end_times(now  +  ...,  -­‐REL_DEADL_2);     Reset activation and deadline on completion —  rt_task_set_resume_end_times(-­‐PERIOD_n,-­‐REL_DEADL_n);  
  • 22. Installing RTAI 1.  Install Linux (any common distro will do) —  Ubuntu, Fedora, Mandrake, Slackware, Gentoo… 2.  Download the source code of a vanilla kernel —  http://www.kernel.org 3.  Download a compatible RTAI version —  http://www.rtai.org (match the kernel version!) 4.  Patch the kernel source code —  cd  sources  &&  patch  –p1  <  ../rtai/…/file.patch  
  • 23. Installing RTAI 5.  Configure the kernel (default .config as reference) —  cp  /boot/config-­‐current_version  .config   —  make  menuconfig   6.  Set the code maturity level —  Code  maturity  level  -­‐-­‐>  Promptfordevelopmentand/or  incomplete  drivers  -­‐-­‐>  YES   —  —  Loadable  module  support  -­‐-­‐>  Enable  loadable  module  support  -­‐-­‐>  YES     —  Processor  type  and  features  -­‐-­‐>  Preemptible  kernel  -­‐-­‐>  NO     —  Processor  type  and  features  -­‐-­‐>  Use  register  arguments  -­‐-­‐>  NO   —  Processor  type  and  features  -­‐-­‐>  Interrupt  pipeline  (IPIPE)  -­‐-­‐>  YES   —  File  systems  -­‐-­‐>  Pseudo  filesystems  -­‐-­‐>  /proc  file  system  support  -­‐-­‐>  YES     Module  versioning  support  -­‐-­‐>  NO  
  • 24. Installing RTAI 7.  Compile and install the kernel —  make   —  make  modules_install   —  —  —  —  mkinitrd  /boot/initrd-­‐versione_kernel.img  vesione_kernel     cparch/i386/boot/bzImage/boot/vmlinuz-­‐versione_kernel     cp  System.map  /boot/System.map-­‐versione_kernel     ln  –s  /boot/System.map-­‐versione_kernel  /boot/System.map     8.  Add entry to the bootloader config file —  vi  /boot/grub/menu.lst   9.  Reboot into the new kernel
  • 25. Installing RTAI 10. Configure and install RTAI —  cd  /rtai/   —  make  menuconfig   —  Machine --> Number of CPUs = 1 —  General à Installation directory = /path/to/ patched_kernel/ 11. Reboot 12. Test —  cd  /rtai/testsuite/user/latency   —  ./run  
  • 26. Using RTAI —  Write your own module —  See example —  Compile it —  Makefiles are a convenient solution —  Verify that only 1 CPU is enabled —  sudo  nano  /etc/default/grub     —  GRUB_CMDLINE_LINUX=“maxcpus=1” —  Put it into execution…
  • 27. Using RTAI —  Put it into execution —  Load a RTAI module to kernel: sudo  insmod  /usr/realtime/modules/<module>.ko   —  Unload a RTAI module from kernel: sudo  rmmod  <module>     —  “Debug” it —  See the output of the real-time subsystem: dmesg   —  It prints errors messages as well as the outcome of calls to printntk(…) and rt_printk(…) —  If other modules are required (rtai_hal.ko, rtai_shm.ko, rtai_sched.ko, etc.), you have to load them first!