3
Ejecución de binarios de otros sistemas operativos

Ejecución de binarios de otros sistemas operativos

Embed Size (px)

Citation preview

Page 1: Ejecución de binarios de otros sistemas operativos

Ejecución de binarios de otros sistemas operativos

Page 2: Ejecución de binarios de otros sistemas operativos

Linux soporta la carga de aplicaciones binarias de usuario desde disco. Más interesantemente, los binarios pueden ser almacenados en formatos diferentes y la respuesta del sistema operativo a los programas a través de las llamadas al sistema pueden desviarla de la norma (la norma es el comportamiento de Linux) tal como es requerido, en orden a emular los formatos encontrados en otros tipos de UNIX (COFF, etc.) y también emular el comportamiento de las llamadas al sistema de otros tipos (Solaris, UnixWare, etc.). Esto es para lo que son los dominios de ejecución y los formatos binarios.Cada tarea Linux tiene una personalidad almacenada en su ##task_struct## (##p->personality##).

Las personalidades actualmente existentes (en el núcleo oficial o en el parche añadido) incluyen soporte para FreeBSD, Solaris, UnixWare, OpenServer y algunos otros sistemas operativos populares. El valor de ##current->personality## es dividido en dos partes:~1) tres bytes altos - emulación de fallos: ##STICKY_TIMEOUTS##, ##WHOLE_SECONDS##, etc.~1) byte bajo - personalidad propia, un número único.

Page 3: Ejecución de binarios de otros sistemas operativos

Cambiando la personalidad, podemos cambiar la forma en la que el sistema operativo trata ciertas llamadas al sistema, por ejemplo añadiendo una ##STICKY_TIMEOUT## a ##current->personality## hacemos que la llamada al sistema select (2) preserve el valor del último argumento (timeout) en vez de almacenar el tiempo no dormido. Algunos programas defectuosos confían en sistemas operativos defectuosos (no Linux) y por lo tanto suministra una forma para emular fallos en casos donde el código fuente no está disponible y por lo tanto los fallos no pueden ser arreglados.