Sunteți pe pagina 1din 47

Definitii - deadline:

sistemele in timp-real "raspund" la evenimente externe

e.g. sistemul de control al airbag-ului trebuie sa raspunda intr-un anumit interval de timp in
cazul producerii unui accident

acest interval poarta denumirea de deadline

unele deadline-uri sunt soft, altele hard, de aici si clasificarea sistemelor in timp-real

Programarea Aplicatiilor in Timp Real

42

Definitii aplicatie software in timp - real:

ruleaza intr-un sistem in timp-real

este compusa din mai multe actiuni care se executa concurent

apar probleme specifice atunci cand intre actiunile care se executa concurent (in paralel) apar
interactiuni
interactiunile posibile intre actiuni pot fi de mai multe tipuri si pot fi exprimate prin operatii
specifice procesarii concurente

Programarea Aplicatiilor in Timp Real

43

Definitii procesare concurenta a informatiilor:

3 aspecte

multiprogramarea (managementul mai multor procese sau fire de executie intr-un sistem
uniprocesor)
executie cvasiparalela pe principiul
diviziunii timpului = alocarea procesorului
in felii de timp (e.g. time slice)

multiprocesarea (managementul mai


multor procese sau fire de executie intr-un
sistem multi-procesor)
este posibila executia paralela
reala a actiunilor alocate taskurilor

procesarea distribuita (managementul mai multor procese care se executa pe mai multe
calculatoare conectate intr-o retea, care pot avea sisteme de fisiere diferite sau arhitecturi
hardware diferite, e.g. Internet-ul)

Programarea Aplicatiilor in Timp Real

44

Definitii programare concurenta:

programarea paralela (concurenta) reprezinta activitatea de scriere a unui program / aplicatie


software care contine o serie de parti necesar a se afla in executie in acelasi moment

aceste operatii paralele / concurente reprezinta etape de executie asincrona in cadrul


aplicatiei

partile componente ale aplicatiei software (programului), care vor fi executate in paralel, poarta
denumirea de taskuri

se sparge problema intr-un numar de actiuni = taskuri, care vor fi planificate apoi astfel
incat sa se incheie la momentul specificat (deadline)

Programarea Aplicatiilor in Timp Real

45

Definitii - task:

taskul este cea mai mica unitate de prelucrare a informatiei careia i se atribuie o identitate,
reprezentand un program in forma executabila compus dintr-o succesiune de instructiuni
executate secvential
doua taskuri sunt paralele (concurente) daca prima instructiune a unui task incepe sa se
execute inainte ca ultima instructiune a celuilalt task sa fie completata;
doua sau mai multe taskuri se numesc disjuncte (independente) daca nu schimba
informatii intre ele sau daca nu utilizeaza resurse (zone de memorie, dispozitive periferice)
in comun. In caz contrar, taskurile interactioneaza.
semnalul de control care initiaza executia task-ului este furnizat de catre sistemul de operare
prin intermediul planificatorului de taskuri

Programarea Aplicatiilor in Timp Real

46

Definitii task si procesare multitasking:

termenul multitasking este folosit in 2 contexte:

intr-un sistem multi-user = un calculator care permite ca mai multi utilizatori sa lucreze
simultan, de la terminale diferite. Fiecare utilizator isi poate rula propriul program
independent de ceilalti si programele de aplicatie nu interactioneaza intre ele;

intr-o aplicatie multitasking - mai multe programe (taskuri) lucreaza impreuna pentru a
implementa global o anumita functionalitate

Programarea Aplicatiilor in Timp Real

47

Exemplu aplicatie multitasking:

Pas 1. Definire problema

Sa se implementeze o aplicatie formata din 3 taskuri de tip A (tipareste litera a), B (tipareste
litera b) si C (tiparesc litera c).

Conditiile de tiparire sunt urmatoarele:

un b se scrie intotdeauna inaintea unui c;

b si c trebuie sa alterneze in sir;

numarul de b-uri si c-uri scrise la un moment, dar nu trebuie sa depaseasca numarul de


