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