Инструкций в секунду для операционных систем

Я новичок в области компьютерной архитектуры и дизайна. У меня вопрос был программный набор команд высокого уровня, выполняемый в CPU один за другим. Включает ли это даже инструкции операционной системы в качестве издержек при выполнении этих инструкций? Например: если в процессоре 2 ГГц есть 2*10^9 инструкций, которые могут быть выполнены за 2*10^9 тактов. Тогда операционная система всегда выполняет около 1*10^9 инструкций в секунду. Всегда ли присутствуют эти издержки, и только другие 1*10^9 инструкции доступны бесплатно для выполнения для других пользовательских запланированных программ?

Означает ли это, что операционные системы всегда должны иметь как можно меньше инструкций для выполнения, чтобы они могли вместить больше других программ для выполнения?

2 ответа

Решение

Да, на оба вопроса, в определенных пределах.

Во-первых, да, если ОС использует 1e9 инструкций в секунду, остается только 1e9 инструкций в секунду.

Во-вторых, да, вы хотели бы уменьшить это как можно больше; это называется "накладные расходы".

"Ограничения" заключаются в том, что ОС делает хорошие вещи для вас. Рассмотрим, например, многозадачность, когда ОС позволяет вам запускать несколько программ одновременно, разделяя процессор между ними. С одной стороны, это накладные расходы. С другой стороны, без этого вы либо оставляете машину бездействующей на длительные отрезки, когда никакая программа не может быть запущена, либо вам придется самостоятельно имитировать многозадачность - что потребует как минимум столько же инструктино, сколько и ОС.

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

Другие вопросы по тегам