Download Lección 1 - Arcos
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 Principales funciones, características y objetivos 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 Principales funciones, características y objetivos 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. Cómo es por fuera. 2. 1. Ejecutables y bibliotecas Cómo es por dentro. 3. 1. 8 Principales funciones, características y objetivos 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 Prioridades, multiusuario Gestión de Memoria y Almacenamiento Reparto de memoria entre procesos, con protección y compartición Persistencia y etiquetación (ej. Sistema de Archivos) con 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 Un detalle más sobre máquina extendida… Usuario Sistema operativo Interfaz del usuario. Gestor de recursos: CPU, memoria, etc. Máquina extendida: Servicios, interfaz del programador, etc. Hardware 18 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» 19 http://www-128.ibm.com/developerworks/library/l-linuxvirt/index.html ARCOS @ UC3M Alejandro Calderón Mateos Máquinas virtuales HW. emulation Distinto Hardware Mismo Hardware y… 20 http://www-128.ibm.com/developerworks/library/l-linuxvirt/index.html ARCOS @ UC3M Alejandro Calderón Mateos Máquinas virtuales HW. emulation Distinto Hardware … distinto S.O. y… Mismo Hardware y… … mismo S.O. 21 http://www-128.ibm.com/developerworks/library/l-linuxvirt/index.html Containers ARCOS @ UC3M Alejandro Calderón Mateos Máquinas virtuales HW. emulation Distinto Hardware … no colaboran con el hipervisor Full virtualization … distinto S.O. y… Mismo Hardware y… … colaboran con el hipervisor … mismo S.O. 22 http://www-128.ibm.com/developerworks/library/l-linuxvirt/index.html Para-virtualization Containers 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. 23 Principales funciones, características y objetivos Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Principales características Versátil Portabilidad Adaptativo Multidisciplinar Complejo Delicado 24 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, … 25 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 26 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. 27 ARCOS @ UC3M Alejandro Calderón Mateos Hw Resumen de la evolución S.O. Primera generación (años 50) Monitor hardware. Segunda generación (años 60) Procesamiento por lotes. Tercera generación (años 70) Multiprogramación, tiempo compartido y multiusuario. Cuarta generación (años 80 – actualidad) Sistemas distribuidos. Interfaz gráfica, reconocimiento de voz, etc. Virtualización. 28 ARCOS @ UC3M Alejandro Calderón Mateos Primera generación (1945-1955) Hw monitor hardware S.O. Tubos de vacío. ENIAC, UNIVAC, … Grandes, lentos y caros. Complicación para programar y depurar. Monitor hardware. Asistente para el diagnóstico. 29 ARCOS @ UC3M Alejandro Calderón Mateos Segunda generación (1955-1965) Hw procesamiento por lotes S.O. Transistores. IBM 7090, IBM1620, … Más pequeños, rápidos y fiables. Ligeras mejoras en su programación. Procesamiento por lotes. Ejecución de trabajos uno detrás de otro. Enlace de rutinas de librerías a programas. Gestión de archivos, dispositivos de E/S y almacenamiento secundario. Aparición de OS/360 30 ARCOS @ UC3M Alejandro Calderón Mateos Tercera generación (1965-1980) Hw multiprogramación, multitarea y multiusuario S.O. Circuitos integrados. PDP-8, … Más pequeños, rápidos y fiables. Fortran, C, Pascal, Basic, etc. Multiprogramación. Gestión de recursos compartidos solapando esperas en CPU. Tiempo compartido y multiusuario. Compartición de recursos y multiplexación del uso de la CPU. Aparición de Multics, Unix, CP/M, etc. 31 ARCOS @ UC3M Alejandro Calderón Mateos Cuarta generación (1980-) Hw distribuidos, con interfaz gráfica, etc. S.O. El microprocesador. IBM-PC, … Ordenadores personales. C++, etc. Distribuidos (de tiempo real) Conexión a Internet, aplicaciones de trabajo distribuido Interfaz gráfica. System 5, Windows 1.0, etc. 32 ARCOS @ UC3M Alejandro Calderón Mateos Cuarta generación (2005-) Hw virtualización, multiprocesamiento, etc. S.O. Los system-on-chip y multicores. Tables, smartphones, … Era post-PC. .net, java, python, php, etc. Virtualización. Cloud computing, legacy computing, desktop móvil, etc. Nuevas formas de interacción. Reconocimiento del habla, entrada multitáctil, etc.. Pantallas 3D, holografías, etc. 33 ARCOS @ UC3M Alejandro Calderón Mateos Evolución de los sistemas operativos 55 IOCS IBSYS 60 CTSS 65 DOS/360 OS/360 70 75 MULTICS CP/CM5 DOS/VDSE MVS/370 RT-11 UNIXV.7 VM/370 80 85 SYSTEM III VS MVS/XA SYSTEM V.4 95 VM/ESA AIX/370 LINUX AIX/ESA CP/M VMS 1.0 4.1BSD XENIX MS-DOS 1.0 SUN OS 4.2BSD AIX POSIX MACH VM/XA SYSTEM V 90 VS/ESA MVS/ES RSX-11M UNIX TSO OSF/1 4.3BSD SOLARIS 2 4.4BSD 00 DR/DOS OS/2 WIN 3.0 VMS 5.4 WIN 3.1 WIN NT WIN 9X VMS 7.3 WIN 2000 LINUX 2.6 03 34 SOLARIS 10 https://www.microsoft.com/resources/sharedsource/windowsacademic/curriculumresourcekit.mspx WIN XP WIN Server 2003 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. 35 http://work-at-home-data-entry.com/wp-content/uploads/2014/10/Work-from-home-team-group-of-workers-icon.png ARCOS @ UC3M Alejandro Calderón Mateos Principales características: 4) Software complejo Software complejo: Muchas líneas de código. Muchos equipos de trabajo. 36 ARCOS @ UC3M Alejandro Calderón Mateos Principales características: 4) Software complejo Software complejo: Muchas líneas de código. Muchos equipos de trabajo. 37 https://www.openhub.net/p/linux ARCOS @ UC3M Alejandro Calderón Mateos Principales características: 4) Software complejo Software complejo: Muchas líneas de código. Muchos equipos de trabajo. 38 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: 4) Software complejo Software complejo: Muchas líneas de código. Muchos equipos de trabajo. 39 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: 4) Software complejo Software complejo: Muchas líneas de código. Muchos equipos de trabajo. 40 http://osdelivers.blackducksoftware.com/2015/05/05/driving-into-the-future-of-automotive-technology-at-genivi-annual-members-meeting/ http://www.alexmarchant.com/writing/healthcare-dot-gov-lines-of-code-comparison/ 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. 41 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. 42 http://www.mayerdan.com/ruby/2012/11/11/bugs-per-line-of-code-ratio/ 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. 43 http://www.mayerdan.com/ruby/2012/11/11/bugs-per-line-of-code-ratio/ ARCOS @ UC3M Alejandro Calderón Mateos Principales características resumen Versátil Portabilidad Adaptativo Multidisciplinar Complejo Delicado 44 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. 45 Principales funciones, características y objetivos 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 46 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. 47 Características principales Ejecución asíncrona ARCOS @ UC3M Alejandro Calderón Mateos Ejecutables (1/1) G. dispositivos de E/S D#15 48 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 49 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 50 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) 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 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 53 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 54 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 55 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 56 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 57 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 58 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 59 Proceso 1 ARCOS @ UC3M Alejandro Calderón Mateos Bibliotecas de objetos 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 60 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 61 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 62 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 63 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 … 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 Biblioteca estática gcc –Wall –g –o main.exe main.c –I. –L. –ldinamica Carga y montaje env en LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. tiempo de compilación ./main.exe Biblioteca dinámica Carga y montaje en tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior 64 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 … 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 Biblioteca estática gcc –Wall –g –o main.exe main.c –I. –L. –ldinamica –Wl,-rpath=$(pwd) Carga y montaje ./main.exe 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 65 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 66 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. 67 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 68 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 69 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 70 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 71 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. 72 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) 73 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 74 ARCOS @ UC3M Alejandro Calderón Mateos SS.OO. Reales Linux (versión ‘menos’ simplificada) 75 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. 76 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 77 ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejecución (general) -------------------------------------------------------------------------------------- 78 ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejecución (general) Al llegar un evento (ex) se ejecuta el manejador asociado (hx) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 79 ARCOS @ UC3M Alejandro Calderón Mateos Ejecución asíncrona ejecución (general) ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 80 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) ; … } 81 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) ; … } 82 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) ; … } 83 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; } 84 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 85 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 86 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 87 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 88 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 89 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 90 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 … 91 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 soporte hardware 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 92 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 93 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… 94 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 95 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) 96 ARCOS @ UC3M Alejandro Calderón Mateos Llamada al sistema soporte hardware Pi • char buffer[1024]; … App. • read(fd,buffer) • ll. sistema • Pedir bloque • Ejecutar Pi +1 S.O. HW. CPU 97 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) 98 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