Il Multitasking
Il multitasking è un concetto da sempre dibattuto nella gestione delle risorse nel computing in generale. In questo articolo, esploreremo come il multitasking sia solo apparente e come si relazioni al time slicing e come queste tecniche vengano applicate nei sistemi multiprocessore. Analizzeremo anche le implicazioni per le prestazioni e l’esperienza utente, fornendo un quadro chiaro per gli operatori del settore e coloro interessati alla materia.
Il Multitasking Apparente
Il multitasking apparente è la capacità di un sistema operativo di dare l’illusione che più processi o applicazioni stiano funzionando simultaneamente. In realtà, il sistema esegue un solo processo alla volta, alternando rapidamente tra di essi. Questa capacità è fondamentale per un’esperienza utente fluida e reattiva.
Il Time Slicing
Il time slicing è la tecnica che permette di implementare il multitasking apparente. Ecco come funziona:
-
Intervallo di Tempo: Ogni processo riceve un breve intervallo di tempo, noto come “time slice”, durante il quale può utilizzare la CPU.
-
Switch Rapidi: Una volta scaduto il time slice, il sistema operativo interrompe il processo attivo e passa al successivo. Questo passaggio avviene rapidamente, creando l’illusione che tutti i processi siano in esecuzione contemporaneamente.
Per approfondire, ulteriormente, l’argomento del time slicing leggi anche Time Slicing nei Sistemi Operativi
Sistemi Multiprocessore e Scheduler
Nei sistemi multiprocessore (ovvero sistemi con più core fisici), il concetto di scheduling e time slicing si complica, ma offre anche vantaggi significativi:
Quanti Scheduler Esistono
In un sistema multiprocessore, esiste generalmente un singolo scheduler globale che gestisce l’assegnazione dei processi ai vari core. Tuttavia, è possibile avere anche scheduler locali, uno per ogni core, che gestiscono i thread dei processi assegnati, dallo scheduler globale, a quel core specifico.
Scheduler Globale e Locale
- Scheduler Globale: Gestisce l’assegnazione dei processi ai vari core, cercando di ottimizzare il bilanciamento del carico. Questo tipo di scheduler decide quali processi eseguire e su quale core.
- Scheduler Locale: Si occupa della gestione dei thread già assegnati a un core specifico, applicando il time slicing e le strategie di scheduling interne (multithread);
Vantaggi
Utilizzando un sistema multiprocessore, dotato di core con scheduler locale, che possano gestire in autonomia il proprio time slicing, rappresenta sicuramente, un vantaggio in termini di performance generali, in quanto, lo scheduler globale, demandando la gestione del time slicing, dei thread dei processi assegnati allo stesso core, risulta meno soggetto a congestione, ma il fatto che in ogni caso, al termine delle operazioni di calcolo da parte dei singoli core, tutto debba essere ricondotto allo scheduler globale, fa sì che il multitasking continui ad essere solo apparente.
Considerazioni Finali
Il concetto di multitasking è strettamente legato alla tecnica del time slicing. Quest’ultima consente ai sistemi operativi di gestire l’esecuzione di più processi in modo che l’utente percepisca che stanno funzionando simultaneamente.