Časovač (počítač)
Časovač (anglicky timer) je v informatice název hardwarového zařízení v počítači, které umožňuje s vysokou přesností odměřovat čas. Časovač může být také označení softwarové implementace reakce programu na uplynutí určitého času (například timeout). Časovač obecně slouží k asynchronnímu řízení vykonávání strojového kódu. Hardwarové časovače využívá operační systém pro řízení multitaskingu a plánování dalších důležitých událostí, které jsou závislé na reálném čase. Časovač může být umístěn ve specializovaném integrovaném obvodu, v čipsetu nebo přímo v procesoru.
Princip
Většina počítačů obsahuje jeden nebo více hardwarových časovačů. Obvykle jsou to čítače, které program nastaví na nějakou hodnotu, která se následně automaticky snižuje. V okamžiku, kdy dosáhne nuly, je vyvoláno přerušení, které je doručeno procesoru. Časovač umožňuje procesoru zpracovávat během měření času jiné úlohy, čímž snižuje režii systému a zvyšuje jeho výkon. Odstraňuje tedy tzv. aktivní čekání pomocí naprogramovaného cyklu nebo specializované instrukce (například RDTSC v procesorech x86), během kterého nelze jinou činnost vykonávat. Časovač může pracovat v jednorázovém režimu, kdy je přerušení vykonáno po vypršení časovače nebo v periodickém režimu, kdy je přerušení vyvoláváno periodicky po uplynutí nastaveného fixního času (například každou 1 milisekundu).
Protože je počet hardwarových časovačů v počítači omezen a není možné předpokládat, že budou stačit pro všechny účely, je možné používat jen jeden časovač, který obsluhuje operační systém a vytváří k němu softwarovou časovou frontu[1]. Hardwarový časovač se pak používá k odměření času zbývajícího do první události v časové frontě. Ve frontě jsou události řazeny podle času, takže nejbližší událost je první. Po uplynutí času nastaveného v časovači do první události je časovačem vyvoláno přerušení, které vyvolá obsluhu přerušení uvnitř operačního systému, která obsluhuje čekací frontu. V obsluze přerušení je z fronty odebrána událost, která přerušení vyvolala, časovač je nastaven na čas zbývající do následující události ve frontě a aktuální (vyřazená) událost je předána k vyřízení.
Použití
Časovač se v počítači používá pro řízení multitaskingu (přidělování časových kvant) a dalších časově závislých událostí (například vypršení času vymezeného na příjem odpovědi při komunikaci v počítačové síti). Časovač je základním mechanismem pro zajištění preemptivního multitaskingu.
Hodiny reálného času (RTC)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/ROCKY-518HV_-_Dallas_Semiconductor_DS12B887-2377.jpg/220px-ROCKY-518HV_-_Dallas_Semiconductor_DS12B887-2377.jpg)
Hodiny reálného času (anglicky Real-time clock) jsou integrovaný obvod, který udržuje informaci o aktuálním čase v počítačích, embedded systémech, a dalších elektronických zařízeních. V IBM PC kompatibilních počítačích byl na základní desce jako samostatný integrovaný obvod, který je napájen lithiovou baterií. Jeho programování je časově náročné, a proto se nepoužívá pro periodické vyvolávání přerušení (na to se používá PIT – viz dále). V současné době je RTC na základních deskách integrován do čipsetu (southbridge).[2]
Programmable Interval Timer (PIT)
Programmable Interval Timer je nejstarší používaný časovač v počítačích IBM PC kompatibilních (obvody Intel 8253 a Intel 8254). Obsahuje tři čítače: časovač číslo 0 používají operační systémy (Microsoft Windows, Linux a další) jako systémový časovač, časovač číslo 1 je z historických důvodů použit pro obnovování (anglicky refresh) paměti RAM a časovač číslo 2 pro PC speaker.
High Precision Event Timer (HPET)
High Precision Event Timer byl společně vyvinut firmami Intel a Microsoft. Původně byl označován jako Multimedia Timer a umožňuje vyšší a přesnější rozlišení času (například pro synchronizaci multimédií). Na rozdíl od RTC a PIT je jeho programování efektivní, takže je výhodné ho využívat i pro jednorázová přerušení.[3] Aby ho operační systém mohl používat, musí být speciálně upraven, takže funguje jen na novějších systémech – Windows Vista, Windows 2008, x86 verzích Mac OS X, Linux 2.6 a FreeBSD. Windows XP obsahuje nefunkční ovladač HPET. Jeden HPET blok obsahuje 3 až 32 časovačů a bloků může být až osm. Časovač přičítá a po dosažení hodnoty nastavené v registru vyvolá přerušení.
Reference
- ↑ KOLÁŘ, Petr. Operační systémy [online]. Liberec: 2005-02-01 [cit. 2008-08-30]. Dostupné v archivu pořízeném dne 2014-07-14.
- ↑ ULi M1573 Southbridge Specifications [online]. AMDboard.com [cit. 2007-08-23]. Dostupné v archivu pořízeném dne 2007-08-18.
- ↑ Guidelines For Providing Multimedia Timer Support [online]. 2002-09-20 [cit. 2007-07-16]. Dostupné online.