Want to make creations as awesome as this one?

Transcript

Elaborato da: Sebastiani Lorenzo e Fioretti Francesco

start >

Programmazione concorrente

Cos'è la programmazione concorrente

fork

Concetti base

La programmazione concorrente è un paradigma di programmazione che consente l'esecuzione simultanea di multiple parti di un programma, che possono essere processi o thread, per migliorare l'efficienza e la performance su computer multi-core o in ambienti distribuiti. Questa tecnica è fondamentale in applicazioni dove il tempo di risposta e l'uso efficiente delle risorse di sistema sono critici, come nei sistemi operativi, applicazioni web ad alte prestazioni, elaborazione di dati in tempo reale, e molti altri contesti.

cos'è la programmazione concorrente?

Processi e thread

Concorrenza e parallelismo

Processo: Un'istanza di un programma in esecuzione. Ogni processo ha il suo spazio di indirizzamento e risorse allocate dal sistema operativo. Thread: La più piccola sequenza di istruzioni programmabili che può essere gestita in modo indipendente dallo scheduler del sistema operativo. Un processo può contenere più thread, i quali condividono lo stesso spazio di indirizzamento e risorse del processo padre ma possono essere eseguiti concorrentemente.

Processi e thread

Concorrenza e parallelismo

Concorrenza: Si riferisce alla capacità di un sistema di gestire più operazioni allo stesso tempo. Non implica necessariamente che queste operazioni vengano eseguite simultaneamente; piuttosto, che le operazioni possono progredire insieme. Parallelismo: Si verifica quando più operazioni vengono eseguite simultaneamente su più core o processori.

Fork

Nel contesto dei sistemi operativi Unix-like, fork() è una chiamata di sistema che crea un nuovo processo duplicando quello esistente. Il processo originale viene chiamato "padre" mentre il nuovo è noto come "figlio". Questa operazione è fondamentale per implementare la concorrenza a livello di processo.Quando un processo chiama fork(), il sistema operativo crea una copia del processo chiamante. Questa copia ha il proprio spazio di indirizzamento unico, ma inizialmente condivide lo stesso codice e dati del processo padre. Dopo la fork, padre e figlio possono divergere, eseguendo codice differente o lo stesso codice ma con dati diversi.