Intereting Posts
Intel HD 530 не распознается ядром 4.4.1 Отменить настройку раскладки клавиатуры Сделать scp игнорировать файлы, заблокированные другими процессами Проблемы с кросс-компиляцией и «как»? Выполнить меню выключения Cinnamon через командную строку Можем ли мы найти количество страниц в файле Unix / Linux? Весь жесткий диск для обмена linux Как настроить службу systemd для выполнения команды simple / bin / echo «Hello world», чтобы показать вывод на консоли? AppArmor и привязки Запустите скрипт после выполнения какой-либо команды Соединение SSH с локальным Rasberry Pi время от времени теряет маршрут к хосту Что такое «путь Unix» для правильного форматирования табличного вывода? gpg2 не будет импортировать файлы .key: не найдены действительные данные OpenPGP Debian сжимают (стабильные) сломанные пакеты после установки чего-то из хриплого (тестирования) mv .. с путём: куда идет мой файл?

Откуда планировщик ядра узнает, что временной интервал прошел?

В моем предыдущем вопросе Как планировщик ядра знает, как упредить процесс? Мне дали ответ, как происходит упреждение.

Теперь мне интересно, как планировщик ядра узнает, что временной интервал прошел? Я прочитал о решении с аппаратным таймером, которое имеет смысл для меня, но затем я прочитал, что большинство современных операционных систем (например, Windows, Linux и т. Д.) Используют не аппаратные таймеры, а программные таймеры.

Как можно использовать программные таймеры для упреждения процесса после того, как он занял свой временной интервал (например, он не опережает сам себя). Похоже, что необходим некоторый аппаратный таймер?

Кажется, нужен какой-то аппаратный таймер?

Да, kernel ​​использует аппаратные средства для генерации прерывания через равные промежутки времени. На ПК это был программируемый интервальный таймер 8253/8254 или его эмуляция, затем локальный таймер APIC , затем HPET .

Существующие ядра Linux могут быть построены так, чтобы по возможности запускать «тиканье»: kernel ​​запрограммирует таймеры на запуск только при необходимости, и, если на указанном процессоре выполняется один процесс, это может быть «никогда». В большинстве случаев используются динамические тики, поэтому kernel ​​устанавливает таймеры на срабатывание с различными интервалами в зависимости от своих требований – меньшее количество прерываний означает меньшее количество пробуждений, что означает, что незанятые ЦП можно поддерживать в режимах с низким энергопотреблением в течение более длительных периодов, экономит энергию.