4.5.1 Ejecución de 
binarios de otros SO
 
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. 
 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.
451

451

  • 1.
    4.5.1 Ejecución de binarios de otros SO
  • 2.
     Linux soportala 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.  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.