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

Bytes: allucinazioni su locazioni, celle e allocazioni di memoria

Tutti noi siamo abituati ad avere un domicilio, ovvero una locazione ben precisa nel quale ci sentiamo a casa, siamo reperibili e raggiungibili dagli altri. Abbiamo quindi un recapito, ovvero un indirizzo al quale chi ci conosce può accedere ed usare come riferimento per venirci a trovare. Da questa locazione possiamo traslocare, ed avere pertanto un nuovo indirizzo da qualche altra parte. Solitamente, siamo noi che decidiamo il quando e il dove di questo spostamento; qualcuno meno fortunato viene invece sfrattato o, in altre parole, deallocato. Le analogie con la memoria RAM e i bytes sono parecchie. Ma ci sono dei ma.

Quando siamo fuori dalla nostra locazione (mentre viaggiamo in auto o in treno, siamo in vacanza o al lavoro, siamo dal medico, visitiamo i nostri famigliari, facciamo nuoto o jogging, etc.) continuiamo ad esistere. Abbiamo relazioni con altre persone, cresciamo, lavoriamo, ridiamo e scherziamo. E siamo comunque raggiungibili, perchè ritengo che oggi il recapito inteso come indirizzo di domicilio non sia tanto più valido. Oggi il concetto di recapito è sempre più associato dal cellulare: possiamo essere in qualsiasi punto della Terra, ma se rispondiamo al nostro cellulare, siamo reperibili e raggiungibili. Il nostro indirizzo dove tutti ci raggiungono non è più "Piazza Garibaldi, 7", ma "3390101010".

Per i bytes non è proprio così. Quando un byte non è allocato, il nostro software non può reperirlo, nè leggerlo nè scriverlo. Tanto più il nostro software è scritto con un linguaggio ad alto livello, tanto più questo è vero. Un byte non allocato è simile ad una persona sperduta nella foresta amazzonica, di cui nessuno sa nulla. Un byte non allocato ha comunque un indirizzo (da qualche parte dovrà pur essere), ha comunque un valore (non determinato), ma sia l'uno che l'altro sono ignoti e pertanto non possiamo interagire con il byte stesso. Allocare la memoria permette al nostro codice di sfruttare un certo numero di celle di memoria per interagire con i bytes contenuti nelle celle. Ma pensiamoci un attimo: allocare n bytes in memoria significa inevitabilmente distruggerne altrettanti, ovvero i bytes (o meglio, i loro valori) che esistevano prima dell'allocazione. Qualcuno comunque dovrà essere sacrificato. Non è sempre così: nel buon vecchio C (e in altri linguaggi a basso livello), istanziare una variabile byte a non implica affatto che alla riga dopo del codice a valga 0. L'allocazione di memoria non è necessariamente distruttiva.

Ma l'entità byte è l'indirizzo in cui si trova o il valore che contiene?
Se fosse buona la prima, in un sistema con 1Gb di memoria, i bytes totali sarebbero 1.073.741.824.
Se fosse buona la seconda, il numero di bytes crescerebbe esponenzialmente. Ogni byte può valere da 0x00 a 0xFF, per ogni cella di memoria: 255 ^ 1.073.741.824, un numero talmente grande che preferisco fermarmi qua con queste allucinazioni.

powered by IMHO 1.3

Print | posted on martedì 12 settembre 2006 15:49 | Filed Under [ 010 .bytes. 010 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET