Curs 2 PATR

download Curs 2 PATR

of 47

Transcript of Curs 2 PATR

  • 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