Introducción a Sistemas Operativos ¿Qué es un Sistema Operativo? Máquina desnuda – computador carente de sistema operativo Programa ejecutable – fichero que contiene un programa en código binario (lenguaje máquina) en un formato tal, que procesado adecuadamente posibilita la construcción de una imagen en memoria para permitir ejecutar dicho programa. Usuario – persona autorizada a utilizar un sistema informático Funciones clásicas de un Sistema Operativo A. Gestión de recursos del computador (kernel – la capa más cercana al hardware, ejecutada en modo privilegiado y residente en memoria) - Asignación de recursos: abstracciones y técnicas o Procesador, memoria (páginas, regiones), ficheros (dispositivos), volúmenes, procesos, hilos, señales, pipes, mutex, colas de mensajes, cuentas de usuarios, grupos de usuarios, credenciales,… o estructuras de seguimiento, políticas de gestión, planificadores, cuotas, recuperación,… - Protección: entre usuarios y entre trabajos - Contabilidad: monitorización para cargar por el uso o afinar el rendimiento B. Ejecución de servicios para los programas en ejecución (API o conjunto de llamadas al sistema). Ofrece una máquina extendida a los procesos. - Ejecución de programas - Ordenes de entrada/salida - Operaciones sobre ficheros - Detección y tratamiento de errores C. Intérprete de mandatos (shell – interfaz para interacción con el usuario; se ejecuta en modo usuario y es discutible si forma parte básica del sistema operativo) - Interfaz textual - Interfaz gráfica - Ficheros de mandatos Usuarios: autenticación (“contraseñas”) y plantillas de protección Administrador o superusuario Grupos de usuarios Arranque del sistema 1. Memoria ROM que contiene a. Iniciador ROM – independiente del SO. Modo real, sin interrupciones i. Comprueba el sistema (POST – Power-On self-test) ii. Carga en memoria el boot desde el dispositivo de arranque seleccionado iii. Cede control al programa de arranque (boot) b. Software de E/S (BIOS): disco, teclado, pantalla,… 2. Cargador del SO en disco (boot): almacenado en zona predefinida a. Comprueba el sistema (coherencia del sistema de ficheros) b. Carga el kernel residente en memoria c. Inicializa las estructuras de información (IDT, tablas de procesos,…) d. Crea las tablas de páginas de memoria y activa la MMU paso a modo protegido e. Habilita interrupciones 3. Sistema Operativo en funcionamiento – fase inicial a. Carga módulos adicionales, generalmente drivers de dispositivos b. Crea procesos servidores (“demonios”) iniciales c. Crea un proceso de inicio o login por cada terminal, y procesos auxiliares d. El proceso login autentica al usuario mediante contraseña y ejecuta un shell para interactuar con él Parada del sistema Copia a disco de la información necesaria mantenida en memoria por razones de eficiencia; si no se efectúa así, el sistema queda corrompido y en el próximo arranque debe ser “reparado” Hibernación: copia a disco de la imagen completa de memoria principal rearranque rápido a la misma situación de apagado Suspensión (Standby): apagado de casi todo excepto la memoria reanudación instantánea Activación del Sistema Operativo El SO “despierta” a la actividad a causa de: 1. Llamadas al sistema. Instrucción TRAP 2. Interrupciones externas: de E/S, de reloj, de otro procesador 3. Excepciones h/w síncronas o asíncronas La secuencia de activación es: 1. La interrupción hace pasar el proceso A a modo privilegiado y pasa control al kernel 2. EL kernel salva el contexto (estado) del proceso A interrumpido 3. El kernel atiende al servicio solicitado 4. El kernel usa el planificador para seleccionar un nuevo proceso B, si es el caso 5. El kernel restaura el contexto del proceso B y le cede control Servicios de sistema (cada llamada-servicio está asociada a un número) La prestación del servicio puede - ser inmediato - requerir bloqueo del proceso solicitante (síncrono) - proceder dejando continuar al proceso solicitante (asíncrono) Funciones de biblioteca Arropan a las llamadas al sistema - preparan los argumentos - invocan la instrucción TRAP o equivalente - recuperan los resultados Tipos de sistemas operativos 1. Monotarea (monoproceso), multitarea (multiproceso) 2. Multiprogramación: batch (cola de trabajos) o Tiempo-compartido (interactivo - asociado a terminal) 3. Personal (monousuario) o multiusuario 4. Monoprocesador (una CPU) o multiprocesador (varias CPUs) 5. Mono-thread o multi-thread 6. Cliente (estación de trabajo personal que recurre a servidores) o servidor (usuarios: sistemas remotos) 7. Empotrado (interaccionan con un sistema físico) o de tiempo real (garantizan la ejecución del programa en un tiempo determinado) 8. Fijos o móviles (entorno reducido y de bajo consumo) (nombrar ejemplos reales de SSSO de cada tipo) Componentes del Sistema Operativo 1. Gestor de procesos a. Abstracción: imagen de memoria, estado del procesador, proceso b. Estructura: Bloque de Control de Proceso c. Servicios: crear, ejecutar, terminar proceso 2. Gestor de memoria a. Abstracción: regiones, memoria virtual, imagen de memoria b. Estructuras: tablas de páginas c. Servicios: solicitar, liberar, compartir memoria 3. Comunicación y sincronización de procesos a. Abstracción: cauces, semáforos, mensajes b. Servicios: Crear mecanismo, recibir (esperar), enviar (despertar), destruir 4. Gestor de Entrada/salida a. Abstracción: dispositivo como fichero b. Servicios: los de ficheros (independencia de dispositivo) c. Tipos: Orientados a caracteres o a bloques 5. Gestor de ficheros y directorios a. Abstracción: ficheros – atributos, puntero de posición, bloques, volumen b. Servicios de ficheros: abrir, leer, escribir, cerrar, posicionar, crear, borrar c. Abstracción: directorios, jerarquía de nombres d. Servicios de directorios: crear, abrir, leer, borrar, cambiar de directorio Seguridad y protección Autenticación de usuario mediante contraseña u otro método (ej., huella) Protección de acceso y operación a. Por recurso – ACL: cada recurso lista usuarios y operaciones permitidas b. Por usuario – “Capacidades”: cada usuario lista recursos y operaciones permitidas Interfaces Interfaz de programación: “Single UNIX Specification UNIX 03” – POSIX Windows API Interfaz de usuario a. Alfanumérica b. Gráfica (GUI) c. Ficheros de mandatos (shell scripts) Diseño de los Sistemas Operativos * Monolíticos (OS-360, MSDOS, UNIX) Todos los componentes integrados en un único programa Un único espacio de direcciones Todas las funciones se ejecutan en modo privilegiado Desventaja: complejidad, dificultad de mantenimiento y ampliación Estructurados: * Sistema por capas (OS/2, THE) Jerarquía de capas de programación Cada una ofrece un interfaz claro a la capa superior Ventaja: modularidad * Cliente/servidor (Minix, Mach, Amoeba, Mac OS X) Usa un microkernel: SO que se ejecuta en modo privilegiado Los servicios y funciones del SO se ejecutan en modo usuario como servidores El proceso de usuario (cliente) solicita servicio (a los servidores) mediante paso de mensajes usando el microkernel como intermediario Ventajas: flexibilidad y protección Desventaja: merma de rendimiento * Máquina virtual “duplicado eficiente y aislado de una máquina real o estándar” a. MV de sistema o hardware (Virtual Box, VMWare) - “plataforma completa que soporta la ejecución de un SO completo” - se llama “hipervisor” al monitor de la MV - Tipo I: el hipervisor corre en la máquina física SO invitado (“guest”) corre en la MV nativa - Tipo II: el hipervisor corre en un SO anfitrión (“host”) SO “guest” corre encima del SO “host” b. MV de proceso (ej., Java JVM, .NET CLI) - “plataforma que soporta un solo proceso ligado a un lenguaje” - emulación de un sistema no nativo * SO distribuido (middleware: DCE, DCOM, COM+, Java RMI) Carga dinámica de módulos Modo de recomponer en tiempo de arranque o “en vivo” la configuración de un SO Aplicado generalmente a manejadores de dispositivos, sistemas de ficheros, algunas políticas de gestión,… Aplicado generalmente a SSOO personales ABSTRACCIÓN “Considerar una cualidad, estado, acción o fenómeno con independencia del objeto en que existe o por que existe”. El SO simplifica el hardware construyendo una serie de abstracciones: Proceso: una CPU dedicada a un programa. Memoria virtual: simula una RAM infinita. Fichero: memoria permanente de datos con tipo. Socket: canal de comunicación de E/S de datos con tipo. Shell: interfaz de usuario programable… TÉCNICAS Ideamos técnicas para construir abstracciones Planificadores de recursos: CPUs, discos,etc. Gestión de memoria: paginación,... Sistema de ficheros: designación,... Interrupciones, sondeo, buffering Hebras (threads). Dominios, listas de acceso, capacidades, criptosistemas de clave pública,...