Real-Time OS
(RTOS)

Copyright © 2012 Embedded Systems
Committee
Agenda
•
•
•
•
•
•

Basic Definitions
Introduction to RTOS
Scheduling Algorithms
Reentrancy
Shared Resources
RTOS APIs

Copyright © 2012 Embedded Systems
Committee
Agenda
•
•
•
•
•
•

Basic Definitions
Introduction to RTOS
Scheduling Algorithms
Reentrancy
Shared Resources
RTOS APIs

Copyright © 2012 Embedded Systems
Committee
Basic Definitions
• What are the Real-Time systems?
– “Those systems in which the correctness of system
depends not only on the logical result of the
computation, but also on the time at which the results
are produced”

Copyright © 2012 Embedded Systems
Committee
Basic Definitions
• Specifications of a Real-Time system include
both:
– Logical: Produces correct outputs.
– Temporal: Produces outputs at the right time.

Copyright © 2012 Embedded Systems
Committee
Basic Definitions
• Types of Real-Time requirements are:
– Hard: Failure to meet constraint is fatal.
– Soft: Late completion degrades software quality.

Copyright © 2012 Embedded Systems
Committee
Basic Definitions
• Misconceptions:
– “Real-Time computing is equivalent to fast
computing”
– Truth is:“Real-Time computing is equivalent to
predictable computing”

Copyright © 2012 Embedded Systems
Committee
Basic Definitions
• Misconceptions:
– “Real-Time programming assembly coding”
– Truth is: “It is better to automate (as much as
possible) Real-Time system design, instead of relying
on a clever hand-crafted code”

Copyright © 2012 Embedded Systems
Committee
Basic Definitions
• Misconceptions:
– “Real-Time means performance engineering”
– Truth is: “In Real-Time computing, timeliness is
always more important than performance.

Copyright © 2012 Embedded Systems
Committee
Basic Definitions
• Misconceptions:
– RTOS introduce considerable amount of overhead
on CPU
– Truth is: An RTOS typically only require between 1%
to 4% of a CPU time.

Copyright © 2012 Embedded Systems
Committee
Basic Definitions
Real-Time
Embedded
Systems
Embedded Systems

Real-Time Systems

Copyright © 2012 Embedded Systems
Committee
Agenda
•
•
•
•
•
•

Basic Definitions
Introduction to RTOS
Scheduling Algorithms
Reentrancy
Shared Resources
RTOS APIs

Copyright © 2012 Embedded Systems
Committee
Introduction to RTOS

Copyright © 2012 Embedded Systems
Committee
Introduction to RTOS
• Basic Services provided by OS:
–
–
–
–
–

Task Management.
Intertask Communication & synchronization.
Timers.
Device I/O Supervision.
Dynamic Memory Allocation.

Copyright © 2012 Embedded Systems
Committee
Introduction to RTOS
• What are tasks?
- A task─ an independent process.
- No task can call another task. unlike the normal C function
which can call another function.
void task(void)
{
/*Some Initialization Code*/
for(;;)
{
/*Task Code*/
}
}
Copyright © 2012 Embedded Systems
Committee
Introduction to RTOS
• What is multitasking?

Copyright © 2012 Embedded Systems
Committee
Introduction to RTOS
• What is context?
PC

ROM

RAM
SP

Copyright © 2012 Embedded Systems
Committee

CPU
Registers
Introduction to RTOS
• What is context?
ROM

Task 1CPU
Registers

RAM
Task2
Stack
Task1 Control Block
Task1
Stack
Task2 Control Block
Copyright © 2012 Embedded Systems
Committee

Task 2CPU
Registers
Introduction to RTOS
• What is context?

Copyright © 2012 Embedded Systems
Committee
Introduction to RTOS
• Task Life Cycle:

Copyright © 2012 Embedded Systems
Committee
Introduction to RTOS
• What is the difference between RTOS & GPOS?

Task
Switching
Time

GPOS

RTOS
Number of Tasks That Can Be Scheduled
Copyright © 2012 Embedded Systems
Committee
Introduction to RTOS
• Characteristics of an RTOS?
–
–
–
–
–

Reliability
Predictability
Performance
Compactness
Scalability

Copyright © 2012 Embedded Systems
Committee
Agenda
•
•
•
•
•
•

Basic Definitions
Introduction to RTOS
Scheduling Algorithms
Reentrancy
Shared Resources
RTOS APIs

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• What is a scheduler?
– It is part of the kernel which decides which task can
run when.
– There are many algorithms for scheduling & they can
be categorized into two main categories.

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• Non-preemptive (Suppose it is priority based):
Task1

Time

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• Non-preemptive:
Task1

Time
ISR

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• Non-preemptive:
Task1

Time
ISR
Task2
is
Ready

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• Non-preemptive:
Task1

Time
ISR
Task2
is
Ready

Task1

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• Non-preemptive:
Task1

Time
ISR
Task2
is
Ready

Task1
Although task2 is higher in priority than
task1, task 1 gets to finish before task2
gets to start.
Copyright © 2012 Embedded Systems
Committee

Task2
Scheduling Algorithms
• Preemptive (Suppose it is priority based):
Task1

Time

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• Preemptive:
Task1

Time
ISR

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• Preemptive:
Task1

Time
ISR

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• Preemptive:
Task1

Time
ISR
Task2

Copyright © 2012 Embedded Systems
Committee
Scheduling Algorithms
• Preemptive:
Task1

Time
ISR
Task2

Task1

Copyright © 2012 Embedded Systems
Committee
Agenda
•
•
•
•
•
•

