Download Lección 1 - Arcos - Universidad Carlos III de Madrid
Document related concepts
no text concepts found
Transcript
Grupo ARCOS Universidad Carlos III de Madrid Lección 1 Introducción Diseño de Sistemas Operativos Grado en Ingeniería Informática Lecturas recomendadas Base Recomendada Carretero 2007: 1. 1. Tanenbaum 2006: 1. Cap. 2 1. Stallings 2005: 2. 1. Parte uno. Transfondo. Silberschatz 2006: 3. 1. 2 Cap.1 Cap.1 ARCOS @ UC3M Alejandro Calderón Mateos A recordar… 1. Estudiar la teoría asociada. Estudiar el material asociado a la bibliografía: las transparencias solo no son suficiente. Crear cuestiones con sus respuestas y justificación. 2. Repasar lo visto en clase. Realizar el cuaderno de prácticas progresivamente. 3. Ejercitar las competencias. Realizar las prácticas progresivamente. Realizar todos los ejercicios posibles. 3 ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Cómo es por fuera. 2. 1. Ejecutables y bibliotecas Cómo es por dentro. 3. 1. 4 Características básicas Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Cómo es por fuera. 2. 1. Ejecutables y bibliotecas Cómo es por dentro. 3. 1. 5 Características básicas Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Definición de sistema operativo Sistema operativo: software destinado a permitir la comunicación del usuario con un ordenador y gestionar sus recursos de manera cómoda y eficiente. usuario Sistema Operativo Hardware 6 ARCOS @ UC3M Alejandro Calderón Mateos Definición de sistema operativo Sistema operativo: software destinado a permitir la comunicación del usuario con un ordenador y gestionar sus recursos de manera cómoda y eficiente. usuario Software de aplicación Software de sistema Sistema Operativo Hardware 7 ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Características básicas • Funciones básicas Cómo es por fuera. 2. 1. • Objetivos Ejecutables y bibliotecas Cómo es por dentro. 3. 1. 8 • Principales características Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Funciones del sistema operativo Usuario Sistema operativo Interfaz del usuario. Gestor de recursos: CPU, memoria, etc. Máquina extendida: Servicios, interfaz del programador, etc. Hardware 9 ARCOS @ UC3M Alejandro Calderón Mateos Funciones del sistema operativo Usuario Sistema operativo Interfaz del usuario. Gestor de recursos: CPU, memoria, etc. Máquina extendida: Servicios, interfaz del programador, etc. Hardware 10 ARCOS @ UC3M Alejandro Calderón Mateos Abstracciones fundamentales Procesos Procesos, tabla de procesos, árbol de procesos Imagen básica, planificación, señales Identificación de usuario y grupo Intérprete de mandatos (shell) A nuevo finalizado preparado B funcionando bloqueado D E C F Árbol de procesos 11 https://www.microsoft.com/resources/sharedsource/windowsacademic/curriculumresourcekit.mspx ARCOS @ UC3M Alejandro Calderón Mateos Abstracciones fundamentales Archivos Archivos y directorios Directorio raíz Ruta, directorio de trabajo y raíz Protección Descriptor de archivo Archivos especiales: tmp etc usr mia pit Dispositivos E/S E/S de bloque y de caracteres Pipes Estándares entrada/salida/error 12 https://www.microsoft.com/resources/sharedsource/windowsacademic/curriculumresourcekit.mspx ARCOS @ UC3M Alejandro Calderón Mateos Funciones del sistema operativo Usuario Sistema operativo Interfaz del usuario. Gestor de recursos: CPU, memoria, etc. Máquina extendida: Servicios, interfaz del programador, etc. Hardware 13 ARCOS @ UC3M Alejandro Calderón Mateos Áreas de gestión Gestión de Procesamiento – Planificación Planificación Prioridades, multiusuario Gestión de Memoria Reparto de memoria entre procesos, con protección y compartición Gestión de Almacenamiento – Sistema de Archivos Ofrecer una visión lógica unificada para usuarios y programas que sea independiente del medio físico Gestión de Dispositivos Encubriendo las dependencias de hardware Gestión de accesos concurrentes 14 ARCOS @ UC3M Alejandro Calderón Mateos Funciones del sistema operativo Usuario Sistema operativo Interfaz del usuario. Gestor de recursos: CPU, memoria, etc. Máquina extendida: Servicios, interfaz del programador, etc. Hardware 15 ARCOS @ UC3M Alejandro Calderón Mateos Interfaz del usuario Interfaz del programador: Mediante llamadas al sistema. ret = close (filedesc) ; Interfaz de usuario: Mediante línea de mandatos o CLI Interfaz gráfica o GUI 16 http://www.guidebookgallery.org/screenshots/commandprompt http://www.guidebookgallery.org/screenshots/full ARCOS @ UC3M Alejandro Calderón Mateos Funciones del sistema operativo resumen Usuario Sistema operativo Interfaz del usuario. Gestor de recursos: CPU, memoria, etc. Máquina extendida: Servicios, interfaz del programador, etc. Hardware 17 ARCOS @ UC3M Alejandro Calderón Mateos Máquinas virtuales Apl. Apl. S.O. S.O. … Hipervisor (VMM) Hardware Mgmt El sistema operativo virtualiza ciertos elementos del hardware; ¿Por qué no virtualizar todo? IBM ha usado esta idea en sus mainframes desde principio de la década de los 70. Un hipervisor virtualiza todo el ordenador, de manera que permite que múltiples sistemas operativos (o copias del mismo) ejecuten a la vez. La virtualización: [I] supone cierta sobrecarga [V] ofrece un aislamiento excelente entre sistemas y la flexibilidad en la reserva de recursos lo que mejora el coste, especialmente en «granjas» 18 http://www-128.ibm.com/developerworks/library/l-linuxvirt/index.html ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Características básicas • Funciones básicas Cómo es por fuera. 2. 1. • Objetivos Ejecutables y bibliotecas Cómo es por dentro. 3. 1. 19 • Principales características Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Principales características Versátil Portabilidad Adaptativo Multidisciplinar Complejo Delicado 20 ARCOS @ UC3M Alejandro Calderón Mateos Versatilidad Supercomputador Unix, Linux, … Mainframe OS/360, z/OS, … Miniordenadores y PC Unix, MacOs, Windows, … Empotrados VxWorks, QNX, LynxOS, Android, iOS, Windows Embedded, … 21 ARCOS @ UC3M Alejandro Calderón Mateos Principales características: 1) Versátil Mismo equipo, diferentes SSOO: IBM PC Linux DR-DOS … IBM PC Mismo SO, diferentes equipos: Unix Portabilidad Unix CRAY-Y/MP 22 IBM PC … ARCOS @ UC3M Alejandro Calderón Mateos Principales características: 2) Continuos cambios para adaptarse A las nuevas demandas de los usuarios: Reconocimiento de voz, entrada multitáctil, etc. A la evolución o nuevo tipo de hardware: Controladores para todo tipo de nuevos dispositivos Sistemas multicore, virtualización, etc. A integrar soluciones de distintos entornos: Procesamiento por lotes, multiprogramación, tiempo compartido, etc. Multiusuario, trabajo colaborativo, etc. Sistemas distribuidos, servicios en red, etc. 23 ARCOS @ UC3M Alejandro Calderón Mateos Principales características: 3) Software multidisciplinar Software multidisciplinar: Integra trabajos de diferentes áreas: Interfaces de usuario, software de sistema, inteligencia artificial, seguridad, Ingeniería Software, etc. 24 ARCOS @ UC3M Alejandro Calderón Mateos Principales características: 4) Software complejo Software complejo: Muchas líneas de código. Muchos equipos de trabajo. 25 ARCOS @ UC3M Alejandro Calderón Mateos Complejidad de los sistemas operativos Windows 26 http://www.zdnet.co.uk/reviews/desktop-os/2010/11/20/a-quarter-century-of-windows-40090900/5/#top ARCOS @ UC3M Alejandro Calderón Mateos Complejidad de los sistemas operativos Windows 27 http://www.zdnet.co.uk/reviews/desktop-os/2010/11/20/a-quarter-century-of-windows-40090900/5/#top ARCOS @ UC3M Alejandro Calderón Mateos Principales características: 5) Software delicado Software delicado: Un fallo en un driver (software controlador de un dispositivo) puede bloquear todo el sistema. Trata datos de distintas aplicaciones de distintos usuarios que no deben ser perdidos o trasladados a manos incorrectas. 28 ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Características básicas • Funciones básicas Cómo es por fuera. 2. 1. • Objetivos Ejecutables y bibliotecas Cómo es por dentro. 3. 1. 29 • Principales características Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Objetivos en el diseño de un sistema operativo Rendimiento: eficiencia y velocidad Sistema Operativo Hardware Baja sobrecarga, uso adecuado de los recursos Estabilidad: robustez y resistencia Tiempo de funcionamiento, degradación aceptable, fiabilidad e integridad Capacidad: prestaciones, flexibilidad y compatibilidad Seguridad y protección Protección entre usuarios Sistema seguro para ‘los malos’ Portabilidad Claridad Extensibilidad 30 http://www.cc.gatech.edu/~pwh/ ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Cómo es por fuera. 2. 1. Ejecutables y bibliotecas Cómo es por dentro. 3. 1. 31 Características principales Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Ejecutables (1/1) G. dispositivos de E/S D#15 32 D#10 Los primeros kernels tenían que: Incluir código para todos los posibles dispositivos. Cada cierto tiempo se recompilaba para añadir los nuevos dispositivos. Se distribuía como un conjunto de ejecutables. http://www.cc.gatech.edu/~pwh/ ARCOS @ UC3M Alejandro Calderón Mateos Módulos (1/2) G. dispositivos de E/S D#10 Los módulos inicialmente se desarrollaron para permitir la inclusión condicional de controladores de dispositivos (drivers) Los módulos ofrecen añadir dinámicamente código de un driver pre-compilado. Se distribuyen como bibliotecas dinámicas para el kernel (.so/.dll). El módulo puede descargarse cuando el dispositivo deje de usarse. D#15 33 http://www.cc.gatech.edu/~pwh/ ARCOS @ UC3M Alejandro Calderón Mateos Módulos (2/2) App App La gran mayoría de sistemas operativos modernos tienen un kernel que permite el uso de módulos: Linux, Solaris, BSD, Windows, etc. Kernel Los módulos se utilizan no solo para los drivers de los dispositivos, actualmente también se utilizan para añadir otro tipos de funcionalidad: El kernel de Linux lo utiliza extensivamente para sistemas de ficheros, protocolos de red, llamadas al sistema, etc. F#18 34 http://www.cc.gatech.edu/~pwh/ ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de módulos Windows 2000 Replicator Alerter Event Log Session Mgr WinLogon Procesos de sistema Win32 POSIX OS/2 Servicios Aplicacs. Usuario Interface DLL Subsystem DLL Subsistemas de entorno Ntdll.dll Usuario Kernel System Service Dispatcher Sistema E/S Monitor Seguridad Procesos/ Threads Servicios de objetos Memoria Mgmt Win32 GDI Gestión de Objectos Sistemas ficheros Drivers Kernel Exec. RTL Hardware Abstraction Layer (HAL) 35 ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Características principales Cómo es por fuera. 2. 1. Ejecutables y bibliotecas • Fases en la compilación y ejecución Cómo es por dentro. 3. 1. 36 • Uso de bibliotecas estáticas y dinámicas Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Compilador Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 37 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Compilador extern void decir_hola( void ) ; Módulo objeto A Módulo int main (int argc, char *argv[]) Bibliotecas objeto B estáticas { decir_hola() ; return 0; Montador } Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 38 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Compilador gcc –Wall –g –c a.c –o a.o Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 39 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Compilador #include <stdio.h> Conjunto de módulos en Módulo void decir_hola( void ) lenguaje de alto nivel objeto A { Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Módulo objeto B Bibliotecas estáticas printf("Hola mundo...\n") ; } Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 40 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Compilación Montaje Enlazado dinámico Ejecución Compilador gcc –Wall –g –c b.c –o b.o Conjunto de módulos en lenguaje de alto nivel Fases: Módulo fuente B Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 41 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Módulo fuente B Compilador Módulo objeto A Fases: Compilación Montaje gcc –Wall –g –o a.exe a.o b.o -lc Enlazado dinámico Ejecución Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 42 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Módulo fuente B Compilador Módulo objeto A Fases: Módulo objeto B Bibliotecas estáticas Montador Compilación Montaje Enlazado dinámico Ejecución Ejecutable A Bibliotecas dinámicas Cargador ./a.exe 43 Proceso 1 ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Características principales Cómo es por fuera. 2. 1. Ejecutables y bibliotecas • Fases en la compilación y ejecución Cómo es por dentro. 3. 1. 44 • Uso de bibliotecas estáticas y dinámicas Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Compilador Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 45 ARCOS @ UC3M Alejandro Calderón Mateos Bibliotecas de objetos Biblioteca Colección de módulos objetos relacionados Biblioteca Módulo objeto X Módulo objeto Y … Biblioteca estática Carga y montaje en tiempo de compilación Biblioteca dinámica Carga y montaje en tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior 46 ARCOS @ UC3M Alejandro Calderón Mateos b.c Bibliotecas de objetos #include <stdio.h> void decir ( char * str ) { printf("%s",str) ; } Biblioteca Colección de módulos objetos relacionados a.c Biblioteca Módulo objeto X extern void decir ( char * str ) ; Módulo … objeto Y void decir_hola( void ) { decir("Hola mundo...\n") ; } main.c extern void decir_hola( void ) ; Biblioteca estática Carga y montaje en int main (int argc, char *argv[]) { decir_hola() ; return 0 ; } Carga y montaje en tiempo de compilación Biblioteca dinámica tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior 47 ARCOS @ UC3M Alejandro Calderón Mateos Bibliotecas de objetos Biblioteca Colección de módulos objetos relacionados Módulo objeto X Biblioteca gcc –Wall –g –o a.o –c a.c gcc –Wall –g –o b.o –c b.c Módulo … ar rcs libestatica.a a.o b.o objeto Y gcc -Wall -g -o main.exe main.c -lestatica -L./ ./main.exe Biblioteca estática Carga y montaje en tiempo de compilación Biblioteca dinámica Carga y montaje en tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior 48 ARCOS @ UC3M Alejandro Calderón Mateos Bibliotecas de objetos Biblioteca Colección de módulos objetos relacionados Biblioteca Módulo objeto X Módulo objeto Y Biblioteca estática … gcc –Wall –g –fPIC –o a.o –c a.c gcc –Wall –g –fPIC –o b.o –c b.c gcc -shared -Wl,-soname,libdinamica.so \ -o libdinamica.so.1.0 a.o b.o ln –s libdinamica.so.1.0 libdinamica.so gcc –Wall –g –o main.exe main.c –I. –L. –ldinamica Carga y montaje en tiempo de compilación env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./main.exe Biblioteca dinámica Carga y montaje en tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior 49 ARCOS @ UC3M Alejandro Calderón Mateos Bibliotecas de objetos Biblioteca Colección de módulos objetos relacionados Biblioteca Módulo objeto X Módulo objeto Y Biblioteca estática … gcc –Wall –g –fPIC –o a.o –c a.c gcc –Wall –g –fPIC –o b.o –c b.c gcc -shared -Wl,-soname,libdinamica.so \ -o libdinamica.so.1.0 a.o b.o ln –s libdinamica.so.1.0 libdinamica.so gcc –Wall –g –o main.exe main.c –I. –L. –ldinamica \ Carga y montaje en tiempo de compilación –Wl,-rpath=$(pwd) ./main.exe Biblioteca dinámica Carga y montaje en tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior 50 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas resumen Módulo fuente A Código: Globales Locales y parámetros Dinámicas Código Módulo fuente B Compilador Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Compilación: Compilación Montaje Enlazado dinámico Ejecución Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 51 ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Cómo es por fuera. 2. 1. Ejecutables y bibliotecas Cómo es por dentro. 3. 1. 52 Características principales Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Estructura del sistema operativo Usuarios Aplicaciones Shell Interfaz de usuario API Servicios Interfaz de programador Kernel Gestor de recursos. Sistema Operativo Máquina extendida. Hardware 53 ARCOS @ UC3M Alejandro Calderón Mateos Estructura del Sistema Operativo Monolítico (macrokernel) App Sistema monolítico. No estructurado. Desde cualquier punto del código se puede acceder a cualquier variable o función de otra parte del núcleo (kernel) [I] muy difícil de mantener, muy sensible a errores App Modo Usuario Modo Kernel Servicios del sistema Procedimientos y estructuras del sistema operativo Hardware 54 ARCOS @ UC3M Alejandro Calderón Mateos Estructura del Sistema Operativo En subsistemas Sistema monolítico, compuesto de subsistemas lógicos que ofrecen interfaces bien definidas como puntos de entrada. Se agrupan procedimientos y estructuras de datos relacionadas. App App Modo Usuario Modo Kernel Servicios del sistema … Subsistema 1 Ejemplo: Linux 55 Hardware ARCOS @ UC3M Alejandro Calderón Mateos Estructura del Sistema Operativo Por capas Binario monolítico aunque codificado estructurado de forma lógica en capas. Cada capa proporciona acceso únicamente a la interfaz de niveles inferiores. Ejemplo: THE (Dijkstra) Multics, que añadió a la noción de capa la idea de anillos de privilegios 56 App App Modo Usuario Modo Kernel Servicios del sistema G. dispositivos de E/S Planificación e IPC Gestión de memoria Hardware ARCOS @ UC3M Alejandro Calderón Mateos Estructura del Sistema Operativo Microkernel Además de estructurado, los principales componentes se ejecutan como procesos servidores, fuera del kernel. El microkernel tiene: Planificación y gestión de procesos. Gestión de memoria virtual básica. Comunicación entre procesos básica. App Cliente Servidor de memoria Servidor de procesos Servidor de red Servidor de ficheros Servidor Pantallas Modo Usuario Modo Kernel petición Microkernel respuesta Ejemplo: Match, QNX, Minix, L4, etc. 57 Hardware ARCOS @ UC3M Alejandro Calderón Mateos Estructura del Sistema Operativo Windows 2000 (visión simplificada) Subsistemas de entorno Procesos del Sistema y Servicios Aplicaciones Usuario OS/2 Win32 POSIX DLLs de SubsitemaL Ntdll.dll Usuario Kernel Ejecutivo Drivers Kernel Win32 User/GDI Hardware Abstraction Layer (HAL) 58 http://technet.microsoft.com/en-us/library/cc750820.aspx ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de estructura de subsistemas Linux (versión simplificada) Shell Usuario Servicios Kernel Núcleo 59 ARCOS @ UC3M Alejandro Calderón Mateos SS.OO. Reales Linux (versión ‘menos’ simplificada) 60 http://www.makelinux.net/kernel_map.shtml ARCOS @ UC3M Alejandro Calderón Mateos Contenidos Qué es un sistema operativo. 1. 1. Cómo es por fuera. 2. 1. Ejecutables y bibliotecas Cómo es por dentro. 3. 1. 61 Características principales Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Estructura del sistema operativo Usuarios Aplicaciones Shell Interfaz de usuario API Servicios Interfaz de programador Kernel Gestor de recursos. Sistema Operativo Máquina extendida. Hardware 62 ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejecución (general) -------------------------------------------------------------------------------------- 63 ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejecución (general) Al llegar un evento (ex) se ejecuta el manejador asociado (hx) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 64 ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejecución (general) ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 65 Al finalizar el manejador, se continúa la ejecución por donde fue interrumpida ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona código (general) int main ( … ) { … On (event1, handler1) ; … } 66 1) Asociar el manejador (handler1) al evento ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona código (general) void handler1 ( … ) { } 2) Codificar la función manejador que tratará el evento … int main ( … ) { … On (event1, handler1) ; … } 67 1) Asociar el manejador (handler1) al evento ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona código (general) int global1; … void handler1 ( … ) { } 3) Para comunicar funciones, se usa variables globales 2) Codificar la función manejador que tratará el evento … int main ( … ) { … On (event1, handler1) ; … } 68 1) Asociar el manejador (handler1) al evento ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de ejecución asíncrona Señales signal.h #include<stdio.h> #include<signal.h> #include<unistd.h> void sig_handler (int signo) { if (signo == SIGINT) printf("received SIGINT\n"); } int main(void) { if (signal(SIGINT, sig_handler) == SIG_ERR) printf("\ncan't catch SIGINT\n"); sleep(60); // simula un proceso largo. return 0; } 69 http://www.thegeekstuff.com/2012/03/catch-signals-sample-c-code/ ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejemplo simplificado Pi App. • char buffer[1024]; … • read(fd,buffer) • S.O. HW. CPU 70 Disco RAM ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejemplo simplificado Pi • char buffer[1024]; … App. • read(fd,buffer) • ll. sistema • Pedir bloque • Ejecutar Pi +1 S.O. HW. CPU 71 Disco RAM ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejemplo simplificado Pi • char buffer[1024]; Pi +1 • int x; … App. … • for (x=0; x<900; x++); • read(fd,buffer) • • ll. sistema • Pedir bloque • Ejecutar Pi +1 S.O. HW. CPU 72 Disco RAM ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejemplo simplificado Pi • char buffer[1024]; Pi +1 • int x; … App. … • for (x=0; x<900; x++); • read(fd,buffer) • • ll. sistema • Pedir bloque • Ejecutar Pi +1 S.O. HW. CPU 73 Disco RAM ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejemplo simplificado Pi • char buffer[1024]; Pi +1 • int x; … App. … • for (x=0; x<900; x++); • read(fd,buffer) • • ll. sistema S.O. • Pedir bloque • Ejecutar Pi +1 • Copiar a RAM • Pi listo • Continuar Pi +1 int. hw HW. CPU 74 Disco RAM ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejemplo simplificado Pi • char buffer[1024]; Pi +1 • int x; … App. … • for (x=0; x<900; x++); • read(fd,buffer) • • ll. sistema S.O. • Pedir bloque • Ejecutar Pi +1 • Copiar a RAM • Pi listo • Continuar Pi +1 int. hw HW. CPU 75 Disco RAM ARCOS @ UC3M Alejandro Calderón Mateos Estructura base del sistema operativo código (general) int global1; … ll. sistema void handler1 ( … ) { xxx } void handler2 ( … ) { xxx } i.h. 1 … Red i.h. 2 Disco … 76 void handler3 ( … ) { • Copiar a RAM • Pu listo • Continuar Pv App 1 } int main ( … ) { … On (event1, handler1) ; On (event2, handler2) ; On (event3, handler3) ; … } ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejemplo simplificado Pi App. • char buffer[1024]; … • read(fd,buffer) • • Copiar a RAM • Pu listo • Continuar Pv S.O. • Dato a RAM • Px listo • Continuar Py int. hw int. hw HW. CPU 77 Disco RAM X ARCOS @ UC3M Alejandro Calderón Mateos Interrupciones hardware repaso (1/4) IDT Periférico i PIC IRQ Int. i descriptor INT vector ... CPU Bus Datos do_IRQ(i) IRQi_interrupt() ... Cada periférico (capaz de generar una petición de interrupción) dispone de una línea denominada IRQ (Interrupt ReQuest) Puede haber múltiples dispositivos en una línea, se precisa muestreo para conocer el peticionario Todas las líneas se conectan a un PIC (Programmable Interrupt Controller) Actualmente se usa un APIC (Advanced Programmable Interrupt Controller) El PIC se conecta a la CPU por una línea de aviso de interrupción pendiente (INT) El PIC y la CPU también están conectados por el bus de datos 78 Understanding the Linux kernel (2nd edition) ARCOS @ UC3M Alejandro Calderón Mateos Interrupciones hardware repaso (2/4) IDT Periférico i PIC IRQ Int. i descriptor INT vector ... CPU Bus Datos do_IRQ(i) IRQi_interrupt() ... El PIC monitoriza las líneas de IRQ esperando la llegada de una señal Si llega una señal entonces: Asocia al IRQ del periférico un valor que guarda en un registro del PIC (llamado vector) Avisa a la CPU a través de la línea de interrupción pendiente (INT) La CPU lee del registro (como puerto de E/S o como dirección de memoria) el vector La CPU escribe en el registro de control del PIC que ya leyó el vector El PIC desactiva la línea de interrupción pendiente. borra el vector y vuelve a monitorizar… 79 Understanding the Linux kernel (2nd edition) ARCOS @ UC3M Alejandro Calderón Mateos Interrupciones hardware repaso (3/4) IDT Periférico i PIC IRQ Int. i descriptor INT vector ... CPU Bus Datos do_IRQ(i) IRQi_interrupt() ... El PIC puede permitir deshabilitar selectivamente las IRQ El PIC deja de avisar a la CPU de la petición de una IRQ hasta que se habiliten: no se pierden. Deshabilitar a nivel de CPU (mask/unmask) es diferente: ignora la INT El PIC puede permitir tener niveles de prioridad de interrupción Se asocia a cada IRQ con una prioridad Si hay varias IRQ, el PIC ‘atiende’ primero las de mayor prioridad (resto: deshabilitado temporalmente) Si el PIC no tiene niveles de prioridad, se pueden simular por software en el sistema operativo 80 Understanding the Linux kernel (2nd edition) ARCOS @ UC3M Alejandro Calderón Mateos Interrupciones hardware repaso (4/4) IDT Periférico i PIC IRQ Int. i descriptor INT ... vector CPU Bus Datos do_IRQ(i) IRQi_interrupt() ... La CPU detecta la petición de INT Acepta la interrupción: copia el vector por el bus de datos y ACK al PIC Busca en la Interrupt Descriptor Table (IDT) la rutina de tratamiento asociada Guarda el estado del procesador en pila, pasa a modo privilegiado y ejecuta la RTI Puede que varias RTI (do_IRQ) compartan una misma interrupción (uso de enumeración) Puede que varias interrupciones compartan una rutina genérica común a ellas Recupera el estado de pila, y ejecuta RETI (paso a modo previo y vuelta a lo interrumpido) 81 ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejemplo simplificado Pi • char buffer[1024]; … App. • read(fd,buffer) • ll. sistema • Pedir bloque • Ejecutar Pi +1 S.O. HW. CPU 82 Disco RAM ARCOS @ UC3M Alejandro Calderón Mateos Llamada al sistema IDT Int. i descriptor INT CPU Bus Datos do_IRQ(i) IRQi_interrupt() ... Existe una instrucción en ensamblador que genera una interrupción por software La CPU detecta la petición de INT Busca en la Interrupt Descriptor Table (IDT) la rutina de tratamiento asociada Guarda el estado del procesador en pila, pasa a modo privilegiado y ejecuta la RTI Puede que varias RTI (do_IRQ) compartan una misma interrupción (uso de enumeración) Puede que varias interrupciones compartan una rutina genérica común a ellas Recupera el estado de pila, y ejecuta RETI (paso a modo previo y vuelta a lo interrumpido) 83 ARCOS @ UC3M Alejandro Calderón Mateos Lección 1 Introducción Grupo ARCOS Diseño de Sistemas Operativos Grado en Ingeniería Informática Universidad Carlos III de Madrid