Una richiesta di interruzione (IRQ) è un meccanismo utilizzato da hardware dispositivi per catturare l'attenzione del processore.

Che cosa è un IRQ (richiesta di interrupt)?
Una richiesta di interrupt è un segnale hardware-driven utilizzato dai dispositivi per interrompere la normale esecuzione delle attività di un processore, al fine di ottenere la sua attenzione e richiedere un'elaborazione immediata. Quando un dispositivo, come una tastiera, una scheda di rete o un timer, necessita di CPU per gestire un'attività specifica, come l'elaborazione di input utente o la risposta a un trasferimento dati, genera un IRQ. Questo segnale di interrupt interrompe temporaneamente le operazioni correnti eseguite dal processore, consentendogli di spostare il focus ed eseguire le istruzioni relative alla richiesta del dispositivo.
Una volta che il processore completa l'attività associata all'interruzione, riprende la sua precedente operazione. Gli IRQ svolgono un ruolo fondamentale nell'abilitare un multitasking efficiente all'interno di un sistema, poiché consentono ai dispositivi di funzionare in modo asincrono senza dover attendere che la CPU effettui periodicamente il check-in con loro. Gestire tempestivamente queste interruzioni, il sistema assicura che le risorse siano utilizzate in modo ottimale e che i dispositivi possano funzionare senza bloccare o bloccare l'esecuzione del processore.
Quali sono i tipi di IRQ?
Le richieste di interrupt possono essere categorizzate in base alla loro origine e funzionalità. Questi tipi assicurano che il processore possa gestire in modo efficiente vari task. I tipi principali di IRQ sono:
- Interruzioni mascherabili (linee IRQ). Si tratta di interrupt che possono essere ignorati o "mascherati" dal processore se è impegnato nell'esecuzione di task con priorità più elevata. Gli interrupt mascherabili sono in genere utilizzati da dispositivi non critici come tastiere, schede di rete o schede audio. La CPU può disabilitare temporaneamente questi interrupt se necessario, consentendole di dare priorità a task più urgenti.
- Interruzioni non mascherabili (NMI). Questi interrupt non possono essere disabilitati o ignorati dal processore, assicurando che gli errori di sistema critici, come guasti hardware o errori di parità di memoria, siano sempre affrontati immediatamente. Gli NMI sono in genere utilizzati per il rilevamento degli errori e il ripristino del sistema, assicurando che il sistema risponda a eventi gravi senza ritardi.
- Interruzioni softwareA differenza degli interrupt hardware attivati da dispositivi fisici, gli interrupt software sono generati dal software o dal sistema operativo. Questi interrupt consentono ai programmi di richiedere servizi di sistema dal sistema operativo, come l'accesso alle risorse hardware o l'interazione con altri componenti di sistema. Sono comunemente utilizzati nelle chiamate di sistema o per eseguire attività specifiche all'interno del software.
- Interruzioni hardwareQuesti interrupt sono generati da dispositivi hardware, come ingresso/uscita (I/O) dispositivi, timer o altri componenti periferici. Gli interrupt hardware segnalano alla CPU di eseguire azioni specifiche in risposta ai dati ricevuti o al verificarsi di un evento. Ad esempio, una stampante potrebbe generare un interrupt hardware quando ha terminato la stampa, notificando alla CPU che può inviare altri dati.
Numeri IRQ
Di seguito è riportata una tabella che descrive i numeri IRQ comuni e i dispositivi o le funzioni associati in genere x86 sistemi di architettura:
| Numero IRQ | Dispositivo/Funzione | Descrizione |
| QIR 0 | Timer di sistema | Utilizzato dal timer di sistema per gestire il tempo e pianificare le attività. |
| QIR 1 | tastiera | Gestisce gli eventi di input da tastiera. |
| QIR 2 | IRQ a cascata (controller di interrupt secondario) | Utilizzato per estendere il vettore di interrupt per linee IRQ aggiuntive. |
| QIR 3 | Porta seriale (COM2/COM4) | Gestisce gli interrupt per la seconda e la quarta porta seriale (COM2/COM4). |
| QIR 4 | Porta seriale (COM1/COM3) | Gestisce gli interrupt per la prima e la terza porta seriale (COM1/COM3). |
| QIR 5 | Porta parallela (LPT2) o scheda audio | Può essere utilizzato per la seconda porta parallela (LPT2) o per alcune schede audio. |
| QIR 6 | Controller del disco floppy | Gestisce gli interrupt provenienti dai controller dei floppy disk. |
| QIR 7 | Porta parallela (LPT1) | Utilizzato per la prima porta parallela (LPT1). |
| QIR 8 | Orologio in tempo reale (RTC) | Gestisce le funzioni di orologio in tempo reale e di cronometraggio del sistema. |
| QIR 9 | Interruzione aperta (solitamente disponibile per i dispositivi utente) | Solitamente non utilizzato nei sistemi moderni, può essere riconfigurato per vari dispositivi. |
| QIR 10 | Disponibile per i dispositivi degli utenti | A flexIRQ disponibile utilizzato per periferiche come schede di rete o controller USB. |
| QIR 11 | Disponibile per i dispositivi degli utenti | Spesso utilizzato da schede di rete o altre schede di espansione. |
| QIR 12 | PS / 2 mouse | Gestisce gli eventi di input da un mouse PS/2. |
| QIR 13 | Coprocessore (Processore matematico) | Utilizzato dal coprocessore matematico (se presente) per eseguire operazioni in virgola mobile. |
| QIR 14 | Controller IDE primario | Gestisce gli interrupt per il controller del disco rigido IDE primario. |
| QIR 15 | Controller IDE secondario | Gestisce gli interrupt per il controller del disco rigido IDE secondario. |
Caratteristiche IRQ
Le funzionalità di richiesta di interrupt sono essenziali per abilitare una comunicazione efficiente tra la CPU e i dispositivi hardware in un sistema. Ecco alcune funzionalità chiave degli IRQ:
- Priorità. Gli IRQ consentono di dare priorità a diversi dispositivi hardware in base alla loro urgenza. Alcuni interrupt sono sensibili al tempo e necessitano di elaborazione immediata, mentre altri possono essere ritardati o "mascherati". Questa priorità assicura che le attività più critiche, come guasti hardware o errori di sistema, vengano gestite per prime, senza ritardi non necessari.
- Mascheratura dell'interruzione. Il mascheramento si riferisce alla capacità della CPU di disabilitare temporaneamente determinati interrupt. Mascherando gli IRQ non critici, il processore può concentrarsi su attività più importanti. Questa funzionalità è utile per garantire che le operazioni sensibili al tempo, come i timer di sistema o la gestione degli errori, non vengano interrotte da processi meno urgenti, come l'input dell'utente da una tastiera o un mouse.
- Multitasking. Gli IRQ abilitano il multitasking consentendo alla CPU di gestire più attività contemporaneamente. Quando un dispositivo genera un interrupt, segnala alla CPU di interrompere temporaneamente la sua attività corrente e passare al gestore degli interrupt. Una volta elaborato l'interrupt, la CPU riprende la sua attività precedente. Questa funzionalità è fondamentale per i moderni sistemi operativi che devono gestire più dispositivi e processi contemporaneamente.
- Interruzioni hardware e software. Gli IRQ possono essere attivati da dispositivi hardware o processi software. Gli interrupt hardware sono generati da dispositivi esterni, come tastiere, schede di rete o timer, mentre gli interrupt software sono avviati dal sistema operativo o applicazioni per richiedere servizi specifici o eseguire determinate attività. Questa doppia capacità assicura che sia gli eventi hardware sia le richieste software siano gestiti in modo efficiente.
- Assegnazione IRQ. Nei sistemi tradizionali, ogni IRQ è assegnato a un dispositivo o a una funzione specifica. Questa assegnazione aiuta la CPU a distinguere tra diversi interrupt e a rispondere in modo appropriato. Nei sistemi moderni, i numeri IRQ possono essere assegnati dinamicamente tramite meccanismi come la tabella dei descrittori di interrupt (IDT) o gli advanced programmable interrupt controller (APIC), consentendo una maggiore flexcapacità di gestione delle fonti di interrupt.
- Triggering del bordo e trigger del livello. Gli IRQ possono essere edge-triggered o level-triggered. Negli interrupt edge-triggered, l'interrupt viene attivato da un cambiamento di stato (ad esempio, un segnale che passa da basso ad alto), mentre negli interrupt level-triggered, l'interrupt viene attivato quando il segnale di interrupt rimane in un certo stato per una durata. L'edge triggering è in genere utilizzato per operazioni sensibili al tempo, mentre il level triggering è utilizzato quando è necessario monitorare una condizione sostenuta.
- Conferma dell'interruzione. Una volta che un interrupt è attivato, la CPU deve riconoscerlo per far sapere al dispositivo che l'interrupt è stato riconosciuto. Questo processo di riconoscimento assicura che il dispositivo non continui a generare il segnale di interrupt inutilmente. A seconda del sistema, il riconoscimento può comportare la lettura di un registro specifico o l'invio di un segnale al dispositivo.
- Routine di servizio di interruzione (ISR). Quando si verifica un'interruzione, la CPU esegue una parte specifica di codice nota come routine di servizio di interruzione (ISR) per gestire l'interruzione. L'ISR è responsabile dell'elaborazione dell'interruzione e dell'esecuzione delle azioni necessarie, come la lettura dei dati da un dispositivo o la cancellazione di una condizione di errore. L'ISR è progettato per essere il più efficiente possibile per ridurre al minimo i ritardi nel funzionamento complessivo del sistema.
Come funziona un IRQ?

