La multiprogrammazione è resa possibile dall'uso di un'unità di gestione della memoria (MMU) , che consente al sistema operativo di dividere la memoria disponibile tra più programmi. Ad ogni programma viene assegnata una propria porzione di memoria e la MMU garantisce che nessun programma possa accedere alla memoria di un altro programma.
Affinché la multiprogrammazione funzioni in modo efficace, il sistema operativo deve fornire anche un meccanismo di programmazione i programmi in modo che siano eseguiti in modo corretto ed efficiente. Lo scheduler in genere utilizza un round-robin algoritmo, che assegna a ciascun programma un intervallo di tempo di uguale durata da eseguire. Quando l'intervallo di tempo di un programma è scaduto, viene anticipato e al programma successivo in coda viene data la possibilità di essere eseguito.
La multiprogrammazione presenta numerosi vantaggi rispetto alla programmazione singola. In primo luogo, migliora il rendimento complessivo del sistema, poiché è possibile eseguire più programmi contemporaneamente. In secondo luogo, riduce il tempo che un utente deve attendere prima che un programma inizi l'esecuzione, poiché il sistema operativo può passare da un programma all'altro molto rapidamente. In terzo luogo, consente di eseguire più programmi contemporaneamente, anche se alcuni programmi richiedono più I/O di altri.
Lo svantaggio principale della multiprogrammazione è che può aumentare la quantità di sovraccarico associato al sistema operativo, poiché il sistema operativo deve gestire la memoria e la pianificazione di più programmi. Tuttavia, questo sovraccarico è generalmente ridotto e i vantaggi della multiprogrammazione superano di gran lunga i costi.
Ecco un esempio semplificato di come funziona la multiprogrammazione:
1. Il sistema operativo assegna una porzione di memoria a ciascuno dei programmi che devono essere eseguiti.
2. Il sistema operativo inserisce il primo programma nella coda dei programmi pronti.
3. La CPU esegue il primo programma per un intervallo di tempo di una durata specificata.
4. Allo scadere del tempo, il sistema operativo prende il primo programma e lo posiziona alla fine della coda dei programmi pronti.
5. Il sistema operativo posiziona quindi il programma successivo nella coda dei programmi pronti in cima alla coda e gli assegna un intervallo di tempo di una durata specificata.
6. Il processo si ripete finché tutti i programmi non sono stati eseguiti.
Programmazione © www.354353.com