Чтобы немного рассказать о ответе г-на Мартина: (будьте осторожны, это очень упрощено). Задача ОС - обрабатывать те вещи, которые программа не хочет одо для себя - например, ввода-вывода ручек прерывания и планирование нескольких задач для совместного использования машины. В идеальном мире на машине, на которой работает одна прикладная программа, программа будет контролировать процессор до тех пор, пока ему не понадобится ОС для чего-то для этого, например, прочитайте следующую запись из файла диска (которая вызывает слоистые «службы», чтобы выяснить какой диск, какой файл, который записывает, который байт и вычисляет, какой блок диска на какой дорожке запрашивается от контроллера диска. Типичная «настоящая» машина также имеет множество фоновых задач, поддерживающих обновление экрана, чтение часов , проверка новых писем, загрузка патчей и т. д. Именно здесь приходят приоритеты. Некоторые задачи выполняются с более низким приоритетом, потому что нам все равно, когда они будут сделаны, например, обновление значка в системном трее в Windows для уведомления о новой почте. Другие задачи выполняются с высоким приоритетом, но очень короткие, например, после мыши на экране и изменения его указателя на руку. Имейте в виду, что типичная задача выполняет всего несколько сотен инструкций перед тем, как понадобится служба ОС и идти чтобы спать, пока это происходит. Большие приложения могут иметь сотни тысяч «инструкций», но снова проводят некоторое время, ожидая чего-то еще, от нажатия кнопки или ввода клавиатуры до ответа от поиска базы данных на другой машине. Большинство приложений с интенсивным процессором, такие как вычисление Pi до миллиона десятичных знаков, могут потреблять 99,9% процессора в течение длительного времени, но ОС периодически прерывает его, чтобы увидеть, нужно ли что-то еще сделать. Еще во времена DOS (1980-е годы) программа могла на некоторое время занять процессор, но если ему нужно было читать или писать или вводить что-то на экран, то в BIOS это нужно было бы, если только программа было написано для выполнения этих основных операций. Некоторые из них - как реагируют компьютерные игры, выполняя конкретные операции, необходимые для непосредственного изменения экрана, и читайте их напрямую с буферов клавиатуры или мыши, минуя ОС. Надеюсь, я вас больше не смутил ...
Ваш вопрос не имеет смысла. ОС выполняет операции планирования, обслуживает аппаратные прерывания и выполняет команды, заданные кодом пользователя. Это не занимает фиксированного количества процессорного времени, и, очевидно, он пытается не тратить его. – ruslik
Возможно, на достаточно простом ЦПУ. Но в целом, я не думаю, что производительность почти такая же простая, как вы это делаете. Существуют кэши, виртуальная память, разделяемые библиотеки, планирование, ввод-вывод и т. Д. Например, если ОС использует некоторые инструкции для хранения одной копии libc, разделяемой между процессами, а горячие функции libc находятся в моем кэше L2 до того, как моя программа даже начинается, что может легко окупиться. – Ken