Введение
Компьютерная программа, производительность которой в значительной степени зависит от времени ожидания операций ввода/вывода. В информатике, термин "I/O-ограниченность" (I/O bound) описывает ситуацию, когда время, необходимое для завершения вычисления, определяется главным образом временем, затрачиваемым на ожидание завершения операций ввода/вывода, в отличие от "CPU-ограниченности" (CPU bound). Это происходит, когда скорость поступления данных ниже скорости их обработки, то есть на запрос данных уходит больше времени, чем на их обработку.
In computer science, I/O bound refers to a condition in which the time it takes to complete a computation is determined principally by the period spent waiting for input/output operations to be completed, which can be juxtaposed with being CPU bound. This circumstance arises when the rate at which data is requested is slower than the rate it is consumed or, in other words, more time is spent requesting data than processing it.
Вводы и выводы связаны как присущая проблема в вычислительной технике
Ограниченное состояние ввода-вывода было выявлено как проблема в вычислительной технике практически с момента её возникновения. Архитектура фон Неймана, используемая многими вычислительными устройствами, предполагает несколько возможных решений, таких как реализация логически отдельного центрального процессора, который, помимо хранения инструкций программы, также извлекает фактические данные, как правило, из основной памяти, и использует эти более доступные данные для работы. По завершении процесса результаты записываются обратно в исходное хранилище (обычно в основную память). Поскольку данные должны перемещаться между процессором и памятью по шине с ограниченной скоростью передачи, возникает явление, известное как «узкое место фон Неймана». Проще говоря, это означает, что пропускная способность данных между процессором и памятью, как правило, ограничивает общую скорость вычислений. С точки зрения фактической технологии, составляющей компьютер, «узкое место фон Неймана» предсказывает, что ускорить выполнение вычислений процессором легче, чем обеспечить его данными с необходимой скоростью. В последнее время «узкое место фон Неймана» стало особенно заметным. Философия проектирования современных компьютеров основана на физическом разделении центрального процессора и основной памяти. Возможность обеспечить высокую скорость передачи данных внутри процессора обусловлена перемещением данных между его компонентами на очень короткие расстояния. Однако физическое разделение процессора и основной памяти требует использования шины данных для передачи данных на сравнительно большие расстояния – в сантиметрах и более. Обеспечение достаточной скорости работы этой части системы, чтобы она не отставала от процессора, является серьезной задачей для разработчиков.
comparatively long distances of centimetres or more. The problem of making this part of the system operate sufficiently fast to keep up with the CPU has been a great challenge to designers.
Сравнение с CPU-bound
Предположим, у нас есть один процесс, интенсивно использующий процессор, и множество процессов, интенсивно выполняющих операции ввода-вывода. По мере выполнения процессов в системе может возникнуть следующий сценарий. Процесс, интенсивно использующий процессор, получает процессор и удерживает его. В это время все остальные процессы завершают операции ввода-вывода и переходят в очередь готовности, ожидая процессор. Пока процессы находятся в очереди готовности, устройства ввода-вывода простаивают. В конечном итоге процесс, интенсивно использующий процессор, завершает свой временной интервал использования процессора и переходит к устройству ввода-вывода. Все процессы, интенсивно выполняющие операции ввода-вывода, которые имеют короткие временные интервалы использования процессора, быстро выполняются и возвращаются в очереди устройств ввода-вывода. В этот момент процессор простаивает. Затем процесс, интенсивно использующий процессор, возвращается в очередь готовности и получает процессор. Снова все процессы ввода-вывода оказываются в ожидании в очереди готовности, пока процесс, интенсивно использующий процессор, не завершится. Возникает эффект "конвоя", когда все остальные процессы ждут, пока один большой процесс освободит процессор. Этот эффект приводит к снижению загрузки процессора и устройств по сравнению с тем, что могло бы быть достигнуто, если бы более короткие процессы выполнялись первыми.