Macchine e memorie "virtuali" ampliano le capacità degli elaboratori elettronici di Vittorio Re

Macchine e memorie "virtuali" ampliano le capacità degli elaboratori elettronici Recenti tecniche sempre più sofisticate a servizio dell'informatica Macchine e memorie "virtuali" ampliano le capacità degli elaboratori elettronici Raffinati procedimenti di segmentazione dei programmi - Intenso traffico tra la memoria principale e quelle periferiche - Speciali algoritmi per il razionale sfruttamento dell'unità centrale da parte di più utenti I più potenti sistemi di elaborazione sono dotati di una memoria capace\dì immagazzinare uno o iute milioni di caratteri. Poiché per definire un numero o una lettera alfabetica occorrono otto bit (unità di informazione), significa che se la memoria fosse del tipo a nuclei di ferrite occorrerebbero otto o sedici milioni di anellini. E' noto infatti che dal loro stato di magnetizzazione si trae una informazione in forma binaria, come si-no, 1-0. Qual-' cosa come l'alfabeto Morse, basato esclusivamente su linee e punti, molto più raffinato però. Intasamenti II suddetto numero di anellini è tutt'altro che indifferente, tuttavia se al sistema accedono più utenti, con programmi molto lunghi e complessi, possono verificarsi « intasamenti » con inevitabili perdite di tempo e di quattrini. A rigore nulla vieta di realizzare dispositivi aventi capacità di memoria maggiori di quelle attuali, ma subentrano problemi di costo che ne sconsigliano l'adozione. Anche per gli elaboratori elettronici il rapporto prestazione-prezzo deve essere contenuto entro limiti ben definiti, pena la perdita di una buona parte del potenziale mercato. Con l'avvento del timesharing, il calcolatore viene posto nelle condizioni di lavorare in modo ciclico, ossia presta la sua attenzione ad un terminale ed elabora il programma relativo solo per un tempo brevissimo, quindi passa ad un altro terminale e così di seguito, secondo un ordine prioritario. Questo modo di operare è da porsi in relazione alla lentezza degli organi di ingresso dei da ti. L'enorme differenza tra queste velocità e quelle della macchina consentono a quest'ultima di elaborare i programmi in modo tale che l'utente abbia l'impressione che essa sia a sua completa disposizione, malgrado i « salti » da un programma all'altro. Se la memoria principale (o centrale) — cuore del sistema — fosse talmente grande da contenere i programmi relativi ' di tutti i terminali, il tempo di transizione sarebbe trascurabile, ma qui rientriamo nelle considerazioni di carattere economico dianzi accennate. Si giunge ad un equo compromesso archiviando stabil- mente i programmi in memorie ausiliarie, quali dischi e nastri magnetici (assai meno costose di quelle ad anellini di ferrite), introducendo nella memoria centrale solamente piccole porzioni dei programmi stessi. Ciò ha dato luogo alla filosofia delle « memorie virtuali ». Lo stesso dicasi per le macchine. Per « macchina virtuale » si intende la simulazione delle funzioni di una macchina reale per renderne più flessibile l'impiego e sfruttarne le risorse. Cerchiamo di chiarire. Se isoliamo, idealmente, da un grosso computer talune parti organizzandole in modo da « simulare » il funzionamento di una macchina più piccola, l'operatore che conosca questa nuova macchina può far uso di un calcolatore di dimensioni molto più grandi limitandosi ad utilizzare le funzioni a liti note. Nuclei e dischi In questo senso si può dire che la macchina di dimensioni minori è « virtualmente » contenuta in quella di dimensioni maggiori. « Realmente » non esiste, ma è « virtualmente » presente in quella più grande. Un caso concreto è quello di simula¬ re una memoria a nuclei con una a dischi, come del resto è già stato detto. Si hanno in tal modo sistemi ad immagazzinamento virtuale che forniscono all'utente una memoria di grande capacità a livello singolo, ottenuta per combinazione di componenti hardware (elementi circuitali che compongono la macchina) e software (istruzioni da impartire al sistema affinché svolga un determinato lavoro). In altri termini, un sistema ad immagazzinamento virtuale è caratterizzato dal fatto che la memoria centrale'contiene solamente quella parte del programma che « deve » essere presente per l'elaborazione effettiva. Ci spieghiamo con un esempio. Si supponga di suddividere la memoria centrale come una tavola pitagorica: ogni casella contiene solamente una parte del programma, ossia un « segmento » di esso, detto anche « pagina ». Se la memoria principale è completamente occupata, alcune parti del programma devono essere rimosse per lasciare posto ad altre. Il meccanismo avviene secondo determinate regole di sostituzione, di chiamata e di allocazione. Per conseguire questo obiettivo sono stati messi a punto speciali algoritmi (complesso di operazioni logiche necessarie per effettuare un procedimento matematico). L'insieme Uno di questi metodi potrebbe essere quello dì trasferire tutte le pagine del programma nella memoria centrale, conseguendo in tal modo la sicurezza che l'elaborazione non debba mai essere interrotta per mancanza di qualche parte del programma stesso. E' inevitabile che con questa strategia dì allocazione alcune pagine 'non vengano usate, o perché già utilizzate o perché lo saranno in seguito. Decisamente preferibile trasferire nella memoria centrale solamente le pagine che servono. Si ha però un traffico notevole tra i due tipi di memoria, con conseguente congestione del canale di trasferimento. Un metodo che sembra dia buoni risultati è quello di togliere la pagina che da più tempo non viene utilizzata. Questo procedimento assicura un traffico inferiore a quello precedente, ma richiede l'adozione di accorgimenti speciali nell'uso delle pagine. Si è giunti così al concetto di « insieme lavorante », ossia l'insieme delle pagine a cui fa riferimento il programma in un determinato intervallo di tempo. Il principio può essere applicato a ciascun programma presente nel sistema operativo, individualmente o considerando tutti i programmi facenti parte di un programma globale. Indipendentemente dal tipo di strategia è da rilevare come tramite i dispositivi di traduzione dinamica degli in¬ dirizzi, la parte di memoria effettivamente a disposizione dell'utente possa essere assai superiore a quella « reale » del sistema, anche fino a sedici milioni di caratteri. Per fornire un termine di raffronto basti pensare che tale numero di caratteri corrisponde grosso modo a quelli contenuti in un dizionario di circa duemila pagine, per memorizzare il quale occorrerebbero oltre cento milioni di anellini di ferrite. Vittorio Re Tecnologia per memorie elettroniche: ago su cui sono stati infilati nuclei di ferrite sempre più piccoli