Publiqué esta pregunta en Stack Overflow hoy porque el ciclo de vida completo de un programa simple es interesante.
Seguiré actualizando la publicación usando respuestas / comentarios para hacerla más completa y corregir mi error. Seguramente votaré a favor de cualquier respuesta / comentario que tenga sentido. Por favor vote o publique una respuesta / comentario para ayudar. ¡Muchas gracias!
Enlace de pregunta: http://stackoverflow.com/q/16311867/127859
El siguiente es EL programa HelloWorld que todo el mundo conoce.
Está compilado en un código de bytes como el siguiente.
El código de bytes no se puede leer, pero podemos usar javap -classpath. -c HelloWorld para ver mnemónicos como los siguientes.
Luego se carga, vincula e inicializa en JVM.
Dado que solo tiene un subproceso, supongamos que es el subproceso izquierdo en el siguiente área de datos en tiempo de ejecución de JVM.
JVM hace las instrucciones x86.
Los subprocesos de JVM son subprocesos a nivel de usuario, por lo que se correlacionarán con el kernel. En Ubuntu, es un mapeo uno a uno como el siguiente:
¿Cuál es la función del sistema operativo para este programa en particular?
JVM está encima de gllibc, syscalls. io driver in os será responsable de imprimir palabras en la consola. Las llamadas al sistema relacionadas con io deben implementarse en el subsistema io en os.
¿Qué sigue en Arquitectura?
Obtener instrucciones, decodificar, ejecutar, acceder a la memoria, volver a escribir en MIPS de 5 pasos.