Procesos: Estructura de Minix (3) Dr. Alonso Ramírez Manzanares 7-Oct-2010 Ejemplos de archivos de cabecera (ver el libro) string.h Definición de funciones de cadena. signal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura sigaction en linea 769 usada en funcion 797. fcntl.h para las llamadas open() y fcntl(). stdlib.h Funciones comunes (¿cuál es la diferencia entre malloc () y calloc()? ). termios.h Para el control de las terminales TTY (Teletypewriter), habilitar echo 1152, definir la veocidad de envio de info (1184), tamaño de ventana en 1297. a.out.h define el formato de los archivos executables de usuario (línea 1400), ver número magico en 1426. Kernel Cuando MINIX se compila, todos los archivos de /kernel, /mm y /fs generan archivos objeto, los cuales se junta para formar los executable kernel, mm y fs. Algo similar con init en /src/tools. El binario del SO esta compuesto por la concatenación (lo concatena la utilería installboot) de los anteriores que podrá cargar y ejecutar el programa monitor de arranque. Organización de la memoria, despues de desconcatenar y cargar el binario del SO. Haciéndolo muy reducido, puede caber en 640K de memoria!! Tenemos 3 o más programas independientes que se comunican por mensajes. Archivos de cabecera Los archivos de cabecera de programas de usuario estan en /usr/include/ Para programas de sistema usamos cabeceras en /usr/include/sys/ Ejemplos de archivos de cabecera (ver el libro) ansi.h prueba si el compilador cumple con requisitos de Standar C. limits.h Define tamaños de tipos del lenguaje (ejemplo: tamaño máximo del path de un archivo [172], número de archivos abiertos de un proceso [16], etc). errno.h números de error devueltos (negativos para sistema y positivos para programas de usuario). unistd.h constantes requeridas por POSIX y prototipos de funciones importantes (ejemplo: def de in/out std). También ver def. de size_t y ssize_t en linea 405. Aqui estan declarados los prototipos de las llamadas al SO. Ejemplos de archivos de cabecera (ver el libro) string.h Definición de funciones de cadena. signal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura sigaction en linea 769 usada en funcion 797. fcntl.h para las llamadas open() y fcntl(). stdlib.h Funciones comunes (¿cuál es la diferencia entre malloc () y calloc()? ). termios.h Para el control de las terminales TTY (Teletypewriter), habilitar echo 1152, definir la veocidad de envio de info (1184), tamaño de ventana en 1297. a.out.h define el formato de los archivos executables de usuario (línea 1400), ver número magico en 1426. Archivos de cabecera de sistema sys/types.h muchos tipos de datos empleados por minix (ver linea 1653, # de links y confrontar con limits.h) sys/ioctl.h macros para operaciones de control de dispositivos (incluso para tarjeta de sonido en línea 1922) Archivos de cabecera de sistema sys/sigcontext.h define la estructura sigcontext, usada por la llamada sigreturn, usada por el mecanismo que atrapa señales. Esto se define dependiento de cada tipo de microprocesador. sys/stat.h En 2300, define la estructura de información de los archivos. sys/dir.h define la estructura de los archivos que son directorios. sys/wait.h Macros relacionadas con wait(), por ejemplo define el regreso por izquierda dependiendo de la terminación del proceso. Archivos de cabecera de MINIX /include/minix/ config.h ahi se define la maquina donde va a correr. Aqui podemos hacer cambios y recompilar el sistema. Por ejemplo, definir la máquina. El compilador el es Amsterdam Compiler Kit __ACK__. Este compilador define el tamaño de la palabra en bytes en 2627 (ver como se usa esto en la línea 2647). Lineas más editadas en la linea 2671, se ve como se habilitan y deshabiltan servicios. Archivos de cabecera de MINIX /include/minix/ const.h Uso de Extern, el cual podemos definir y tambien redefinirlo como una cadena nula. Tenemos cosas como max min en 2949, directorios en 2981, etc. type.h, la definición de mensaje en lineas 3135, usando union (m_type lo veremos más adelante). El tamaño de la estructura puede cambiar dependiendo del tamaño de los datos primitivos Archivos de cabecera de MINIX /include/minix/ callnr.h cuando se hace llamada al sistema, se envia un mensaje al MM o al FS, el número de llamada se define aqui (linea 3400). com.h definiciones empleadas en mensajes del MM y el FS a las tareas de entrada/salida (E/S). También se definen los números de las tareas (negativos, para diferenciarlos de los procesos). También se definen los tipos de mensajes, ejemplo, GET_TIME (linea 3604) que se usa en la estructura de mensaje en 3137 en type.h.