240 likes | 427 Views
Extendiendo Minix a Arquitecturas SMP. Jesús M. Álvarez Llorente Juan Carlos Díaz Martín José Manuel Rodríguez García. Departamento de Informática Universidad de Extremadura. Minix SMP. 1. Motivación y objetivos 2. Arquitectura multiprocesador de Intel 3. Arquitectura de Minix 2.0.0
E N D
Extendiendo Minix a Arquitecturas SMP Jesús M. Álvarez Llorente Juan Carlos Díaz Martín José Manuel Rodríguez García Departamento de Informática Universidad de Extremadura
Minix SMP 1. Motivación y objetivos 2. Arquitectura multiprocesador de Intel 3. Arquitectura de Minix 2.0.0 4. Principios de diseño 5. Detalles de implementación 6. Conclusiones. 7. Trabajo futuro. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
1. Motivación y objetivos 1. Motivación y objetivos • Minix es la referencia por excelencia para la docencia de Sistemas Operativos. Microkernel, POSIX, Intel, manejable, gratuito, documentado, real... • Las arquitecturas multiprocesador se están popularizando. • Es difícil encontrar bibliografía sobre multiprocesadores (hardware y sistemas operativos). Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
1. Motivación y objetivos • Repetimos el planteamiento de Tanenbaum: fabricamos un S.O. Multiprocesador para aprender. • No partimos de cero: aprovechamos Minix. • Aprovechamos lo aprendido. • Aprendemos las diferencias. • Es una buena base, dará un buen resultado. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
2. Arquitectura Intel MP 2. Arquitectura Intel MP • Especificación Intel MP 1.4 para Pentium*. • Memoria compartida. Coherencia de cache. • Instrucciones atómicas. • El BIOS configura para simular monoprocesador y proporciona información en una Tabla de Configuración MP. • El BSP arranca, los AP esperan. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
2. Arquitectura Intel MP • Se perfecciona el hardware de interrupciones: APIC local, I/O APIC, IPI,... Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
3. Arquitectura de Minix 2.0.0 3. Arquitectura de Minix 2.0.0 • Microkernel, 3 niveles de procesos Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
3. Arquitectura de Minix 2.0.0 • Modo protegido: indispensable para MP. • Planificador: Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
3. Arquitectura de Minix 2.0.0 • Núcleo reentrante: interrupciones retenidas. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
4. Principios de diseño 4. Principios de diseño • Objetivo principal: mantener la estructura original de Minix 2.0.0 lo más intacta posible. • Escalable y condicional. • Para un doble Pentium III (Intel MP 1.4). Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
4. Principios de diseño • Alcance de la extensión: Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
4. Principios de diseño • Nuevo código para el nuevo hardware: • Tabla de Configuración MP. • Acceso a APIC (local, I/O). • Arranque/Detención. • Primitivas de sincronización: spinlocks (primitivas LOCK, UNLOCK) • Código modificado: • Sincronización de regiones críticas. • Modificación del planificador. • Replicación de recursos. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
4. Principios de diseño • Regiones críticas: el micronúcleo completo. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
4. Principios de diseño • Planificador: • SMP: “Ninguno de los procesadores es distinto de los demás”. • Cada procesador toma trabajo sin conocer la existencia de los demás. • Un procesador sólo toma procesos listos que no pertenezcan a otro. • Sincronización del planificador: métodos son regiones críticas. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
4. Principios de diseño • Bloqueo del planificador desde las tareas E/S Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
4. Principios de diseño • Algunos recursos se replican para cada procesador: • Variables pasan a ser vectores (array). • Cada procesador accede a su índice. • Identificación del procesador mediante su APIC local. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
5. Detalles de implementación 5. Detalles de implementación • Implementación de cerrojos: LOCK, UNLOCK mediante instrucciones atómicas. #define MP_LOCK(semaphore_var) ;\ 0: clc ;\ lock bts (semaphore_var), 0 ;\ jnc 2f ;\ 1: cmp (semaphore_var), 0 ;\ jne 1b ;\ jmp 0b ;\ 2: #define MP_UNLOCK(semaphore_var) ;\ lock btr (semaphore_var), 0 Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
5. Detalles de implementación • Estructuras replicadas: • Puntero de proceso proc_ptr. • Puntero de tarificación bill_ptr. • Pila del núcleo. • Contador de reentradas k_reenter. • Estructura TSS (Task State Segment). • Tarea IDLE. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
5. Detalles de implementación • Procedimiento de arranque: • El BIOS arranca el BSP como si estuviera solo y dispone una Tabla de Configuración MP en memoria. • El BSP prepara el código inicial del AP en una dirección determinada (pista de aterrizaje, trampoline). • El BSP envía interrupciones IPI a los AP indicando la dirección. • Cada AP comienza a ejecutar desde esa dirección: • Paso a modo protegido • Clonación de estructuras de memoria. • Habilitación de interrupciones. • Salto al dispatcher Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
5. Detalles de implementación Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
6. Conclusiones 6. Conclusiones • La extensión de Minix a SMP resulta sencilla de comprender. • Se parece mucho a la extensión de Linux. • Lo más complejo es entender el hardware. • Esto reafirma nuestro interés en este trabajo, que nos aporta: • Un sistema SMP para uso docente. • Una valiosa experiencia y documentación. Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
7. Trabajo futuro 7. Trabajo futuro • Publicación del código (¡inminente!). • Perfeccionamiento del código: • Utilización del I/O APIC. • Optimización y mejora del código. • Ampliación de arquitecturas. • Integración con Pthreads (proyecto PONNHI). Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002
Agradecimientos Agradecimientos Financiado por el proyecto CICYT nº TIC99-0960, “Diseño e Implementación de Algoritmos de Procesado de Señal de Altas Prestaciones para Reconocimiento de Voz en Condiciones Adversas” Ruegos y preguntas Extendiendo Minix a Arquitecturas SMP - XIII Jornadas de Paralelismo - Lleida, septiembre de 2002