La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

MINIX3 INTRODUCCION Cátedra: Diseño e Implementación de Sistemas Operativos UTN-FRSF Tomado de: Operating Systems Design and Implementation, Third.

Presentaciones similares


Presentación del tema: "MINIX3 INTRODUCCION Cátedra: Diseño e Implementación de Sistemas Operativos UTN-FRSF Tomado de: Operating Systems Design and Implementation, Third."— Transcripción de la presentación:

1 MINIX3 INTRODUCCION Cátedra: Diseño e Implementación de Sistemas Operativos UTN-FRSF Tomado de: Operating Systems Design and Implementation, Third Edition

2 Estructura de MINIX3

3 Estructura de MINIX3 KERNEL
Es la capa más baja encargada de gestionar procesos y las transiciones entre los estados READY, RUNNING y BLOCKED Implementa las primitivas básicas de IPC (send y receive) verificando la legalidad de los destinatarios, de los espacios de memoria de los buffers, verificación de Bloqueos y de copiar los mensajes. Gestión de interrupciones de E/S utilizando instrucciones privilegiadas (modo kernel)

4 Estructura de MINIX3 CLOCK TASK: Es un Device Driver de un dispositivo de E/S denominado Timer que genera señales de interrupcione periódicas. Solo interacciona con el Kernel. SYSTEM TASK: Responsable de servir las Kernel Calls, utilizadas por los Device Drivers en modo Usuario para llevar a cabo operaciones privilegiadas. Ejemplo de estas operaciones son la escritura/lectura en puertos de E/S, la copia de datos entre distintos espacios de direcciones, etc. CLOCK TASK & SYSTEM TASK: Ambas son compiladas en conjunto y comparten el espacio de direcciones del Kernel. Ambas son planificadas como procesos separados.

5 Estructura de MINIX3 DEVICE DRIVERS (DD)
Son responsables de la gestión de dispositivos de E/S. Uno DD por cada tipo de Dispositivo Estan implementados como procesos independientes. Deben solicitar operaciones privilegiadas a la SYSTEM TASK a través de Kernel Calls.

6 Estructura de MINIX3 SERVIDORES
PROCESS MANAGER (PM): El PM es responsable de servir las System Calls relacionadas con la creación y finalización de procesos tales como el fork, exec y exit. Tambien aquellas relacionadas a señales y gestión de memoria. FILE SYSTEM (FS): El FS es responsible de servir las System Calls relacionadas con las operaciones de sistemas de archivos, directorios, archivos, tuberias, etc.

7 Estructura de MINIX3 SERVIDORES
INFORMATION SERVER (IS): Responsable de la gestión de tareas tales como brindar información sobre el estado de DD y Servers. REINCARNATION SERVER (RS): Responsable de arrancar o rearrancar DD que no fueron cargados al mismo tiempo que el Kernel. NETWORK SERVER (INET): Implementa los protocolos de comunicaciones de redes. Es opcional.

8 Secuencia de Booteo Al encender el equipo, la PC busca un disco con el número mágico (0xAA55) en la posición 510 bytes de su primer sector La BIOS copia éste primer sector de la primer pista del disco de booteo en la memoria (posición LOADOFF) y comienza a ejecutar el codigo que allí se encuentra (masterboot.s) En un diskette es el programa bootstrap que luego carga el programa de booteo. En el Disco Rígido el primer sector contiene un pequeño programa (masterboot.s) y la Tabla de Particiones. Esto forma el Master Boot Record.

9 Secuencia de Booteo

10 Secuencia de Booteo El MBR tiene indicada la partición activa.
La partición activa contiene un programa de booteo propio al igual que un diskette (bootblock.s) el que es responsible de cargar el boot Monitor en BOOTSEG y ejecuta BOOTSEG:BOOTOFF Los archivos boothead.s, boot.c, bootimage.c, y rawfs.c constituyen el boot Monitor. Los CD-ROMs pueden cargar varios sectores en memoria para comenzar con el proceso de booteo. Tipicamente desde un CD-ROM se carga una copia exacta el diskette de booteo el cual es copiado en memoria y utiliza un disco RAM.

11 Secuencia de Booteo El programa de booteo de MINIX 3 espera un archivo de multiples partes y va cargando esas partes en la memoria. Esta es al imagen de booteo. El Kernel + Clock Task + System Task Process Manager File System Disk Driver Reincarnation Server RAM disk Init

12 Arbol de Procesos

13 Secuencia de Booteo

