La meraviglia dei computer


Roberto Biancastelli
ex Dirigente di ricerca dell'I.S.S. ed ex professore di Calcolatori Elettronici all'Universita' di Roma 'La Sapienza'


Nell'uso quotidiano dei processori di dati, cioe' di informazioni, la gente non ha modo di accorgersi di una capacita' stupefacente dei computer.
Si tratta del cosiddetto "multitasking", cioe' della capacita' di compiere tanti lavori diversi in pratica contemporaneamente, "in tempo reale".
In questi casi, anche se il computer e l'unita' di elaborazione (il processore) e' uno solo, e' come se potesse suddividersi in tanti computer diversi che si adoperano simultaneamente nell'esecuzione di tanti compiti diversi ("multitasking"), senza piu' la necessita' di dover disporre di altri computer.
In realta' quello che accade e' che lo stesso processore viene programmato per eseguire tutti questi compiti sequenzialmente saltando da un'elaborazione all'altra in milionesimi di secondo, in risposta alle sollecitazioni esterne in tempo reale, rispettando tutte le dovute priorita' dei vari compiti in esecuzione.
Chi sta usando il computer ovviamente non e' in grado di percepire quello che accade in milionesimi di secondo e pertanto nella sua percezione il computer sta eseguendo tutti i suoi compiti simultaneamente come per magia, come se i computer fossero tanti, uno per ogni compito diverso in esecuzione.
Dal punto di vista della programmazione (software) non e' complicato perche' i vari compiti vengono programmati separatamente e collocati in zone diverse della memoria del computer.
Quello che occorre pero' e' implementare anche un piccolo ma astuto software di gestione delle "interruzioni" del computer.
Questa gestione e' il vero cuore del sistema multitasking. Spieghiamo ora come funziona.
Il processore puo' eseguire dei "salti" nell'elaborazione in seguito ad impulsi elettrici provenienti da apposite linee esistenti nei connettori esterni: questi eventi sono chiamati "interruzioni" perche' in corrispondenza al loro verificarsi l'elaborazione corrente puo' essere interrotta (o meglio sospesa) e viene eseguito un "salto" all'inizio del software che gestisce quel tipo di interruzione (al termine di questo software di gestione dell'interruzione verra' poi ripresa l'elaborazione precedentemente interrotta, dopo aver ripristinato tutti i registri e le risorse condivise).
Questa gestione delle interruzioni viene perfezionata dalla possibilita' di gestire la priorita' delle varie interruzioni grazie ad un apposito registro elettronico implementato all'interno del processore, che permette al programmatore di stabilire quali interruzioni devono restare abilitate durante il servizio di gestione dell'interruzione corrente.
E' chiaro allora che il programmatore, all'inizio del softwware di gestione dell'interruzione, oltre a salvare i registri e lo stato corrente del task interrotto, provvedera' a lasciare abilitate nell'apposito registro solo le interruzioni di priorita' maggiore del task corrente che potra' cosi' essere interrotto solo dai task con priorita' maggiore della sua ma non dai task con priorita' minore.
Cosi' puo' essere gestita la gerarchia delle priorita' dei vari task.
Il risultato appare come una magia: un solo computer gestisce simultaneamente in tempo reale tante attivita' diverse collegate a dispositivi esterni anche robotici che funzionano tutti contemporaneamente come se ognuno disponesse di un suo computer mentre il computer esistente e' uno solo.