|
Programmazione |
TECNICHE D'INTERRUZIONE [23 di 52] |
|
L'ultimo aspetto della programmazione di una stampante è estremamente raro: la sua gestione su richiesta di interruzione. | |
Di solito il processore gestisce la stampante in polling (cioè la interroga un suo segnale per sapere qual è il momento di fornirle dati); per queste operazioni la stampante spedisce al processore il segnale di busy (occupata) quando "ha fatto il pieno" di dati. | |
Il veloce processore impiega meno di un millisecondo a fornire i dati (anche decine di migliaia) alla stampante; quando questa non ne può più... (busy) il povero processore è costretto ad aspettare anche qualche secondo prima che la lenta stampante si renda di nuovo disponibile a ricevere dati. | |
Questo è il difetto della tecnica dell'interrogazione (polling): il processore è obbligato a numerosi tempi morti, molto maggiori degli effettivi brevi istanti dedicati al trasferimento dei dati. |
|
La stampante è autorizzata ad interrompere il processore solo se il bit4 (Enable INT) del Registro di Controllo (037AH/027AH) è stato programmato a 1; altrimenti le richieste di interruzione da parte della stampante sono disabilitate. | |
Il sistema riserva alle stampanti 2 livelli di interruzione; di solito alla stampante principale (quella con indirizzi base 0378H/03BCH) è riservata la IRQ7 mentre per la eventuale stampante secondaria (con indirizzi base 0278H) è riservata la IRQ5. |
Se l'interruzione è abilitata e la richiesta è arrivata da IRQ7 la CPU fa partire la procedura di servizio INT 0FH; da notare che normalmente il vettore di questa procedura punta una locazione contenente un IRET; cioè non è prevista una procedura di default per il servizio delle interruzioni . | |
Se l'interruzione è abilitata e la richiesta è arrivata da IRQ5 la CPU fa partire la procedura di servizio INT 0DH. | |
Nonostante la soluzione offerta da questa tecnica sembri l'uovo di Colombo, in nessun caso si è mai visto un software di gestione (driver) per stampante basato su tecniche di interruzione; la ragione legata alla intrinseca lentezza delle stampanti, per cui la logica è quella di lasciare queste preziose risorse per eventi più importanti, data la atavica penuria di linee di interrupt e la loro grande richiesta. |
|
La linea che arriva al pin 10 del connettore viene fisicamente collegata internamente alla linea solo se la possibilità di interrompere è autorizzata; nella logica del connettore Centronics si tratta del segnale Acknowledge., di solito posto brevemente a 0 dalla stampante non appena ha provveduto all'acquisizione di un carattere. | |
Il segnale Acknowledge viene dunque internamente copiato su IRQ7; non appena torna a 1 (cioè sul fronte di salita) il controllore delle interruzioni 8259 attiva il servizio dell'interruzione; dettagli maggiori possono essere assunti qui. |
|
Nella gestione in polling questa linea può essere monitorizzata interrogando il bit6 del Registro di Stato (0379H/LPT1, 0279H/LPT2): in qualunque momento diverso dal breve istante a 0 il computer può provvedere alla trasmissione del carattere successivo. |
|
Stampanti | TECNICHE D'INTERRUZIONE | |||||||
23 di 52 |
|
|
Home |
|
|||||||
|
Motore Ricerca |
|