Want to make creations as awesome as this one?

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
complicazioni nella gestione delle risorse condivise, come i problemi di sincronizzazione.

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.
Il mutex è utilizzato per evitare condizioni di race in cui più thread accedono alla risorsa contemporaneamente, causando incoerenze.

MUTEX

Esistono due tipi principali di semafori:

  • Semaforo binario:
Ha due soli stati: 0 o 1 (occupato o libero). e viene utilizzato per garantire la mutua esclusione, ovvero solo un thread o processo può accedere alla risorsa condivisa in un dato momento.
  • Semaforo contatore (o semaforo generico):
Può assumere valori interi superiori a 1. e consente a più thread o processi di accedere contemporaneamente a un numero limitato di risorse

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.

SEMAFORI