Concetti Chiave
- I moderni sistemi operativi sfruttano il parallelismo fisico dell'hardware per migliorare tempi di risposta e throughput, eseguendo più programmi contemporaneamente.
- La multiprogrammazione consente la gestione simultanea di più processi, ottimizzando l'uso del processore e riducendo i tempi di inattività.
- I processi si dividono in tre categorie: indipendenti, cooperativi e competitivi, ognuno con caratteristiche specifiche di interazione e utilizzo delle risorse.
- Il ciclo di vita di un processo passa attraverso stati come Nuovo, Esecuzione, Attesa, Pronto e Finito, a seconda delle risorse disponibili e delle attività in corso.
- Il PCB (Process Control Block) contiene informazioni essenziali per la gestione dei processi, inclusi identificatore unico, stato, contatore del programma e risorse associate.
Il modello a processi
Grazie all'aumento della velocità delle CPU, abbiamo incrementato le capacita computazionali.
La gestione del processo deve ancora oggi ottimizzata perche spesso presenta situazioni di criticità.
Tutti i moderni SO cercano di sfruttare al massimo le potenzialità di parallelismo fisico dell'hardware per minimizzare i tempi di risposta e aumentare il throughput del sistema, ossia il numero di programmi eseguiti per unita di tempo.
Il programma, composta da un insieme di byte, contiene le istruzioni che dovranno essere utilizzate , e’ un entità passiva, finchè non viene caricato in memoria e mandato in esecuzione.
Nel modello a processi tutto il software che può essere eseguito su un calcolatore (compreso il SO) e’ organizzato in un certo numero di processi sequenzionali (chiamati semplicemente processi).
Un unico processore può essere condiviso tra più processi utilizzando un algoritmo di schedulazione (scheduling) per determinare quando interrompere un processo e avviarne un altro.
Questa tecnica di gestione della CPU si chiama multiprogrammazione, che richiede la contemporanea presenza di piu programmi in memoria , quindi un processo e’ costituito da una successione di fasi di elaborazione della CPU e fasi di attesa per l’ esecuzione di u altre risorse del sistema.
La multiprogrammazione permette l’utilizzo in contemporanea di più processi limitando al minimo i tempi morti e sfruttando al massimo la potenzialità di calcolo del processore.
I processi si suddividono in 3 tipi: Indipendenti, cooperativi e competitivi
Indipendenti: un processo evolve in modo autonomo senza bisogno di comunicare con gli altri processi per scambiare dati
Cooperativi: due o più processi hanno la necessità di cooperare in quanto, per poter evolvere, necessitano di uno scambio informazioni.
Avere la possibilità di utilizzare processi che cooperano, è utile per ottenere:
- Parallelizzazione dell'esecuzione: Per esempio, macchine con molta CPU
- Modularità: Diversi processi per funzioni diverse in una stessa applicazione possono svolgere il loro lavoro autonomamente
- Replica di un servizio: Per esempio, una connessione di rete
- Condivisione delle informazioni
Competitivi: in cui entrambi i processi competono per utilizzare la medesima risorsa, ciò può portare a situazioni indesiderate per uno o più processi).
STATO DEI PROCESSI
Durante il ciclo di vita di un processo, è possibile individuare un insieme di situazione in cui un processo può trovarsi, che definiremo gli stati di un processo.
Un processo si divide in: Nuovo, Pronto, Esecuzione, Attesa e Finito
- Nuovo (New): E' un processo in cui si trova uno stato appena creato
- Esecuzione (Runninig): Il processo sta volvendo, nel senso che la CPU sta eseguendo le sue istruzioni.
- Attesa (Waiting): Un processo è nello stato di attesa quando gli manca una risorsa per poter evolvere e quindi sta aspettando che si verifichi un evento.
- Pronto (Ready-to-run) : Se ha tutte le risorse necessarie alla sua evoluzione.
- Finito (Terminated): Siamo nella situazione in cui il codice del processo è stato eseguito e quindi ha determinato l'esecuzione.
Sospensione per interrupt
Il SO ha un diverso comportamento nel caso che il processo venga sospeso a causa di un interruzione associata a un dispositivo I/O rispetto alla sospensione dovuta allo scadere del time slice.
Gli Interrupt dovuti ai dispositivi di I/O sono organizzati in classi e vengono associati una locazione spesso vicina alla parte bassa della memoria, chiamata Interrupt Vector (che contiene l'indirizzo della procedura di gestione delle istruzioni).
Se si dovesse verificare un interruzione quando è in esecuzione il processo, entra in gioco il Program Counter di questo processo .
PCB (Process Control Block)
Concludiamo questa sintesi sui processi ricordando la struttura la struttura del descrittore del processore PCB.
- Identificatore Unico (PID)
- Stato corrente
- Program counter
- Registri
- Priorità
- Puntatori alla memoria del processo
- Puntatori alle risorse allocate al processo
Oltre a queste informazioni, sono presenti dati che riguardano informazione per l'accounting e per lo stato dell' I/O, che riportano la lista dei file e delle periferiche associati al processo.
Il descrittore di processo viene allocato dinamicamente all'atto della creazione e opportunamente inizializzato.
Viene rimosso dopo le operazioni di termine del processore
Domande da interrogazione
- Qual è il ruolo della multiprogrammazione nei sistemi operativi moderni?
- Quali sono i tipi di processi e come si differenziano?
- Quali sono gli stati di un processo durante il suo ciclo di vita?
- Come gestisce il sistema operativo le interruzioni durante l'esecuzione di un processo?
- Cosa contiene il PCB (Process Control Block) di un processo?
La multiprogrammazione permette l'utilizzo simultaneo di più processi, minimizzando i tempi morti e sfruttando al massimo la potenza di calcolo del processore.
I processi si suddividono in indipendenti, cooperativi e competitivi. Indipendenti evolvono autonomamente, cooperativi necessitano di scambio di informazioni, e competitivi competono per le stesse risorse.
Gli stati di un processo includono Nuovo, Pronto, Esecuzione, Attesa e Finito, ciascuno rappresentando una fase diversa del ciclo di vita del processo.
Le interruzioni, specialmente quelle dovute a dispositivi I/O, sono gestite tramite un Interrupt Vector che contiene l'indirizzo della procedura di gestione delle istruzioni.
Il PCB contiene informazioni come l'identificatore unico (PID), stato corrente, program counter, registri, priorità, puntatori alla memoria e risorse allocate, oltre a dati per l'accounting e lo stato dell'I/O.