Come vengono gestiti DATI e ISTRUZIONI in memoria? C

di il
5 risposte

Come vengono gestiti DATI e ISTRUZIONI in memoria? C

Allora,la domanda di teoria riguarda come il calcolatore gestisce a livello di memoria i dati e le istruzioni che dò al compilatore per creare il sorgente e poi l'eseguibile ! non è chiara per niente come domanda,perchè ci sarebbero un sacco di cose da dire,gli int,float,double.char occupano uno spazio noto a livello di memoria(RAM),i valori decimali sono interpretati dal calcolatore e trasformati in codice binario,mentre i char sono trattati tramite la codifica ASCII,ditemi se sbaglio ?! Quello che non riesco a capire,è quando,i dati e le istruzioni passano dalla memoria RAM all'hard disk,cioè una volta che io compilo e creo il file sorgente ad esempio .c ,ecco che i dati e le istruzioni sono salvate nella memoria solida,e non piu a livello di ram giusto? poi se creo l'eseguibile,la RAM vien ri-usata quando vado a eseguire il .exe creato per elaborare i calcoli e le istruzioni e far funzionare il programma creato giusto !? Probabilmente qualche ragionamento è sbagliato,ma propio per questo mi rivolgo a voi !

5 Risposte

  • Re: Come vengono gestiti DATI e ISTRUZIONI in memoria? C

    Sezione sbagliata, te lo sposto su Teoria delsviluppo Software
  • Re: Come vengono gestiti DATI e ISTRUZIONI in memoria? C

    Scusami! non me ne ero reso nemmeno conto dal tanto ke avevo la testa fra le nuvole!
  • Re: Come vengono gestiti DATI e ISTRUZIONI in memoria? C

    I files .c e .exe ovviamente si salvano sul disco rigido. Sulla RAM, e lo dice proprio il nome(Random Access Memory), è la memoria temporanea. Quando il compilatore crea il file .exe, non fa altro che tradurre in linguaggio macchina, una sequenza lunghissima di 0 e 1, le istruzioni del linguaggio di alto livello quale è il C/C++. Quando viene lanciato un programma, sulla RAM avviene una segmentazione della memoria, e al programma viene asseganta una porzione più o meno grande di RAM. All'interno di questa porzione ci sono 5 "blocchi": testo, dati, bss, heap e stack. Il primo si dice segmento del testo, e contiene il programma tradotto in linguaggio macchina, e non può essere assolutamente modificato. Durante l'esecuzione del programma, il registro EIP punta a questo blocco, leggendo passo passo ogni istruzione. Il blocco dati e il bss contengono le variabili statiche e le costanti. Questi possono essere modificati, ma non possono cambiare di dimensione. Heap è un blocco molto importante, è quello dedicato alla allocazione dinamica della memoria(quando usi malloc() ti riservi una porzione di memoria sull'heap, per intenderci..). Ha ovviamente dimensioni variabili anch'esso. Poi c'è lo stack, dove vengono memorizzate le variabili. Questo è molto particolare. Se per esempio hai bisogno di richiamare una funzione che utilizza variabili dichiarate all'interno di esse, quelle si memorizzano nello stack. Lo Stack usa come metodo di allocazione della memoria la struttura FILO(First In, Last Out), vuol dire che l'ultimo blocco di variabili salvato nello stack sarà l'ultimo a poter essere utilizzato. Questa struttura è fondamentale; se infatti ho bisogno di una funzione all'interno del mio programma, lo stack allocherà innanzi tutto un blocco all'interno del quale ci saranno le variabili della funzione main(), poi, al richiamo di ogni funzione, allocherà un blocco con le variabili di quella funzione, così, anche se nelle due funzioni esistono due variabili con lo stesso nome, lo stack potrà lavorare con una di esse all'interno della funzione che è chiamata nel main() usando il blocco di variabili di quella funzione. Quando la funzione termina, lo Stack dealloca il blocco di quella funzione e torna a lavorare col blocco del main(). Quindi il blocco di variabili del main(), che era stato allocato per prima, è diventato utilizzabile per ultimo.
    Spero sia stato abbastanza chiaro e spero abbia soddisfatto le tue richieste!
  • Re: Come vengono gestiti DATI e ISTRUZIONI in memoria? C

    Grazie mille ! Una bella delucidazione non c'è che dire!!! Ho terminato l'esercizio propio oggi. Mamma mia ma quanti giri fanno tutti sti dati e istruzioni ! Grazie comunque per l'aiuto e per l'interessamento!!!
  • Re: Come vengono gestiti DATI e ISTRUZIONI in memoria? C

    Li sto studiando proprio in questo momento, quindi ce le ho fresche queste cose... Comunque figurati, è stato un piacere..
Devi accedere o registrarti per scrivere nel forum
5 risposte