Newsgroup: it.comp.lang.visual-basic
Titolo: heap, stack e cpu

Qualcuno mi può dire in modo preciso che cosa sono heap e stack? Quando nei
vari tutorial incasinati sull'argomento si parla di memoria si intende RAM o
cosa altro?
Mi potete dire dove trovo qualche informazione (online) su come funziona la
cpu?
Grazie

 Qualcuno mi può dire in modo preciso che cosa sono heap e stack?
beh, difficile fare a meno di un testo generale di programmazione in questo
caso, cmq ti dò due dritte un po' generiche
tutta quanta la memoria usata normalmente dai programmi è RAM (con porte
logiche particolari non escludo si possa leggere la ROM del bios, o leggere
e scrivere le EPROM e eventualmente accedere alla cache memory di secondo
livello .... suppongo uno dei modi migliori per litigare col sistema
operativo, cmq).
Normalmente in un processo tu hai l'impressione di vedere uno spazio di
indirizzamento di memoria (tipo 2 GB max), ma in realtà non è detto che
questo spazio sia perennemente mappato nella memoria fisica vera e propria,
se è abilitata (e se e il programma cazzeggia) potrebbe anche essere scritta
sul file virtuale di swap e ricaricata successivamente, ad un diverso
indirizzo fisico, senza perdere l'illusione di avere mantenuto il medesimo
spazio di indirizzi di prima.
Cmq, in questo spazio logico, quando questo è residente nella RAM fisica
vera e propria, in molti linguaggi si distinguono essenzialmente tre tipi di
sotto-spazi indipendenti :
* * memoria globale (o privata) definita STATICA
Qui vengono scritte le costanti, enums, literals, variabili globali o
statiche (ossia permanenti, con ciclo di vita coincidente con l'esecuzione
del programma)
* * STACK : è un'area dati, del medesimo tipo ma situata ad indirizzi
diversi, che viene solitamente utilizzata dal compilatore per il passaggio
di parametri nelle chiamate alle procedure, per i valori temporanei nel
calcolo delle espressioni varie, per i valori di ritorno delle funzioni, e
per le cosiddette variabili locali o automatiche (che vivono soltanto quando
si entra nello scope della routine che le dichiara, e vengono distrutte
uscendone). Viene acceduta velocemente usando (negli x86) registri
particolari e funge tipo una pila di piatti, LIFO
* * HEAP, situato in indirizzi ancora diversi, serve a allocare variabili il
cui ciclo di vita è esplicitamente gestito dall'utente e dura tanto quanto
serve. E' più macchinoso da usare, e certi linguaggi tipo il basic l'hanno
wrappato completamente (con le Redim varie e le stringhe dinamiche). Dietro
le quinte però si appoggiano a HEAPs. Persino windows ne gestisce uno
(globale) e può crearne di locali.
Ciao
CCCP++Mario


 operativo, cmq).
Sicuro che puoi accedere alla cache? Non è mica gestita completamente 
dell'HW e trasparente anche al S.O.?
Ciao
-- 
edoloz@work

 wrote in
message 2j8dv0F...@uni-berlin.de...


 normale, per me è okay.
A me sembra così, in linea teorica, vai poi a sapere se c'è un metodo 
per accedervi in modo moooolto sporco (non saprei con quali finalità tra 
l'altro...).
Ciao
Ps: urca come sei suscettibile! :-P
-- 
edoloz@work

 sarei curioso di sapere se qualcuno sa farlo !)
Bhč il Bios accede per forza di cose all'HW (puoi overcloccare la CPU, 
piů di cosě!) per cui d'accordo sul fatto di poter modificare (quasi) 
tutto...ma il S.O.......anche se adesso che mi viene in mente esistono 
dei programmini che overcloccano a caldo la CPU (con il S.O. caricato 
intendo....) per cui tutto č possibile (forse) o per lo meno in modo non 
proprio "politically correct" :-) la cosa mi ha incuriosito, adesso 
guardo se esiste qualcosa......
 >mmm, di solito no, ma ammetto di esserlo stato e di avere replicato in 
 >modo
 >un po' aspro.
 >E' che avevo frainteso il tenore della risposta, e non mi era parsa una
 >domanda quanto piuttosto una domanda retorica e vagamente ironica (che 
 >non
 >ci stava dato che ero stato cauto).
 >Chiedo scusa, ho equivocato il tono (a volte lo scritto non rende)
Nessun problema figurati!
Ciao