Plug and play
In informatica il termine plug and play (in inglese letteralmente inserisci e gioca, meglio tradotto come collega e utilizza) indica una tecnologia che permette al sistema operativo di assegnare automaticamente all'hardware compatibile risorse hardware quali IRQ, indirizzi I/O, canali DMA e intervalli di memoria. In questo modo anche utenti molto inesperti possono installare nuove schede di espansione.
Bisogna comunque tener presente che plug and play (collega e utilizza) non è una definizione esatta: le schede di espansione plug and play hanno nella quasi totalità dei casi bisogno di essere montate a computer spento; una definizione più appropriata (ma improbabile) per questa logica potrebbe quindi essere power down, plug, power up, and play (spegni, collega, accendi e utilizza). Nei personal computer, i primi dispositivi diffusi su larga scala ad essere "veramente" plug and play (cioè anche hot plug) sono state le periferiche USB.
Storia
Il concetto di Plug and Play è stato formalizzato nel marzo del 1993 alla Windows Hardware Conference da Microsoft.
La tecnologia plug and play è nata sui computer Amiga: AmigaOS dalla versione 1.3 (1987) implementava tale tecnologia, nota agli utenti Amiga con il nome di AutoConfig; nel 1990 una tecnologia similare venne adottata dai computer Macintosh di Apple. In seguito alla Windows Hardware Conference del 1993 il concetto venne formalizzato da Microsoft, Intel e Compaq.
Nel 1995 Microsoft pubblicizzò (e spinse) il plug and play come una delle caratteristiche salienti del suo sistema operativo allora in fase di lancio, Windows 95. Purtroppo in quel periodo ancora spadroneggiava lo standard ISA, non nativamente compatibile con il Plug and Play a differenza del PCI, e la convivenza fra hardware Plug and Play e non portava spesso a malfunzionamenti; a causa di questo, la tecnlogia Plug and Play fu da alcuni sarcasticamente ribattezzata plug and pray (collega e prega, inteso come "prega che funzioni").
Ormai, a distanza di più di un decennio dall'introduzione di questa tecnologia, il supporto si è esteso a tutti i sistemi operativi più diffusi, e la maturità del software e dell'hardware è stata pienamente raggiunta, rendendo il plug and pray solo un ricordo.
Innovazione e funzionamento(cenni)
La tecnologia Plug and Play ha permesso soprattutto di facilitare l'istallazione delle periferiche introducendo l'automazione dell'inserimento di tutti i driver necessari, gli aggiornamenti del sistema e gli allocamenti delle risorse, facilitando quindi l'interazione con l'hardware da parte dell'utente che non dovrà quindi preoccuparsi di conoscere le risorse di sistema quali indirizzi I/O, IRQ, canali DMA,regioni di memoria. In passato, l'utilizzo dei jumper presenti sulle schede di espansione era possibile all'utente assegnare le risorse hardware necessarie ad ogni scheda e salvare nell'hardware del dispositvo informazioni come l'indirizzo e il numero di IRQ, ma, data la scarsità delle informazioni dell'utente medio, si rischiava di portare più schede ad utilizzare le stesse risorse creando i cosiddetti conflitti hardware. Invece il col PnP i dati rischiano di essere persi quando il PC viene spento e devono essere reinseriti al momento dell'accensione.
Con il plug and play, il BIOS prima ed il sistema operativo poi si fanno carico di effettuare queste scelte per conto dell'utente, in maniera del tutto trasparente all'utente, a meno di (ormai rari) errori. Il programma di configurazione PnP trova tutti i dispositivi e chiede loro di quali risorse di sistema hanno bisogno. Grazie ad alcuni criteri assegna loro queste risorse in modo che non ci siano conflitti e assegni loro quello di cui hanno bisogno.
Questo può avvenire grazie alla capacità delle schede di identificarsi e di condividere gli IRQ, capacità fondamentali per instaurare una comunicazione con il BIOS all'avvio della macchina. Una volta finito il POST, il sistema operativo durante il caricamento ottiene dal BIOS una tabella delle periferiche rilevate ed i loro identificativi, mediante i quali può determinare quali driver caricare per comunicare con l'hardware presente nel sistema.