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

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

Embed Size (px)

Citation preview

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

MINIX3MINIX3INTRODUCCIONINTRODUCCION

Cátedra: Diseño e Implementación de

Sistemas Operativos UTN-FRSF

Tomado de: Operating Systems Design and Implementation, Third Edition

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

Estructura de MINIX3Estructura de MINIX3

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

Estructura de MINIX3Estructura de MINIX3

KERNELKERNEL

• 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)

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

Estructura de MINIX3Estructura de MINIX3

• CLOCK TASK: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: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 TASKCLOCK TASK & SYSTEM TASK: Ambas son compiladas

en conjunto y comparten el espacio de direcciones del

Kernel. Ambas son planificadas como procesos separados.

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

Estructura de MINIX3Estructura 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.

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

Estructura de MINIX3Estructura de MINIX3

SERVIDORESPROCESS 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.

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

Estructura de MINIX3Estructura de MINIX3

SERVIDORESINFORMATION 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.

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

Secuencia de BooteoSecuencia 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 ParticionesTabla de Particiones. Esto forma el Master Boot RecordMaster Boot Record..

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

Secuencia de BooteoSecuencia de Booteo

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

Secuencia de BooteoSecuencia 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.

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

Secuencia de BooteoSecuencia 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

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

Arbol de ProcesosArbol de Procesos

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

Secuencia de BooteoSecuencia de Booteo

http://www.swartzbaugh.net/

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

Secuencia de BooteoSecuencia de Booteo

• El primer proceso de “usuario” es init 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 Init es hijo del Reincarnation Server (RS)• InitInit ejecuta el script /etc/rc /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 serviceservice que es una interface en modo usuario del RS

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

Secuencia de BooteoSecuencia de Booteo• El RS toma programas ordinarios y los convierte en procesos del

sistema.

• Al final initinit lee el archivo /etc/ttytab/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/usr/bin/getty, que imprime un mensaje a la espera del ingreso del nombre de usuario

• Luego se llama a /usr/bin/login/usr/bin/login con el nombre como primer argumento y este verifica la contraseña según especifica /etc/passwd/etc/passwd

• Después del login, se ejecuta el proceso que se ha especificado

en el /etc/passwd/etc/passwd, usualmente una shell

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

Secuencia de BooteoSecuencia de Booteo

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

Secuencia de BooteoSecuencia de Booteo

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

IPCIPC

• Comunicación con Mensajes (Rendevous)

– send():send(): Cuando un proceso envia un mensaje a otro que no lo

está esperando el emisor se bloquea (RUNNING-

>BLOCKED)

– receive():receive(): Cuando un proceso intenta recibir un mensaje que

todavia no le fue enviado el receptor se bloquea

(RUNNING->BLOCKED)

– sendrec():sendrec(): Resume un send() y un receive() en una única

primitiva produciendo así un solo par de cambio de contexto

USER>KERNEL>USER

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

IPCIPC

• notify(dest):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.

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

Planificación de ProcesosPlanificación de Procesos• En cada interrupción o finalización de proceso, el kernel

invoca al planificador (preemptive)

• MINIX3 utiliza 16 colas de prioridades

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

Planificación de ProcesosPlanificación de Procesos• Clock TaskClock Task y System TaskSystem Task se ubican en las colas de máximas

prioridades.

• Device DriversDevice Drivers en colas se ubican en las colas de prioridades

debajo de máximas prioridades.

• Los ServersServers se ubican en las colas de prioridades por debajo de

los DD y por encima de las de Usuarios.

• Los procesos de Usuarioprocesos de Usuario se ubican en colas de prioridades

intermedias.

• En la cola de menor prioridad solo se ubica el proceso IDLEproceso IDLE que

solo ejecuta cuando no hay nada mas por hacer.

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

Planificación de ProcesosPlanificación de Procesos• Para los procesos de usuarios se puede fijar un quantumquantum

(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 ServersTasks, 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.

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

Planificación de ProcesosPlanificació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.

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

Organización del CódigoOrganizació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

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

Organización del CódigoOrganizació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

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

Organización del CódigoOrganizació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.

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

Organización de MemoriaOrganización de Memoria

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

Compilación de MINIX 3Compilació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

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

Compilación de MINIX 3Compilació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”.

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

Compilación de MINIX 3Compilació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.

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

Ejecutando MINIX 3Ejecutando 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)

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

Curiosidades del código MINIX 3Curiosidades 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.

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

Curiosidades del código MINIX 3Curiosidades 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.

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

Inicialización de MINIX 3Inicializació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.

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

Archivos de Encabezado 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

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

Archivos de Encabezado 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

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

Tipos de Mensajes en MINIX3Tipos de Mensajes en MINIX3

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

Codigo Fuente NavegableCodigo Fuente Navegable

http://www.raspberryginger.com/jbailey/minix/html/index.htmlhttp://www.raspberryginger.com/jbailey/minix/html/index.html