Bibliografía Tanenbaum, A. (2009). Sistemas Operativos Modernos (3ª ed.). Pearsons Educación, México. http://xml.cie.unam.mx/xml/Linux/glinux.html#t oc2 http://www.juntadeandalucia.es/empleo/recursos/ material_didactico/especialidades/materialdidactic o_administrador_servidores/Content/1-so/2- Windows.pdf ¿Qué es un sistema operativo? Capa de software especializada, especializada en “la administración de todos los recursos” (p. 1) de la computadora: Memoria. Disco. Procesos. Brindan acceso a recursos y los administran. Tiene acceso a todo el hardware y puede ejecutar cualquier instrucción, modo kernel; distinción conceptual, procesos de usuario pueden ejecutarse en modo kernel. Características Abstracción: el programador no se preocupa por la implementación del hardware, ni como se resuelven los problemas de alto nivel. El programador de aplicaciones como “cliente”. Administra recursos: ¿cómo ejecutar programas concurrentemente?, ¿cómo administrar el sistema de archivos?, ¿cómo crear procesos?, etc. Características Abstracción: el programador no se preocupa por la implementación del hardware, ni como se resuelven los problemas de alto nivel. El programador de aplicaciones como “cliente”. Administra recursos: ¿cómo ejecutar programas concurrentemente?, ¿cómo administrar el sistema de archivos?, ¿cómo crear procesos?, etc. Características Brinda un entorno de trabajo amigable. Permite hacer uso de los recursos del sistema: hardware y software: Como entorno para hardware o software. Permite ejecutar programas. Enmascara la implementación del hardware. Evolución de sistemas operativos 1945 a 1955: tubos de vacío Colossus, Z3, Mark I, ENIAC. Diseñadores y operadores la misma persona. Programación cableada, uso de tarjetas. Debuguear. 1955 a 1965: transistores y lotes Distintos roles. FORTRAN o ensamblador, uso de tarjetas. Carga, ejecución, carga y ejecución. 1965 a 1980: circuitos integrados y multiprogramación Estandarización y compatibilidad, un único sistema para todo. Errores y complejidad. Multiprogramación, administrar el ocio. Tiempo compartido, muchos usuarios y un sistema que administra los recursos. MULTICS: complejo, lenguaje de programación, hardware. UNIX... y LINUX: académico, código fuente, etc. Desde 1980: computadoras personales Mayor potencia de hardware. Amigabilidad con el usuario final, alta interactividad. CP/M y DOS; Windows 3.0; Windows 9x... Windows NT. Sistemas distribuidos: coordinación de procesadores, memoria, disco, comunicación, etc. Interacción sistema operativo - hardware Procesador: Conjunto de instrucciones específicas. Contador de programa. Apuntador a pila del proceso. Código de condiciones: condiciones, modo, etc. Pipeline, hilos y núcleos. Memoria y Disco: Memoria virtual Entrada – Salida: Proceso relativamenten lento. Interfaz estandarizadas y drivers. Modo Kernel para su uso. Interrupciones. Estructuras de sistemas operativos Sistemas monolíticos Todo el sistema está en un único programa ejecutado en modo kernel. Es como tener todo el programa en un único módulo o clase; aunque existen varios. No hay ocultamiento de la información. La jerarquía se realiza por invocación. Velocidad de ejecución, dificultad para mantenerlo y comprenderlo. Sistemas en capas Capa Capa está asociada a funcionalidades. Estructura jerárquica. Cada capa determina sus interfaces de comunicación. Mantenimiento fácil, organización lógica. Dificultad para identificar las capas. Lento respecto a monolítico. Sistemas en capas Microkernel Módulo reducido, con privilegio de superusuario y operaciones esenciales (procesos, manejo mínimo de memoria). Resto de funcionalidades se ejecutan en modo usuario; en caso de error el kernel informa, pero el sistema sigue estable (memoria solicita, kernel administra). Manejo de mensajes. Núcleo seguro, confiable, estable. Microkernel Cliente – Servidor Petición (cliente) – Respuesta (Servidor). Manejo de mensajes. Especialmente orientado a redes. Caso de estudio: Linux Microkernel. Ampliamente usado en servidores. Varias distribuciones. Manejo de scripts.