Appunti Classe Quarta Parte Tre Versione Ridotta 2

download Appunti Classe Quarta Parte Tre Versione Ridotta 2

of 5

Transcript of Appunti Classe Quarta Parte Tre Versione Ridotta 2

  • 8/12/2019 Appunti Classe Quarta Parte Tre Versione Ridotta 2

    1/5

    1. singolo processo utente e singolo thread (MS-DOS);

    2. singolo processo utente e multiplo thread per processo (JAVA);

    3. multiplo processo utente e singolo thread per processo (UNIX);

    4. multiplo processo utente e multiplo thread per processo (Linux)

    Il base alla capacit di un sistema di gestire i threada livello del

    kernel, si distinguono 4 possibili combinazioni di utilizzo

    Soluzioni adottate

    Gli ambienti operativi hanno due modalit principali per realizzare

    un sistema multithreading a seconda che il kernel sia o meno a

    conoscenza della loro esistenza, cio se i threadvengono costruiti

    mediante chiamate al kernel oppure da software attraverso

    procedure e librerie.

    Nel primo caso si parla di Kernel-Level, nel secondo di User-Level

  • 8/12/2019 Appunti Classe Quarta Parte Tre Versione Ridotta 2

    2/5

    Kernel-Level

    In questo caso il kernel gestisce i threadal pari di tutti gli altri

    processi assegnando loro risorse di sistema. Se un threadsi

    sospende pu evolvere un secondo threadgenerato dallo stesso

    processo poich tra loro schedulati autonomamente. Lo stesso

    kernel pu essere scritto come un sistema multithread

    Linux, Unix e Windows realizzando ambienti Kernel-Level

    User-Level

    I threada livello utente vengono implementati grazie a dellelibrerie apposite (thread package) che contengono funzioni per

    creare, terminare, sincronizzare i threade per realizzare lo

    scheduling. N la schedulazione n lo switching con il cambio di

    contesto coinvolgono il kernel, che gestisce solo i processi. Ithreadrisultano pertanto di propriet e gestione esclusiva del

    processo che li ha creati. Date le loro caratteristiche possono

    essere implementati su qualunque SO: lambiente tipico per

    lUser-Level la JVM

  • 8/12/2019 Appunti Classe Quarta Parte Tre Versione Ridotta 2

    3/5

    Come i processi, anche un threaddurante il ciclo di vita pu avere

    diversi stati. Inoltre la vita di un thread legata a quella del

    processo che li genera dal momento che se un processo termina

    allora terminano anche tutti i suoi thread: esso risulta invece

    indipendente durante la vita del processo, cio evolve senza

    considerare che il processo sia in esecuzione oppure in attesa

    Segue il diagramma sul ciclo di vita dei thread, nel quale le

    transizioni sotto il controllo del sistema vengono indicate in blu

    mentre quelle effettuate da istruzioni, ovvero dove il controllo delprogramma, in verde

    Stati di un thread

  • 8/12/2019 Appunti Classe Quarta Parte Tre Versione Ridotta 2

    4/5

    Idle

    Ready

    Running Sleeping

    Waiting

    Blocked

    Dead

    start

    notify ()

    notify All()

    sleep ()

    wait ()

    stop ()

    I/O done

    richiesta I/O

    Quando finito DispatchAttesa finita

    Idle: prima di essere

    avviato

    Dead: terminate le

    sue istruzioni

    Blocked: in attesa di

    completare lI/O

    Blocked: in attesa di

    I/O

    Waiting: in attesa di

    un evento

    Running: in

    esecuzione

    Ready: pronto ma in

    attesa della CPU

    Sleeping: sospeso un

    periodo

  • 8/12/2019 Appunti Classe Quarta Parte Tre Versione Ridotta 2

    5/5

    Un threadviene detto Idlequando non ancora avviato e viene

    posto nello stato di Readydove condivide una apposita coda con

    tutti i threade i processi che attendono la CPU, gestiti dalle

    diverse politiche di scheduling, alternando Runninge Ready

    Dallesecuzione passa allo stato Blockedin caso di richieste dioperazioni I/O e nello stato di Waitingquando esegue chiamate

    bloccanti che ne causano la sospensione: non appena la causa

    del blocco viene rimossa (p.e. con dati dallHD) il threadritorna

    nello stato Ready. Dallo stato di Running pu passare anche allostato Sleeping, che uno stato in cui effettua cicli di attesa per poi

    essere rimesso in coda tra i processi. Dallo stato di Running un

    threadpu passare allo stato di Dead, qualora abbia eseguito

    tutte le proprie istruzioni

    Se un threadsi blocca per richiesta di I/O e passa in Bloched, il

    sistema potrebbe decidere di eseguire un altro threaddello stesso

    processo oppure un threaddi altri processi: se User-Level (thread

    Java) non vede i threaded esegue un altro processo; se Kernel-

    Level (thread C) viene gestito lo scheduling a livello thread