31.05.2013 Views

Il sistema operativo Windows XP - Apogeo

Il sistema operativo Windows XP - Apogeo

Il sistema operativo Windows XP - Apogeo

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

La schedulazione si presenta quando un thread entra nello stato pronto o di attesa oppure<br />

quando un thread termina, o se un'applicazione cambia la priorità del thread o l'affinità del<br />

processore. Se un thread, in tempo reale con priorità più alta, diviene pronto, mentre è in funzione<br />

un thread a priorità più bassa, quello a priorità più bassa viene interrotto e tale interruzione dà al thread<br />

un accesso preferenziale, in tempo reale, alla CPU, quando il thread ha bisogno di eseguire un tale<br />

accesso. <strong>Windows</strong> <strong>XP</strong> non è un <strong>sistema</strong> <strong>operativo</strong> hard real time, poiché non garantisce che un<br />

thread in tempo reale inizi l’esecuzione entro un particolare limite di tempo.<br />

3.2.3 Realizzazione delle primitive di sincronizzazione<br />

Le principali strutture dati del <strong>sistema</strong> <strong>operativo</strong> sono gestite come oggetti che usano funzionalità<br />

comuni per l’allocazione, il conteggio dei riferimenti e la sicurezza. Gli oggetti del dispatcher<br />

(dispatcher object) controllano l’invio e la sincronizzazione nel <strong>sistema</strong>; esempi di questi oggetti<br />

sono gli eventi, i mutanti, i mutex, i semafori, i processi, i thread ed i temporizzatori. L'evento<br />

oggetto (event object) viene usato per registrare il verificarsi di un evento e per sincronizzare questo<br />

ultimo con una qualche azione. Gli eventi di notifica segnalano tutti i thread in attesa, mentre gli<br />

eventi di sincronizzazione segnalano un singolo thread in attesa. <strong>Il</strong> mutante (mutant) fornisce la mutua<br />

esclusione in modalità kernel o utente con la nozione di proprietà. <strong>Il</strong> mutex, disponibile soltanto in<br />

modalità kernel, fornisce mutua esclusione senza stalli. Un oggetto semaforo (semaphore object)<br />

opera come un contatore o porta (gate) per controllare il numero di thread che accedono alla risorsa.<br />

L'oggetto thread (thread object) è l'entità che è schedulata dal dispatcher del kernel ed è associata<br />

con un oggetto processo (process object) che incapsula uno spazio di indirzzamento virtuale. Gli<br />

oggetti timer (timer objects) sono usati per tenere traccia del tempo e per segnalare la mancata<br />

sincronizzazione quando le operazioni impiegano troppo tempo e devono essere interrotte, oppure deve<br />

essere schedulata un'attività ripetitiva.<br />

A molti degli oggetti del dispatcher si può accedere in modalità utente tramite un’operazione<br />

open che ritorna un handle; il codice in modalità utente controlla/ o aspetta gli handle per<br />

sincronizzarsi con gli altri thread come pure con il <strong>sistema</strong> <strong>operativo</strong> (consultare il Paragrafo 7.1 di<br />

questo capitolo).<br />

3.2.4 Software interrupt: chiamate asincrone di procedure<br />

<strong>Il</strong> dispatcher implementa due tipi di interrupt software: chiamate di procedure asincrone e chiamate<br />

di procedure rinviate (deferred). La chiamata di procedura asincrona (APC) interrompe un thread in<br />

esecuzione e chiama una procedura. Le APC sono usate per cominciare l'esecuzione di un nuovo<br />

thread, per terminare i processi e per consegnare la notifica che un’operazione di I/O asincrona è<br />

stata completata. Gli APC sono accodati a specifici thread e permettono al <strong>sistema</strong> di eseguire sia il<br />

codice di <strong>sistema</strong> che quello utente entro il contesto del processo.<br />

3.2.5 Interrupt software: chiamate di procedura rinviate<br />

Le chiamate di procedura rinviate (DPC) si usano per posporre il processo di interrupt. In seguito<br />

alla gestione di tutti i processi bloccati da interrupt dei dispositivi, la procedura di servizio degli<br />

9

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!