a-uri.

Programarea Aplicatiilor in Timp Real

48

Exemplu aplicatie multitasking (cont.):

Pas 2. Analiza problema


Secvente posibile:

aabcaaabc

aaaabcbc

ab
Secvente imposibile

aacb nu indeplineste conditia 1

abacac - nu indeplineste conditia 2

aabcabc - nu indeplineste conditia 3

Programarea Aplicatiilor in Timp Real

49

Exemplu aplicatie multitasking (cont.):

Pas 3. Definirea taskurilor care compun aplicatia

task de tip A (tipareste litera a)

task de tip B (tipareste litera b)

task de tip C (tipareste litera c)

27.02.2015

Programarea Aplicatiilor in Timp Real

50

Exemplu aplicatie multitasking (cont.):

Pas 4. Solutie de implementare

aleg mecanismele de sincronizare si comunicare intre taskuri

27.02.2015

aleg 2 semafoare binare, cu val. initiale SemB = 0, SemC = 1


aleg 1 semafor general, cu val. initiala 0, Sum = 0

Programarea Aplicatiilor in Timp Real

51

Exemplu aplicatie multitasking (cont.):

Pas 5. Scriere cod program

Detalii de implementare in functie de limbaj

27.02.2015

in Java nu exista semafoare in limbaj, trebuie definite software


in C sub QNX exista semafoare generalizate si mutex-uri (corespunzator semafoarelor
binare pentru sincronizarea firelor de executie)

Programarea Aplicatiilor in Timp Real

52

Exemplu aplicatie multitasking (cont.):

implementare Task 1

class Taskul_1 extends ABCs implements Runnable {


public void run () {
while (true) { nap(1+(int)(random(500)));
System.out.print("A"); System.out.flush();
V(sum);
}
}
}

27.02.2015

Programarea Aplicatiilor in Timp Real

53

Exemplu aplicatie multitasking (cont.):

implementare Task 2

class Taskul_2 extends ABCs implements Runnable {


public void run () {
while (true) { nap(1+(int)(random(800)));
P(C); P(sum);
System.out.print("B"); System.out.flush();
V(B);
}
}
}

27.02.2015

Programarea Aplicatiilor in Timp Real

54

Exemplu aplicatie multitasking (cont.):

implementare Task 3

class Taskul_3 extends ABCs implements Runnable {


public void run () {
while (true) { nap(1+(int)(random(800)));
P(B); P(sum);
System.out.print("C"); System.out.flush();
V(C);
}
}
}

27.02.2015

Programarea Aplicatiilor in Timp Real

55

Exemplu aplicatie multitasking (cont.):

implementare Task monitorizare

class ABCs extends Obiect {


protected static final SemBin B = new SemBin(0);
protected static final SemBin C = new SemBin(1);
protected static final SemGen sum = new SemGen(0);
public static void main(String[] args) {
Thread Taskul_1 = new Thread(new Taskul_1());
Thread Taskul_2 = new Thread(new Taskul_2());
Thread Taskul_3 = new Thread(new Taskul_3());
Taskul_1.start();
Taskul_2.start();
Taskul_3.start();
nap(9000);
Taskul_1.stop();
Taskul_2.stop();
Taskul_3.stop();

System.out.println();
System.out.println("B=" + B + ", C=" + C + ", sum=" + sum);
System.exit(0);
}
}
27.02.2015

Programarea Aplicatiilor in Timp Real

56

Exemplu aplicatie multitasking (cont.):

Pas 6. Validare rezultate

Se executa programul. Face ceea ce s-a specificat la pasul 1, in cerinte?

27.02.2015

Programarea Aplicatiilor in Timp Real

57

Elemente pentru dezvoltarea unei aplicatii in timp-real:

alegerea arhitecturii hardware si analiza detaliilor de implementare

alegerea unei metode de proiectare a aplicatiei software

alegerea componentelor software in functie de hardware si performante sistem de operare ?

alegerea limbajului de programare: secvential (C), concurent (Java, Ada)

design, implementare, testare

27.02.2015

