Monitoraggio di processi e thread di sistema

Metodologia

Il monitoraggio di processi e thread di sistema è quanto mai difficoltoso in Java, per le seguenti ragioni:

Per far fronte a queste limitazioni è possibile uscire dalla JVM, scrivendo del codice nativo (tipicamente C o C++, ma anche in qualsiasi altro linguaggio che usi lo stesso meccanismo di chiamata a funzione) che sarà poi eseguito, con un particolare meccanismo, all'interno del normale codice Java.
Per fare questo gli stessi programmatori della Sun hanno previsto una particolare interfaccia, chiamata JNI (Java Native Interface) per caricare codice nativo sottoforma di DLL (Dynamic Link Library).

Senza entrare nel merito dei meccanismi, si dirà soltanto che con tale espediente è possibile invocare delle primitive di sistema direttamente dal codice Java. Tali primitive, ovviamente, recupereranno informazioni sullo stato dei processi e dei thread nativi in un modo che è peculiare dellla specifica piattaforma (Win32, Solaris, Linux, ...). Questo ovviamente comporta che il codice contenuto nella DLL, nonchè il suo stesso nome e formato , non sono portabili così come il bytecode Java. Per mantenere la portabilità dell'intero programma occorrerà pertanto sviluppare una DLL per ogni piattaforma conosciuta, e rendere la semantica delle funzioni native quanto più possibile trasparente dall'architettura sottostante.

Che cosa misurare

Nel caso in esame, cioè il monitoraggio di processi e thread di sistema, si è sviluppato un pacchetto software compatibile con Windows NT e con tutti i sistemi UNIX di tipo SVR4 (ad esempio Solaris), i cui dettagli verranno analizzati più avanti.
Le informazioni che il monitor è in grado di ottenere sono: