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

Slides:



Advertisements
Presentaciones similares
Algunos Sistemas Operativos
Advertisements

Introducción a Linux Lic. Gonzalo Pastor.
UNIX COMP 240.
Sistema operativo Componentes de un sistema operativo
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Arquitectura de computadoras
Subsistemas De un Sistema Operativo Celeste Domínguez Romo
Para ello lo primero que debemos hacer es acudir a la BIOS, para conseguir que arranque nuestro CD de instalación de Windows una vez que encendamos nuestro.
INICIALIZACION Y APAGADO
Sistemas en estratos. Descripción: se organiza en una jerarquía de estratos, estando construido cada uno de ellos sobre el otro que tiene menor jerarquía.
Modelo de procesos de dos estados
ARP Y RARP.
Detalles del sistema operativo
Es un Sistema operativo de red. Es una de las plataformas de servicio más fiable para ofrecer acceso seguro y continuado a la red y los recursos de.
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Por: Santiago Toro Rendón Raquel Sepúlveda.  El SO se instala en una sección definida de la unidad de disco duro, denominada partición de disco. Existen.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Daniel E. Coletti CaFeLUG / LUGAr LTSP – Linux Terminal Server Proyect 1era Charla Técnica Trimestral CaFeLUG – Capital Federal GNU/Linux Users Group.
FHS: organización de directorios en Linux
Sistema Operativo. ¿Qué es el Sistema Operativo? Un sistema operativo (SO) es el conjunto de programas y utilidades software que permiten al usuario interactuar.
Tema 10: Gestión de Memoria
Semana 5 Subprogramas..
Administración de Archivos
Sebastián Sánchez Prieto
Hilos - Lightweight process - Procesos ligeros
Software Sistemas Operativos
Bootable USB nos permite crear desde el propio programa una unidad USBbooteable para instalar Windows en cualquiera de las versiones mencionadas anteriormente.
Profesor: Rodrigo Sanhueza Figueroa
El proceso de arranque Windows NT/2000/XP El proceso de arranque Windows Vista/Windows 7.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
SISTEMA OPERATIVO Un sistema operativo es un programa que actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar.
INSTALACION DE SISTEMAS OPERATIVOS
Asignación de Espacio No Contiguo
Estructura del sistema de Archivos de
Fases de Instalación de un Sistema Operativo
Hebras Cecilia Hernández. Qué es un proceso? Consiste Espacio de direccionamiento Código a ejecutar Datos estáticos y dinámicos Pila o stack CPU: PC,
Tipos de virus informaticos
5. Sistemas de archivos avanzados1 Tema 5: Sistemas de Archivos Avanzados Resumen: –Sistema de archivos distribuido –File Replication Service.
Introducción a los Sistemas Operativos
Capítulo 7 Gestión de memoria.
Gestión de procesos Sistemas Operativos Edwin Morales
1 Descripción y control de procesos Capítulo 3. 2 Requerimientos de un SO relacionados con procesos Ejecutar concurrentemente múltiples procesos para.
COMPONENTES DEL SISTEMA OPERATIVO.
Administrador de procesos
Administración del Sistema Operativo Cisco (IOS).
Gestión de Memoria.
Integrante: Yohandry Cueto Carnet: # Contenido Kernel Linux Limitaciones del Kernel Linux Kernel Mach Que es Hurd Arquitectura Ventajas Distribuciones.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Supongamos que un usuario desea escribir un informe e imprimirlo en una impresora conectada. Para realizar esta tarea, se precisa una aplicación de procesamiento.
Estructura de los Sistemas Operativos
Disco duro (HDD).
Resumen Cap. 2 María Camila López Restrepo 11*3.  Es un programa o conjunto de programas que en un sistema informático gestiona los recursos de hardware.
INTRODUCCION A SISTEMAS OPERATIVOS
ARQUITECTURA DE SISTEMAS OPERATIVOS.
Teoría de Sistemas Operativos Sistema de I/O. 2 Introducción Una de las funciones principales del sistema operativo es el control de todos los dispositivos.
VIRUS INFORMÁTICOS.
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Unidad 2 – Gestión de Procesos
Comandos internos y externos
INTRODUCCIÓN Para comenzar les hablaremos de lo que significa Windows server 2003, el cual es un sistema operativo de la familia Windows de la marca Microsoft.
MARIANA PRECIADO VILLA TELECOMUNICACIONES 11º3
INTEGRANTES: Giovanna Kristhel Mendoza Castillo Eduardo Solis Lara Gustavo Antonio González Morales.
Elementos y tipos de sistemas operativos
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 2: El sistema de archivos de LINUX Nombre unidad.
ESTACIONES DE TRABAJO..
ELEMENTO DE COMPETENCIA 3
Desarrollador Profesional de Juegos Programación III Unidad II Hilos de ejecución Threads.
INVESTIGACION DE TEMARIO JOSE LUIS VEGA MERINO.  1.2. Requerimientos de instalación.  Microsoft Windows 7 Professional y Microsoft Windows 7 Ultimate.
Virus Informáticos Este tiene por objeto alterar el normal funcionamiento de la computadora, sin el permiso o el conocimiento del usuario. Los virus, habitualmente,
CONIMEIRA XVI Bootloaders para microcontroladores PIC de Microchip Presentan: Ing. Ricardo Guadrón Tec. Juan José Guevara Escuela Especializada en Ingeniería.
Transcripción de la presentación:

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

Estructura de MINIX3

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)

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.

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.

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.

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.

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.

Secuencia de Booteo

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.

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

Arbol de Procesos

Secuencia de Booteo http://www.swartzbaugh.net/

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

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

Secuencia de Booteo

Secuencia de Booteo

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

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.

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

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.

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.

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.

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

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

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.

Organización de Memoria

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

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

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.

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)

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.

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.

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.

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

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

Tipos de Mensajes en MINIX3

Codigo Fuente Navegable http://www.raspberryginger.com/jbailey/minix/html/index.html