Upload
andrei-gabriel
View
235
Download
0
Embed Size (px)
Citation preview
8/19/2019 Curs 2 PATR
1/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 incazul 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
8/19/2019 Curs 2 PATR
2/47
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) aparinteractiuni
interactiunile posibile intre actiuni pot fi de mai multe tipuri si pot fi exprimate prin operatiispecifice procesarii concurente
Programarea Aplicatiilor in Timp Real 43
8/19/2019 Curs 2 PATR
3/47
Definitii – procesare concurenta a informatiilor:
3 aspecte
multiprogramarea (managementul mai multor procese sau fire de executie intr-un sistemuniprocesor)
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 multecalculatoare conectate intr-o retea, care pot avea sisteme de fisiere diferite sau arhitecturihardware diferite, e.g. Internet-ul)
Programarea Aplicatiilor in Timp Real 44
8/19/2019 Curs 2 PATR
4/47
Definitii – programare concurenta:
programarea paralela (concurenta) reprezinta activitatea de scriere a unui program / aplicatiesoftware 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 cadrulaplicatiei
partile componente ale aplicatiei software (programului), care vor fi executate in paralel, poartadenumirea de taskuri
se sparge problema intr-un numar de “actiuni” = taskuri, care vor fi planificate apoi astfelincat sa se incheie la momentul specificat (deadline)
Programarea Aplicatiilor in Timp Real 45
8/19/2019 Curs 2 PATR
5/47
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 instructiuniexecutate secvential
doua taskuri sunt paralele (concurente) daca prima instructiune a unui task incepe sa seexecute inainte ca ultima instructiune a celuilalt task sa fie completata;
doua sau mai multe taskuri se numesc disjuncte (independente) daca nu schimbainformatii 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 operareprin intermediul planificatorului de taskuri
Programarea Aplicatiilor in Timp Real 46
8/19/2019 Curs 2 PATR
6/47
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 lucrezesimultan, de la terminale diferite. Fiecare utilizator isi poate rula propriul programindependent 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
8/19/2019 Curs 2 PATR
7/47
Exemplu aplicatie multitasking:
Pas 1. Definire problema
Sa se implementeze o aplicatie formata din 3 taskuri de tip A (tipareste litera a), B (tiparestelitera 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 dea-uri.
Programarea Aplicatiilor in Timp Real 48
8/19/2019 Curs 2 PATR
8/47
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
8/19/2019 Curs 2 PATR
9/47
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)
Programarea Aplicatiilor in Timp Real 5027.02.2015
8/19/2019 Curs 2 PATR
10/47
Exemplu aplicatie multitasking (cont.):
Pas 4. Solutie de implementare
aleg mecanismele de sincronizare si comunicare intre taskuri
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 5127.02.2015
8/19/2019 Curs 2 PATR
11/47
Exemplu aplicatie multitasking (cont.):
Pas 5. Scriere cod program
Detalii de implementare in functie de limbaj
in Java – nu exista semafoare in limbaj, trebuie definite software
in C sub QNX –
exista semafoare generalizate si mutex-uri (corespunzator semafoarelorbinare pentru sincronizarea firelor de executie)
Programarea Aplicatiilor in Timp Real 5227.02.2015
8/19/2019 Curs 2 PATR
12/47
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);
}
}
}
Programarea Aplicatiilor in Timp Real 5327.02.2015
8/19/2019 Curs 2 PATR
13/47
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);
}
}
}
Programarea Aplicatiilor in Timp Real 5427.02.2015
8/19/2019 Curs 2 PATR
14/47
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);
}
}
}
Programarea Aplicatiilor in Timp Real 5527.02.2015
8/19/2019 Curs 2 PATR
15/47
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);
}}
Programarea Aplicatiilor in Timp Real 5627.02.2015
8/19/2019 Curs 2 PATR
16/47
Exemplu aplicatie multitasking (cont.):
Pas 6. Validare rezultate
Se executa programul. Face ceea ce s-a specificat la pasul 1, in cerinte?
Programarea Aplicatiilor in Timp Real 5727.02.2015
8/19/2019 Curs 2 PATR
17/47
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
Programarea Aplicatiilor in Timp Real 5827.02.2015
8/19/2019 Curs 2 PATR
18/47
PROGRAMAREA APLICAŢIILOR ÎN
TIMP-REAL
Semestrul 2, 2015-2016
Monica Drăgoicea
Departament Automatica si Ingineria Sistemelor
Partea a 2-a
4-Mar-16 1Programarea Aplicatiilor in Timp-Real
8/19/2019 Curs 2 PATR
19/47
Continutul cursului:
Probleme clasice ale programarii concurente
Organizarea unei aplicatii software in timp real
Probleme caracteristice ale proiectarii aplicatiilor software in timp-real:
Programarea Aplicatiilor in Timp-Real4-Mar-16 2
8/19/2019 Curs 2 PATR
20/47
Probleme clasice ale programarii concurente:
problema filozofilor
problema readers / writers
etc ...
Programarea Aplicatiilor in Timp-Real4-Mar-16 3
8/19/2019 Curs 2 PATR
21/47
Problema filozofilor (1)
pune in evidenta posibilitatea aparitiei situatiilor de deadlock intre procesecare impart resurse comune
Enunt:
cinci filozofi traiesc impreuna, gandind si mancand spaghetti fiecarefilozof mananca cu doua furculite (stanga / dreapta) cei cinci filozofi
sunt reprezentati prin cinci procese concurente, Pi, i = 1 … 5 lecorespund cinci farfurii si cinci furculite
Algoritmul de sincronizare intre cei cinci filozofi:
trebuie sa asigure faptul ca doi filozofi nu pot folosi in acelasi timpaceeasi furculita, adica ...
accesul la resursele partajate de tip furculita trebuie sa fie realizat prinexcludere mutuala ...
evitand situatiile de deadlock si starvation
Programarea Aplicatiilor in Timp-Real4-Mar-16 4
8/19/2019 Curs 2 PATR
22/47
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 aceastanu 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]);}
}
Programarea Aplicatiilor in Timp-Real4-Mar-16 5
8/19/2019 Curs 2 PATR
23/47
Problema filozofilor (3)
solutie cu evitarea deadlock-ului
se introduce a inca un semafor, ceea ce permite ca doar patru filozofi sa manance la unmoment 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);
}}
Programarea Aplicatiilor in Timp-Real4-Mar-16 6
8/19/2019 Curs 2 PATR
24/47
Aplicatii QNX pentru conducerea proceselor - dispecerat metrouBucuresti:
Programarea Aplicatiilor in Timp-Real4-Mar-16 7
8/19/2019 Curs 2 PATR
25/47
Exemplu – sistem de conducere in timp-real (continuare)
Organizarea unei aplicatii software in timp-real
Cum definim activitatile specifice ?
Cum definim taskurile ?
Programarea Aplicatiilor in Timp-Real4-Mar-16 8
8/19/2019 Curs 2 PATR
26/47
Task achizitie date
Programarea Aplicatiilor in Timp-Real4-Mar-16 9
8/19/2019 Curs 2 PATR
27/47
Task conversie date
Programarea Aplicatiilor in Timp-Real4-Mar-16 10
8/19/2019 Curs 2 PATR
28/47
Task – algoritm deconducere proces
Programarea Aplicatiilor in Timp-Real4-Mar-16 11
8/19/2019 Curs 2 PATR
29/47
Programarea Aplicatiilor in Timp-Real4-Mar-16
Probleme caracteristice ale proiectarii aplicatiilorsoftware in timp-real:
in aplicatiile in timp-real -> concurenta -> transfer de date -> sincronizare sicomunicatie intre taskuri (procese si fire de executie) - engl. InterprocessCommunication
sa asigure accesul la resurse partajate (engl. shared resources) – excluderemutuala
sa permita transmiterea corecta a informatiilor intre componentele softwareale 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)
12
8/19/2019 Curs 2 PATR
30/47
Probleme caracteristice ale proiectarii aplicatiilor software in timp-real:
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
8/19/2019 Curs 2 PATR
31/47
Sincronizarea taskurilor - definitie:
Sincronizarea = abilitatea mai multor taskuri de a-si coordona activitatile prin interschimbareainformatiei
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
8/19/2019 Curs 2 PATR
32/47
Excluderea mutuala - definitie:
Excluderea mutuala = abilitatea mai multor taskuri de a imparti resurse sau date in asa felincat un singur proces sa aiba acces la o resursa partajata (engl. shared resource) la unmoment 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, zonede date comune, etc)
4-Mar-16 Programarea Aplicatiilor in Timp-Real 15
8/19/2019 Curs 2 PATR
33/47
Comunicatia intre taskuri (procese si fire de executie):
se refera la un set de mecanisme specifice prin care programele care formeaza o aplicatiemultitasking 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 altproces 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 intreele
publice – procesul emitator transmite informatia (engl. broadcasting ), iar alte procesereceptioneaza 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
8/19/2019 Curs 2 PATR
34/47
4-Mar-16 Programarea Aplicatiilor in Timp-Real 17
8/19/2019 Curs 2 PATR
35/47
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
8/19/2019 Curs 2 PATR
36/47
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) sipredictibilitatea executiei actiunilor
4-Mar-16 Programarea Aplicatiilor in Timp-Real 19
8/19/2019 Curs 2 PATR
37/47
Sisteme de operare in timp-real - clasificare:
nuclee (kernel) proprietary comerciale
QNX, pSOS, VxWorks, Nucleus, ERCOS, EMERALDS, Windows CE,...
extensii de timp-real bazate pe UNIX
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)
8/19/2019 Curs 2 PATR
38/47
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 standardecare definesc principii de baza pentru portabilitatea aplicatiilor software pediverse platforme hardware si diverse sisteme de operare de tip UNIX
standardele POSIX 1003.1b (extensiile de timp-real) si POSIX 1003.1c (extensiipentru thread-uri)
4-Mar-16 Programarea Aplicatiilor in Timp-Real 21
8/19/2019 Curs 2 PATR
39/47
4-Mar-16 Programarea Aplicatiilor in Timp-Real 22
8/19/2019 Curs 2 PATR
40/47
“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
movement
work
time
... adica: a process performs actions over some interval of time in order to
achieve, or to progess to, some objective
4-Mar-16 Programarea Aplicatiilor in Timp-Real 23
8/19/2019 Curs 2 PATR
41/47
Procese si fire de executie:
in multe sisteme de operare moderne, conceptul traditional de proces a fost impartit in douaconcepte 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
diferenta: modul de gestionare a memoriei
4-Mar-16 Programarea Aplicatiilor in Timp-Real 24
8/19/2019 Curs 2 PATR
42/47
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. flowof control)
contorul program al procesului contine adresa urmatoarei instructiuni care trebuieexecutata
gestiunea memoriei in cazul unui proces:
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 „invizibil”pentru celelalte procese incarcate in memorie
4-Mar-16 Programarea Aplicatiilor in Timp-Real 25
Zona de codDate
(globale)
Heap Stiva
Adresalow Adresahigh
8/19/2019 Curs 2 PATR
43/47
4-Mar-16 Programarea Aplicatiilor in Timp-Real 26
8/19/2019 Curs 2 PATR
44/47
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 salveazacontextul 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
8/19/2019 Curs 2 PATR
45/47
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 propriulcontor program, stiva pentru apelul procedurilor si registri
comutare de context rapida - light weight processes !
4-Mar-16 Programarea Aplicatiilor in Timp-Real 28
Variabile globale(shared)
CPRegistri
Stiva
CPRegistri
Stiva
CPRegistri
Stiva
Thread 1 Thread 2 Thread n
Cod (shared)
Spatiul de adresa al procesului
8/19/2019 Curs 2 PATR
46/47
4-Mar-16 Programarea Aplicatiilor in Timp-Real 29
8/19/2019 Curs 2 PATR
47/47
4-Mar-16 Programarea Aplicatiilor in Timp-Real 30