Dato un vettore di 10 interi, dire se la somma degli elementi di posto (indice) pari è maggiore della somma degli elementi di posto dispari. Implementare il precedente algoritmo con una programmazione concorrente che preveda esattamente due sotto-processi in parallelo fornendo il grafo delle precedenze.
Sistemi Operativi
SJF con preemption
Una presentazione che spiega il funzionamento dell’algoritmo di scheduling dei processi all’interno di un sistema operativo chiamato Shortest Job First (SJF) con preemption (prelazione), con un esempio commentato. Verrà tradotto in pagina web prima possibile.
Algoritmo di scheduling FCFS
Una presentazione che spiega il funzionamento dell’algoritmo di scheduling dei processi all’interno di un sistema operativo chiamato First Come First Served (FCFS), con un esempio commentato. Verrà tradotto in pagina web prima possibile.
Algoritmo di scheduling SJF
Una presentazione che spiega il funzionamento dell’algoritmo di scheduling dei processi all’interno di un sistema operativo chiamato Shortest Job First (SJF), con un esempio commentato. Verrà tradotto in pagina web prima possibile.
Il costrutto fork vs join
Tecnica mediante la quale possiamo suddividere un processo, come già abbiamo fatto, e ricongiungerlo alla fine per usare i risultati calcolati.
La chiamata waitpid() in Python
Abbiamo già visto in precedenza la chiamata wait(), come permetta ad un padre di attendere la terminazione dei suoi figli, in questo caso tutti i figli, a prescindere che siano uno o più. Esiste anche una variante per cui si può forzare il padre ad attendere solo un determinato figlio di cui è noto il PID.
La chiamata wait() in Python
Abbiamo visto, nelle esercitazioni precedenti, il comportamento non deterministico delle chiamate fork con l’esecuzione di figli, anche simulando codice con la chiamata time.sleep(). Il comportamento in questi casi è lasciato allo scheduler ma in molti casi, è consigliabile che il padre attenda l’esecuzione dei figli, magari per raccogliere i dati elaborati e usarli nel flusso principale.
Grafo delle precedenze – Esercizi (svolti e non)
Una piccola panoramica di esercizi semplici da svolgere con i grafi delle precedenze con grado di parallelismo assegnato o massimo.
Esempio 03 – Fork annidate ed esecuzione non deterministica
Vediamo un esempio un po’ più complesso con più fork messe in campo. Quanti processi vengono generati dal codice scritto? In allegato un diagramma disegnato sul sito draw.io con il formato xml modificabile/importabile o il png per visionarlo semplicemente.