|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Messaggi: n/a
|
[c#] caricamento in memoria dell'assembly
ciao a tutti, volevo chiedervi una cosa:
il caricamento in memoria di un assembly che avviene ancora non ho capito bene, se non sbaglio referenziando l'assembly manualmente, oppure con assembly.load, o se ci sono altri modi ditemelo perchè mi piacerebbe saperlo, comporta il caricamento di tutto il prg???? mi spiego meglio, se l'assembly fosse grande 512 mbyte, il framework porta in memoria un file di 512 mbyte intero (indipendentemente dall'uso della paginazione e memoria virtuale)???? |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Scusa, non capisco a cosa ti riferisci intendi il caricamento in memoria di un eseguibile o dll?
|
![]() |
![]() |
![]() |
#3 |
Messaggi: n/a
|
entrambi!
|
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Se ho capito bene allora, ti riferisci al "Portable exutable".
Esso rappresenta ogni file eseguibile, dll, ocx ed altro.. insomma tutto ciò che necessita di essere eseguito. Avevo affrontato la faccenda dal punto di vista di windows, non credo comunque cambi molto per gli altri os Quote:
Per spiegartelo diciamo che... a grandi linee ogni file eseguibile è composto da 4 parti: I° Il dos header II° NT header III° Section table IV° Sections Il "loader" lo carica in memoria secondo regole ben precise contenute nella section table. Le sezioni del file vero e proprio (.text .data ecc..) sono solo l'ultima parte "le sections" ciò che c'è prima specialmente gli NT header che è il PE vero e proprio, contengono importanti altre informazioni per il loader. La cosa non è proprio banale, le informazioni sono tante.... avevo messo in bella un pò di appunti al riguardo, puoi guardare qui: http://www.tosatomatteo.altervista.o...inPE/WinPE.htm cmq, rispondendo alla tua domanda il caricamento in memoria deve tener conto di cose come: "imageBase" varia a seconda dei casi, se non mi sbaglio solitamente è 1000h "Allineamento" il s.o. necessita di allineare ciò che c'è in memoria, un modo per tenere una sorta di "ordine" diciamo. Quindi l'indirizzo di partenza del file sarà un multiplo di questo valore. Solitamente la dimensione in memoria di un file è superiore a quella su disco. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:01.