In che modo le periferiche decidono quale indirizzo utilizzare nell'I / O mappato in memoria?

2

Ho letto che l'I / O con mappatura della memoria funziona davvero e non riesco a capire come il sistema assegni un indirizzo o spazio indirizzo a un dispositivo specifico.

Diciamo che avevo due dispositivi che volevo usare in uno schema mappato in memoria e che erano identici (forse i dischi rigidi?). Se entrambi monitorassero il bus indirizzo per lo stesso indirizzo, allora non sarebbero in grado di funzionare indipendentemente l'uno dall'altro. Il controller I / O ha un qualche tipo di processo on-board per allocare dinamicamente quel genere di cose, o è lasciato al BIOS / UEFI? O sono davvero fuori strada?

    
posta DylanG 20.12.2017 - 18:45
fonte

1 risposta

6

Dipende dalle specifiche del bus.

Ad esempio, PCI utilizza uno schema di enumerazione in cui il sistema operativo verifica per ogni dispositivo possibile e trova un dispositivo , chiede quanti blocchi di memoria desidera e quanto dovrebbero essere grandi. Il sistema operativo comunicherà a ciascun dispositivo quali indirizzi di memoria deve considerare propri.

Più specificamente, i dispositivi PCI dispongono di registri di indirizzi di base, che vengono utilizzati sia per comunicare la dimensione del blocco di memoria desiderato dal dispositivo al sistema operativo, sia anche per il sistema operativo per assegnare un indirizzo univoco per ciascun dispositivo- blocco di memoria richiesto.

Le stesse BAR del dispositivo vengono indirizzate tramite la loro posizione specifica nel bus, quindi disponi di indirizzi univoci solo collegandoti da qualche parte.

Non è sempre stato così: ad esempio, uno schema precedente richiedeva la configurazione dei dip switch nelle schede installate e, se venivano errati dall'utente / installatore, le cose non funzionavano a causa di conflitti tra due stiro.

    
risposta data 20.12.2017 - 20:56
fonte

Leggi altre domande sui tag