Al escribir programas tradicionales en Solaris, debe utilizar un compilador para convertir el programa del código fuente a código de objeto que pueda utilizar. Al utilizar el comando dtrace, está llamando al compilador del lenguaje D utilizado anteriormente para escribir el programa hello.d. Una vez compilado el programa, se envía al núcleo del sistema operativo para que DTrace lo ejecute. A continuación, los sondeos a los que se les ha asignado un nombre en el programa se habilitan, y el proveedor correspondiente realiza la instrumentación necesaria para activarlos.
Toda la instrumentación que se realiza en DTrace es completamente dinámica: los sondeos se habilitan de forma discreta sólo cuando se utilizan. No hay ningún código instrumentado presente para los sondeos inactivos, por lo que el sistema no experimenta ningún tipo de degradación del rendimiento al no utilizar DTrace. Después de completar el experimento y salir de dtrace, todos los sondeos utilizados se deshabilitan automáticamente y se elimina su instrumentación, devolviendo el sistema a su estado original exacto. Aparentemente, no existe ninguna diferencia entre un sistema en el que DTrace no esté activo y otro en el que no se haya instalado el software de DTrace.
La instrumentación de cada sondeo se realiza dinámicamente en el sistema operativo que se esté ejecutando en vivo o en los procesos de usuario que seleccione. El sistema no se detiene temporalmente ni entra en modo inactivo de ninguna forma; además, el código de instrumentación sólo se agrega para los sondeos que se hayan habilitado. Como resultado, el efecto de los sondeos en el uso de DTrace se limita exactamente a lo que ha solicitado que haga esta aplicación: no se realiza ningún seguimiento de datos ajenos ni se activa ningún gran "conmutador de seguimiento"; toda la instrumentación de DTrace está diseñada para ser lo más eficaz posible. Estas funciones le permiten utilizar DTrace en producción para resolver problemas auténticos en tiempo real.
La estructura de DTrace también admite un número arbitrario de clientes virtuales. Puede ejecutar tantos experimentos y comandos simultáneos de DTrace como desee, con la única limitación de la capacidad de memoria del sistema; los comandos funcionan todos de forma independiente con la misma instrumentación subyacente. Esta misma función también permite que múltiples usuarios distintos del sistema saquen provecho simultáneamente de DTrace: los programadores, los administradores y el personal de mantenimiento pueden trabajar conjuntamente o en distintos problemas del mismo sistema mediante DTrace, sin interferir unos con otros.
A diferencia de los programas escritos en C y C++ y similar a los programas escritos con el lenguaje de programación JavaTM, los programas D de DTrace se compilan en un formato intermedio seguro que se utiliza para la ejecución cuando se activan los sondeos. Este formato intermedio se valida por motivos de seguridad cuando el software del núcleo de DTrace examina por primera vez el programa. El entorno de ejecución de DTrace también administra cualquier error de tiempo de ejecución que pueda producirse durante la ejecución del programa D, incluido la división por cero o la anulación de las referencias de memoria no válida y otros errores, y le informa de ellos. Como resultado, no podrá nunca crear un programa peligroso que pueda provocar que DTrace dañe de forma accidental el núcleo de Solaris o uno de los procesos que se ejecutan en el sistema. Estas funciones de seguridad le permiten utilizar DTrace en un entorno de producción sin necesidad de preocuparse de que se produzcan bloqueos o daños en el sistema. Si comete un error de programación, DTrace le informará del error y deshabilitará la instrumentación. A continuación, podrá corregir el error e intentarlo de nuevo. Las funciones de depuración y elaboración de informes de errores de DTrace se describen más adelante en este manual.
El siguiente diagrama muestra los diferentes componentes de la arquitectura de DTrace, incluidos los proveedores, los sondeos, el software del núcleo de DTrace y el comando dtrace.
Ahora que conoce cómo funciona DTrace, volvamos al recorrido por el lenguaje de programación D y comencemos a escribir algunos programas más interesantes.