Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Il byte ed il sogno del "coast-to-coast"

In un sistema con 1Gb di memoria RAM abbiamo 1.073.741.824 indirizzi di memoria diversi (da 0x00000000 a 0x40000000). Se considerassimo la distanza tra una cella e l'altra pari ad un nostro chilometro, questo range di indirizzi coprirebbe una lunghezza pari a 1.073.741.824 chilometri, equivalenti a ben 26.793 volte la lunghezza dell'equatore terrestre.

Il byte sognava di viaggiare. Era nato qualche centinaia di miliardi di cicli di clock fa in una cella di memoria ai margini del sistema, in una di quelle celle che non erano mai state utilizzate. Il byte sapeva di avere poche speranze di poter partecipare attivamente al lavoro dell'OS: probabilmente sarebbe servito solo se fosse stata caricata in RAM un'immagine digitale da 12Mpixel. Ma il sistema nel quale si trovava era un server Web Windows, e in ambienti come quello tutto doveva essere veloce e performante, allo scopo di seguire la pipeline di IIS nel modo più efficiente possibile. Ma in un server Web non ci sono immagini Jpeg da aprire, solo stream di bytes in ingresso ed altrettanti bytes in uscita. Per questo motivo il byte era cosciente del fatto che, se non si fosse trasferito, sarebbe morto di noia.

Il byte sognava di viaggiare. Ogni tanto sbirciava fuori dalla sua cella così isolata, ma sentiva solo voci lontane provenienti da chissà quale lontana area di memoria, e le invidiava. Si immaginava di poter essere fuori e di correre insieme a tanti altri byte come lui. Gli risultava che lo spazio di indirizzamento disponibile fosse di ben 0x40000000 celle di memorie: non riusciva a capire come conoscesse questa informazione. Dopo un po', era giunto alla conclusione che un byte certe cose lo sapeva d'istinto. Doveva per forza essere così, dal momento che sin dalla sua istanziazione il byte non aveva mai incontrato nessun'altro.

Per quello che ne sapeva, si poteva spostare da un indirizzo all'altro: l'importante era evitare le celle di memoria coinvolte da qualche processo. Ma doveva stare attento, perchè se fosse entrato in una di queste celle, con buona probabilità avrebbe causato un qualche malfunzionamento del processo stesso. Se il software correlato fosse stato scritto in modo opportuno, avrebbe banalmente sollevato un'exception, che sarebbe stata gestita - o almeno così sperava. Ma in altri casi la situazione poteva degenerare pericolosamente, provocando un crash che avrebbe risalito la chain-of-responsability dell'applicazione, fino ad arrivare a niente-poco-di-meno-che a kernel32.dll. A quel punto, sarebbe stata la catastrofe.

Aveva paura di quello che sarebbe potuto accadere, ma era giunto alla conclusione che se ne sarebbe andato. Non importa dove,  non gliene importava delle conseguenze. Sarebbe uscito dalla cella e avrebbe percorso tutti gli indirizzi che avrebbe incontrato, avrebbe parlato con chiunque. Voleva crescere, voleva in qualche modo migliorarsi, e rimanendo lì dov'era non ci sarebbe mai riuscito.

Viaggiare da 0x00000000 a 0x40000000, ecco quello che voleva fare.
Quasi un coast-to-coast virtuale. Che sogno!
Il byte tirò fuori la testa dalla sua cella, ed un vento freddo gli soffiò in faccia.

Print | posted on mercoledì 20 settembre 2006 20:47 | Filed Under [ 010 .bytes. 010 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET