Download Conceptos de sistemas operativos
Document related concepts
no text concepts found
Transcript
Master en Ingeniería de Sistemas Empotrados UPV / EHU MOISE Departamento de Arquitectura y Tecnología de Computadores Universidad del País Vasco / Euskal Herriko Unibertsitatea Introducción al tiempo real en sistemas empotrados Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 1 Contenido UPV / EHU MOISE • • • • • • Introducción Soporte de interrupciones Conceptos de sistemas operativos Planificación en sistemas de tiempo real Mecanismos de sincronización y comunicación Planificación de tiempo real con recursos compartidos Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 2 Conceptos de Sistemas Operativos CONTENIDO UPV / EHU MOISE • • • • • • • El sistema operativo como interfaz para las aplicaciones Modos de ejecución Threads y procesos Control de procesos. Cambio de contexto Gestión de la memoria Gestión de la entrada/salida Gestión de tiempos y temporización BIBIOGRAFIA • • • • • • • Q. Li: Real-Time concepts for embedded systems. CMP Books, 2003. A. Lafuente: Sistemas Operativos II. Apuntes de la asignatura. Edición 2009-10. http://www.sc.ehu.es/acwlaroa/SO2.htm M.J. Rochkind: Advanced Unix Programming (2nd Edition), Addison-Wesley, 2004. C. Rodríguez, I. Alegria, J. Abascal, A. Lafuente: Descripción funcional de los sistemas operativos. Síntesis, 1994. S. Sánchez Prieto: Sistemas Operativos. Universidad de Alcalá de Henares, Servicio Editorial, 2005. A. Silberschatz, P. Galvin, G. Gagne: Conceptos de Sistemas Operativos (7a edición). Willey, 2006. A.S. Tanenbaum: Modern Operating Systems (3rd edition). Prentice-Hall, 2008. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 3 El sistema operativo como interfaz para las aplicaciones • Los dos papeles del sistema operativo: UPV / EHU MOISE – Proporciona a las aplicaciones una interfaz (llamadas al sistema) para el acceso a los recursos. – Arbitra y gestiona eficientemente el uso de los recursos. Qué es un recurso: • • • • Procesadores Memoria Dispositivos (de E/S, relojes, comunicaciones…) Ficheros Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 4 El sistema operativo como interfaz para las aplicaciones Aplicaciones SO UPV / EHU MOISE Hw Interfaz de llamadas al sistema Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 5 El sistema operativo como interfaz para las aplicaciones UPV / EHU MOISE • Las llamadas al sistema (system calls) proporcionan una interfaz homogénea que abstrae las características físicas de los recursos. – Por ejemplo, una aplicación de reproducción de sonido funciona de la misma forma para reproducir un archivo sobre un disco duro o sobre una memoria flash. • Las llamadas al sistema se utilizan como llamadas a funciones de biblioteca. – Su especificación debe estar bien definida (p. ej., el man de Linux/UNIX). Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 6 UPV / EHU MOISE Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 7 El sistema operativo como interfaz para las aplicaciones (cont) UPV / EHU MOISE • También se denominan APIs. • Estándares para compatibilidad de aplicaciones (p. ej: POSIX) • Proporcionan un mecanismo único de entrada al sistema mediante cambio a modo protegido: – La llamada se implementa mediante un trap. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 8 Modos de ejecución UPV / EHU MOISE • Las instrucciones máquina pueden ser normales o reservadas. • Las instrucciones reservadas acceden a espacios (de memoria y de E/S) protegidos. • Dos modos de ejecución: normal y protegido. • Las instrucciones privilegiadas sólo pueden ejecutarse en modo protegido. • Un programa se ejecuta, en principio, en modo normal. • La instrucción de cambio de modo es privilegiada. • ¿Cómo pasar a modo protegido para acceder a recursos necesarios (dispositivos de E/S, etc)? Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 9 Modos de ejecución Cambio de modo • Mecanismo unificado para paso de modo normal a modo privilegiado: vector de interrupciones (VI). UPV / EHU MOISE – Los servicios del sistema se implementan en espacio protegido mediante rutinas que se direccionan a través del VI. • Rutinas de servicio de interrupción. • Excepciones • Llamadas al sistema operativo. – Las rutinas se ejecutan bien asíncronamente (interrupciones), bien llamadas desde el programa (interrupciones programadas o traps). • Mediante un instrucción especial de LM: INT – El retorno de la rutina restaura el modo de ejecución anterior. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 10 Threads y Procesos • Flujo de ejecución: UPV / EHU MOISE – Secuencia de valores que adopta el registro Contador de Programa (PC) durante la ejecución de un programa. • Requiere una pila (normalmente en memoria) para representar las llamadas/retorno a subrutinas). • Contexto de ejecución: – Estado del sistema asociado a la ejecución del programa. Incluye o puede incluir: • • • • PC, SP (puntero a pila), pila Estado del procesador Estado de la memoria Estado de la E/S Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 11 Threads y Procesos Ejemplo: un proceso con tres threads UPV / EHU MOISE (Extraído de Tanenbaum, 2008 © Prentice-Hall, Inc) Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 12 Ejemplo: creación de un proceso LINUX #include <stdio.h> #include <unistd.h> #include <stdlib.h> UPV / EHU MOISE int main (int argc, const char * argv[]) { int pid; printf("%d: Soy el padre!\n", getpid()); pid= fork(); if (pid == 0) printf("%d: Soy el hijo!\n", getpid()); else printf("%d: Soy el padre de %d\n", getpid(), pid); printf("%d: Agur!\n", getpid()); exit(0); } Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 13 Ejemplo #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> UPV / EHU MOISE int main (int argc, const char * argv[]) { int pid; printf("%d: Soy el padre!\n", getpid()); pid= fork(); Código del if (pid == 0) printf("%d: Soy el hijo!\n", getpid()); else { printf("%d: Soy el padre de %d\n", getpid(), pid); printf("%d: Agur!\n", getpid()); exit(0); int main (int argc, const char * argv[]) int pid; padre (pid≠0) } printf("%d: Soy el padre!\n", getpid()); pid= fork(); #include <stdio.h> if (pid == 0) #include <unistd.h> #include <stdlib.h> printf("%d: Soy el hijo!\n", getpid()); int main (int argc, const char * argv[]) { else int pid; printf("%d: Soy el padre de %d\n", getpid(), pid); printf("%d: Soy el padre!\n", getpid()); printf("%d: Agur!\n", getpid()); pid= fork(); Código del hijo (pid=0) if (pid == 0) exit(0); printf("%d: Soy el hijo!\n", getpid()); else printf("%d: Soy el padre de %d\n", getpid(), pid); printf("%d: Agur!\n", getpid()); exit(0); } Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores } 14 Ejemplo UPV / EHU MOISE Hijo Padre #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> int main (int argc, const char * argv[]) { int pid; int main (int argc, const char * argv[]) { int pid; printf("%d: Soy el padre!\n", getpid()); pid= fork(); if (pid == 0) printf("%d: Soy el hijo!\n", getpid()); else printf("%d: Soy el padre de %d\n", getpid(), pid); printf("%d: Agur!\n", getpid()); exit(0); } Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores printf("%d: Soy el padre!\n", getpid()); pid= fork(); if (pid == 0) printf("%d: Soy el hijo!\n", getpid()); else printf("%d: Soy el padre de %d\n", getpid(), pid); printf("%d: Agur!\n", getpid()); exit(0); } 15 Ejemplo: contexto de un proceso LINUX #include <stdio.h> #include <unistd.h> #include <stdlib.h> char a; UPV / EHU MOISE int f_ejemplo() { a= 'H'; printf("%d: Soy el hijo! (%c)\n", getpid(), a); return 0; } int main (int argc, const char * argv[]) { int pid; a= 'P'; printf("%d: Soy el padre! (%c)\n", getpid(), a); pid= fork(); ¿cuál es if (pid == 0) f_ejemplo(); else { printf("%d: Soy el padre de %d (%c)\n", getpid(), pid, a); } printf("%d: Agur!\n", getpid()); exit(0); } Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores el valor de a? 16 Ejemplo: threads en LINUX #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sched.h> #include <wait.h> UPV / EHU MOISE void* pila; char memoria_pila[64*1024]; char a; int f_ejemplo() { a= 'H'; printf("%d: Soy el hijo! (%c)\n", getpid(), a); return 0; } int main (int argc, const char * argv[]) { int pid; a= 'P'; printf("%d: Soy el padre! (%c)\n", getpid(), a); pila= &memoria_pila[0]; pid= clone(&f_ejemplo, (char*) pila + 1024*64, SIGCHLD | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_VM, 0 ); printf("%d: Soy el padre de %d (%c)\n", getpid(), pid, a); printf("%d: Agur!\n", getpid()); exit(0); } ¿cuál es el valor de a? Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 17 Threads y Procesos (cont) UPV / EHU MOISE • Las entidades de ejecución son los procesos/threads. • En terminología de TR, tareas (indistintamente). • Un thread (hilo) es un flujo de ejecución con un contexto reducido • PC, SP (puntero a pila), pila • Estado del procesador • Un proceso es un flujo de ejecución con un contexto ampliado • Estado de la memoria • Estado de la E/S • Puede haber entidades de ejecución intermedias • Sistemas combinados: un proceso incluye un conjunto de threads – En este caso las entidades de ejecución/planificación son los threads Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 18 Threads y procesos Memoria UPV / EHU MOISE a Padre a Hijo fork() Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 19 Threads y procesos Memoria UPV / EHU MOISE a Padre Hijo clone() Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 20 Threads y Procesos Estados y grafo de transición UPV / EHU nuevo proce so eje cutándose fina liza do MOISE pre pa rado bloquea do • Nota: se toma aquí el proceso como entidad de ejecución, sin pérdida de generalidad. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 21 Control de procesos Representación • Bloque de Control de Procesos (PCB) UPV / EHU MOISE – Identificador. – Estado del proceso. – Información para la planificación (prioridad, quantum). – Contadores de consumo de recursos (tiempo de CPU). – Puntero a la pila del proceso • En sistemas combinados: puntero a los threads del proceso (representados por TCBs). – Puntero a los recursos de memoria (tablas de páginas). – Puntero a los recursos de E/S (tabla de descriptores). Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 22 Control de procesos Representación • Los PCBs se enlazan en colas • Una cola por estado UPV / EHU MOISE – Incluso para el estado ejecutándose. – Proceso nulo: al menos un proceso preparado para ejecución. – Estado bloqueado: una cola por cada condición de bloqueo. co l a PCB p ri o ri d ad i n fo Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores PCB p ri o ri d ad i n fo PCB p ri o ri d ad i n fo 23 Control de procesos El sistema operativo como un sistema de colas nuevo proceso finalizado cola preparados CPU UPV / EHU MOISE . . . DISP1 cola disp. 1 . . . . . . DISPn cola disp. n Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores . . . 24 Control de procesos Planificación UPV / EHU MOISE • La planificación de procesos (o threads) es la función del sistema operativo que decide qué proceso va entrar a ejecutándose y cuándo. • La realiza el scheduler. • Se elige un proceso de entre la cola de preparados de acuerdo a un criterio: – FCFS – Prioridades • Estáticas. Se asigna una prioridad al proceso cuando se crea y no cambia durante su ejecución. • Dinámicas. A partir de una prioridad inicial, se ajusta durante la ejecución de acuerdo a determinados criterios (p. ej. consumo de CPU del proceso). Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 25 Control de procesos Planificación (cont) • Cuándo planificar: – Sólo cuando la CPU queda libre UPV / EHU MOISE • porque el proceso ejecutándose termina o se bloquea: sistemas no expulsores – Además, los sistemas operativos expulsores, sacan al proceso que está ejecutándose • cuando ha consumido un quantum de tiempo: – Combinado con FCFS: planificación de turno circular o Round-Robin • cuando otro proceso llega a preparados. – Le da la oportunidad de ejecutarse inmediatamente. Como veremos, combinada con prioridades estáticas esta planificación expulsora es adecuada para tiempo real. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 26 Cambio de contexto UPV / EHU MOISE • El cambio de contexto es el conjunto de operaciones necesarias para realizar una transición de un proceso (o thread) a otro: – Guardar el contexto del proceso que abandona la CPU. – Restaurar el contexto del proceso seleccionado por el scheduler. – Transferirle el control. – Además, actualizar la representación de los procesos en colas de PCBs. • Implica manipular las pilas de procesos – Se implementa en lenguaje máquina. PBA Cola de ejecución UPV / EHU BA de la Rut. de Atención BA Contexto de la Rut. de de Atención PA PB Cola de preparados MOISE Pila de PA SP CPU PA Contexto de PB Una cola de bloqueados (por ejemplo) 1. Se está ejecutando PA. 2. Se produce una interrupción (externa o trap). 3. Se salva el contexto de PA. 4. Cambio de estado de PA. 5. Scheduler: elige a PB. 6. Cambio de estado de PB. 7. Manipulación del Stack Pointer para retornar al bloque de activación de PB. 8. Se carga el contexto de PB en la CPU. 9. Retorno de la interrupción. 10. Se ejecuta PB. Pila de PB http://www.sc.ehu.es/acwlaroa/SO2/CambioContexto.pps Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 28 Gestión de la memoria UPV / EHU MOISE • Se refiere a la memoria principal (RAM), donde un programa almacena su código, sus datos y su pila. • Gran diversidad de técnicas y políticas, dependiendo de si el programa se almacena: – Estática o dinámicamente. – Contiguo o en trozos. • Algunas técnicas (paginación, memoria virtual) requieren importante soporte hardware: – MMU, hoy en día on-chip. – Almacenamiento secundario (memoria virtual). • Las técnicas más elaboradas (memoria virtual) son incompatibles con el tiempo real. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 29 Gestión de la memoria Técnicas UPV / EHU MOISE • • • • • • Monitor residente Particionado Swapping Paginación y segmentación Memoria virtual Otras: solapamientos y rutinas de enlace dinámico Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 30 Gestión de la memoria Monitor residente • Para un único programa en memoria UPV / EHU MOISE Sistema operativo (monitor) registro barrera Programa de usuario Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 31 Gestión de la memoria Particionado • Particionado fijo (MFT) UPV / EHU MOISE Sistema operativo 2 Kb 4 Kb 8 Kb Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 32 Gestión de la memoria Particionado • Particionado variable (MVT) UPV / EHU MOISE Sistema operativo Programa 1 Programa 2 Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 33 Gestión de la memoria Particionado • En particionado fijo se pierde espacio dentro de las particiones (fragmentación interna). UPV / EHU MOISE – ¿Qué hacer si llega un programa nuevo y la partición adecuada a su tamaño está ocupada? • Encolarlo hasta que se libere. • Ejecutarlo en una partición mayor libre. • En particionado variable el espacio se pierde en los huecos entre programas (fragmentación externa). – Tiende a aumentar (cada vez más huecos más pequeños): degradación de la memoria. – Compactar para recuperar espacio. • Implica reubicación dinámica. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 34 Gestión de la memoria Particionado UPV / EHU MOISE • Políticas de asignación de huecos – ¿En qué hueco almacenar un nuevo programa? • ¿En el más ajustado al tamaño del programa? • ¿En en más grande? • ¿En el primero que se encuentre? Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 35 Gestión de la memoria Swapping UPV / EHU MOISE • Un programa puede, durante su ejecución, abandonar la memoria. • Implica reubicación dinámica de programas. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 36 Gestión de la memoria Paginación y segmentación • Los programas se dividen en trozos – De igual tamaño (paginación) – De tamaño variable (segmentación) UPV / EHU MOISE • Como consecuencia, un programa no aparece contiguo en memoria. • Dirección virtual vs dirección física. • Las direcciones donde se almacenan los trozos se guardan en tablas de páginas/segmentos. – Traducción dinámica de direcciones – Requiere importante soporte Hw: • Unidad de gestión de memoria (MMU) • Buffers de traducciones (TLB) • Permite compartir páginas/segmentos entre programas. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 37 Gestión de la memoria Paginación dir virtual p UPV / EHU MOISE d CPU d MEM dir física PTBR p base ... TABLA DE PAGINAS • La tabla de páginas puede ocupar mucho espacio. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 38 Gestión de la memoria Segmentación TRAP dir virtual UPV / EHU CPU s no < d si + dir física MEM MOISE STBR s lim base ... TABLA DE SEGMENTOS • Produce fragmentación externa. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 39 Gestión de la memoria Sistemas combinados TRAP dir virtual s p d CPU si dir física < UPV / EHU MOISE d no MEM STBR s base lim base ... ... TABLA DE PAGINAS TABLA DE SEGMENTOS • Varios niveles de indirección. • El último, siempre de paginación. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 40 Gestión de la memoria Memoria virtual UPV / EHU MOISE • Se implementa sobre un sistema paginado. • Permite la ejecución de programas no enteros. • La referencia a una página no cargada en memoria provoca un trap de fallo de página y la búsqueda de la página en disco. • Aún más soporte Hw: – – – – Bit de validez Trap de fallo de página Espacio en disco (swap) Soporte para el reemplazo de páginas • Amplio soporte del sistema operativo: – Política de reemplazo de páginas – Políticas de asignación de espacio entre programas • Introduce impredecibilidad en los tiempos de respuesta. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 41 Gestión de la memoria Solapamientos y enlace dinámico • ¿Qué hacer si un programa no cabe en la RAM y no tengo soporte de MV? UPV / EHU MOISE – Se estructura el programa y se divide en trozos o solapamientos (overlays) • Cada solapamiento, una función – Se añade una rutina de enlace dinámico que gestiona la carga de las funciones en tiempo de ejecución. – Las llamadas a funciones son ahora llamadas a la rutina de enlace con la función y sus parámetros como argumentos. – Inicialmente se carga en memoria el programa principal y la rutina de enlace. • Modernamente los sistemas operativos añaden este mecanismo (con otros propósitos): Dynamic Link Libraries o Run-Time Libraries. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 42 Gestión de la entrada/salida • Los dispositivos de entrada/salida son muy heterogéneos: UPV / EHU MOISE – – – – – – – Velocidad Representación de los datos Protocolos Operaciones Unidad de transferencia (bloques, caracteres…) Tipos de errores Modo de tratar la E/S: Encuesta, Interrupciones, DMA. • Interfaz de los dispositivos unificada mediante Controladores Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 43 Entrada/salida Interfaz UPV / EHU MOISE • Los Controladores de los dispositivos (Kdisp) ofrecen una interfaz entre los dispositivos y el nivel de lenguaje máquina. • Elementos de la interfaz: – Espacio de direcciones de E/S, que puede ser • Memory-mapped • Independiente del de memoria – Operaciones de E/S mediante instrucciones máquina • Memory-mapped: LOAD/STORE • Espacios independientes: IN/OUT • Las direcciones de E/S se asocian a los dispositivos (Registros de E/S) y tienen papeles específicos: – Registros de estado – Registros de datos – Registros de control Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 44 Entrada/salida Modos • Encuesta – Espera activa sobre Registro de Estado – Acceso a Registro de Datos UPV / EHU MOISE • Interrupciones – El dispositivo cuenta con una línea de interrupción – Cuando se activa la interrupción, se ejecuta la Rutina de Servicio que gestiona la E/S: • Comprobación sobre Registro de Estado • Acceso a Registro de Datos • Acceso Directo a Memoria (DMA) – Los dispositivos de bloques no involucran a la CPU en el acceso a cada byte – Se programa la operación de DMA – Se ordena su inicio sobre un Registro de Control del KDMA – El fin de la operación se anuncia mediante una interrupción • La Rutina de Servicio a la Interrupción de DMA comprueba sobre un Registro de Estado. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 45 Gestión de la entrada/salida Manejadores de dispositivos (drivers) UPV / EHU MOISE • Driver: código que monopoliza el acceso al dispositivo. • El resto del sistema operativo es independiente del dispositivo. • Un modelo de entrada/salida: cliente-servidor • Las rutinas de E/S son clientes del driver. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 46 Gestión de la entrada/salida Manejadores de dispositivos (drivers) • Interfaz entre las Rutinas de E/S y el driver: UPV / EHU MOISE – Descriptor del Dispositivo, configurado por el driver: • Estado del dispositivo • Modo de operación • Tablas de conversión • Apuntador a la cola de peticiones • Evento asociado al driver – IORB (Input/Output Request Block) para especificar una petición al driver: • Identificador del proceso cliente • Parámetros de la petición • Evento para sincronización con el final de la operación • Diagnóstico de la operación (a rellenar por el driver) Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 47 Gestión de la entrada/salida DESCRIPTOR DISP 1 IORB cola IORBs infor. del dispositivo UPV / EHU MOISE TABLA DE CANALES Proceso i parámetros de la petición diagnóstico DESCRIPTOR DISP 2 IORB IORB parámetros de la petición parámetros de la petición diagnóstico diagnóstico cola IORBs infor. del dispositivo DESCRIPTOR DISP 3 TABLA DE CANALES Proceso j cola IORBs infor. del dispositivo Ejemplo de estado de la E/S Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 48 Gestión de la entrada/salida Buffering • Para desacoplar las velocidades de funcionamiento de los dispositivos y la CPU, el SO proporciona buffers del sistema para almacenamiento temporal de la E/S. • Varios esquemas. UPV / EHU Aplicación Aplicación Aplicación Aplicación Dispositivo Dispositivo Dispositivo Dispositivo (a) E/S sin buffer (b) E/S con un buffer MOISE Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores (c) E/S con doble buffer (d) E/S con bufer circular 49 Gestión de la entrada/salida El sistema de ficheros UPV / EHU MOISE • El desarrollo de las memorias tipo flash posibilita que incluso los dispositivos más pequeños proporcionen un sistema de ficheros. • Las abstracciones del modelo de E/S proporcionan independencia entre el sistema de ficheros y el dispositivo soporte. – Ejemplo: FAT16 sobre floppy/HD/flash Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 50 Gestión de la entrada/salida El sistema de ficheros • Características del sistema de ficheros: – Permanencia – Organización estructurada UPV / EHU MOISE • En árbol • Nombre de un fichero: relativo-absoluto • Algunos ficheros son directorios – Atributos de un fichero • • • • Tiempos de creación, Acceso… Derechos de acceso Tamaño etc – El contenido se organiza en registros lógicos – Acceso concurrente a ficheros • Punteros independientes Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 51 Gestión de tiempos y temporización UPV / EHU MOISE • El tiempo es un recurso peculiar. • La gestión del tiempo es un componente básico en cualquier sistema empotrado o de tiempo real. • Vamos a estudiar: – Tipos de relojes – Rutinas de servicio de la interrupción del reloj – Gestión de temporizadores Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 52 Gestión de tiempos y temporización Relojes • Reloj de tiempo real (RTC) – Siempre en funcionamiento. Requiere alimentación propia. UPV / EHU MOISE • Reloj Hardware – – – – Se inicializa con el RTC en la inicialización. Produce las interrupciones de reloj. Suele ser programable (PIT, p. ej., Intel 8253). Puede tener otras funciones (p. ej., refresco de la DRAM). • Reloj del sistema – Es un reloj software implementado por la ISR del PIT. – Cuenta interrupciones y las expresa en unidades de tiempo. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 53 El tiempo en Linux •Comando para consultar el reloj del sistema: – date •Ajuste del reloj: UPV / EHU MOISE – adjtimex (sólo puede ejecutarla root) •Cronómetro de alta resolución: – gettimeofday() #include <sys/time.h> struct timeval t0, t1; gettimeofday(&t0, NULL); … gettimeofday(&t1, NULL); printf("Duracion: %d,%d segundos\n", t1.tv_sec-t0.tv_sec, t1.tv_usec-t0.tv_usec); Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 54 Gestión de tiempos y temporización Rutina de servicio de la interrupción del reloj • Funciones: UPV / EHU MOISE – Soporte del reloj software (contador de unidades de tiempo, p. ej., segundos) • Para el tiempo del sistema • Para implementar temporizadores – Gestión del tiempo compartido (expulsión por fin de quantum). – Contabilidad del uso de recursos temporales (p. ej., tiempo de CPU). • Genera eventos periódicos Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 55 Gestión de tiempos y temporización Rutina de servicio de la interrupción del reloj Ejemplo ISR_del_reloj () { ... ticks_por_segundo−−; intervalo_CPU++; UPV / EHU MOISE if (ticks_por_segundo== 0) { actualiza_tiempo_del_sistema(); señalar_evento(EVENTO_SEGUNDO); ticks_por_segundo= UN_SEGUNDO; } if (intervalo_CPU == quantum) { incrementa_gasto_CPU_del_proceso(intervalo_CPU); intervalo_CPU= 0; goto cambio_de_contexto; } ... eoi(); reti(); cambio_de_contexto: expulsar_proceso(); dispatcher (scheduler()); } Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 56 Gestión de tiempos y temporización Gestión de temporizadores • El sistema proporciona un servicio de temporización: UPV / EHU MOISE – Un proceso se duerme durante n unidades de tiempo. – El sistema gestiona cuándo despertar a cada proceso dormido. • Hay que definir la resolución del temporizador: – A mayor resolución más carga para el sistema. • Modelo: – Los procesos ponen su petición de temporización (usando un IORB). – Un gestor de tiempos (manejador), activado cada unidad de tiempo por la ISR del reloj, despacha las peticiones a medida que se cumplen, despertando al proceso correspondiente. Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 57 Gestión de tiempos y temporización Implementación Peticiones temporización UPV / EHU 13 MOISE EVENTO_P Gestor de tiempos EVENTO_P P EVENTO_SEGUNDO ISR Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 58 Gestión de tiempos y temporización Implementación Sólo hay que consultar la primera UPV / EHU MOISE 13 12 23 13 23 Ordenar 12 Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 23 23 Sólo hay que decrementar la primera 12 Relativo a la anterior 1 10 0 59 Gestión de tiempos y temporización Implementación UPV / EHU MOISE Gestor_tiempos () { ... while (TRUE) { esperar_evento(EVENTO_SEGUNDO); while (primero(peticiones_tiempo).plazo == 0) señalar_evento(primero(peticiones_tiempo).evento; eliminar(primero(peticiones_tiempo)); } primero(peticiones_tiempo).plazo−−; } } Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 60 Ejemplo: uso de temporizadores en Unix #include <stdio.h> #include <signal.h> #include <unistd.h> void fnula() {return;} UPV / EHU unsigned esperar_tiempo (unsigned seg) { unsigned s; MOISE s= alarm(seg); pause(); return(s); } int main (int argc, const char * argv[]) { int i; unsigned t; signal(SIGALRM, fnula); for (i=1; i<5; i++) { printf("espera (%d segundos)\n", i); t= esperar_tiempo(i); printf("despertado (%d)\n", t); } } Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 61