Monitor residente - Resident monitor
In informatica , un monitor residente è un tipo di programma software di sistema utilizzato in molti dei primi computer dagli anni '50 agli anni '70. Può essere considerato un precursore del sistema operativo . Il nome deriva da un programma che è sempre presente nella memoria del computer, essendo quindi "residente". Poiché la memoria era molto limitata su quei sistemi, il monitor residente era spesso poco più di uno stub che avrebbe acquisito il controllo alla fine di un lavoro e avrebbe caricato una parte non residente per eseguire la pulizia del lavoro e le attività di configurazione richieste.
Su un computer di uso generale che utilizzava l' input di una scheda perforata , il monitor residente controllava la macchina prima e dopo che ogni scheda di controllo lavoro veniva eseguita, caricava e interpretava ciascuna scheda di controllo e fungeva da sequenziatore di lavoro per le operazioni di elaborazione batch . Il monitor residente può cancellare la memoria dall'ultimo programma utilizzato (ad eccezione di se stesso), caricare programmi, cercare dati di programma e mantenere routine di input-output standard in memoria.
Livelli software di sistema simili erano tipicamente in uso nei primi giorni dei successivi minicomputer e microcomputer prima che acquisissero la potenza per supportare i sistemi operativi completi.
Uso attuale
La funzionalità di monitoraggio residente è presente in molti sistemi integrati, boot loader e varie righe di comando integrate. Le funzioni originali presenti in tutti i monitor residenti sono aumentate con le funzioni attuali che si occupano di hardware di avvio, dischi, Ethernet, controller wireless, ecc. Tipicamente, a queste funzioni si accede utilizzando un terminale seriale o una tastiera fisica e display, se collegati. Tale monitor residente è spesso chiamato debugger, boot loader, interfaccia a riga di comando (CLI), ecc. Il significato originale di monitor residente con accesso seriale o accesso da terminale non è usato frequentemente, sebbene la funzionalità sia rimasta la stessa ed era aumentata.
Le funzioni tipiche di un monitor residente includono l'esame e la modifica di ram e / o ROM (inclusa la flash EEPROM) e talvolta registri di funzioni speciali, la capacità di saltare nel codice a un indirizzo specificato, la capacità di chiamare il codice a un dato indirizzo, la capacità di riempire un intervallo di indirizzi con una costante come 0x00 e molti altri. Le funzioni più avanzate includono il disassemblaggio locale in istruzioni in linguaggio assembly del processore e persino l'assemblaggio e la scrittura nella memoria flash dal codice digitato dall'operatore. Inoltre, il codice può essere scaricato e caricato da varie fonti, e alcuni monitor avanzati supportano tftp, ftp, http ecc., Nonché la formattazione e la lettura di FAT e altri filesystem, tipicamente dalla memoria flash collegata su bus USB o CFcard.
Per i processori incorporati, molti "debugger in-circuit" con modalità solo software utilizzano concetti e funzioni del monitor residente a cui si accede frequentemente da un IDE GUI. Non sono diversi dalle linee di comando del monitor residente con accesso tradizionale tramite linea seriale, ma gli utenti non ne sono consapevoli. Al più tardi, gli sviluppatori e gli utenti avanzati scopriranno queste funzioni di monitoraggio residente incorporato di basso livello durante la scrittura di codice API di basso livello su un host per comunicare con una destinazione incorporata per il debug e il test case del codice in esecuzione.
Diversi microcontrollori attuali hanno monitor seriali residenti o boot loader estesi disponibili come opzioni che devono essere utilizzate dagli sviluppatori. Molti sono open source. Alcuni esempi sono PAULMON2, AVR DebugMonitor e il boot loader e monitor Bamo128 Arduino. In generale, la maggior parte degli attuali monitor residenti per l'elaborazione embedded può essere compilata in base a vari vincoli di memoria, da piccoli e minimalisti a grandi, riempiendo fino al 25% dello spazio di codice disponibile su un processore AVR ATmega328 con 32 kilobyte di memoria flash, per esempio.
In molti casi i monitor residenti possono essere un passo avanti rispetto al "debug printf" e sono molto utili quando si sviluppa con un budget che non consente l'utilizzo di un debugger in-circuit (ICD) hardware appropriato.