Esistono tre tipi di indirizzi: indirizzi nella memoria principale, indirizzi I/O e indirizzi di configurazione (solo nel bus PCI). In questo documento il termine "indirizzo" alcune volte è stato usato per indicare un intervallo di indirizzi contigui. Poiché gli indirizzi sono dati in byte, un indirizzo singolo contiene un solo byte, ma gli indirizzi I/O (e della memoria principale) hanno bisogno di molto più di questo. Quindi spesso sono usati indirizzi di 8 byte per gli indirizzi di I/O mentre gli intervalli allocati per gli indirizzi nella memoria principale sono molto più grandi. Per una porta seriale (un dispositivo di I/O) è sufficiente specificare l'indirizzo di I/O di partenza del dispositivo (come 3f8) in quanto è ben noto che l'intervallo di indirizzi per questo dispositivo è di soli 8 byte. L'indirizzo di partenza è noto come "indirizzo base" ("base address").
Per accedere ad entrambi gli "spazi" di indirizzi di I/O e di memoria (principale) è usato lo stesso bus indirizzi (le linee usate per gli indirizzi sono condivise) Come fa un dispositivo a sapere quando un indirizzo che appare nel bus indirizzi è un indirizzo di memoria o un indirizzo I/O? Beh, ci sono 4 linee dedicate sul bus che trasportano questa ed altre informazioni. Se una ben determinata di queste è in un certo stato, indica che la CPU vuole leggere da un indirizzo di I/O e la memoria principale ignora l'indirizzo nel bus. In sostanza: esistono linee di lettura (read) e scrittura (write) sia per la memoria principale che per l'I/O (4 linee in tutto).
Tradizionalmente, la maggior parte dei dispositivi di I/O usano solo la memoria di I/O per comunicare con la CPU. Per esempio, la porta seriale lo fa. Il driver del dispositivo, in esecuzione nella CPU legge e scrive dati da e nello spazio spazio di indirizzi I/O e solitamente li mette nella memoria principale. Un modo più veloce è che il dispositivo metta direttamente i dati nella memoria principale. Un modo per farlo è di usare i Canali DMA. Un'altro modo è di allocare al dispositivo un po' di spazio nella memoria principale. In questo modo il dispositivo legge e scrive direttamente nella memoria principale senza preoccuparsi del DMA. Tali dispositivi solitamente hanno sia indizzi di I/O che indirizzi in memoria principale.
Gli interrupt trasportano un sacco di informazioni, ma solo indirettamente. Il segnale di interrupt (una tensione in una linea) dice semplicemente ad un chip chiamato interrupt controller ("controllore delle interruzioni") che un certo dispositivo chiede un po' di attenzione. L'interrupt controller allora lo segnala alla CPU. La CPU esegue un programma speciale (parte del software di gestione del dispositivo) noto come "interrupt service routine". Questa "routine" prova a capire cos'è successo e poi si occupa del problema, come il trasferimento di dati da (o nel) dispositivo. Questo programma (routine) può facilmente scoprire cos'è successo in quanto il dispositivo ha dei registri ad un indirizzo noto al software di gestione (premesso che le informazioni sul numero IRQ e l'indirizzo di I/O siano impostate correttamente). Questi registri contengono informazioni sullo stato del dispositivo. Il software legge il contenuto di questi registri e ispezionandone il contenuto, scopre cos'è successo e intraprende l'azione appropriata.
Questa cosa è pertinente solo con il bus ISA. L'isolamento ("isolation") è un complesso metodo per assegnare un handle temporaneo (numero identificativo) ad ogni dispositivo PnP presente nel bus ISA. Sebbene esistano modi molto più efficienti (ma più complessi) per fare questa cosa, alcuni affermano che questo è un metodo semplice. È usato solo un indirizzo di scrittuta per tutte le scritture PnP a tutti i dispositivi PnP, cosicché quello che viene scritto in questo indirizzo va a tutti i dispositivi PnP che sono in ascolto. Questo indirizzo di scrittura è usato per inviare (assegnare) un handle unico ad ognuno dei dispositivi PnP. Questa assegnazione richiede che solo un dispositivo sia in attesa quando è inviato (scritto) l'handle in questo indirizzo comune. Tutti i dispositivi PnP hanno un numero di serie unico che usano per il processo di isolamento. Fare l'isolamento è qualcosa di simile ad un gioco. È fatto usando l'equivalente di una sola linea del bus che collega tutti i dispositivi PnP e il programma di isolamento.
Nel primo giro di questo "gioco" tutti i dispositivi PnP sono ascolto su questa linea e inviano simultaneamente una sequenza di bit nella linea. I bit permessi sono un "1" (tensione positiva) oppure uno "0 aperto" di nessuna tensione (circuito aperto e tri-state). Ogni dispositivo PnP inizia semplicemente ad inviare sequenzialmente su questa linea il suo numero di serie, bit a bit, iniziando con il bit più significativo. Se un qualsiasi dispositivo, invia un 1, un 1 sarà sentito sulla linea da tutti gli altri dispositivi. Se tutti i dispositivi inviano uno "0 aperto" nella linea non si sentirà niente. L'obbiettivo è di eliminare (alla fine di questa prima tornata) tutti i dispositivi tranne quello con il numero di serie più elevato (si noti che tutti i numeri di serie sono della stessa lunghezza).
Per prima cosa si consideri solo il bit più significativo. Se un qualsiasi dispositivo PnP invia uno 0 (0 aperto) ma sente un 1, questo significa che qualche altro dispositivo PnP ha un numero di serie più alto, e quindi temporaneamente si toglie dal gioco e non ascolta più finché il giro non è terminato (ovvero quando viene assegnato un handle al vincitore: il dispositivo con il numero di serie più alto). Ora i dispositivi ancora in gioco hanno tutti lo stesso bit più significativo (un 1), e quindi, per la partecipazione futura a questo giro, possiamo trascurare questa cifra e considerare solo la parte rimanente del numero di serie. Adesso si torni all'inizio di questo paragrafo e lo si ripeta finché per tutti i dispositivi non siano stati esaminati completamente i numeri di serie (si veda sotto per il caso di tutti 0).
Cosa succede se le cifre più significative (anche nel caso dei numeri di serie ridotti) sono tutte 0? In questo caso è stato inviato uno "0 aperto" nella linea e tutti i partecipanti rimangono in gioco. Se tutti hanno uno 0 come cifra più significativa allora gli 0 sono trascurati come è stato fatto nel paragrafo precedente con gli 1. Il gioco continua inviando la cifra successiva del numero di serie.
Alla fine di questa tornata (dopo che ogni partecipante rimasto ha inviato il bit meno significato del numero di serie) rimane solo il dispositivo PnP con il numero di serie più elevato. A questo viene asseganto un handle ed esce permanentemente dal gioco. Poi tutti quelli scartati precedentemente rientrano in gioco e inizia un nuovo giro con un partecipante in meno. Alla fine, viene assegnato un handle a ciascun dispositivo PnP. È facile vedere che questo algoritmo funziona.
Una volta assegnati, gli handle sono usati per indirizzare ogni dispositivo PnP, sia per potergli inviare una configurazione sia per leggere le informazioni di configurazione dal dispositivo stesso. Si noti che questi handle sono usati solo per la configurazione PnP e non sono usati per le normali comunicazioni con il dispositivo. Quando il computer viene avviato, tutti gli handle sono stati persi e quindi il BIOS solitamente opera il processo di isolamento ogniqualvolta si riavvia il proprio PC.