0

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

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

+0

Ваш вопрос не имеет смысла. ОС выполняет операции планирования, обслуживает аппаратные прерывания и выполняет команды, заданные кодом пользователя. Это не занимает фиксированного количества процессорного времени, и, очевидно, он пытается не тратить его. – ruslik

+1

Возможно, на достаточно простом ЦПУ. Но в целом, я не думаю, что производительность почти такая же простая, как вы это делаете. Существуют кэши, виртуальная память, разделяемые библиотеки, планирование, ввод-вывод и т. Д. Например, если ОС использует некоторые инструкции для хранения одной копии libc, разделяемой между процессами, а горячие функции libc находятся в моем кэше L2 до того, как моя программа даже начинается, что может легко окупиться. – Ken

ответ

1

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

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

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

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

1

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

Смежные вопросы