14 Secuencia de Booteo El primer proceso de “usuario” es init (PID 1), pero no es el primer proceso “en espacio de usuario”. El primer proceso de espacio de usuario es el Process Manager (PID 0). Init es hijo del Reincarnation Server (RS) Init ejecuta el script /etc/rc el cual carga los Device Drivers y Servers que no fueron cargados durante el proceso de Booteo (generalmente desde /sbin). Uno de los primeros programas que se carga es service que es una interface en modo usuario del RS

15 Secuencia de Booteo El RS toma programas ordinarios y los convierte en procesos del sistema. Al final init lee el archivo /etc/ttytab, el cual dispone de la lista de todas las posibles terminales e init hace un fork por cada una de las terminales listadas. Normalmente, cada proceso es /usr/bin/getty, que imprime un mensaje a la espera del ingreso del nombre de usuario Luego se llama a /usr/bin/login con el nombre como primer argumento y este verifica la contraseña según especifica /etc/passwd Después del login, se ejecuta el proceso que se ha especificado en el /etc/passwd, usualmente una shell

16 Secuencia de Booteo

17 Secuencia de Booteo

18 IPC Comunicación con Mensajes (Rendevous)
send(): Cuando un proceso envia un mensaje a otro que no lo está esperando el emisor se bloquea (RUNNING->BLOCKED) receive(): Cuando un proceso intenta recibir un mensaje que todavia no le fue enviado el receptor se bloquea (RUNNING->BLOCKED) sendrec(): Resume un send() y un receive() en una única primitiva produciendo así un solo par de cambio de contexto USER>KERNEL>USER

19 IPC notify(dest): Permite notificar que algo importante ha sucedido. Es una primitiva NO BLOQUEANTE y por lo tanto no requiere que el proceso destino esté haciendo un receive(). Con solo un simple bit se indica que hay una notificación pendiente. Cada proceso tiene un bitmap de notificaciones pendientes el cual es verificado la siguiente vez que el destinatario realiza una operación receive(). Hay un bit por cada proceso del sistema. Cuando la notificación es generada para informar una interrupción, el bitmap de todas las posibles fuentes de interrupción es incluido en el mensaje.

20 Planificación de Procesos
En cada interrupción o finalización de proceso, el kernel invoca al planificador (preemptive) MINIX3 utiliza 16 colas de prioridades

21 Planificación de Procesos
Clock Task y System Task se ubican en las colas de máximas prioridades. Device Drivers en colas se ubican en las colas de prioridades debajo de máximas prioridades. Los Servers se ubican en las colas de prioridades por debajo de los DD y por encima de las de Usuarios. Los procesos de Usuario se ubican en colas de prioridades intermedias. En la cola de menor prioridad solo se ubica el proceso IDLE que solo ejecuta cuando no hay nada mas por hacer.

22 Planificación de Procesos
Para los procesos de usuarios se puede fijar un quantum (timeslice). Los procesos que consumen su quantum son reinsertados al final de la cola Los que se bloquean son reinsertados luego a la cabeza de la cola de READY correspondiente a la prioridad con un quantum igual al remanente que disponían antes de bloquearse. Tasks, DD y Servers ejecutarán hasta bloquearse aunque tienen un quantum muy superior al requerido a los efectos de implementar un mecanismo de watchdog por mal funcionamiento.

23 Planificación de Procesos
Cuando un proceso se bloquea (dequeue()) esperando una E/S o un servicio, se puede ejecutar otro proceso. Cuando el requerimiento es satisfecho, el proceso bloquado se pone en estado LISTO (enqueue()). El reloj genera interrupciones periódicas en las cuales verifica si se ha vencido el quantum de un proceso de usuario en ejecución. El kernel oculta las interrupciones transformandolas en transferencias de mensajes hacia las Tareas.

24 Organización del Código
/usr/include/ /arpa: definiciones de tipos de datos IP /ibm: definiciones específicas para IBM PC /minix: headers del Sistema Operativo /net: definiciones relacionadas a Ethernet/IP /netinet: definiciones relacionadas direcciones IP /sys: POSIX headers

25 Organización del Código
/usr/src/ /boot: El código para bootear MINIX3. /drivers: layer 2 (device drivers discos, consola, etc.). /etc /include /kernel: layer 1 (planificación, IPC, clock y system tasks). /lib: código de procedimientos de bibliotecas(open, read, etc). /man /servers: layer 3 (process manager, file system, etc). /test /tools: scripts para compilar el kernel de MINIX3 /commands

26 Organización del Código
Makefile Cada directorio del arbol de códigos fuentes contiene un archivo Makefile Los Makefiles son utilizados por la aplicación make. Make controla la compilación de archivos de uno o mas directorios Permite ahorrar tiempo compilando solo aquellos fuentes modificados desde la última compilación.

27 Organización de Memoria

