Найти в Дзене
IT Еxtra

Как работает компьютер? Часть 75. Управление устройствами ввода-вывода

Предыдущий урок: Как работает компьютер? Часть 74. Управление памятью: виртуальная память и защита Мы уже знаем, как ОС управляет двумя главными ресурсами — процессорным временем и памятью. Но компьютер не живёт в вакууме. Он должен общаться с внешним миром: получать данные от мыши и клавиатуры, выводить изображение на монитор, сохранять файлы на диск и отправлять сообщения по сети. Всё это — задачи ввода-вывода, и именно операционная система выступает универсальным переводчиком и диспетчером между программами и невероятно разнообразным миром периферийных устройств. Без её посредничества каждой программе пришлось бы знать тонкости работы тысяч моделей принтеров, видеокарт и сетевых карт, что сделало бы их огромными и совершенно несовместимыми друг с другом. Проблема в том, что периферийные устройства работают не так, как процессор и память. Они, как правило, гораздо медленнее, и их готовность передать или принять данные непредсказуема. Процессору пришлось бы тратить львиную долю време

Предыдущий урок: Как работает компьютер? Часть 74. Управление памятью: виртуальная память и защита

Мы уже знаем, как ОС управляет двумя главными ресурсами — процессорным временем и памятью. Но компьютер не живёт в вакууме. Он должен общаться с внешним миром: получать данные от мыши и клавиатуры, выводить изображение на монитор, сохранять файлы на диск и отправлять сообщения по сети. Всё это — задачи ввода-вывода, и именно операционная система выступает универсальным переводчиком и диспетчером между программами и невероятно разнообразным миром периферийных устройств. Без её посредничества каждой программе пришлось бы знать тонкости работы тысяч моделей принтеров, видеокарт и сетевых карт, что сделало бы их огромными и совершенно несовместимыми друг с другом.

Проблема в том, что периферийные устройства работают не так, как процессор и память. Они, как правило, гораздо медленнее, и их готовность передать или принять данные непредсказуема. Процессору пришлось бы тратить львиную долю времени на простое ожидание, пока, например, жесткий диск найдёт нужный файл. Чтобы решить эту проблему, в игру вступают два ключевых механизма: прерывания и прямой доступ к памяти (DMA). Представьте, что вы заказали еду с доставкой. Вместо того чтобы дежурить у двери всё время, вы оставляете курьеру инструкцию: «Позвони в домофон, когда будешь у подъезда». Прерывания работают по такому же принципу. Устройство (доставщик), выполнив свою работу или получив новые данные, посылает процессору специальный электрический сигнал — прерывание. Процессор немедленно откладывает текущие дела, сохраняет состояние и переходит к выполнению небольшой программы-обработчика прерывания, которая знает, как общаться с этим конкретным устройством, чтобы забрать результат.

IT Extra

Однако часто устройству нужно передать большой объём данных (например, загрузить в память целый файл с диска). Перекладывать его по одному байту через процессор — крайне неэффективно. Здесь на помощь приходит прямой доступ к памяти (DMA). DMA — это отдельный маленький и умный контроллер, который может управлять шиной памяти самостоятельно. По команде от процессора он берёт на себя рутинную работу: напрямую считывает данные с устройства (например, с SSD) и помещает их в указанное место в оперативной памяти, и только по завершении всей операции посылает процессору одно прерывание: «Всё готово!». Это освобождает процессор для других задач и резко ускоряет обмен данными.

Но как программам вообще получить доступ к устройству? Для этого ОС предоставляет им унифицированный интерфейс — системные вызовы. Программа не знает и не должна знать, как работает конкретный жёсткий диск. Вместо этого она просто делает системный вызов write(), передавая в него файловый дескриптор (указатель на файл) и данные. Ядро ОС принимает этот запрос, находит нужный драйвер устройства, который уже загружен в память, и поручает ему выполнить операцию. Драйвер — это и есть тот самый специалист-переводчик, который знает все команды конкретной модели устройства. Он общается с устройством через порты ввода-вывода или отображение памяти на устройства, превращая абстрактный запрос write() в конкретные низкоуровневые команды, понятные железу.

Таким образом, управление вводом-выводом — это сложная многоуровневая система, где ОС выступает главным логистом. Она принимает стандартизированные запросы от программ, использует драйверы для их перевода на язык конкретного железа, а затем задействует аппаратные механизмы (прерывания и DMA) для максимально эффективного выполнения этих запросов с минимальной нагрузкой на центральный процессор. Это позволяет нам просто сохранять файлы, не задумываясь о том, как именно вращаются магнитные пластины.

Спасибо за внимание!

Следующий урок:
Как работает компьютер? Часть 76. Файловые системы: как данные организованы на диске?

Если вам интересно копать глубже, разбирать реальные кейсы и получать знания, которых нет в открытом доступе — вам в IT Extra Premium.

Что внутри?
Закрытые публикации: Детальные руководства, разборы сложных тем (например, архитектура высоконагруженных систем, глубокий анализ уязвимостей, оптимизация кода, полезные инструменты и объяснения сложных тем простым и понятным языком).
Конкретные инструкции: Пошаговые мануалы, которые вы сможете применить на практике уже сегодня.
Без рекламы и воды: Только суть, только концентрат полезной информации.
Ранний доступ: Читайте новые материалы первыми.

Это — ваш личный доступ к экспертизе, упакованной в понятный формат. Не просто теория, а инструменты для роста.

👉 Переходите на Premium и начните читать то, о чем другие только догадываются.

👍 Ставьте лайки если хотите разбор других интересных тем.

👉 Подписывайся на IT Extra на Дзен чтобы не пропустить следующие статьи

________________________________________________________________________

👇
Понравилась статья? В нашем Telegram-канале ITextra мы каждый день делимся такими же понятными объяснениями, а также свежими новостями и полезными инструментами. Подписывайтесь, чтобы прокачивать свои IT-знания всего за 2 минуты в день!

IT Extra