Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Programmazione concorrente, Slide di Informatica

Appunti sulla programmazione concorrente di Informatica, classe quarta, ITIS.

Tipologia: Slide

2024/2025

Caricato il 03/03/2026

peppe-rossi
peppe-rossi 🇮🇹

1 documento

1 / 37

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Classe 4
PROGRAMMAZIONE
CONCORRENTE
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25

Anteprima parziale del testo

Scarica Programmazione concorrente e più Slide in PDF di Informatica solo su Docsity!

Classe 4

PROGRAMMAZIONE

CONCORRENTE

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

PROCESSI

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

PROCESSI

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.

MULTITASKING

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

MULTITASKING

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)

MULTITASKING

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.

MULTITASKING

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”.

MULTITASKING

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.

MULTITASKING

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:

  • in esecuzione: il processo è attualmente in esecuzione;
  • eseguibile: il processo non è in esecuzione, ma è pronto per essere eseguito, appenala CPU si rende disponibile;
  • in attesa: il processo è in attesa di un dato evento, come lo scadere di una frazione ditempo, la terminazione di un altro processo, l’invio di dati da un canale I/O.

MULTITASKING

A seconda della tipologia di comunicazione tra processi, possono sorgere dei problemi derivanti dall’acceso contemporaneo, diretto o indiretto, alle medesime risorse.

GESTIONE RISORSE CONDIVISE

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.

GESTIONE RISORSE CONDIVISE

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.

THREAD E MULTITHREADING

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.

THREAD E MULTITHREADING