La gestione del clock in Minix
Sistemi Operativi
Lez. 13
Segnale di clock
• Periodo di clock (o cliclo di clock) : l’intervallo di tempo che
intercorre tra l’istante in cui il segnale di clock inizia a valere 0 e
l’instante di tempo in cui termina di valere 1
• Frequenza: inverso del periodo
• Es. ciclo di 10ns => 100 Mhz, ciclo 500psec => 2GHz
La periferica
• Il cristallo di quarzo sottoposto a tensione genera un segnale
con periodicità che varia tipicamente da 5 a 200 MHz
• Ad ogni ciclo il contatore viene decrementato quando raggiunge
il valore zero:
– La periferica invia un Interrupt HW (IRQ 8)
– Il contatore viene ri-inizializzato
– L’intervallo di tempo che intercorre tra un interrupt ed il successivo
è denominato clock tick
Esempio
• Un clock chip che contiene un contatore a 16
bit ed un cristallo che genera segnali a 5
MHz, genererà clock tick della durata
compresa tra 0,2 microsecondi e 13,1
millisecondi
• E se il clock è a 100 Mhz?
• Solitamente all’interno di un PC esistono più
clock chip programmabili
• I clock chip usati per la sincronizzazione di
CPU e BUS di sistema usano circuiti diversi
da quelli usati per la gestione degli eventi
Funzionalità svolte
• Time of the day: solitamente ottenuto
memorizzando il numero di secondi (in
termini di tick) trascorsi a partire dalle 12 A.M.
del 1/01/1970 Universal Coordinated Time
(UTC)
• Segnalare la terminazione dei quanti di
tempo: i quanti di tempo sono definiti in
termini di tick ad ogni interrupt di clock si
decrementa il quanto di 1
• Accounting per l’uso della CPU
Funzionalità svolte
• Gestire segnali a tempo per conto dei processi
eseguiti dal sistema: alcuni processi basano le loro
azioni sull’avverarsi o meno di certi eventi, entro
intervalli di tempo predeterminati (es. ack di TCP)
Funzionalità svolte
• Watchdog timers: simili ai precedenti, con la
differenza che allo scadere del tempo
prefissato invece di inviare segnali
richiamano opportune procedure di gestione
• Profiling: raccogliere i tempi di esecuzione di
diverse componenti del sistema o dei
processi utente
Implementazione
• Le componenti del sistema operativo
coinvolte nella gestione del clock sono:
• Clock driver (clock task)
• Che si appoggia su do_clocktick per svolgere le
operazioni richieste
• Interrupt handler
• Routine di servizio: leggere il clock, leggere l’ora
del sistema, leggere dei registri all’interno del chip
Driver
• È la prima componente che si occupa del
clock ad essere eseguita sul sistema e quindi
deve provvedere alla inizializzazione del
dispositivo
• Viene avviata in fase di boot
• Costituita da un loop infinito che riceve solo
un tipo di messaggi provenienti da
HARD_INT e generati dall’interrupt handler
pr_number
Clock driver
init_clock()
• Terminata l’esecuzione di init_clock(), dopo 16,67
millisecondi arriverà il primo clock interrupt
interrupt_handler()
• Per prima cosa aggiorna realtime (n.ro di
ticks trascorsi dal boot)
interrupt_handler
• Aggiorna il PCB del processo
• nel caso di processo di sistema (quindi
non billable) addebita i tick al processo
billable di riferimento
interrupt_handler
• Nel caso di quanto terminato, o di
watchdog timers scaduto viene
richiamato il clock driver
do_clocktick
do_clocktick