Programarea Aplicatiilor in Timp Real

58

PROGRAMAREA APLICAIILOR
N
TIMP-REAL

Semestrul 2, 2015-2016
Monica Drgoicea
Departament Automatica si Ingineria Sistemelor

Partea a 2-a

4-Mar-16

Programarea Aplicatiilor in Timp-Real

Continutul cursului:

Probleme clasice ale programarii concurente

Organizarea unei aplicatii software in timp real

Probleme caracteristice ale proiectarii aplicatiilor software in timp-real:

4-Mar-16

Programarea Aplicatiilor in Timp-Real

Probleme clasice ale programarii concurente:

problema filozofilor

problema readers / writers

etc ...

4-Mar-16

Programarea Aplicatiilor in Timp-Real

Problema filozofilor (1)

pune in evidenta posibilitatea aparitiei situatiilor de deadlock intre procese


care impart resurse comune

Enunt:

cinci filozofi traiesc impreuna, gandind si mancand spaghetti fiecare


filozof mananca cu doua furculite (stanga / dreapta) cei cinci filozofi
sunt reprezentati prin cinci procese concurente, Pi, i = 1 5 le
corespund cinci farfurii si cinci furculite

Algoritmul de sincronizare intre cei cinci filozofi:

trebuie sa asigure faptul ca doi filozofi nu pot folosi in acelasi timp


aceeasi furculita, adica ...
accesul la resursele partajate de tip furculita trebuie sa fie realizat prin
excludere mutuala ...
evitand situatiile de deadlock si starvation

4-Mar-16

Programarea Aplicatiilor in Timp-Real

Problema filozofilor (2)

fiecare filozof se aseaza la masa, ridica furculita din partea stanga, apoi pe cea din partea
dreapta dupa ce fiecare filozof a terminat de mancat, pune furculitele pe masa solutia aceasta
nu evita situatiile de deadlock - de ce ?

semafor furculita[5] = {1};

int i;
void filozof(int i){
while(1){
gandeste();
wait(furculita[i]);
wait(furculita[(i+1) mod 5]);
mananca();
signal(furculita[(i+1) mod 5]);
signal(furculita[i]);
}
}

4-Mar-16

Programarea Aplicatiilor in Timp-Real

Problema filozofilor (3)

solutie cu evitarea deadlock-ului


se introduce a inca un semafor, ceea ce permite ca doar patru filozofi sa manance la un
moment dat
se asigura faptul ca cel putin un filozof va avea acces la doua furculite la un moment dat

semafor furculita[i] = {1};


semafor liber = {4};
int i;
void filozof(int i){
while(1){
gandeste();
wait(liber);
wait(furculita[i]);
wait(furculita[(i+1) mod 5]);
mananca();
signal(furculita[(i+1) mod 5]);
signal(furculita[i]);
signal(liber);
}
}
4-Mar-16

Programarea Aplicatiilor in Timp-Real

Aplicatii QNX pentru conducerea proceselor - dispecerat metrou


Bucuresti:

4-Mar-16

Programarea Aplicatiilor in Timp-Real

Exemplu sistem de conducere in timp-real (continuare)

Organizarea unei aplicatii software in timp-real

Cum definim activitatile specifice ?

Cum definim taskurile ?

4-Mar-16

Programarea Aplicatiilor in Timp-Real

Task achizitie date

4-Mar-16

Programarea Aplicatiilor in Timp-Real

Task conversie date

4-Mar-16

Programarea Aplicatiilor in Timp-Real

10

Task algoritm de
conducere proces

4-Mar-16

Programarea Aplicatiilor in Timp-Real

11

Probleme caracteristice ale proiectarii aplicatiilor


software in timp-real:

in aplicatiile in timp-real -> concurenta -> transfer de date -> sincronizare si


comunicatie intre taskuri (procese si fire de executie) - engl. Interprocess
Communication

sa asigure accesul la resurse partajate (engl. shared resources) excludere


mutuala

sa permita transmiterea corecta a informatiilor intre componentele software


ale aplicatiei in timp-real

