I. Processi su Windows ⚙️
Nei sistemi operativi Windows, ogni processo è indipendente dagli altri: non può accedere direttamente alla memoria o alle risorse di un altro processo.
Questo isolamento garantisce sicurezza e stabilità, ma rende necessario l’uso di meccanismi di comunicazione interprocesso (IPC – Inter Process Communication) per consentire la cooperazione tra programmi diversi.
🔧 Esempio pratico: 📄 Apri file: ShellExecute.cpp
II. Memoria Condivisa 💾
La memoria condivisa è uno dei metodi più efficienti per far comunicare due processi. In questo modello, più processi possono accedere a una stessa area di memoria fisica, utilizzata per scambiare dati in modo diretto e veloce.
Caratteristiche principali
- Altissime prestazioni rispetto ad altri metodi IPC.
- Richiede sincronizzazione per evitare conflitti di accesso simultaneo.
- Usata spesso per applicazioni in tempo reale o comunicazioni frequenti.
🔧 Esempio pratico: 📄 Apri file: MemoriaCondivisa.c
III. Scambio di Messaggi ✉️
Un altro metodo di comunicazione tra processi è lo scambio di messaggi. In questo approccio, i processi si inviano dati o comandi tramite messaggi strutturati, ma sorge un problema: come sapere quando un messaggio è stato inviato o ricevuto?
Per risolvere questo problema, si utilizzano modelli di sincronizzazione, che stabiliscono le regole della comunicazione.
Modelli di comunicazione
- Modello “Telefono”: comunicazione diretta e simultanea tra i due processi (sincrona).
- Modello “Lettera”: il mittente invia il messaggio e non attende risposta immediata (asincrona).
- Modello “Cameriere”: un processo intermedio riceve e consegna i messaggi tra mittente e destinatario.
- Modello “Portinaio”: un unico processo gestisce tutti i messaggi e coordina la comunicazione.
📘 In sintesi
- I processi Windows sono isolati: servono meccanismi IPC.
- La memoria condivisa è veloce ma richiede sincronizzazione.
- Lo scambio di messaggi è più sicuro ma più lento.
- I modelli (Telefono, Lettera, Cameriere, Portinaio) definiscono le modalità di sincronizzazione.