stringtranslate.com

Голая машина

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

Преимущества

Для конкретного приложения в большинстве случаев реализация на «голом железе» будет работать быстрее, используя меньше памяти и, следовательно, более энергоэффективной. Это связано с тем, что операционным системам, как и любой программе, для работы требуется определенное время выполнения и объем памяти, а на «голом железе» они больше не нужны. Например, любая аппаратная функция, включающая входы и выходы, доступна напрямую на «голом железе», тогда как та же функция, использующая ОС, должна направлять вызов подпрограмме, потребляя время работы и память. [1]

Недостатки

Для конкретного приложения программирование на «голом железе» требует больше усилий для правильной работы и является более сложным, поскольку службы, предоставляемые операционной системой и используемые приложением, должны быть повторно реализованы в соответствии с потребностями. Эти услуги могут быть:

Отладка «голой» программы затруднена, поскольку:

Программирование на «голом железе» обычно выполняется с использованием языка, близкого к аппаратному, такого как Rust , C++ , C , ассемблер , или даже для небольших объемов кода или непосредственно машинного кода очень новых процессоров . [2] Все предыдущие проблемы неизбежно означают, что программы на «голом железе» очень редко являются переносимыми .

Примеры

Ранние компьютеры

Ранние компьютеры, такие как PDP-11 , позволяли программистам загружать программу, представленную в машинном коде , в ОЗУ . Итоговую работу программы можно контролировать с помощью индикаторов , а выходные данные получать с магнитной ленты , устройств печати или хранилища .

Встроенные системы

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

Разработка

Подход к использованию голых машин проложил путь новым идеям, которые ускорили эволюцию разработки операционных систем .

Этот подход выявил необходимость в следующем:

Например, программы в PDP-11 загружались вручную, с помощью ряда тумблеров на передней панели устройства. Клавиатуры намного превосходят эти старинные устройства ввода, поскольку набирать код или данные будет гораздо быстрее, чем использовать тумблеры для ввода их в машину. Позже клавиатуры станут стандартом почти для каждого компьютера, независимо от марки и цены.

Компьютерные мониторы также могут легко отображать выходные данные программы в удобной для пользователя форме. Например, нужно было хорошо знать конкретный ранний компьютер и его систему отображения, состоящую из множества индикаторов, чтобы хотя бы начать понимать состояние аппаратного обеспечения компьютера. Напротив, любой, кто умеет читать, должен быть в состоянии понять хорошо продуманный пользовательский интерфейс современной системы, не зная ничего об аппаратном обеспечении компьютера, на котором запускается программа.

Смотрите также

Рекомендации

  1. ^ Гордон, Абель; Амит, Надав; Хар'Эл, Надав; Бен-Иегуда, Мули; Ландау, Алекс; Шустер, Ассаф; Цафрир, Дэн (2012). «ЭЛИ» . Уведомления ACM SIGPLAN . 47 (4): 411–422. дои : 10.1145/2248487.2151020.
  2. ^ «Практическое руководство по Bare Metal C++» . Проверено 16 декабря 2022 г.

дальнейшее чтение