|
MINIX tiene tres tipos de formatos para tres clases de ficheros.
FORMATO DE LOS FICHEROS EJECUTABLES (a.out) Un fichero ejecutable tiene tres partes.
El segmento de datos no inicializados (bss) no está presente en los ficheros ejecutables. Este sistema operativo soporta dos modelos de memoria. MODELO PEQUEÑO - 64K para programa + datos + stack. MODELO SEPARADO ID
Un encabezamiento normal consiste de 8 palabras de 4 bytes (32 bytes) 0:0x04100301L (modelo pequeño), ó 0x04200301L (separado I,D) 1:0x00000020L (encabezamiento de 32 bytes) ó 0x00000030L (encabezamiento de 48 bytes) 2:tamaño del segmento de programa en bytes. 3:tamaño del segmento de inicialización de datos en bytes. 4:tamaño del segmento de datos no inicializados (bss) en bytes. 5:0x00000000L 6:Memoria total asignada al programa. 7:0x00000000L Se admite un encabezamiento de 48 bytes que consiste: 32 bytes (encabezamiento normal) + 16 bytes (son ignorados)
EN EL MODELO PEQUEÑO 6:memoria total = programa + datos + bss + asignación dinámica En el modelo separado ID 6:memoria total = datos + bss + asignación dinámica Asignación dinámica.- es la memoria total reservada para el stack más crecimientos del segmento de datos. La asignación dinámica puede modificarse con el comando chmen que actualiza la palabra 6 del encabezamiento. FORMATO DE UN ARCHIVO El formato de un archivo consiste en una secuencia de pares:
donde los ficheros vienen precedidos por el número mágico: 0177545 El encabezamiento consiste de 26 bytes con los siguientes campos:
Si un fichero tiene un número de bytes impar se le añade un byte cero para que el encabezamiento comience en una dirección par. Las dos palabras de 4 bytes del encabezamiento se almacenan con la palabra de mayor orden primero (por compatibilidad con la versión de 7 UNIX) FORMATO DE LIBRERIA MINIX contiene varias librerías de procedimientos que contienen: - procedimientos utilizados propiamente por el sistema (multiplicaciones, divisiones, etc). - llamadas al sistema (con los mismos parámetros que UNIX). Cada fichero contiene un procedimiento llamable, cada nombre que va a ser visible desde fuera tiene que declararse en una sentencia .define Todas las sentencias .define ocuparán los primeros lugares dentro del fichero. Estas sentencias se generan cuando el compilador C se llama con el flag -LIB Los comandos libpack y libupack, compactan, (eliminan comentarios) y descompactan código ensamblador. |