sa permita executia corecta a taskurilor prin alocarea procesorului

rezolvam cu mecanisme specifice programarii concurente (e.g. semafoare, zone


comune de memorie, transmitere de mesaje, etc)

4-Mar-16

Programarea Aplicatiilor in Timp-Real

12

Probleme caracteristice ale proiectarii aplicatiilor software in timpreal:

sincronizarea taskurilor

excluderea mutuala (pentru acces la resurse partajate)

comunicatia intre taskuri

aspecte colaterale:

deadlock

starvation

4-Mar-16

Programarea Aplicatiilor in Timp-Real

13

Sincronizarea taskurilor - definitie:

Sincronizarea = abilitatea mai multor taskuri de a-si coordona activitatile prin interschimbarea
informatiei

doua taskuri, Ti si Tj

Pi, respectiv Pj, definesc punctul de sincronizare

mecanisme pentru realizarea sincronizarii:

semafoarele (binare, generalizate), mutex-uri (caz particular de semafor binar)

monitoare

transmiterea de mesaje

caz particular: sincronizarea prin planificare pe conditie de timp

4-Mar-16

Programarea Aplicatiilor in Timp-Real

14

Excluderea mutuala - definitie:

Excluderea mutuala = abilitatea mai multor taskuri de a imparti resurse sau date in asa fel
incat un singur proces sa aiba acces la o resursa partajata (engl. shared resource) la un
moment dat
fiecare dintre taskurile care acceseaza resursa partajata executa o sectiune (zona) critica
(adica o secventa de instructiuni cu care se acceseaza resursele partajate Imprimanta, zone
de date comune, etc)

4-Mar-16

Programarea Aplicatiilor in Timp-Real

15

Comunicatia intre taskuri (procese si fire de executie):

se refera la un set de mecanisme specifice prin care programele care formeaza o aplicatie
multitasking pot face transfer de date intre ele si isi pot sincroniza astfel activitatile
transmiterea de date implica si sincronizare
in mod frecvent, cele doua cerinte sunt combinate - un proces necesita date de la alt
proces si trebuie sa astepte pana cand aceste date sunt disponibile
anumite comunicatii intre procese pot fi
private - intre procese care stiu unul de existenta celuilalt si doresc sa comunice direct intre
ele
publice procesul emitator transmite informatia (engl. broadcasting), iar alte procese
receptioneaza ceea ce a fost transmis

se utilizeaza mecanisme de transmitere de mesaje (cutii postale, canale de comunicatie, etc)

4-Mar-16

Programarea Aplicatiilor in Timp-Real

16

4-Mar-16

Programarea Aplicatiilor in Timp-Real

17

Sisteme de operare in timp-real:

aspecte generice ale sistemelor de operare in timp-real

cerinte

clasificare

abordari

studiu de caz - QNX

4-Mar-16

Programarea Aplicatiilor in Timp-Real

18

Sisteme de operare in timp-real (cont.):

indeplinesc patru functii principale:

managementul si sincronizarea proceselor


gestiunea memoriei
comunicatia intre procese (engl. IPC Interprocess Communication)
gestiunea operatiilor I/O

de asemenea, trebuie sa asigure indeplinirea constrangerilor de timp (deadlines) si


predictibilitatea executiei actiunilor

4-Mar-16

Programarea Aplicatiilor in Timp-Real

19

Sisteme de operare in timp-real - clasificare:

nuclee (kernel) proprietary comerciale

extensii de timp-real bazate pe UNIX

QNX, pSOS, VxWorks, Nucleus, ERCOS, EMERALDS, Windows CE,...

RT-UNIX,RT-LINUX, RT-MACH, RT-POSIX, Timesys Linux

nuclee RT pentru cercetare

Spring, Mars, HARTOS,MARUTI, ARTS, CHAOS, EMERALDS

4-Mar-16

Programarea Aplicatiilor in Timp-Real

20

Sisteme de operare in timp-real - nuclee (kernel)


proprietary comerciale:

mici ca dimensiune, rapide


comutare rapida de context si functionare in intreruperi
multitasking si IPC prin utilizarea cutiilor postale, evenimentelor, semnalelor,
semafoarelor
cum suporta constrangerile RT
ceas de timp-real
planificare pe baza de prioritati
alarme speciale si timeouts
standardizare prin extensii POSIX Real-Time

POSIX - Portable Operating System Interface reprezinta o familie de standarde


care definesc principii de baza pentru portabilitatea aplicatiilor software pe
diverse platforme hardware si diverse sisteme de operare de tip UNIX
standardele POSIX 1003.1b (extensiile de timp-real) si POSIX 1003.1c (extensii
pentru thread-uri)

4-Mar-16

Programarea Aplicatiilor in Timp-Real

21

4-Mar-16

Programarea Aplicatiilor in Timp-Real

22

PROCES

ca verb: to handle, ca in processing an error, sau processing a message


ca substantiv:
a program running in an operating system, sau
a procedure, sau
a set of procedures for accomplishing a goal

de fiecare data implica trei aspecte

4-Mar-16

movement
work
time
... adica: a process performs actions over some interval of time in order to
achieve, or to progess to, some objective

Programarea Aplicatiilor in Timp-Real

23

Procese si fire de executie:

in multe sisteme de operare moderne, conceptul traditional de proces a fost impartit in doua
concepte separate

unul se refera la acapararea resurselor (engl. resource / process ownership)


al doilea se refera la fluxul (engl. stream) de executie a instructiunilor (engl. thread)
exemple: procnto, sh

astfel, se face distinctia intre

proces si
fir de executie (engl. thread)
un proces poate contine mai multe fire de executie

4-Mar-16

diferenta: modul de gestionare a memoriei

Programarea Aplicatiilor in Timp-Real

24

Procese:

prin proces intelegem un un cod program care se afla intr-o anumit stare de executie (e.g.
RUNNING, READY, BLOCKED, etc)

are propriul sau spatiu de adresa si un singur fir de executie logica a operatiilor (engl. flow
of control)
contorul program al procesului contine adresa urmatoarei instructiuni care trebuie
executata
gestiunea memoriei in cazul unui proces:

Adresa
low
Zona de cod

Adresa
high
Heap
Date
(globale)

Stiva

la un moment dat pot fi incarcate in memorie mai multe procese, partajand CPU si resursele
fiecare proces are propriul sau spatiu de adresa, nu se pot suprapune
spatiul de adresa al unui proces este invizibilpentru celelalte procese incarcate in memorie

4-Mar-16

Programarea Aplicatiilor in Timp-Real

25

4-Mar-16

Programarea Aplicatiilor in Timp-Real

26

Procese:

sistemul de operare tine evidenta starii proceselor prin intermediul tabelei de procese

descrierea detaliata a starii unui proces (context de executie):

continutul registrilor CPU asociat ultimului moment in care procesul a detinut CPU

memoria alocata procesului

lista fisierelor deschise

atunci cand procesul este scos din executie se face o comutare de context, adica se salveaza
contextul de executie

sa fie rapida, pentru a pastra timing-ul aplicatiei

4-Mar-16

Programarea Aplicatiilor in Timp-Real

27

Fire de executie - procese usoare' (engl. light weight


processes):

se face o gestiune diferita a spatiului de adresa alocat procesului


firele de executie se creeaza in cadrul unui proces
firele de executie ale unui proces impart spatiul de adresa al procesului, dar fiecare are propriul
contor program, stiva pentru apelul procedurilor si registri
comutare de context rapida - light weight processes !
Spatiul de adresa al procesului
Variabile globale
(shared)
Thread 1

Thread 2

Thread n

CP
Registri

CP
Registri

CP
Registri

Stiva

Stiva

Stiva

Cod (shared)

4-Mar-16

Programarea Aplicatiilor in Timp-Real

28

4-Mar-16

Programarea Aplicatiilor in Timp-Real

29

4-Mar-16

Programarea Aplicatiilor in Timp-Real

30

S-ar putea să vă placă și