1 Visión general e introducción al … Objetivos: Revisar conceptos relacionados con sistemas operativos Dar una visión general de UNIX, destacando algunos aspectos del kernel Dar una visión general de Linux, destacando algunos aspectos del kernel
2 Revisión de conceptos Clasificación del software Software de aplicación Programas que realizan las tareas en las que el usuario está realmente interesado Software de sistema Programas y librerías de soporte para el software de aplicación, por ejemplo el sistema operativo
3 Revisión de conceptos Objetivos de un sistema operativo Abstracción de los recursos hardware Almacenamiento heterogeneo ? Sistema de archivos Memoria física + memoria secundaria ? Memoria virtual Variedad de dispositivos de E/S ? E/S estándar Reparto de recursos ? CPU, memoría física, espacio de disco, comunicaciones, etc. Servicios de sistema al software de aplicación Semáforos Memoria compartida Señales Temporización, etc.
4 Revisión de conceptos Características generales de un sistema operativo Monotarea o multitarea ? Multitarea expulsiva (preemptive), protección entre tareas, protección del hardware Monousuario o multiusuario Monoplataforma o multiplataforma Monoprocesador o multiprocesador Interactivo o batch Tiempo compartido, pudiendo procesar trabajos batch Kernel monolítico o microkernel (o exokernel) Sistemas operativos de tiempo real
5 Revisión de conceptos Características generales de un sistema operativo Procesos Niveles de protección Las instrucciones no pueden ejecutar cualquier instrucción potencialmente peligrosa Modo usuario y modo kernel (o supervisor) Procesos ? Programa en ejecución y con su contexto Descriptor de procesos (PCB ? Process Control Block) ? struct task_struct (elemento de struct thread_info) Contexto de nivel de usuario Contexto de nivel de sistema (kernel) Contexto de registros
6 Revisión de conceptos Características generales de un sistema operativo Planificación y conmutación de procesos Estados de un proceso ? Listo, En ejecución, Parado, … Jerarquía de procesos ? Relación padre-hijo Threads (hilos). Threads del kernel Tipos de planificación ? quantum (timeslice), prioridad, … El algoritmo de planificación del kernel de Linux ? O(1) Procesos interumpibles por el kernel (preemptive) Llamadas al sistema ? Interfaz entre un proceso y el sistema operativo Invocada por el proceso Causada por una interrupción software (señal)
7 Revisión de conceptos Relación entre aplicaciones, el kernel y el hardware
8 Revisión de conceptos Sistemas monolíticos versus microkernel Enfoque monolítico Kernels implementados como un gran proceso único ejecutándose en un único espacio de direcciones ? kernels en disco como un archivo binario Todos los servicios del kernel existen y se ejecutan en el gran espacio de direcciones del kernel Comunicación con el kernel es trivial, ya que todo se ejecuta en modo kernel en el mismo espacio de direccines El kernel puede llamar directamente a funciones, como si fuesen aplicaciones en modo usuario Sencillo y buen rendimiento ? Mayoria de los sistemas UNIX son monolíticos en diseño
9 Revisión de conceptos Sistemas monolíticos versus microkernel Enfoque microkernel Núcleo con funcionalidad mínima Servicios provistos por servidores que son procesos El kernel sólo gestiona la comunicación con los servidores Las distintas partes del S.O. se comunican mediante paso de mensajes Chorus, QNX, Mach (GNU Hurd), WNT 3.51
10 Revisión de conceptos Sistemas monolíticos versus microkernel Enfoque monolítico + Eficiente ? Pocos cambios de contexto – Depuración – Ampliación (modularidad) – Dependencias Enfoque microkernel + Fácil implementación y depuración + Portabilidad + La separación de varios servidores ? previene la caida de servidores – Eficiente ? sobrecarga de comunicaciones
11 Revisión de conceptos Linux Estructura Monolítico con módulos cargables Threaded Dinámico (añadir y quitar módulos) e interrumpible Mayor modularidad que un sistema monolítico puro ? mayor rendimiento que un sistema microkernel Portabilidad Escrito casi íntegramente en C estándar, con partes en ensamblador dependientes de la arquitectura (/arch) Nuevamente el equilibrio entre la sencillez y eficiencia gana ? Linux gana
12 Revisión de conceptos Linux Características principales S.O. estilo UNIX, compatible POSIX Multitarea expulsiva, Multiusuario y Multiplataforma Protección de memoria y memoria virtual, kernel threading, interrumpible (preemptive) SMP, Clustering Variantes para Tiempo Real y CPUs sin MMU Múltiples sistemas de archivos y protocolos de red Con modelo de dispositivos orientado a objetos Razonable soporte hardware Casi todo escrito en C y depuración en tiempo de ejecución Módulos cargables en tiempo de ejecución (dinámico)
13 Revisión de conceptos UNIX/Linux Algo de historia 1969: UNIX, Thompson & Ritchie (AT&T Bell Labs) ? proyecto MULTICS 1978: BSD, Berkeley Software Distribution ? Distribuidores comerciales: Sun, HP, IBM, SGI, DEC, Digital, SCO 1984: GNU: Richard Stallman (FSF) 1986: POSIX (Portable Operating System Interface) ? La norma POSIX.1 ha uniformado las operaciones de manipulación basándose fundamentalmente en las funcionalidades existentes en System V 1987: MINIX, Andrew Tanenbaum 1989: SVR4, AT&T 1991: 'Nacimiento' de Linux
14 Revisión de conceptos Linux Algo de historia Evolución de MINIX para 8086 (A.S. Tannenbaum, 12000 líneas de código abierto) En 1991 Linus Torvalds pone un mensaje en USENET diciendo que está escribiendo un S.O. como hobby, y deja los fuentes disponibles. (0.01) Poco después publica la versión 0.02 y pide colaboraciones a los interesados ? En menos de un año más de 100 colaboradores Aparecen múltiples distribuciones comerciales y no comerciales (Slackware, Red Hat, Suse, Mandrake, Caldera, Debian, etc.) Soporte por parte de grandes empresas (Intel, IBM, Sun, Oracle, HP, Informix, etc.) y para múltiples plataformas, no sólo i386
15 Revisión de conceptos Linux Algo de historia Linux 1.0 aparece en 1994 en forma de distribución (i386) Linux 1.2 en 1994 ? Soporta diferentes arquitecturas (Sparc, Alpha, MIPS) Linux 2.0 en 1996 ? competitivo con sist. UNIXs comerciales Linux 2.2 (Enero 1999), con muchas mejoras y soporte hardware Linux 2.4 (Enero 2001), más hardware soportado (ISA PnP, USB) y modificaciones arquitecturales Linux 2.6 (Diciembre 2003), características avanzadas, enterprise, muchas mejoras en la arquitectura Ultima versión estable 2.6.22 (X.Y.Z X = versión mayor, Y = versión (par = estable, impar = desarrollo), Z = revisión)
16 Revisión de conceptos Linux Modelo de desarrollo de Linux Modelo Open Source Licencia GPL Motivaciones ? resolver problemas (compartir soluciones), educación, reconocimiento, anti-monopolio, seguridad Autogestión del proyecto ? objetivos y motivación voluntarios, filosofía y herramientas comunes, desarrollos en paralelo con poda de ramas fallidas, distribución frecuente y pruebas masivas, depuración masiva por ser Open Source Resultados de gran calidad
Página siguiente |