domenica 28 novembre 2010

L'interruzione

I computer di oggi come quelli di qualche anno fa eseguono una istruzione alla volta. Essi sono guidati nei calcoli ed elaborazioni da sequenze di istruzioni chiamate programmi.
I programmi sono il mezzo che l'uomo usa per addomesticare queste macchine come l'addestramento è utilizzato per addomesticare gli animali.
A differenza degli animali, capaci di una vita propria, a volte migliore senza l'uomo, i computer privati dei programmi risultano inermi e inutili.

Ogni unità di elaborazione, comunemente detto processore, esegue comandi e istruzioni molto semplici. I linguaggi usati dai programmatori per scrivere i programmi vengono tradotti da altri programmi detti compilatori, nel linguaggio riconosciuto dal processore. Quindi quello che l'uomo scrive in un linguaggio a lui comprensibile viene tradotto in una sequenza di codici comprensibili alla macchina. Il risultato finale è garantito dalla bontà del traduttore o compilatore.

In breve questo è quello che succede, nella verità i processori di anno in anno diventano sempre più veloci e vengono arricchiti da circuiti che contribuiscono a renderli sempre più efficienti.
Si cerca di aumentare sempre di più la frequenza di funzionamento che temporizza l'esecuzione delle singole istruzioni ma allo stesso modo quando i limiti fisici o della fisica, lo impediscono si cerca di esplorare altre strade
Esasperare il parallelismo delle elaborazioni è un aspetto su cui negli ultimi anni si sono fatti molti progressi. All'interno di ciascun processore sono comparsi i “core”, i quali sono delle unità elaborative autonome in grado di farsi carico dell'esecuzione dei programmi richiamati in memoria. Il numero dei core sta aumentando di anno in anno, di questi tempi se ne contano fino a sei ma la crescita non si è ancora fermata.
Ma uno dei compiti degli elaboratori è il relazionarsi con l'ambiente esterno. La più banale delle cose come la pressione di un tasto della tastiera è un evento che la sequenza del programma in elaborazione non contempla ma che non può essere ignorato.
Questo evento genera un'interruzione della sequenza in elaborazione e viene attivato uno specifico programma capace di leggere i dati in arrivo dalla tastiera.
Per esemplificare è come se una persona, nel corso di una passeggiata sia costretta a raccogliere il fazzoletto caduto inaspettatamente. La passeggiata si ferma, il fazzoletto viene raccolto, ma poi si riprende da dove era avvenuto lo stop, senza conseguenza apparenti.

Il computer si comporta allo stesso modo. Ferma l'elaborazione, congelandola temporaneamente, esegue il programma di interruzione e poi riparte dal punto in cui si era fermato.

Quando invece che dialogare con una tastiera c'è la necessità di richiedere un dato memorizzato su un disco rigido il problema diventa un po' più complesso.
La velocità di elaborazione di un processore si basa su tempi inferiori al microsecondo, mentre i tempi di accesso ai dischi generalmente si misurano in millisecondi. La lettura di un dato da disco può durare dai 2-3 millisecondi fino a 10, nei casi più sfortunati.
Se il processore dovesse aspettare dieci millisecondi, perderebbe la possibilità di elaborare migliaia di istruzioni.
In realtà ecco cosa succede.

Quando esiste al necessità (ad esempio) di leggere un dato da disco, l'elaboratore lancia la richiesta al disco fornendo tutti i parametri necessari, poi invece che mettersi in attesa della risposta, congela il programma dedicandosi all'esecuzione di altri programmi in attesa.
Il disco, nel frattempo si posiziona sul dato e terminata l'acquisizione, genera un'interruzione, consegna i dati e risveglia il programma congelato facendolo proseguire con i dati richiesti.
In questo intervallo il processore ha potuto fare molte altre elaborazioni, inviando o ricevendo dati da altri sistemi.
Modalità del tutto simili sono usate per gestire molti degli eventi provenienti dal mondo esterno.
Oggi le nuove tecnologie e la velocità dei circuiti permettono di gestire e acquisire quantità di dati provenienti dall'esterno impensabili solo pochi anni fa.

Quindi il programma in esecuzione non si avvede di tutto ciò che gli avviene attorno e tanto meno se ne preoccupa chi invece scrive il programma. Il mondo delle interruzioni fa parte della "vita" del computer, chi lo progetta in genere cura questa parte in modo particolare al fine di non penalizzare oltremodo la capacità elaborativa.

Ma anche per i computer esistono le maniere forti. Tutti noi le conosciamo : a volte bisogna premere il tasto di spegnimento o altre la tanto conosciuta combinazione Ctrl Alt Del.
Per forza di cose spesso bisogna ripartire.

Anche quando pensiamo che tutto sia perduto e il computer sembra del tutto defunto, un barlume di vita rimane sempre. La semplice pressione del tasto di spegnimento o la pressione del tasto reset generano una interruzione definita non mascherabile .
Il programma, qualunque esso sia, viene interrotto e l'esecuzione riparte in maniera incondizionata da un punto prestabilito.
E' come se una macchina che stia filando dritta lungo l'autostrada verso Milano si trovi di colpo trasportata sul tratto Roma Napoli con direzione Sud senza la possibilità e la speranza di ritornare sulla strada originale. Un cambio di direzione repentino con cui non c'è possibilità di negoziazione.

La nostra vita somiglia a quella di computer o i computer da sempre cercano di imitare la vita dell'uomo. Con il tempo e la pazienza ci somiglieranno sempre di più. In molti casi si sostituiranno a noi, spesso con nostra somma gioa, altre volte lasciandoci un po' perplessi.

Anche noi viviamo quotidianamente interruzioni grandi e piccole che spesso disturbano il nostro percorso e allontanano i nostri obiettivi. Ciò nonostante riusciamo e dobbiamo mantenere la nostra direzione.

Più raramente veniamo raggiunti, anche noi,da interruzioni non mascherabili, simili a quelle che provocano il reset dei computer. Malattie, invalidità, vicissitudini personali e affettive, distacchi e lutti appartengono a questa categoria. Il reset che la vita subisce in questi casi, cambia obiettivi, sogni, speranze e la direzione non siamo più noi a deciderla.
La nostra forza sta nel trasformare queste vicissitudini in opportunità, ritrovando energie quando ci sentiamo sfiniti e senza più la voglia di vivere.

Infine meglio sarebbe fossimo noi i generatori di interruzioni sostanziali per la nostra esistenza.
Decidere di cambiare vita, lasciando qualcuno, ripensando qualcosa di nuovo è sogno e speranza di molti. La voglia di decidere la nostra sorte non ci abbandona mai, allo stesso tempo però, siamo spesso frenati dal timore del cambiamento e di tutte le sue conseguenze.
Tutto ciò alla fine vanifica sogni e desideri.

Nessun commento:

Posta un commento