Esercizio 11dall'impegno percentuale della CPU alle durate delle ISR (temi d'esame febbraio 2025 e febbraio 2026)
In questa pagina 3
Testo (tema d'esame febbraio 2025, problema P7; febbraio 2026, problema P2).
(i) Un microcontrollore gestisce 2 sorgenti di interruzione. La prima, di priorità 1, attiva una routine di servizio (ISR1) ogni 100 µs; la seconda, di priorità 2, ogni 250 µs (ISR2). Il microcontrollore, complessivamente, risulta impegnato per l'80% del suo tempo di calcolo nella gestione delle richieste. Sapendo che ISR2 ha una durata inferiore del 30% a quella di ISR1 e trascurando i tempi di latenza e ogni altro ritardo: (a) determinare le durate delle due routine; (b) dire se il sistema può funzionare senza nesting; (c) dire se può funzionare con il nesting.
(ii) Tre sorgenti IRQ1, IRQ2, IRQ3 hanno durate , , e periodi , , , con priorità 1, 2, 3. La CPU è impegnata per il 75% del tempo. Sapendo che µs: (a) le durate delle ISR; (b) la sostenibilità con e senza nesting; (c) la massima durata compatibile per ISR1 con µs (mantenendo le proporzioni); (d) la massima frequenza compatibile per IRQ1 con µs (mantenendo le proporzioni tra i periodi).
(i) Febbraio 2025
(a) Durate. Poniamo . L'impegno complessivo è , cioè , quindi (b) Senza nesting. Condizione per IRQ1: ✗. Non può funzionare: se ISR2 è appena iniziata quando arriva IRQ1, la ISR1 parte dopo 43,75 µs e termina oltre il suo periodo. (c) Con nesting. IRQ1: ✓. IRQ2: con : ✓. Può funzionare (con margine di soli 18,75 µs).
(ii) Febbraio 2026
(a) Durate. . Con µs: , , µs; periodi 18, 36, 216 µs.
(b) Sostenibilità.
- Senza nesting: IRQ1: ✗ non sostenibile (in generale per ogni ).
- Con nesting: IRQ1: ✓; IRQ2: ✓; IRQ3: ✓. Sostenibile.
(c) Massima durata di ISR1 con µs, a parità di rapporti (, ):
- IRQ1: ;
- IRQ2: ;
- IRQ3: . La più restrittiva è la terza: 8 µs.
(d) Massima frequenza di IRQ1 con µs (con , ): IRQ1: ; IRQ2: ; IRQ3: µs. Quindi .
Errori comuni
- Dividere la percentuale in parti uguali: le durate sono determinate dai rapporti dati (qui e ).
- Per il "senza nesting" dimenticare il termine con la ISR più lunga di priorità inferiore (in (i): ISR2 su IRQ1).
- Usare il rapporto dei periodi sbagliato: per IRQ2 e per IRQ3.
- Cercare la durata massima con la prima condizione soltanto: la più restrittiva è quella della sorgente a priorità più bassa.
Versione ripasso
Testo. Dall'impegno della CPU alle durate: 80% con µs e ; 75% con e (febbraio 2025, febbraio 2026).
- (i) µs, µs; senza nesting no (); con nesting sì ().
- (ii) : 6, 12, 18 µs; senza nesting no (); con nesting sì (); µs (); µs, kHz.
- Errori: percentuale divisa a metà; termine del massimo senza nesting; rapporto dei periodi capovolto (Sistemi di interruzioni - latenza, nesting e sostenibilitàCon $N$ sorgenti, ciascuna ISR $i$ ha durata $T_{d,i}$ (spesso già comprensiva della latenza intrinseca $T_{LI}$ e dell'istruzione in corso) e periodo minimo $T_{p,i}$. Condizione necessaria: $\sum_iT_{d,i}/T_{p,i}<1$ (la percentuale di impegno della CPU è la somma). Condizione di intervallo per ogni $i$ (priorità 1 = massima): $T_{d,i}+\sum_{k<i}n_k,T_{d,k};[+\max(T_{RC},\max_{j>i}T_{d,j})\text{ senza nesting}]\le T_{p,i}$, con $n_k=\lceil T_{p,i}/T_{p,k}\rceil$. Latenza massima della priorità $n$: con nesting $T_{LI}+\sum_{i<n}T_{ex,i}$; senza nesting si aggiunge $\max_{j>n}T_{ex,j}$.Sistemi di interruzioni - latenza, nesting e sostenibilità →).