В вычислительной технике резидентный монитор — это тип системного программного обеспечения, которое использовалось во многих ранних компьютерах с 1950-х по 1970-е годы. Его можно считать предшественником операционной системы . [1] Название происходит от программы, которая всегда присутствует в памяти компьютера, таким образом, являясь резидентной . [2] Поскольку память в этих системах была очень ограничена, резидентный монитор часто был не более чем заглушкой, которая получала управление в конце задания и загружала нерезидентную часть для выполнения требуемых задач очистки и настройки задания.
На компьютере общего назначения, использующем ввод с перфокарт , резидентный монитор управлял машиной до и после выполнения каждой контрольной карты задания , загружал и интерпретировал каждую контрольную карту и действовал как секвенсор заданий для операций пакетной обработки . [3] Резидентный монитор мог очищать память от последней использованной программы (за исключением себя), загружать программы, искать данные программ и поддерживать стандартные процедуры ввода-вывода в памяти. [2]
Похожие уровни системного программного обеспечения обычно использовались в первые дни поздних мини- и микрокомпьютеров, прежде чем они обрели мощность, необходимую для поддержки полноценных операционных систем. [2]
Функциональность резидентного монитора присутствует во многих встроенных системах, загрузчиках и различных встроенных командных строках. Первоначальные функции, присутствующие во всех резидентных мониторах, дополнены современными функциями, связанными с оборудованием времени загрузки, дисками, Ethernet, беспроводными контроллерами и т. д. Обычно доступ к этим функциям осуществляется с помощью последовательного терминала или физической клавиатуры и дисплея, если они подключены. Такой резидентный монитор часто называют отладчиком, загрузчиком, интерфейсом командной строки (CLI) и т. д. Первоначальное значение резидентного монитора с последовательным или терминальным доступом используется нечасто, хотя функциональность осталась прежней и была расширена.
Типичные функции резидентного монитора включают проверку и редактирование RAM и/или ROM (включая флэш-EEPROM) и иногда регистров специальных функций, возможность перехода в код по указанному адресу, возможность вызова кода по указанному адресу, возможность заполнения диапазона адресов константой, такой как 0x00, и несколько других. Более продвинутые функции включают локальную разборку в инструкции языка ассемблера процессора и даже сборку и запись во флэш-память из кода, набранного оператором. Кроме того, код можно загружать и выгружать из различных источников, и некоторые продвинутые мониторы поддерживают ряд сетевых протоколов для этого, а также форматирование и чтение FAT и других файловых систем, как правило, из флэш-памяти на шинах USB или CFcard.
Для встраиваемых процессоров многие внутрисхемные отладчики с программным режимом используют концепции и функции резидентного монитора, к которым часто обращается GUI IDE. Они не отличаются от традиционных командных строк резидентного монитора с доступом по последовательной линии, но пользователи об этом не знают. Позднее разработчики и продвинутые пользователи обнаружат эти низкоуровневые встроенные функции резидентного монитора при написании низкоуровневого API-кода на хосте для связи со встроенной целью для отладки и запуска тестового случая кода.
Несколько современных микроконтроллеров имеют резидентные последовательные мониторы или расширенные загрузчики, доступные в качестве опций для использования разработчиками. Многие из них имеют открытый исходный код. Вот некоторые примеры: PAULMON2, [4] AVR DebugMonitor [5] и загрузчик и монитор Bamo128 Arduino . [6] В целом, большинство современных резидентных мониторов для встраиваемых вычислений могут быть скомпилированы в соответствии с различными ограничениями памяти, от небольших и минималистичных до больших, заполняя до 25% пространства кода, доступного на процессоре AVR ATmega328 с 32 килобайтами флэш-памяти, например.
Во многих случаях резидентные мониторы могут стать шагом вперед по сравнению с отладкой printf и очень полезны при разработке в условиях ограниченного бюджета, который не позволяет использовать полноценный аппаратный внутрисхемный отладчик (ICD).