Prentazione Ripasso
Mariopio Di Domenico
Created on September 14, 2024
More creations to inspire you
VALENTINE'S DAY PRESENTATION
Presentation
HUMAN RIGHTS
Presentation
LIBRARIES LIBRARIANS
Presentation
IAU@HLPF2019
Presentation
SPRING IN THE FOREST 2
Presentation
EXPLLORING SPACE
Presentation
FOOD 1
Presentation
Transcript
PRESENTAZIONE
I processicondivisioneesincronizzazione
Provide contexto your topic with a subtitle
INDICE
I PROCESSI
SINCRONIZZAZIONEe COMUNICAZIONE
QUIZ
II Processi
I Processi
Processi Pesanti e Leggeri
PCB
Lo Stato Dei Processi
La Concorrenza
I PROCESSI
Un processo è l'esecuzione di un programma. È come un'attività che il computer sta svolgendo in un dato momento. Ogni processo ha una propria porzione di memoria e risorse del sistema. Il sistema operativo gestisce contemporaneamente molti processi, dando l'illusione che si stiano eseguendo tutti in parallelo.
Questi stati possono variare in nome, ma la logica è simile in tutti i sistemi operativi. Un diagramma a grafo rappresenta visivamente questi stati e le loro transizioni.
I Processi
Lo stato deiprocessi
I processi in esecuzione possono trovarsi in diversi stati che indicano come stanno utilizzando la CPU e le risorse.
Il PCB permette al sistema operativo di sospendere e riprendere i processi mantenendo tutte le informazioni necessarie per un ripristino accurato dello stato del processo.
I Processi
PCB (Process Control Block)
La PCB (Process Control Block) nel contesto dei sistemi operativi è una struttura dati che contiene tutte le informazioni rilevanti relative a un processo in esecuzione. È fondamentale per la gestione e il controllo dei processi da parte del sistema operativo.
Sono generalmente chiamati thread. Un thread è un'unità di esecuzione più piccola e leggera rispetto a un processo tradizionale. Più thread possono appartenere allo stesso processo e condividono lo stesso spazio di memoria.
- I thread di uno stesso processo condividono lo stesso spazio di indirizzamento e risorse (come variabili globali, file aperti, ecc.).
- Il passaggio da un thread all'altro (context switch tra thread) è più veloce perché non c'è bisogno di cambiare il contesto della memoria, rendendoli più efficienti.
- Sono usati quando è necessario parallelizzare l’esecuzione di un'attività all'interno dello stesso processo.
- L'utilizzo di thread può portare a
pesanti leggeri
Sono i tradizionali processi gestiti dal sistema operativo, detti anche semplicemente processi. Ogni processo ha il proprio spazio di indirizzamento indipendente (memoria) e tutte le risorse necessarie per l'esecuzione (file aperti, puntatori di memoria, ecc.).
- Hanno una loro memoria separata.
- Quando il sistema passa da un processo all'altro (context switch), viene eseguito un salvataggio e un ripristino completo del contesto del processo, che comporta un sovraccarico significativo in termini di tempo e risorse.
- Sono più costosi da creare e gestire rispetto ai processi leggeri.
- Ogni processo è isolato dagli altri, il che garantisce una maggiore stabilità e sicurezza.
I Processi
Processi pesanti e leggeri
I processi pesanti e processi leggeri si riferiscono a diversi livelli di astrazione nella gestione dei processi da parte di un sistema operativo.
Il Join è un'operazione che permette a un thread principale di attendere il completamento di thread secondari prima di proseguire. Garantisce la sincronizzazione tra processi paralleli, evitando condizioni di gara. Serve a raccogliere i risultati dei thread prima di riprendere il flusso principale del programma.
L'operazione fork crea un nuovo processo o thread. Nel contesto di processi, la chiamata di sistema fork() crea una copia esatta del processo chiamante.Il processo figlio ha lo stesso codice e gli stessi dati del padre, ma è una entità separata, con il proprio spazio di memoria e cpu. In modo da non intaccare quello originale
fork join
I Processi
la concorrenza
La concorrenza è la capacità di gestire più attività simultanee in un sistema, ottimizzando l'uso di risorse come CPU e memoria. Migliora l'efficienza e la responsività, consentendo operazioni parallele senza blocchi, ed è particolarmente utile in sistemi multi-thread e multi-processo.
I Processi
la concorrenza: i PROBLEMI
La concorrenza nei sistemi informatici, soprattutto in contesti di multitasking e multithreading, può introdurre una serie di problemi se non viene gestita correttamente. Ecco i principali problemi che possono insorgere:1. Race Condition (condizione di gara)Si verifica quando due o più thread o processi accedono contemporaneamente a una risorsa condivisa senza la corretta sincronizzazione.2. DeadlockÈ una situazione in cui due o più processi o thread si bloccano a vicenda perché ognuno attende una risorsa detenuta dall'altro, e nessuno può proseguire.3. StarvationSi verifica quando un thread o processo non riesce mai ad ottenere le risorse necessarie per eseguire, perché altre entità stanno continuamente monopolizzando le risorse.Questo può portare a letture o scritture errate, con effetti imprevedibili sul comportamento del programma.Gestire correttamente questi problemi richiede l'uso di meccanismi di sincronizzazione come semafori, mutex, monitor, barriere e altre tecniche di controllo della concorrenza.
comunicazione
La comunicazione tra processi è necessaria quando i processi devono scambiarsi informazioni
La sincronizzazione è il processo di coordinare l'esecuzione di più processi per garantire che le risorse condivise vengano utilizzate correttamente e che non ci siano conflitti.
Sincronizzazione
La sincronizzazione e la comunicazione tra processi sono due aspetti fondamentali della programmazione concorrente e parallela.
Sincronizzazione e Comunicazione
Sincronizzazione e comunicazione
DOMANDE
Domanda 01
DOMANDE
Domanda 02
DOMANDE
Domanda 03
Clicca qui per una sorpresa
Contenuto creato da: Mariopio, Francesco Pio, AnthonyPio, Luca Pio.
RICORDATEVI DI METTERE UNbuon voto!
Un monitor è una struttura di più alto livello che incapsula sia i dati condivisi che le procedure che li gestiscono, offrendo un meccanismo di sincronizzazione automatico. È un concetto più astratto rispetto ai semafori e mutex. All'interno di un monitor, solo un thread può eseguire una procedura alla volta, garantendo la mutua esclusione. Un monitor utilizza le condizioni per gestire la sospensione e il risveglio dei thread:wait: sospende il thread finché non viene segnalata una condizione specifica.signal: risveglia un thread in attesa di quella condizione.
MONITOR
Il mutex è un meccanismo che garantisce che solo un thread o processo alla volta possa accedere a una risorsa condivisa. È come un lucchetto che un thread deve "prendere" prima di accedere alla risorsa e "rilasciare" quando ha finito. Le operazioni principali sono:
- lock: il thread blocca il mutex per accedere alla risorsa.
- unlock: il thread rilascia il mutex quando ha finito.
MUTEX
Esistono due tipi principali di semafori:
- Semaforo binario:
- Semaforo contatore (o semaforo generico):
Un semaforo è una variabile o un tipo di dato astratto che viene utilizzato per controllare l'accesso a una risorsa condivisa da più processi o thread. Può assumere solo valori interi non negativi e viene manipolato attraverso due operazioni atomiche:wait (o P): decrementa il valore del semaforo. Se il valore è zero, il processo che esegue la wait viene bloccato finché il semaforo non diventa positivo.signal (o V): incrementa il valore del semaforo, sbloccando un processo in attesa, se presente.