Quando si parla di sistema batch in informatica ci si può riferire alla non interattività dei programmi, all'esecuzione accorpata di più programmi, all'esecuzione ritardata dei programmi o alla modifica di più file (modifica batch) contemporaneamente. Più in generale, un sistema batch prevede l'esecuzione di più istruzioni o programmi (chiamati anche "lavori") senza che sia necessario l'intervento di un operatore umano.
Cos'è il batch processing
Un sistema batch permette di automatizzare alcune procedure informatiche. I lavori sono impostati in modo che non sia necessario in alcun caso l'intervento dell'uomo. Tutti i parametri sono predefiniti e specificati attraverso appositi script, comandi o file di controllo (i file batch) che si occupano di controllare che la procedura avvenga come previsto. Una tale modalità operativa si oppone al funzionamento in linea (inline) dei programmi, che richiede l'interazione diretta e continua, solitamente effettuata via console, tra una macchina e un operatore umano che, di conseguenza, deve essere sempre presente per guidare la procedura digitando le nuove istruzioni mano a mano che queste si rendono necessarie.
Come un normale software, un programma batch utilizza un set di dati preimpostati come input, li processa e alla fine restituisce un altro insieme di dati. Questo ambiente operativo è definito batch processing perché i dati di input sono raccolti all'interno di batches ("gruppi" o "infornate" in italiano), i dati risultanti dall'esecuzione della procedura automatizzata saranno a loro volta raggruppati in un batch e potranno essere riutilizzati per un'altra computazione batch.
La storia dei sistemi batch
Il batch, nonostante sia utilizzato ampiamente anche oggi, è una delle modalità di utilizzo dei calcolatori più vecchie oggi conosciute. Risale, infatti, al periodo della programmazione a schede perforate, quando i computer si contavano sulle dita di una mano e le risorse informatiche erano di gran lunga più scarse. In quel periodo ? siamo a metà del XX secolo ? il programmatore non aveva accesso diretto al calcolatore ma creava il suo programma offline per poi consegnarlo nelle mani di un amministratore di sistema che si sarebbe occupato di mettere in esecuzione il software fornitogli sotto forma di una successione ordinata di schede perforate.
Il batch del programma era dunque calendarizzato e, a seconda del carico di lavoro del computer, i risultati potevano essere restituiti anche dopo diversi giorni. In questo modo le risorse informatiche ? molto costose e scarsamente disponibili ? potevano essere utilizzate continuamente, senza lasciare tempi morti e quindi senza inutili sprechi. I sistemi batch sono ancora ampiamente diffusi, soprattutto nell'ambiente dei supercalcolatori e dei mainframe.
Ciò non toglie, però, che anche i sistemi operativi commerciali (i sistemi UNIX, Windows, Linux e OS X) utilizzino alcune tattiche di batch processing così da automatizzare alcuni processi che non richiedono l'interazione diretta dell'utente come ad esempio l'aggiornamento periodico di un database.
I vantaggi dei sistemi batch
Come abbiamo visto, nonostante abbiano ormai oltre 60 anni di storia alle spalle, i sistemi batch trovano ancora utilizzo negli ambienti informatici più avanzati. Il perché è presto detto: rendono più efficiente lo sfruttamento dei computer ? soprattutto dei complessi e costosissimi mainframe e supercomputer ? permettendo di ammortizzarne in maniera più rapida i costi di realizzazione e gestione.
Grazie al batch processing, infatti, un amministratore di sistema può decidere a tavolino come suddividere i tempi di utilizzo delle risorse informatiche tra i vari programmi, evitando così che ci siano tempi morti nell'utilizzo del processore e delle altre componenti hardware. Mantenendo elevati livelli di utilizzo della macchina, è dunque possibile ammortizzarne i costi sul breve-medio periodo, rendendo l'intero sistema più produttivo e quindi più efficiente anche dal punto di vista economico. Inoltre, un sistema batch è meno ridondante rispetto a sistemi tradizionali: anziché eseguire più volte un programma per processare un insieme di dati ogni volta, mantiene attivo lo stesso programma sino a che tutti i dati non sono stati processati, riducendo ulteriormente i tempi necessari per eseguire tutte le operazioni richieste.