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 |