vuoi
o PayPal
tutte le volte che vuoi
Si occupa del controllo della memoria principale, decidendo quali processi devono essere
temporaneamente sospesi (swapping) per ottimizzare l’uso delle risorse.
3. Scheduling a breve termine (CPU Scheduling)
Il più critico, decide quale processo nello stato "Ready" deve essere eseguito dalla CPU. Questo
scheduling è attivato frequentemente ed è responsabile dell’efficienza globale del sistema.
Stati dei Processi e Scheduling
Un processo può trovarsi in diversi stati:
• New: Il processo è stato creato ma non è ancora pronto per l’esecuzione.
• Ready: Il processo è pronto per essere eseguito e attende l’assegnazione della CPU.
• Running: Il processo è in esecuzione sulla CPU.
• Blocked: Il processo attende il completamento di un’operazione I/O.
• Exit: Il processo ha terminato la sua esecuzione.
Criteri di Scheduling
Le decisioni dello scheduler possono essere basate su diversi criteri:
• Throughput: Numero di processi completati per unità di tempo.
• Utilizzo della CPU: Percentuale di tempo in cui la CPU è attiva.
• Tempo di attesa (W): Tempo totale trascorso da un processo nello stato "Ready".
• Tempo di turnaround (TAT): Tempo totale trascorso dalla creazione al completamento del
processo.
• Tempo di risposta (RT): Tempo che intercorre tra la sottomissione del processo e l'inizio
della sua esecuzione.
Algoritmi di Scheduling
Gli algoritmi determinano l’ordine di esecuzione dei processi. I principali sono:
1. First Come First Served (FCFS)
• Esegue i processi nell’ordine di arrivo.
• Formula per il tempo di attesa: Wi=∑j=1i−1TjW_i = \sum_{j=1}^{i-1} T_j dove TjT_j è il
tempo di esecuzione dei processi precedenti.
• Svantaggi: Effetto "convoglio", i processi lunghi bloccano quelli successivi.
2. Round-Robin (RR)
• Ogni processo riceve un quanto di tempo qq, al termine del quale viene posto in coda.
• Formula per il tempo di turnaround: TAT=W+STAT = W + S dove SS è il tempo di esecuzione
del processo.
• Criticità: La scelta del time-slice qq influenza l’efficienza dello scheduling.
3. Shortest Process Next (SPN) e Shortest Remaining Time Next (SRTN)
• Seleziona il processo con il minor tempo di esecuzione previsto.
• Svantaggio: Può causare starvation per processi lunghi.
4. Highest Response Ratio Next (HRRN)
• Considera il rapporto di risposta: RR=W+SSRR = \frac{W + S}{S}
• Vantaggi: Bilancia efficienza e equità, riducendo la starvation.
5. Multi-Level Feedback Queue
• Utilizza più code di priorità, promuovendo o degradando processi in base al loro
comportamento.
• Vantaggi: Adatta dinamicamente l’allocazione delle risorse.
Scheduling nei Sistemi Multiprocessore
Nei sistemi con più CPU, le strategie principali sono:
• Assegnazione statica: Ogni processo viene assegnato a una CPU specifica.
• Assegnazione dinamica: I processi possono essere riassegnati per bilanciare il carico.
• Master/Slave: Un processore gestisce il kernel, gli altri eseguono solo processi utente.
• Approccio Peer: Tutti i processori eseguono sia kernel che processi utente.
Scheduling nei Sistemi UNIX e Windows
UNIX
• Basato su code multiple con feedback.
• Le priorità variano dinamicamente.
• Utilizza la system call nice() per modificare la priorità dei processi (valori da -20 a 19).
Windows
• Due classi di priorità: Real-Time (16-31) e Variable (0-15).
• La priorità dei thread è dinamica e basata sul comportamento del processo.
Affinità della CPU
L’affinità della CPU è la capacità di vincolare un processo a specifiche CPU per:
• Migliorare la località della cache.
• Riservare risorse per processi critici.
• Implementata in Linux (taskset) e Windows (API specifiche).
Conclusione
Lo scheduling della CPU è un elemento chiave nei sistemi operativi moderni. La scelta
dell’algoritmo di scheduling influisce direttamente sull’efficienza del sistema e sulla percezione
dell’utente. Con l’evoluzione dei sistemi multiprocessore e multi-thread, le strategie di scheduling
si sono adattate per ottimizzare l’uso delle risorse e bilanciare equità e prestazioni.
Gestione della Memoria nei Sistemi Operativi
Introduzione
La gestione della memoria è una componente fondamentale dei sistemi operativi, in quanto
determina come i processi accedono e utilizzano la memoria principale. Una gestione efficiente
consente di ottimizzare l’uso delle risorse, migliorare le prestazioni del sistema e garantire che più
processi possano coesistere senza interferenze.
Struttura della Memoria
Nei sistemi operativi moderni, la memoria è suddivisa in diversi livelli:
• Memoria principale (RAM): utilizzata per l’esecuzione immediata dei processi.
• Memoria secondaria (disco): usata per memorizzare processi non attualmente in
esecuzione.
• Cache: velocizza l’accesso ai dati utilizzati di frequente.
• Registri della CPU: memoria ad accesso più rapido per le operazioni immediate.
Allocazione della Memoria