Голая машина

Компьютер без операционной системы

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

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

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

Недостатки

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

  • Загрузка системы (обязательно)
  • Управление памятью: хранение местоположения кода и данных об аппаратных ресурсах и периферийных устройствах (обязательно)
  • Обработка прерываний (если таковые имеются)
  • Планирование задач, если приложение может выполнять более одной задачи
  • Управление периферийными устройствами (если есть)
  • Управление ошибками, если это необходимо или желательно

Отладка программы на «голом железе» затруднена по следующим причинам:

  • Уведомления об ошибках программного обеспечения и управление неисправностями отсутствуют, если они не были реализованы и проверены.
  • Стандартного вывода не существует, если он не был реализован и проверен.
  • Машина, на которой написана программа, не может быть той же, на которой она выполняется, поэтому целевое оборудование — это либо эмулятор /симулятор, либо внешнее устройство. Это заставляет настроить способ загрузки bare-metal программы на цель ( прошивку ), запустить выполнение программы и получить доступ к целевым ресурсам.

Программирование на голом железе обычно выполняется с использованием языка, близкого к аппаратному, например, 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 г. .

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

  • Зильбершатц, А.; Гэлвин, Питер; Ганье, Грег (2003). Концепции операционных систем . Wiley. ISBN 9780471250609.
Взято с "https://en.wikipedia.org/w/index.php?title=Голая_машина&oldid=1230469800"