В информатике « голая машина» (или « голое железо» ) относится к компьютеру, выполняющему инструкции непосредственно на логическом оборудовании без промежуточной операционной системы . Современные операционные системы развивались на разных этапах, от элементарных до современных сложных, высокочувствительных систем, включающих множество сервисов. После разработки программируемых компьютеров (которые не требовали физических изменений для запуска различных программ), но до разработки операционных систем, последовательные инструкции выполнялись на компьютерном оборудовании непосредственно с использованием машинного языка.без какого-либо системного программного обеспечения. Этот подход называют предшественником «голой машины» современных операционных систем. Сегодня это в основном применимо к встроенным системам и микропрограммам, в целом с критичными по времени требованиями к задержке, в то время как обычные программы выполняются системой времени выполнения, наложенной на операционную систему.
Преимущества
Для данного приложения в большинстве случаев реализация на «голом железе» будет работать быстрее, используя меньше памяти и, следовательно, более энергоэффективно. Это связано с тем, что операционным системам, как и любой программе, требуется некоторое время выполнения и объем памяти для запуска, а они больше не нужны на «голом железе». Например, любая аппаратная функция, которая включает в себя входы и выходы, доступна напрямую на голом железе, тогда как та же функция, использующая ОС, должна направлять вызов подпрограмме, потребляя время работы и память. [1]
Недостатки
Для данного приложения программирование на «голом железе» требует больше усилий для правильной работы и является более сложным, поскольку службы, предоставляемые операционной системой и используемые приложением, должны быть повторно реализованы в соответствии с потребностями. Эти услуги могут быть:
- Запуск / загрузка системы (обязательно).
- Управление памятью: хранение кода и данных об аппаратных ресурсах и периферийных устройствах (обязательно).
- Обработка прерываний (если есть).
- Планирование задач, если приложение может выполнять более одной задачи.
- Управление периферией (если есть).
- Управление ошибками / неисправностями, если это необходимо и / или необходимо.
Отладка программы на «голом железе» затруднена, поскольку:
- Уведомления об ошибках программного обеспечения и управление сбоями отсутствуют, если они не были реализованы и проверены.
- Стандартного вывода нет, если он не реализован и не проверен.
- Машина, на которой написана программа, не может быть той же, на которой она выполняется, поэтому целевым оборудованием является либо эмулятор / симулятор, либо внешнее устройство. Это заставляет настроить способ загрузки программы на «голое железо» в целевой объект ( мигает ), запустить выполнение программы и получить доступ к целевым ресурсам.
Программирование на «чистом металле» обычно выполняется с использованием языков, близких к аппаратным, таких как C ++, [2] C или язык ассемблера , которые обычно сложнее освоить. [3] Все предыдущие проблемы неизбежно означают, что программы на «голое железо» очень редко переносимы .
Примеры
Ранние компьютеры
Ранние компьютеры, такие как PDP-11 , позволяли программистам загружать программы, представленные в машинном коде , в ОЗУ . В результате работа программы может отслеживаться с помощью индикаторов , а вывод выводиться с магнитной ленты , печатающих устройств или хранилища .
Встроенные системы
Программирование на голых машинах остается распространенной практикой во встроенных системах , где микроконтроллеры или микропроцессоры часто загружаются непосредственно в монолитное специализированное программное обеспечение без загрузки отдельной операционной системы. Такое встроенное программное обеспечение может различаться по структуре, но простейшая форма может состоять из бесконечного основного цикла , вызывающего подпрограммы, отвечающие за проверку входных данных, выполнение действий и запись выходных данных.
Разработка
Подход к использованию «голых» машин открыл путь для новых идей, которые ускорили эволюцию разработки операционных систем .
Такой подход выявил необходимость в следующем:
- Устройства ввода / вывода (I / O) для удобного ввода кода и данных:
- Были созданы устройства ввода, такие как клавиатуры . Это было необходимо, поскольку ранние компьютеры часто имели уникальные, тупые и запутанные устройства ввода .
Например, программы загружались в PDP-11 вручную с помощью ряда тумблеров на передней панели устройства. Клавиатуры намного превосходят эти старинные устройства ввода, поскольку гораздо быстрее набирать код или данные, чем использовать тумблеры для ввода их в машину. Позднее клавиатуры станут стандартом практически для всех компьютеров, независимо от марки и цены.
- Устройства вывода, такие как компьютерные мониторы , позже будут широко использоваться и используются по сей день. Они показали себя намного удобнее по сравнению с более ранними устройствами вывода , такими как набор индикаторов на Altair 8800 , которые указывали на состояние компьютера.
Компьютерные мониторы также могут легко отображать вывод программы в удобной для пользователя форме. Например, нужно хорошо знать конкретный ранний компьютер и его систему отображения, состоящую из массива огней, чтобы даже начать понимать состояние аппаратного обеспечения компьютера. Напротив, любой, кто умеет читать, должен понимать хорошо спроектированный пользовательский интерфейс в современной системе, не имея при этом ничего знать об аппаратном обеспечении компьютера, на котором выполняется программа.
- Более быстрые, дешевые и более широко доступные вторичные запоминающие устройства для хранения программ в энергонезависимой памяти . Это было необходимо, так как было неудобно набирать код вручную для полезного использования компьютера, который терялся при каждой перезагрузке из-за того, что система сохраняла его в энергозависимой памяти .
- Требование удобного языка высокого уровня и переводчика такого языка высокого уровня в соответствующий машинный код.
- Компоновщики для компоновки библиотечных модулей, которые могут быть написаны пользователем или уже доступны в системе.
- Загрузчики для загрузки исполняемых файлов в оперативную память из вторичного хранилища .
- Подходящие устройства ввода-вывода , такие как принтеры, для создания печатной копии вывода, создаваемого программами.
Смотрите также
- Голые машинные вычисления
- Barebone компьютер
- Автономная программа
Рекомендации
- ↑ Гордон, Авель; Амит, Надав; Хар'Эль, Надав; Бен-Иегуда, Мули; Ландау, Алекс; Шустер, Ассаф; Цафрир, Дан (2012). «ЭЛИ» . Уведомления ACM SIGPLAN . 47 (4): 411–422. DOI : 10.1145 / 2248487.2151020 .
- ^ https://arobenko.gitbooks.io/bare_metal_cpp/content/
- ^ Нужна академическая ссылка
- Silberschatz, A .; Гэлвин, Питер; Ганье, Грег (2003). Понятия операционной системы . ISBN 9780471250609.