Cos'è il multitasking
Il significato di multitasking
In informatica il multitasking è una funzionalità del sistema operativo che permette al computer di eseguire più programmi contemporaneamente. E' anche detta multiprocessualità ( multi processo ).
Ad esempio, un utente lancia un programma e durante l'esecuzione di quest'ultimo ne utilizza un altro.
Si distingue dai vecchi sistemi software basati sul monotasking che, invece, erano in grado di eseguire un solo processo alla volta.
Esecuzione in background e foreground
Esistono due modalità di esecuzione:
- Background. Un programma in background viene eseguito dal computer senza alcuna interazione con l'utente. In passato era usata per eseguire i processi in batch. Oggi è usata da tutti i sistemi operativi per eseguire più processi contemporaneamente tramite un sistema di scheduling.
Esempio. Un utente lancia un programma specificando che l'esecuzione debba avvenire lasciando libera la tastiera e lo schermo. In questo modo, durante l'esecuzione del programma l'utente può usare altri software, eseguire altri programmi, navigare su internet, ecc. Ecco un esempio pratico: come eseguire un programma in background su Linux.
- Foreground. Un programma in foreground viene eseguito usando l'interfaccia utente e le varie periferiche di i/o che coinvolgono l'utente finale ( es. schermo, tastiera, ecc. ). Nei primi sistemi operativi a linea comando era possibile avere soltanto un processo in foreground. Nei sistemi operativi più recenti è invece possibile eseguire più processi in foreground tramite la divisione dello schermo in finestre o su più schermi.
Cos'è lo scheduling
Lo scheduler è un componente del sistema operativo che si occupa di gestire automaticamente l'esecuzione contemporanea dei processi in un computer tramite un algoritmo di scheduling.
E' lo scheduler a modificare il contesto di esecuzione ( context switch ) di un processo.
Ad esempio, per portarlo da foreground a background, oppure da background a foreground.
Tipi di multitasking
Esistono due tipologie di multitasking:
- Multitasking cooperative ( senza prelazione )
Il multitasking cooperative è un sistema senza prelazione. Ogni programma cede il controllo al sistema operativo dopo aver eseguito un'operazione. Lo scheduling non riesce a riprendere il controllo di un processo. Questo tipo di scheduling era utilizzato dai vecchi sistemi operativi. Ad esempio, Windows 3.1.Pro e contro. Questa tipologia di multitasking si implementa facilmente su tutte le architetture hardware. Tuttavia, se si verifica un errore a livello software e il programma non restituisce il controllo, si rischia un blocco del computer.
- Multitasking preemptive ( con prelazione )
Il multitasking preemptive è un sistema con rilascio anticipato ( o prelazione ). Il sistema operativo può interrompere un programma in esecuzione se non restituisce il controllo. Questo tipo di scheduling si è diffuso negli anni '90 a partire da Windows 95. E' oggi adottato da gran parte dei sistemi operativi.Pro e contro. Questa tipologia evita il rischio di un blocco del computer. Tuttavia, per funzionare richiede una piattaforma hardware compatibile con il sistema preemptive.