





























Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Appunti sulla programmazione concorrente di Informatica, classe quarta, ITIS.
Tipologia: Slide
1 / 37
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!






























Classe 4
Tutti i moderni sistemi operativi offrono il supporto per il multitasking, ossia permettono l’esecuzione simultanea di più processi. In apparenza questi diversi programmi vengono eseguiti contemporaneamente, anche se il computer è dotato di un solo processore. In realtà i processori dei calcolatori su cui si è abituati a lavorare analizzano il flusso delle istruzioni in maniera sequenziale in modo che in ogni istante una sola istruzione sia presa in esame ed eseguita
Un processo è un flusso di esecuzione del processore corrispondente a un programma. Il concetto di processo va però distinto da quello di programma in esecuzione, perché è possibile che un processore esegua contemporaneamente diverse istanze dello stesso programma
Per multitasking si intende la caratteristica di un sistema operativo di permettere l’esecuzione contemporanea (o pseudocontemporanea, per mezzo del time-slicing) di diversi processi.
il preemptive multitasking è invece gestito interamente dal sistema operativo con il sistema del time-slicing (detto anche time-sharing), assegnando ad ogni processo un intervallo di tempo predefinito, ed effettuando il cambio di contesto anche senza che il processo intervenga o ne sia a conoscenza
Nonostante il fatto che i termini preemptive e time-slicing abbiano significato simile, in realtà preemptive si riferisce alla capacità di un processo di “prevalere” su un altro di minore priorità sottraendogli il processore in base a tale “diritto di priorità”, mentre il time-slicing, anche se generalmente coesiste con la preemption, si riferisce unicamente alla suddivisione del tempo gestita dal sistema (e non lasciata ai processi)
aspetto fondamentale della gestione dei processi è il fatto che ogni processo ha un suo spazio di memoria privato, a cui esso soltanto può accedere. Quindi, salvo casi eccezionali (memoria condivisa) un processo non ha accesso alla memoria gestita da un altro processo.
I processi sono normalmente organizzati secondo una struttura gerarchica in cui, a partire da un primo processo iniziale creato alla partenza del sistema operativo, ogni successivo processo è “figlio” di un altro processo che lo crea e che ne diviene il “padre”.
Inoltre: i processi possono subire delle interruzioni (interrupt) dovute al verificarsi di eventi particolari, originati dall’hardware come l’input di una periferica (interrupt hardware), dal software (interrupt software) oppure da errori di esecuzione che causano le cosiddette eccezioni.
I processi, durante il loro ciclo di vita, assumono stati differenti, in conseguenza del loro funzionamento interno e dell’attività dello scheduler. Semplificando al massimo, questi sono i principali stati che un processo può assumere:
A seconda della tipologia di comunicazione tra processi, possono sorgere dei problemi derivanti dall’acceso contemporaneo, diretto o indiretto, alle medesime risorse.
generalmente le risorse vengono acquisite da un singolo processo con un lock, e rilasciate una volta che l’operazione è terminata. Solo a quel punto la risorsa sarà disponibile per gli altri processi. Per gestire questo tipo di problemi di sincronizzazione esistono appositi meccanismi, tra cui il più conosciuto è quello dei semafori.
L’esecuzione parallela e contemporanea di più tasks (intendendo per task l’esecuzione di un compito in particolare), risulta utile non solo nel caso di processi in esecuzione su un sistema operativo multitasking, ma anche all’interno di un singolo processo.
Per eseguire più parti di programma contemporaneamente si è creata la programmazione concorrente all’interno di un singolo processo, e sono stati concepiti i thread, i quali in gran parte replicano il modello dei processi concorrenti, applicato però nell’ambito di una singola applicazione Un processo quindi non è più un singolo flusso di esecuzione, ma un insieme di flussi: ogni processo contiene almeno un thread (thread principale) e può dare origine ad altri thread generati a partire dal thread principale.