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