28 Compilación de MINIX 3 Si ejecutamos “make” dentro del directorio scr/tools aparecen todas las opciones disponibles para compilar MINIX 3. “make install” es una opción habitual para compilar MINIX 3

29 Compilación de MINIX 3 Copia src/include en /usr/include.
Genera archivos objetos de src/kernel y algunos subdirectorios de src/drivers y src/server. Todos los archivos objetos de src/kernel se montan juntos para generar un único ejecutable “kernel”. Todos los archivos objetos de src/servers/pm se montan juntos para generar “pm”. Todos los archivos objetos de src/servers/fs se montan juntos para generar “fs”.

30 Compilación de MINIX 3 Otros programas que pertenecen a la imagen de arranque (“boot”) son compilados y montados en sus subdirectorios (rs, init, en src/servers, memory/, log/ tty/ en src/drivers). El componente designado “driver” en la imagen de arranque puede ser cualquiera de los manejadores de disco (habitualmente disco duro). Para instalar todo puede llamarse a installboot, en src/boot (supuestamente los hace make install), el cual concatena todo en un fichero ejecutable que puede ser copiado en el directorio /boot o en /boot/image. Posteriormente un programa cargador puede ubicarlo en memoria y darle control.

31 Ejecutando MINIX 3 La siguiente vez que se arranque MINIX hay que seleccionar: Start Custom MINIX 3 (o no teclear nada ya que es la opción por defecto)

32 Curiosidades del código MINIX 3
include/ansi.h determina si el compilador utilizado cumple los requerimientos de C standard. Define la macro _PROTOTYPE para compiladores ANSI y K&R. Si el compilador es ANSI, los prototipos de funciones se especifican indicando el tipo de retorno y de los parámetros. En MINIX se definen muchos tipos de datos (ej. include/sys/types.h), pero el compilador funciona correctamente si sustituimos los mismos por los tipos subyacentes. El objetivo es únicamente hacer el código más legible.

33 Curiosidades del código MINIX 3
Todos los tipos declarados acaban en _t y hay dos versiones, una para el compilador ansi que empieza por minúscula (ej. dev_t) Es necesario destacar que en const.h (y en otros archivos) se utiliza la macro EXTERN, la cual es expandida como extern. Ello permite utilizar variables globales sin caer en múltiples redefiniciones de las mismas. En el fichero table.c de cada componente se provoca la redefinición de la macro EXTERN como string vacío (al definir _TABLE), de forma que exista una única definición para cada variable global, generalmente ubicada en el fichero glo.h.

34 Inicialización de MINIX 3
El cargador ha introducido en la pila datos necesarios y de interés para el núcleo. mpx386 prepara el marco de pila para poder llamar a cstart() (start.c). Inicializa GDT e IDT y copia los parámetros de la pila (pasados por el cargador) a memoria del núcleo. Hace efectivas GDT e IDT con lgdt y lidt. mpx386.s salta (jmp) a main.

35 Archivos de Encabezado
include/minix/: contiene archivos especificos de MINIX3 com.h: Archivos de constantes comunes del kernel (ID de procesos y mensajes especiales,etc) config.h: Archivo de configuración principal de MINIX3 const.h: Constantes límites devio.h: Constantes para E/S de dispositivos dl_eth.h: Constantes para placa Ethernet dmap.h: Constantes relacionadas con Dispositivos de Bloques fslib.h: Constantes para soporte de Filesystem V1 y V2 ioctl.h: Constantes para soporte de System Calls IOCTL ipc.h: Constantes y estructuras relativas a la transferencia de mensajes

36 Archivos de Encabezado
ipc.h: Constantes y estructuras relativas a la transferencia de mensajes keymap.h: Constantes relacionadas con el mapeo de teclado minlib.h: Constantes misceláneas partition.h: Estructuras relacionadas con particiones de disco paths.h: Path de archivos especificos sound.h: Constantes y estructuras usadas por audio y mixer. swap.h: Constantes y estructuras de las particiones de swap. sys_config.h: Archivo con constantes de configuracion (Número de procesos, prioridades, etc) syslib.h: Prototipos de taskcalls y otras funciones del sistema. sysutil.h: Utilidades para drivers y tasks. type.h: Tipos y estructuras básicas de MINIX3 u64.h: Manipulación de estructuras de 64 bits de discos

37 Tipos de Mensajes en MINIX3

38 Codigo Fuente Navegable


Descargar ppt "MINIX3 INTRODUCCION Cátedra: Diseño e Implementación de Sistemas Operativos UTN-FRSF Tomado de: Operating Systems Design and Implementation, Third."

Presentaciones similares


Anuncios Google