Другие языки программирования и технологии

Как реализуются аппаратно таймеры в компьютерах на современных процессорах.

Сколько их может быть в программе. Насколько зависит от типа процессора?
Каждая операционная система по своему реализует таймеры. Если MS DOS работала непосредственно с часами реального времени, то многозадачные ОС это реализуют по-другому. Например, Windows,при старте запоминает показание часов реального времени и затем приращает к этому времени интервалы, используя виртуальные прерывания системного таймера. Периодически проходит синхронизация с часами реального времени.
Что касается таймеров, то это не аппаратные, а программные конструкции. При создании таймера, ОС из пула потоков берёт свободный поток (или создаёт новый в случае отсутствия свободного) и в качестве параметра передаёт ему ф-цию из какой-то системной DLL,которая призвана по команде ОС передавать сообщение WM_TIMER с определённым интервалом приложению. Причём управлением распределения интервалов занимается сама ОС.
В windows начиная с 3.1 снято ограничение на количество таймеров. Но это не значит, что если запустить 200 таймеров, то они все будут нормально работать. Сообщение WM_TIMER имеет самый низкий приоритет и передаётся только в том случае, если нет в очереди сообщений других сообщений. Так что в реальности до приложения будет доходить только часть этих сообщений. И чем больше таймеров, тем непредсказуемы результаты.
PB
Parhat Bayramkuliyew
9 759
Лучший ответ
Владимир Рустамов Вообщем если 40 штук собрать вместе и заставить считать каждый разное время называться все будет просто - херня?
что в вашем понимании таймер?
в любом компьютере есть часы реального времени, что то типа наручных китайских часов, но их точность не велика.
В современных процессорах есть аппаратный счетчик тактов. Значение счетчика можно получить командой процессора rdtsc http://ru.wikipedia.org/wiki/Rdtsc
если знать частоту процессора можно измерять интервалы времени сочень высокой точностью
Владимир Рустамов В моем понимании это аппаратная или программная вещь, независимо позволяющая отмерять любые промежутки времени.
аппаратно реализуются через кварцевые генераторы
Домашний Сайт
Домашний Сайт
32 559
Владимир Рустамов Это понятно. Но если я использую 18-40 таймеров. Это вовсе не означает что такое количество кварц генераторов стоит в процессоре.
Таймеров в процессорах нет. На материнской плате есть программируемые тактовые генераторы. В программах их нет. Таймеры в программах вообще реализуются по принципу ожидания. Пили сколько хочешь но точность там не впечатляющая.
Александр Халилов Современные процессоры содержат специальный 64-разрядный регистр,который хранит счётчик меток реального времени.Этот счётчик запускается при запуске процессора и инкрементируется с каждым тактом.Это конечно не таймер.Но программисты имеют доступ к значению этого регистра и могут его использовать.