Как работает спящий системный вызов?
Приложение может попросить ОС приостановить процесс на 0,5 секунды, но как это работает?
Процессор не просто перестает работать в течение этих 0,5 секунды, так как другие программы работают хорошо одновременно, так как же мы приостановим запуск приложения на некоторое время?
Я думаю, что, однако, это будет сделано для всех ОС.
1 ответ
В многозадачной операционной системе ОС не нужно делать что-либо настолько экстремальное, как полная остановка процессора вообще или заполнение времени, которое этот процесс собирался использовать другими инструкциями. Это может сделать что-то бесконечно проще. Он может просто не планировать выполнение задачи вообще.
В этом весь смысл многозадачной операционной системы. Если все задачи должны запускаться одновременно, то ОС переставляет одну из них на процессор, позволяет ей работать в течение некоторого времени, затем меняет следующую задачу и продолжает до тех пор, пока все задачи, которые нужно выполнить, не выполнят свои задачи.,
Когда задача сигнализирует о том, что она хочет поспать какое-то время или ждать нажатия клавиши, это означает, что она фактически сообщает операционной системе don't bother swapping me onto the processor unless time X has passed
или же don't bother running me unless you have event X waiting for me to action it
,
По сути, в ОС имеется длинный список задач, которые необходимо выполнить, и для каждой из них будет дескриптор "ожидание события". Любые задачи, которые готовы к выполнению, можно запланировать, а любые задачи, которые не будут выполнены, просто пропустить, просто так.
Если на конкретном отрезке времени буквально нет задач для запуска на процессоре, то операционная система планирует " простоя " задачу, которая фактически будет загружать ЦП и сообщать ей не выполнять инструкции до тех пор, пока он не проснется, обычно каким-то прерыванием Использование этого метода планирования времени "не работать" хорошо согласуется с парадигмой многозадачной операционной системы.
Чтобы снова проснуться, процессор получает "тики" прерывания через RTC (часы реального времени) и дополнительно может настроить HPET (высокоточный таймер событий) для запуска прерывания через определенный интервал времени. Это позволяет ОС останавливать процессор на очень точные промежутки времени, а затем выводить процессор из спящего режима, чтобы снова начать обработку задач.