Basic Definitions
Introduction to RTOS
Scheduling Algorithms
Reentrancy
Shared Resources
RTOS APIs

Copyright © 2012 Embedded Systems
Committee
Reentrancy
C
char x;
void foo1(void)
{
x++;
}

Task1
/*Some Code*/
foo1();
/*Some Code*/

Assembly
char x;
foo1:
mov R1,x;
add R1,1;
mov x,R1;

Task2
/*Some Code*/
foo1();
/*Some Code*/

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=1
Task 1: R1=0

Task 2: R1=0

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=1
Task 1: R1=1

Task 2: R1=0

mov R1,x;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=1
Task 1: R1=2

Task 2: R1=0

mov R1,x;
add R1,1;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=2
Task 1: R1=2

Task 2: R1=0

mov R1,x;
add R1,1;
mov x,R1;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=2
Task 1: R1=2

Task 2: R1=0

mov R1,x;
add R1,1;
mov x,R1;

Context Switching
Task2 is ready
Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=2
Task 1: R1=2

Task 2: R1=2

mov R1,x;
add R1,1;
mov x,R1;

mov R1,x;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=2
Task 1: R1=2

Task 2: R1=3

mov R1,x;
add R1,1;
mov x,R1;

mov R1,x;
add R1,1;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=3
Task 1: R1=2

Task 2: R1=3

mov R1,x;
add R1,1;
mov x,R1;

mov R1,x;
add R1,1;
mov x,R1;

Copyright © 2012 Embedded Systems
Committee
Reentrancy (Another Scenario)
x=1
Task 1: R1=0

Task 2: R1=0

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=1
Task 1: R1=1

Task 2: R1=1

mov R1,x;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=1
Task 1: R1=1

Task 2: R1=1

mov R1,x;

Context Switching
Task2 is ready
Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=1
Task 1: R1=1

Task 2: R1=1

mov R1,x;

mov R1,x;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=1
Task 1: R1=1

Task 2: R1=2

mov R1,x;

mov R1,x;
add R1,1;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=2
Task 1: R1=1

Task 2: R1=2

mov R1,x;

mov R1,x;
add R1,1;
mov x,R1

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=2
Task 1: R1=1

Task 2: R1=2

mov R1,x;

mov R1,x;
add R1,1;
mov x,R1;

Context Switching
Task2 is back to waiting

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=2
Task 1: R1=2

Task 2: R1=2

mov R1,x;
add R1,1;

mov R1,x;
add R1,1;
mov x,R1;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
x=2
Task 1: R1=2

Task 2: R1=2

mov R1,x;
add R1,1;
mov x,R1;

mov R1,x;
add R1,1;
mov x,R1;

Copyright © 2012 Embedded Systems
Committee
Reentrancy
• When to doubt your function reentrancy?
– When your function accesses a global variable while
this variable is accessed in:
• ISR
• Another task
• Hardware module.

Copyright © 2012 Embedded Systems
Committee
Reentrancy
• How to make a non-reentrant function reentrant?
– Either using critical section or any task
synchronization services provided by the OS.

Copyright © 2012 Embedded Systems
Committee
Reentrancy
• Critical Section:
– Context Switching always happens after an interrupt.
– If I disabled interrupts during the time I don’t want
the schedule nor any ISR interrupts the running task
then this part of code is reentrant.
char x;
void foo1(void)
{
DI;
x++;
EI;
}
Copyright © 2012 Embedded Systems
Committee
Agenda
•
•
•
•
•
•

Basic Definitions
Introduction to RTOS
Scheduling Algorithms
Reentrancy
Shared Resources
RTOS APIs

Copyright © 2012 Embedded Systems
Committee
Shared Resources
• Tasks always race each other for resources.
• Resources could be many thing like HW
modules, memory & even CPU time.
• We have to control the tasks resources access to
avoid data corruption or basically any
undesirable behavior.
• Semaphores are just one methods of controlling
resources access.
Copyright © 2012 Embedded Systems
Committee
Shared Resources
• Semaphore vs. mutex

Copyright © 2012 Embedded Systems
Committee
Intertask Communication
• global variable
RAM
Task 1
write X

X

Task 2
read X
Copyright © 2012 Embedded Systems
Committee
Intertask Communication
• Mailboxes
- Any task can send a message to a mailbox and any task can receive a message
from a mailbox

Copyright © 2012 Embedded Systems
Committee
Intertask Communication
• Message Queues

Copyright © 2012 Embedded Systems
Committee
Agenda
•
•
•
•
•
•

Basic Definitions
Introduction to RTOS
Scheduling Algorithms
Reentrancy
Shared Resources
RTOS APIs

Copyright © 2012 Embedded Systems
Committee
RTOS APIs “uCOS-III”
•
•
•
•
•
•
•
•
•

OSTaskCreate (Task ptr, arg, prio, stack size)
OSSemCreate (Sem ptr, counter)
OSSemPost (Sem ptr)
OSSemPend (Sem ptr,Timeout)
OSTmrCreate (Tmr ptr, period, callback)
OSTmrStart, OSTmrStop (Tmr ptr)
OSMemCreate (mem ptr, block size, n blocks)
OSMemPut (mem ptr, blk ptr)
OSMemGet (mem ptr)
Copyright © 2012 Embedded Systems
Committee
References
• uC/OS-II, Jean Labrosse
• Operating Systems: Design & Implementation,
Andrew Tanenbaum
• Embedded.com

Copyright © 2012 Embedded Systems
Committee
Website: www.escommittee.net
Contact Us: info@escommittee.net

FB: Embedded Systems Committee

Copyright © 2012 Embedded Systems
Committee

Rtos