• Non ci sono risultati.

Esame di Sistemi in Tempo Reale, Corso di Laurea Specialistica in Ingegneria dell'Automazione

N/A
N/A
Protected

Academic year: 2021

Condividi "Esame di Sistemi in Tempo Reale, Corso di Laurea Specialistica in Ingegneria dell'Automazione"

Copied!
3
0
0

Testo completo

(1)

Esame di Sistemi in Tempo Reale, Corso di Laurea Specialistica in  Ingegneria dell'Automazione

Compito scritto (5 giugno 2008)

Esercizio 1

Due thread (produttore e consumatore) comunicano i propri dati attraverso una struttura dati  struct integral  che esporta le seguenti funzioni:

void record(struct integral *s, double data, struct timespec t);

double getIntegral(struct integral *s) ;

Il thread produttore campiona una certa funzione a intervalli di tempo variabile, con un minimo tempo di 

campionamento pari a  T

min

. Quindi, chiama la funzione  record  che memorizza il dato campionato al tempo  t nella struttura dati. 

La funzione  getIntegral  viene chiamata dal consumatore e restituisce l'integrale della funzione nell'intervallo  [t−T , t ] dove t è l'ultimo istante di campionamento, e T è una costante definita nel programma. L'integrale  viene calcolato con il metodo dei trapezi secondo lo schema in figura (l'area da calcolare è quella segnata in  scuro):

La funzione  getIntegral  è bloccante se non ci sono abbastanza campioni nella struttura dati per calcolare  l'integrale. Inoltre, si blocca ogni volta che non ci sono nuovi campioni da processare, e viene svegliata dal  produttore quando arriva un nuovo campione. 

DOMANDA n.1: conviene implementare la struttura dati con un array circolare? quante posizioni servono?

DOMANDA n.2: Scrivere il codice per la struttura dati e per le funzioni  record()  e  getIntegral() .  Suggerimenti: è possibile eseguire il calcolo dell'integrale nella  record() , oppure nella  getIntegral() . A  seconda di quale delle due strade si sceglie, conviene implementare la struttura dati in maniera diversa.

Per eseguire calcoli sui tempi, potete assumere l'esistenza delle seguenti funzioni di libreria 1) int timespec_us_sub(struct timespec t2, struct timespec t1);

2) int timespec_cmp(struct timespec t2, struct timespec t1);

3) struct timespec timespec_us_sub_us(struct timespec t, int usec);

t

1

t

2

t

3

t

4

T

(2)

La prima restituisce la differenza tra t2 e t1 in microsecondi. La seconda restituisce ­1, 0 o 1 a seconda che t2 < 

t1, t2 == t1 o t2 > t1, rispettivamente. Infine la terza funzione restituisce l'istante di tempo dato dalla sottrazione 

tra t e il numero di microsecondi indicato in usec.

(3)

Esercizio 2

Dato il seguente task set:

1) Calcolare l'iperperiodo.

2) Nel caso di schedulazione con fixed priority, assumendo che le priorità siano assegnate secondo rate  monotonic, verificare la schedulabilità del task 3 calcolando il suo tempo di risposta.

3) Nel caso di schedulazione con EDF, 1. Calcolare il primo istante di idle time

2. Verificare la schedulabilità usando la demand bound function.

Task C T D

1 1 10 6

2 4 12 12

3 4 18 12

4 6 24 18

Riferimenti

Documenti correlati

[r]

Si indichi la complessit` a in tempo al caso medio della ricerca con insuccesso all’interno di una tabella hash con n elementi e dimensione m, in cui le collisioni sono gestite

Si misura l’intensità nel punto P: tutte le sorgenti misurate singolarmente hanno la stessa intensità I0; se sono accese solo S1 e S2 l’intensità è I = 100 mW/m2; se sono

Supponendo di realizzare il controllore utilizzando una libreria matematica in virgola fissa, si stimi il minimo numero di cifre decimali dopo la virgola necessario a rappresentare

Ingegneria dell ’Automazione - Sistemi in Tempo Reale – p.2/28.?. Zeros

• The idea is here to find a discrete equivalent replicating the behaviour of the continuous time controller if it was framed into a ZoH-Sampler scheme.. • we know how to

Ingegneria dell ’Automazione - Sistemi in Tempo Reale – p.2/39... Semidefinite Programming

Notice that the first factor produces a train of δ impulses: in the intersampling the systems generates a sum of scaled and traslated step