• Non ci sono risultati.

3.2 Descrizione dell’architettura

3.3.2 La libreria utente

La “Resource Reservation Library” permette di utilizzare le funzionalit`a del modulo di Resource Reservation all’interno delle applicazioni utente. Si `e visto come, utilizzando tale modulo, si possa riservare ad un task una CPU virtuale dedicata, che abbia velocit`a pari ad una frazione di quella della CPU reale. La libreria dunque consente principalmente di effettuare le seguenti operazioni:

• creare una nuova risorsa virtuale assegnandogli una certa banda; • cambiare e recuperare i parametri della risorsa dopo la sua creazione; • spostare l’esecuzione di un task tra le varie risorse virtuali.

Per quanto detto in3.3.1, ad un task viene riservata una risorsa virtuale semplicemente “attaccandolo” ad un server CBS, che verr`a utilizzato per servire le richieste del task. Fra i parametri associati ad un server, saranno di particolare importanza il budget ed il periodo, dato che il loro rapporto determina la banda della CPU virtuale dedicata al task servito.

In particolare, i parametri associati a ciascun server sono identificati, all’interno della libreria, con il tipo di dato qres params t, che viene definito nel seguente modo:

typedef s t r u c t q r e s p a r a m s t { q r e s t i m e t Q min ; q r e s t i m e t Q; q r e s t i m e t P ; unsigned i n t f l a g s ; q r e s t i m e t t i m e o u t ; } q r e s p a r a m s t ;

Listing 3.1: Parametri associati ad un server

I campi della struttura identificano i parametri di ciascun server. Il significato di tali parametri viene spiegato di seguito:

• Q min: `e il budget garantito al server; • Q: `e il budget richiesto dal server; • P: `e il periodo del server;

• flags: `e una combinazione di flag con i quali possono essere impostati determinati comportamenti del server;

36 CAPITOLO 3. AQUOSA E’ da notare che tutti i tempi vengono espressi in microsecondi.

Come anticipato, i parametri del server vengono specificati al momento della sua creazione, operazione che `e resa disponibile da un’apposito metodo. Una breve panoramica di questa funzione di libreria e di tutte le altre si- gnificative verr`a data di seguito. Per una trattazione dettagliata si rimanda invece alla documentazione di riferimento.

• qres init - Permette di inizializzare la libreria, verificando preventi- vamente che il kernel supporti la gestione della QoS (ci`o implica la presenza del modulo di Resource Reservation all’interno del kernel); • qres cleanup - Effettua la pulizia delle risorse associate alla libreria, per

cui dopo l’invocazione di questo metodo risulta impossibile effettuare altre invocazioni dei metodi della libreria;

• qres create server - Permette la creazione di un server con i parametri che vengono specificati (ad ogni server del sistema viene associato un identificatore univoco);

• qres attach thread - Permette di associare un task (sia esso processo o thread) ad un server che `e gi`a stato creato;

• qres detach thread - Permette di “staccare” un task da un server (in base ai parametri del server, questo pu`o significare anche l’eliminazione del server se nessun altro task vi `e attaccato);

• qres destroy server - Permette di distruggere un server il cui identifi- catore viene passato come parametro (se il server ha dei task ad esso attaccati essi vengono preventivamente staccati);

• qres get sid - Permette di conoscere l’identificatore del server a cui `e attaccato il task specificato come parametro (metodo utile soprattutto per verificare se un task `e effettivamente attaccato ad un server); • qres get bandwith - Permette di conoscere la banda del server specifi-

cato come parametro;

• qres get params - Permette di recuperare i parametri associati al server specificato;

• qres set bandwith - Permette di modificare la banda del server specifi- cato come parametro;

• qres set params - Permette di modificare i parametri del server speci- ficato.

Un semplice esempio di come utilizzare tali funzioni di libreria pu`o essere rappresentato dal listato 3.2.

3.3. QOS RESERVATION COMPONENT 37 q r e s p a r a m s t params = { . Q min = 0 , .Q = 50000L , . P = 100000L , . f l a g s = 0 , } ; q r e s s i d t s i d ; q r e s i n i t ( ) ; q r e s c r e a t e s e r v e r (&params , &s i d ) ) ; q r e s a t t a c h t h r e a d ( s i d , 0 , 0 ) ; /∗ e l a b o r a z i o n i d e l l ’ a p p l i c a z i o n e ∗/ q r e s d e s t r o y s e r v e r ( s i d ) ) ; q r e s c l e a n u p ( ) ;

Listing 3.2: Semplice esempio di utilizzo della libreria RR

In tale semplice esempio, dove fra l’altro non si verifica la corretta ese- cuzione dei metodi tramite il loro valore di ritorno, si mostra come un task possa creare una risorsa virtuale con banda pari al 50% ed utilizzarla nel corso della sua esecuzione. Si fa notare infine come, nel caso specifico, il task attacca se stesso al server appena creato, passando il valore 0 come secondo e terzo parametro della qres attach thread (in generale tali para- metri rappresentano rispettivamente il process id e il thread id del task da attaccare).

Capitolo 4

Apache2

Il web server Apache `e un progetto sviluppato dalla Apache Software Foun- dation, il cui scopo `e quello di fornire un server HTTP che sia sicuro, ef- ficiente ed estensibile. Il progetto `e attivo da lungo tempo: all’anno 1995, infatti, risale la prima versione del server. Nel 2000 `e stata poi introdotta la versione 2.0 del server, che presenta una completa revisione architetturale; mentre nel 2007 `e stata rilasciata la versione 2.2 di Apache, ultima stabile. Le versioni della famiglia 2.x hanno tutte in comune lo stesso progetto ar- chitetturale, dunque ci si riferisce ad esse con il termine Apache2. Nel corso di questo lavoro si far`a riferimento unicamente ad Apache2, anche quando non espressamente indicato per brevit`a.

In questo capitolo si affronter`a innanzitutto la struttura concorrente di Apache, vero cuore pulsante del server; successivamente si analizzer`a in ma- niera completa il funzionamento interno ed infine si presenteranno alcune fra le caratteristiche tecniche di maggior rilievo utilizzate per lo sviluppo del server.

4.1

Struttura concorrente

Apache `e un web server concorrente, capace cio`e di gestire contemporanea- mente richieste provenienti da pi`u client: tali tipi di server vengono general- mente identificati come multitasking web server, poich´e la concorrenza viene gestita internamente dal server tramite un’architettura che prevede l’uso di pi`u task.

Documenti correlati