Indirizzi generati dal Linker

di il
8 risposte

Indirizzi generati dal Linker

Sto studiando tutto il procedimento della generazione della MV. Sono confuso su un punto: dopo la fase di linking il file eseguibile è allocato in memoria di massa a partire da indirizzi fisici, mentre le sue istruzioni avranno indirizzi virtuali. Successivamente il loader penserà a caricare l'eseguibile e con la rilocazione dinamica tramite la MMU cosa succede?

8 Risposte

  • Re: Indirizzi generati dal Linker

    Salve,
    la MMU ha il compito di associare indirizzi fisici agli indirizzi logici. Ciò avviene tramite una traslazione degli indirizzi logici. Ad esempio: un programma utente ti genera indirizzo logici a partire dall'indirizzo 0. In memoria di massa però la prima locazione del programma avrà un indirizzo X. Questo valore X è contenuto nel registro di rilocazione. La MMU non fa altro che sommare ad ogni valore dell'indirizzo logico il valore del registro di rilocazione. In questa maniera il tuo programma utente può generare indirizzi logici a partire dal valore 0 senza preoccuparsi della reale posizione sulla memoria di massa ad esempio.
    Guarda l'immagine nella slide 6.8 di questo link:
    Spero di aver risolto il tuo dubbio.

    Ciao
  • Re: Indirizzi generati dal Linker

    C'è qualcosa che non mi torna però.
    Nella rilocazione dinamica la corrispondenza tra indirizzi virtuali e fisici avviene in runtime, poichè la CPU genera l'indirizzo virtuale e la MMU ne calcola il corrispettivo indirizzo fisico.
    Il registro base o di rilocazione non dovrebbe contenere il valore dell'indirizzo di RAM nella quale il programma può accedere??
    Se fosse come dici tu, ho pensato ad una locazione dell'hard disk molto alta, e una volta rilocato è sicuro che entra nella RAM essendo più piccola?
    Ti ringrazio e comunque la slide non funge.
    Ciao
  • Re: Indirizzi generati dal Linker

    La MMU ti permette di tradurre l'indirizzo logico in un indirizzo fisico. Poi controlla che l'indirizzo fisico corrisponda a un'area di memoria che è presente fisicamente nella memoria centrale. Se tale zona invece è presente nello swap (quindi in memoria di massa), si ha un page fault il S.O. carica la pagina nella memoria centrale eliminando (con opportuni criteri) una pagina che è già presente.
  • Re: Indirizzi generati dal Linker

    Tramite gli algoritmi di scheduling? Comunque ancora non mi è chiaro ti faccio un esempio.
    Il mio hard disk ha 10 indirizzi.
    La mia RAM ne ha 5.
    Se devo caricare un istruzione dall'indirizzo 10 la CPU genera l'indirizzo virtuale che sarebbe 0, la MMU ci somma il registro di rilocazione +10? e in RAM dove va?
  • Re: Indirizzi generati dal Linker

    "Se fosse come dici tu, ho pensato ad una locazione dell'hard disk molto alta, e una volta rilocato è sicuro che entra nella RAM essendo più piccola?"

    Se fosse molto alta la locazione non vuol dire nulla. Un programma occupa X spazio indifferentemente se la sua prima locazione sia "alta o bassa". Forse non ho capito il tuo dubbio XD
  • Re: Indirizzi generati dal Linker

    Come ho scritto sopra non capisco come faccia ad entrare nella locazione con indirizzo 10 in RAM.
  • Re: Indirizzi generati dal Linker

    "Il mio hard disk ha 10 indirizzi.
    La mia RAM ne ha 5.
    Se devo caricare un istruzione dall'indirizzo 10 la CPU genera l'indirizzo virtuale che sarebbe 0, la MMU ci somma il registro di rilocazione +10? e in RAM dove va?"

    Attenzione, la MMU genera indirizzi fisici a partire da indirizzi logici e non IL CONTRARIO come nel tuo esempio.

    Per quanto riguarda i criteri per eliminare le pagine presenti in memoria, non si tratta di scheduling. Vi sono diverse tecniche: ad esempio controllare la pagina che non è stata acceduta dalla CPU da più tempo ed eliminarla dalla memoria. Vi sono diverse tecniche, ma non si tratta assolutamente di scheduling.
  • Re: Indirizzi generati dal Linker

    Fetch dell'istruzione -> CPU -> ind.logico -> MMU -> ind.fisico -> RAM

    Se all'indirizzo logico ci sommo il registro base che come hai detto in precedenza sarebbe la locazione dove risiedeva il programma inizialmente nell'hd, non cambia niente.
Devi accedere o registrarti per scrivere nel forum
8 risposte