procesos: estructura de minixalram/so/clase12.pdfsignal.h define todas las señales ansi an posix...

22
Procesos: Estructura de Minix Dr. Alonso Ramírez Manzanares 30-Sep-2010

Upload: others

Post on 22-Aug-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Procesos: Estructura de Minix

Dr. Alonso Ramírez Manzanares30-Sep-2010

Page 2: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

La estructura interna de MINIX

Está compuesto de 4 etapas.

Page 3: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Capas de Minix

Capa 1: Contiene interrupciones y trampas, realiza la planificación y ofrece un modelo de procesos secuenciales independientes a las capas de arriba. Maneja los aspectos mecánicos de los mensajes: verificar que los destinos sean válidos, ubica buffers de envio y recepción en la memoria física, y copia bits de emisor a receptor.

Page 4: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Capas de MinixCapa 2: Contiene los procesos de entrada salida, uno por cada tipo de dispositivo (discos, impresoras, terminales, red, relojes), conocidos como manejadores de dispositivo. La tareas del sistema es un poco distinta.

La capa 1 y 2 se combinan para formar el programa binario kernel. El kernel y los manejadores de interrupciones tienen más alta prioridad. El código del kernel puede acceder a cualquier parte de la memoria y registro del CPU. La prioridad es cuidada por el microprocesador (despues de 80-286).

Page 5: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Capas de MinixCapa 3: Sus procesos proporcionan servicios útiles a los procesos de usuario. El administrador de memoria ejecuta todas las llamadas al sistema de MINIX (FORK, EXEC y BRK). El sistema de archivos ejecuta llamadas al sistema como READ, MOUNT, y CHDIR. La interpretación de las llamadas al SO está aqui. Se tiene un servidor de archivos y se puede incluir un servidor de red.

Estos servidores son un poco diferentes a procesos de usuario: se incian cuando se incia el sistema y nunca terminan mientras el sistema está activo, tienen prioridad mas alta y si se necesita integrar uno nuevo, hay que recompilar el kernel.

Page 6: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Capas de Minix

Capa 4: Tiene todos los procesos de usuario, shells, editores, compiladores y programas a.out. Los demonios tambien están aquí. Un demonio es un servidor que se ejecuta automáticamente y se ejecuta como proceso de usuario.

Page 7: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Administración de procesos en MINIX

Cuando se enciende la computadora el hardware lee el primer sector de la primera pista del disco, lo coloca en memoria y luego ejecuta el codigo que se encuentra ahi.

Se tiene ahi un programa bootstrap pequeño.

El autoarranque carga un programa boot mas grande que luego carga el SO.

Page 8: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Administración de procesos en MINIX

En el caso de discos duros hay que ver las particiones en la tabla de particiones.

El boot carga el kernel, el administrador de memoria el sistema de archivos y el init (el primer proceso de usuario).

Duranta la fase de inicializacion el kernel inicia las tareas, etc, y los servidores de la capa 3.

Page 9: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Administración de procesos en MINIX

init lee /etc/ttytab o lista de terminales y bifurca un proceso hijo para cada una de esas terminales.

Cada hijo ejecuta /usr/bin/getty que muestra el mensaje y espera el user.

Luego se invoca /usr/bin/login

Si el login es exitoso se invoca un shell ...

O sea que todos los procesos son familiares.

Page 10: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Comunicación entre procesos en MINIX

Hay 3 primitivas para enviar y recibir mensajes:

send(destino,&mensaje);

receive(origen,&mensaje);

send_rec(org_dest,&mensaje);

Envia un mensaje y espera una respuesta del mismo proceso.

Page 11: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Procesos: Estructura de Minix (2)

Dr. Alonso Ramírez Manzanares29-Sep-2009

Page 12: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Comunicación entre procesos en MINIX

Hay 3 primitivas para enviar y recibir mensajes:

send(destino,&mensaje);

receive(origen,&mensaje);

send_rec(dest,&mensaje);

Envia un mensaje y espera una respuesta del mismo proceso.

Page 13: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Comunicación entre procesos en MINIX

Se usa el modelo de cita previa: Cuando un proceso envia un mensaje, este se bloque hasta que el otro ejecuta RECEIVE. Esto es sencillo porque no requiere administración de buffers.

Page 14: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Planificación de procesos en MINIX

Trabaja con un sistema de interrupciones

La capa mas baja oculta las interrupciones convirtíendolas en mensajes.

El planificador de procesos utiliza un sistema de colas multi-nivel de 3 niveles (capas 2, 3 y 4).

Las tareas y servidores se ejecutan hasta que terminan, y los procesos de usuarios se planifican round robin.

Las tareas tiene la prioridad mas alta, luego el admin de memoria y el servidor de archivos, y al final los procesos de usuario.

Page 15: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Planificación de procesos en MINIX

Si no hay nada que ejecutar (en el orden anterior), se ejecuta un proceso IDLE (proceso inactivo del sistema), que es un ciclo que se ejecuta hasta que surge la siguiente interrupción.

Por ejemplo, en los procesadores x86, el proceso idle ejecutará un búcle de comandos HLT (un comando de lenguaje asembler), que causa que la CPU apague muchos componentes internos y espere hasta que arribe un IRQ (interrupt request).

Cada TIC de reloj se verifica si un proceso ha estado por mas de 100 ms y se desaloja (excepto para el administrador de memoria y archivos).

Page 16: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Implementación de Procesos en MINIXEl codigo fuente está en 2 directorios

/usr/include/ (Archivos de cabecera POSIX estándard).

sys/ (cabeceras POSIX adicionales)minix/ (cebeceras utilizadas por el SO)ibm/ (definiciones específicas para IBM PC)

/usr/source/ (código fuente del SO)

kernel/ (capas 1 y 2)

mm/ (administrador de memoria)

fs/ (adminstrador de archivos)

lib/ (proc. de boblioteca, ejemp. open read)

tools/ (programa init)

boot/ (arrancar e instalar MINIX)

Page 17: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

Codigo fuente de los comandos

El codigo fuente de los comandos estandar está en src/commands/

Ver los apéndices del libro!!!

Page 18: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

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.

Page 19: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

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.

Page 20: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

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/

Page 21: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

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.

Page 22: Procesos: Estructura de Minixalram/SO/clase12.pdfsignal.h Define todas las señales ANSI an POSIX (ejemplos, interrupcion, abandonar, matar, etc.). Tambien se define la estructura

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.