Ecco come funzionano gli IRQ:
- Interrompere la generazione. Un dispositivo hardware (come una tastiera, una scheda di rete o un disco rigido) genera una richiesta di interrupt quando necessita dell'attenzione della CPU. Ad esempio, una tastiera può attivare un IRQ quando viene premuto un tasto, oppure una scheda di rete può segnalare un IRQ quando riceve dati.
- Segnale di interrupt inviato alla CPU. Una volta che l'interruzione è generata dal dispositivo, invia un segnale di interruzione alla CPU. Questo segnale viene inviato tramite una linea IRQ dedicata (ad esempio IRQ 0 a IRQ 15 nel caso di sistemi x86).
- Rilevamento e definizione delle priorità delle interruzioni. La CPU monitora costantemente le linee IRQ per richieste di interrupt in arrivo. Quando viene rilevato un interrupt, la CPU controlla la priorità dell'interrupt. Alcuni IRQ sono più urgenti di altri e la CPU gestisce prima gli interrupt con priorità più alta. Ciò aiuta a gestire le operazioni sensibili al tempo, come la gestione di guasti hardware, prima di attività meno critiche come l'elaborazione dell'input dell'utente.
- Interrompere il riconoscimento. Dopo aver rilevato l'interruzione, la CPU la riconosce. Questa conferma può essere un segnale inviato al dispositivo di interruzione, che gli fa sapere che l'interruzione è stata ricevuta e verrà elaborata. Per alcuni tipi di IRQ, il dispositivo potrebbe smettere di generare il segnale di interruzione una volta che è stato riconosciuto.
- Cambio di contesto ed esecuzione della routine di servizio di interruzione. La CPU sospende l'attività corrente (nota anche come cambio di contesto) e inizia a eseguire un ISR associato all'interruzione. L'ISR è un piccolo blocco di codice progettato per gestire l'interruzione, come la lettura di dati da un dispositivo, la cancellazione di un flag di errore o l'elaborazione di un evento di input utente. L'ISR viene eseguito il più rapidamente ed efficientemente possibile per ridurre al minimo l'interruzione delle altre attività della CPU.
- Ritornare al normale funzionamento. Una volta completato l'ISR, la CPU ripristina il contesto del task interrotto e riprende l'elaborazione normale. Se l'interruzione è stata gestita correttamente, il dispositivo non ha più bisogno dell'attenzione della CPU e la linea di interruzione viene cancellata.
- Interruzioni di mascheramento. In alcuni casi, la CPU può scegliere di mascherare o ignorare temporaneamente determinati interrupt, soprattutto se sono a bassa priorità o se la CPU sta elaborando un'attività critica. Il mascheramento consente al processore di concentrarsi su operazioni più importanti, senza essere interrotto da richieste meno urgenti.
- Interruzioni nidificate. Nei sistemi più complessi, gli IRQ possono essere nidificati, il che significa che gli interrupt con priorità più alta possono anticipare quelli con priorità più bassa. Questa caratteristica assicura che le attività critiche vengano affrontate immediatamente, mentre le attività meno importanti vengono temporaneamente sospese.
Usi dell'IQR
Le linee di richiesta di interrupt vengono utilizzate per gestire in modo efficiente gli interrupt hardware e abilitare una comunicazione fluida tra la CPU e vari componenti hardware. Ecco alcuni usi comuni degli IRQ:
- Gestione dell'input dell'utente. Gli IRQ vengono utilizzati per gestire l'input dell'utente da dispositivi come tastiere, mouse o touchpad. Quando un utente preme un tasto sulla tastiera o clicca il mouse, viene generato un IRQ per notificare alla CPU di elaborare l'input. Ciò garantisce che l'input da questi dispositivi venga gestito prontamente senza interferire con altre attività.
- Comunicazione tra dispositivi periferici. Dispositivi periferici come stampanti, schede di rete e schede audio si basano sugli IRQ per comunicare con la CPU. Ad esempio, quando una scheda di rete riceve dati, attiva un IRQ per informare la CPU che sono disponibili nuovi dati, consentendone l'elaborazione o la trasmissione.
- Timer e orologi di sistema. Gli IRQ sono essenziali per la gestione dei timer e degli orologi di sistema. Il timer di sistema utilizza gli IRQ per interrompere periodicamente la CPU, assicurando un cronometraggio e una pianificazione accurati delle attività. Ad esempio, gli IRQ vengono utilizzati per gestire l'allocazione delle porzioni di tempo per il multitasking nei sistemi operativi, assicurando che ogni processo ottenga una giusta quota di tempo della CPU.
- Gestione e protezione della memoria. I sistemi di gestione della memoria nei moderni sistemi operativi utilizzano IRQ per gestire operazioni correlate alla memoria, come errori di pagina o violazioni di accesso. Quando si verifica un errore di accesso alla memoria, un IRQ può attivare la routine di servizio di interrupt appropriata per gestire l'eccezione e proteggere il sistema da crash o compromissione dei dati.
- Rilevamento e gestione degli errori. Errori critici, come guasti hardware o danneggiamento della memoria, sono spesso gestiti tramite IRQ. Gli interrupt non mascherabili sono un tipo specifico di IRQ che non può essere ignorato e sono in genere utilizzati per gravi errori di sistema, come malfunzionamenti hardware, assicurando che la CPU li risolva immediatamente e prevenendo ulteriori danni.
- Trasferimento dati tramite interrupt. Molti dispositivi, come dischi fissi o interfacce di rete, utilizzare IRQ per il trasferimento dati guidato da interrupt. Quando i dati sono pronti per trasmissione o è stato ricevuto, il dispositivo genera un IRQ per segnalare alla CPU di iniziare a elaborare i dati, riducendo al minimo i tempi di inattività della CPU e migliorando le prestazioni generali del sistema.
- Risparmio energetico. Gli IRQ svolgono un ruolo chiave nella gestione dell'alimentazione del sistema. Ad esempio, i dispositivi o i software di gestione dell'alimentazione possono utilizzare gli IRQ per segnalare quando il sistema deve entrare in modalità di sospensione o quando deve riattivarsi per un operazione programmataCiò consente ai sistemi di risparmiare energia riducendo il carico di lavoro sulla CPU durante i periodi di inattività.
- Multitasking e pianificazione dei processi. Gli IRQ sono parte integrante del multitasking nei sistemi operativi. Quando si verifica un'interruzione, può preemptare l'attività in esecuzione, consentendo alla CPU di passare da un processo all'altro. Questo meccanismo è utilizzato dai sistemi operativi per implementare la condivisione del tempo, assicurando che più processi abbiano la possibilità di essere eseguiti senza intervento manuale.
- Interruzioni dei dispositivi periferici per l'elaborazione in tempo reale. Alcuni sistemi in tempo reale, come i sistemi embedded o i sistemi di controllo industriale, utilizzano IRQ per elaborare i dati provenienti da sensori, attuatori o altre periferiche in tempo realeQueste interruzioni consentono al sistema di rispondere immediatamente agli eventi esterni, come modifiche nelle letture dei sensori, garantendo azioni tempestive.
- Elaborazione audio e video. Gli IRQ sono utilizzati nei dispositivi audio e video per gestire flussi di dati in tempo reale. Ad esempio, le schede audio utilizzano gli IRQ per notificare alla CPU quando sono pronte a trasmettere o ricevere dati audio, assicurando una riproduzione o una registrazione fluida senza interruzioni. Allo stesso modo, le schede video utilizzano gli IRQ per segnalare la disponibilità di frame video per il rendering o la visualizzazione.
Come configurare un IRQ?
La configurazione degli IRQ in genere implica la garanzia che ai dispositivi siano assegnati numeri di interrupt appropriati e che non si verifichino conflitti tra dispositivi. Nei sistemi moderni, la configurazione degli IRQ è spesso gestita automaticamente dal sistema operativo o BIOS, che assegna dinamicamente i numeri IRQ ai componenti hardware.
Tuttavia, in sistemi più vecchi o casi di utilizzo specifici, gli IRQ potrebbero dover essere configurati manualmente tramite il BIOS o le impostazioni del sistema operativo. Ciò comporta la selezione del numero IRQ corretto per ogni dispositivo, assicurando che non ci siano due dispositivi che condividano la stessa linea IRQ, il che potrebbe causare conflitti.
Impostazioni avanzate, come l'abilitazione o la disabilitazione degli IRQ, la regolazione della priorità degli IRQ e l'utilizzo di controller di interrupt (come APIC o PIC), possono essere configurate nel BIOS o tramite driver di dispositivo per ottimizzare le prestazioni del sistema e la gestione delle risorse. In alcuni casi, i conflitti di IRQ possono essere risolti riassegnando i numeri di IRQ o disabilitando i dispositivi inutilizzati per liberare linee di interrupt.
Come ottimizzare un IRQ?
L'ottimizzazione della configurazione di un IRQ implica la garanzia di una gestione efficiente degli interrupt per ridurre al minimo i conflitti di risorse e migliorare le prestazioni del sistema. È fondamentale garantire che due dispositivi non condividano la stessa linea IRQ, poiché i conflitti possono rallentare o interrompere le operazioni del sistema.
L'utilizzo di moderni controller di interrupt come gli advanced programmable interrupt controller invece dei vecchi programmable interrupt controller (PIC) aiuta a distribuire gli IRQ in modo più efficace su più processori in sistemi multi-core. Inoltre, l'abilitazione del bilanciamento degli IRQ, la priorità degli interrupt ad alta urgenza e la disattivazione di dispositivi inutilizzati o non necessari migliora ulteriormente le prestazioni.
In alcuni casi, la messa a punto dei driver dei dispositivi e la garanzia che ai dispositivi vengano assegnati IRQ appropriati per il loro utilizzo (ad esempio, schede di rete, schede audio o USB dispositivi) riduce la latenza e ottimizza la reattività complessiva del sistema, specialmente nei sistemi con elevate richieste di I/O. Il controllo regolare dei conflitti IRQ e la regolazione della configurazione assicurano che il sistema funzioni senza problemi, senza ritardi eccessivi causati dalla gestione degli interrupt.
Vantaggi dell'utilizzo di IRQ
Utilizzando gli IRQ, i dispositivi possono notificare alla CPU quando hanno bisogno di attenzione, il che ottimizza le prestazioni e la reattività del sistema. Ecco i principali vantaggi dell'utilizzo degli IRQ:
- Multitasking migliorato. Gli IRQ consentono alla CPU di gestire più attività contemporaneamente senza attendere che i dispositivi completino le loro azioni. Consentendo ai dispositivi di interrompere la CPU quando necessario, il sistema elabora attività come la gestione degli input, il trasferimento dei dati o il rilevamento degli errori senza attendere uno specifico ciclo di polling, con conseguente multitasking più efficiente.
- Migliori prestazioni del sistema. Gli IRQ riducono al minimo il tempo di inattività della CPU abilitando l'elaborazione dei dati basata su interrupt. Quando un dispositivo attiva un IRQ, la CPU può rispondere immediatamente alla richiesta del dispositivo, consentendo al sistema di elaborare i dati in modo più rapido ed efficiente, il che è particolarmente utile nei sistemi con un'intensa attività di I/O.
- Carico della CPU ridotto. Con gli IRQ, la CPU non ha bisogno di controllare costantemente lo stato dei dispositivi o di interrogare gli eventi. Invece, i dispositivi notificano alla CPU quando richiedono attenzione, il che riduce il carico di lavoro della CPU e le consente di concentrarsi sull'esecuzione di attività senza interruzioni non necessarie, portando a migliori prestazioni complessive del sistema.
- L'efficienza delle risorse. Gli IRQ assicurano che risorse come tempo di CPU e memoria siano utilizzate in modo efficiente. Assegnando risorse solo quando necessario (ad esempio, quando si verifica un'interruzione), il sistema impedisce cicli sprecati e polling non necessari, assicurando che ogni dispositivo funzioni nel modo più efficiente in termini di risorse.
- Elaborazione in tempo reale. Gli IRQ sono fondamentali per i sistemi che richiedono risposte in tempo reale, come l'elaborazione audio/video, i sistemi di controllo industriale o sistemi integratiUtilizzando gli IRQ, questi sistemi possono rispondere immediatamente a eventi esterni, come cambiamenti nelle letture dei sensori o negli input degli utenti, garantendo un'elaborazione tempestiva e accurata.
- Gestione degli errori e ripristino. Gli IRQ sono essenziali per gestire errori di sistema o guasti hardware. Gli interrupt non mascherabili e altri tipi speciali di IRQ possono avvisare la CPU di problemi critici, consentendole di rispondere prontamente e di adottare misure correttive, come l'arresto di processi, la registrazione di errori o l'avvio di procedure di ripristino del sistema.
Le sfide degli IRQ
Sebbene le richieste di interrupt siano essenziali per un funzionamento efficiente del sistema, il loro utilizzo può presentare diverse sfide. Queste sfide derivano dalla complessità della gestione degli interrupt su più dispositivi e dalla necessità di garantire che il sistema li gestisca senza conflitti o inefficienze:
- Mascheratura e priorità IRQ. Mentre il mascheramento IRQ consente di ignorare temporaneamente determinati interrupt, un mascheramento improprio può impedire che interrupt importanti vengano elaborati in modo tempestivo. Una priorità non corretta degli interrupt può anche causare ritardi in attività critiche, con conseguente degrado delle prestazioni, specialmente nei sistemi in tempo reale.
- Conflitti IRQ. Quando a due o più dispositivi viene assegnato lo stesso numero IRQ, si verifica un conflitto, che impedisce alla CPU di stabilire correttamente la priorità o gestire gli interrupt. Ciò può causare instabilità del sistema, Perdita di dati, o scarse prestazioni. La risoluzione dei conflitti IRQ può richiedere molto tempo e spesso richiede la configurazione manuale o la riallocazione degli IRQ.
- Linee IRQ limitateNei sistemi più vecchi o nelle configurazioni hardware legacy, il numero di linee IRQ disponibili è limitato, il che porta a conflitti di risorse tra i dispositivi. Man mano che vengono aggiunte più periferiche a un sistema, le linee IRQ disponibili possono esaurirsi, causando conflitti o la necessità di condividere IRQ, il che può degradare le prestazioni del sistema.
- Latenza di interruzione. Quando più dispositivi generano interrupt, la CPU potrebbe subire ritardi nella risposta agli interrupt di priorità inferiore a causa della priorità più elevata di altri. Ciò può portare a una maggiore latenza nella gestione di attività sensibili al tempo, influenzando l'elaborazione in tempo reale o causando ritardi nella comunicazione periferica.
- Complessità negli ambienti multitasking. Nei sistemi multi-core o multi-processore, la gestione degli IRQ diventa più complessa perché gli interrupt devono essere distribuiti su più CPU o core. È necessario un bilanciamento corretto degli IRQ per garantire che nessun singolo processore venga sopraffatto da troppi interrupt, che altrimenti potrebbero influire sulle prestazioni e sulla reattività complessive del sistema.
- Spese generali di gestione delle interruzioni. L'elaborazione degli interrupt richiede che la CPU interrompa il suo task corrente ed esegua un ISR. Se si verificano troppi interrupt o se non vengono gestiti in modo efficiente, ciò può portare a un overhead elevato, riducendo la capacità del sistema di eseguire altri task in modo efficace.
- Compatibilità dei driver del dispositivo. Alcuni driver di dispositivo più vecchi o mal progettati potrebbero non gestire gli IRQ in modo efficiente o potrebbero causare conflitti con altri componenti di sistema. Assicurarsi che i driver di dispositivo siano aggiornati e compatibili con la configurazione IRQ del sistema è essenziale per evitare problemi come crash di sistema, blocchi o prestazioni ridotte.