Введение
Системное программное обеспечение; предшественник современных операционных систем
В вычислительной технике резидентный монитор — это тип системного программного обеспечения, которое использовалось во многих ранних компьютерах с 1950-х по 1970-е годы. Его можно рассматривать как предшественника операционной системы. Название происходит от программы, которая постоянно находится в памяти компьютера, то есть является резидентной. Резидентный монитор мог очищать память от последней запущенной программы (за исключением самого себя), загружать программы, осуществлять поиск данных программ и поддерживать стандартные процедуры ввода-вывода в памяти.
In computing, a resident monitor is a type of system software program that was used in many early computers from the 1950s to 1970s. It can be considered a precursor to the operating system. The name is derived from a program which is always present in the computer's memory, thus being resident. The resident monitor could clear memory from the last used program (with the exception of itself), load programs, search for program data and maintain standard input output routines in memory.
Текущее использование
Функциональность резидентного монитора присутствует во многих встраиваемых системах, загрузчиках и различных встроенных командных строках. Изначальные функции, присутствующие во всех резидентных мониторах, дополняются современными функциями, работающими с аппаратным обеспечением при загрузке, дисками, Ethernet, беспроводными контроллерами и т.д. Обычно к этим функциям обращаются через последовательный терминал или физическую клавиатуру и дисплей, если они подключены. Такой резидентный монитор часто называют отладчиком, загрузчиком, интерфейсом командной строки (CLI) и т.п. Изначальное значение резидентного монитора с доступом через последовательный порт или терминал используется нечасто, хотя функциональность осталась прежней и была расширена. Типичные функции резидентного монитора включают просмотр и редактирование оперативной памяти и/или ПЗУ (включая flash EEPROM) и иногда специальных функциональных регистров, возможность перехода к коду по указанному адресу, возможность вызова кода по заданному адресу, возможность заполнения диапазона адресов константой, например, 0x00, и другие. Более продвинутые функции включают локальную дизассемблию в инструкции языка ассемблера процессора и даже ассемблирование и запись в flash-память из кода, вводимого оператором. Кроме того, код можно загружать и выгружать из различных источников, а некоторые продвинутые мониторы поддерживают ряд сетевых протоколов для этого, а также форматирование и чтение FAT и других файловых систем, как правило, из flash-памяти на шинах USB или CFcard. Для встраиваемых процессоров многие отладчики с режимом "только программное обеспечение" используют концепции и функции резидентного монитора, к которым часто обращается графический IDE. Они ничем не отличаются от традиционных командных строк резидентного монитора с доступом по последовательной линии, но пользователи об этом не знают. Рано или поздно разработчики и опытные пользователи обнаружат эти низкоуровневые встроенные функции резидентного монитора при написании низкоуровневого API-кода на хосте для связи с встраиваемой целевой системой для отладки и запуска тестовых примеров кода. Некоторые современные микроконтроллеры имеют встроенные последовательные мониторы или расширенные загрузчики, доступные разработчикам в качестве опций. Многие из них имеют открытый исходный код. Примеры включают PAULMON2, AVR DebugMonitor и загрузчик и монитор Bamo128 Arduino. В целом, большинство современных резидентных мониторов для встраиваемых вычислений могут быть скомпилированы с учетом различных ограничений памяти, от небольших и минималистичных до больших, занимая до 25% кодового пространства, доступного на процессоре AVR ATmega328 с 32 килобайтами flash-памяти, например. Во многих случаях резидентные мониторы могут быть более эффективны, чем отладка с помощью printf, и очень полезны при разработке с ограниченным бюджетом, который не позволяет использовать полноценный аппаратный отладчик (ICD).