2008-09-19 16 views

Respuesta

13

Antes de los 6,0 VxWorks versión única entorno compatible núcleo de ejecución de las tareas y no apoyó procesos, que es el tradicional entorno de ejecución de aplicaciones en OS como Unix o Windows. Las tareas tienen un punto de entrada que es la dirección del código para ejecutar como una tarea. Esta dirección corresponde a a C o función de montaje. Puede ser un símbolo llamado "main" pero existen suposiciones de lenguaje C/C++ sobre la función main() que no son compatibles en el entorno kernel (en particular, el manejo tradicional de los parámetros argc y argv). Además, antes de VxWorks 6.0, todas las tareas ejecutan código kernel. Puede imaginar el kernel como un repositorio común de código, todos vinculados entre sí y luego verá que no puede tener varios símbolos del mismo nombre ("principal") ya que esto crearía colisiones de nombres.

Ahora esto es exacto solo si vincula el código de su aplicación a la imagen del kernel . Si descargara el código de la aplicación, el cargador del módulo aceptará cargar varios módulos, cada uno con una rutina main() . Sin embargo, el último símbolo "principal" registrado en la tabla de símbolos del sistema es el único al que se puede acceder a través del shell de destino. Si desea iniciar tareas que ejecutan el código de uno de los primeros módulos cargados , tendrá que usar las direcciones de la función main() anterior. Esto es posible pero no conveniente. Es mucho más práctico dar nombres diferentes a los puntos de entrada de tareas (puede ser como "xxxStart" donde "xxx" es un nombre significativo para lo que se supone que debe hacer la tarea ).

Comenzando con VxWorks 6.0, el sistema operativo admite un entorno de proceso. Esto significa, entre muchas otras cosas, que puede tener una rutina main() tradicional y que sus parámetros argc y argv se manejan correctamente, y que el código de la aplicación se ejecuta en un contexto (contexto de usuario) que es diferente desde el contexto del núcleo, asegurando así el aislamiento entre el código de la aplicación (que puede ser escamosa) y el código del kernel (que no se supone que es escamosa). PAD

Cuestiones relacionadas