quando otteniamo l'indirizzo di una funzione o di qualsiasi oggetto per quella materia, è l'indirizzo virtuale o l'indirizzo fisico di quell'oggetto?: indirizzo fisico o virtuale
10
A
risposta
11
Stai chiedendo informazioni sugli indicatori in generale?
Sulla maggior parte dei sistemi operativi, sono indirizzi logici.
Il sistema operativo è responsabile della loro traduzione in indirizzi fisici tramite la memoria virtuale e il meccanismo di paging. Questo è trasparente per il programma. Ecco perché un programma fuorviato "supera i confini" e GPF.
Su alcuni vecchi sistemi (ad esempio, DOS), sarebbero fisici, consentendo di sovrascrivere la roba in altre parti della memoria.
7
Dipende dal sistema operativo ea quale livello è in esecuzione il codice.
Per un normale programma utente su un sistema operativo moderno, si otterrà l'indirizzo virtuale.
Problemi correlati
- 1. Come ottenere directory virtuale percorso fisico
- 2. Indirizzo virtuale Linux 3/1 diviso
- 3. cercare un indirizzo MAC di un adattatore fisico
- 4. Mappatura di indirizzi fisici a indirizzo virtuale linux
- 5. Come mappare il percorso virtuale sul percorso fisico?
- 6. Indirizzo di stampa della funzione membro virtuale
- 7. Come recuperare il percorso fisico per la directory virtuale
- 8. differenza nel percorso fisico, percorso root, percorso virtuale, percorso virtuale relativo, percorso dell'applicazione e percorso assoluto?
- 9. Metodo astratto o virtuale?
- 10. Come aprireWebConfiguration con percorso fisico?
- 11. matrice rettangolare fisico per memoria
- 12. Ottenere indirizzo Map o Località Indirizzo in Android
- 13. L'indirizzamento fisico o virtuale viene utilizzato nei processori x86/x86_64 per la memorizzazione nella cache in L1, L2 e L3?
- 14. Un ramo TFS è uno snapshot fisico o logico?
- 15. Instradamento all'elemento virtuale
- 16. motore fisico Android
- 17. Motore fisico XNA 3d
- 18. Motore fisico 4d e ndimensionale
- 19. cambia percorso fisico per la directory virtuale o il sito in IIS utilizzando la riga di comando per IIs6 o IIs7
- 20. modello virtuale e form_for (o formtastic)
- 21. MAMP/LAMP nativo o virtuale (Virtualbox/VMware)?
- 22. funzione virtuale nell'eredità privata o protetta
- 23. ottiene l'indirizzo fisico di un buffer sotto Linux
- 24. creazione di un disco rigido virtuale
- 25. Come verificare se un indirizzo è un indirizzo commerciale o residenziale
- 26. indirizzo relativo dell'endpoint wcf
- 27. indirizzo IP firmato cloudfront indirizzo IP
- 28. Genymotion rifiuta di iniziare con "Il dispositivo virtuale Genymotion non ha potuto ottenere un indirizzo IP".
- 29. Impostazione di un indirizzo mac di una macchina virtuale in Vagrant
- 30. NHibernate eccezione: metodo Add dovrebbe essere 'pubblico/protetto virtuale' o 'protetti interno virtuale'
ma se eseguo il seguente prog: int main() {int (* p)(); p = main; printf ("% p", p);} sta dando l'indirizzo come 0x80483c4, pensa che sia l'indirizzo fisico, perché l'indirizzo virtuale di main start a un indirizzo così grande ?? sto facendo funzionare questo su linux.plz chiarire se ho sbagliato ?? – mawia
Ti stai sbagliando. Questo è un indirizzo virtuale. Nessuno ha detto che la tua funzione main() viene caricata all'indirizzo virtuale 0. Infatti, per impostazione predefinita nei binari ELF (usati in linux) il segmento di codice inizia all'indirizzo virtuale 0x80482c0, che sembra giusto (c'è qualche impostazione nascosta codice prima di main()). Tieni presente che lo spazio degli indirizzi virtuali è spesso non contiguo e gli indirizzi virtuali vengono assegnati solo quando li utilizzi. Solo perché il tuo programma è caricato a 0x80482c0 non significa che tutto tra lì e 0x0 è già stato allocato. –
Se sei veramente interessato a sapere come il tuo programma è organizzato in memoria sotto Linux, dai una lettura: http://www.linuxforums.org/articles/understanding-elf-using-readelf-and-objdump_125.html –