Sistemas Operativos Mg. Jorge Raúl Ardenghi jra@cs.uns.edu.ar Departamento de Informática Facultad de Ingeniería Objetivos del Curso de Sistemas Operativos El curso desarrolla los conocimientos de Sistemas Operativos desde una visión conceptual y estructural. Se presentan todos los mecanismos de interacción entre sus partes sin particularizar en algún sistema operativo en especial. Se discuten tópicos como: servicios de sistemas operativos, sistemas de archivos, planificación de CPU, manejo de memoria memoria virtual, planificación de discos, interbloqueos, procesos y programación concurrente, protección, sistemas distribuidos, etc. Se presentan algunos ejemplos de estos conceptos en las familias UNIX, Windows XP, Solaris, etc a lo largo del desarrollo de los módulos, mostrando los matices de implementación entre estos sistemas. El curso requiere conocimientos de arquitectura y organización de computadores y estructura de datos. JRA © 2008 Sistemas Operativos – Introducción Programa Sintético 1.0 Introducción. 2.0 Estructuras de Sistemas de Cómputo. 3.0 Estructuras de Sistemas Operativos. 4.0 Procesos. 5.0 Planificación de Procesos. 6.0 Sincronización de Procesos. 7.0 Interbloqueos. 8.0 Manejo de Memoria. 9.0 Memoria Virtual. 10.0 Sistema de Archivos: Interfaces e mplementación. 11.0. Manejo de Almacenamiento Secundario. 12.0 Seguridad y Protección. JRA © 2008 Sistemas Operativos – Introducción Bibliografía de Sistemas Operativos Silberschatz, A., Gagne G., y Galvin, P.B.; "Operating System Concepts", Addison-Wesley, 1998, 5ta Edición; 2001, 6ta Edición. 2005, 7ma Edición. Silberschatz, A., Galvin, P.B. y Gagne, G.; "Applied Operating System Concepts", 1st Edition, Addison-Wesley, 2000. Brinch Hansen, "Operating System Principles", Prentice Hall, 1973 Shaw,A. y Bic,L; "The Logical Design of Operating Systems", Prentice Hall, 1988, 2da Edición Krakowiak,S.; "Principles of Operating Systemas", The MIT Press,1988 Deitel,H.M.; "Sistemas Operativos", Addison-Wesley, 1993, 2da. Edición. (o su versión en inglés) Tanenbaum, A., Woodhull, A. S.; "Operating Systemas: Design and Implementation", Prentice Hall, 1st edition.,1987 (o su version en español); 2nd edition.Prentice Hall, 1997; 3rd edition, 2006. JRA © 2008 Sistemas Operativos – Introducción Bibliografía de Sistemas Operativos (Cont.) Tanenbaum, A.; "Modern Operating Systems", Addison-Wesley, 1992.(1ra Parte). 2nd Edition, Prentice Hall, 2001. Maekawa, M. y otros; "Operating Systems: Advanced Concepts", The Benjamin /Cummings Pub. 1987. Nutt, G.; "Centralized and Distributed Operating Systems", Prentice Hall, 1992. Nutt, G.; "Operating Systems: A Modern Perspective", AddisonWesley, 1997. Milenkovic,M. "Sistemas Operativos: Conceptos y Diseño", Mc Graw Hill, 1994. (o su versión en inglés) Stallings, W. "Operating Systems: Internals and Design Principles", Prentice Hall, 3rd Edition, 1998; 4th Edition, 2001; 5th Edition, 2005. JRA © 2008 Sistemas Operativos – Introducción Bibliografía de Sistemas Operativos (Cont.) Presentación mas descriptiva orientada a aspectos técnicos: Madnick y Donovan, "Sistemas Operativos", 1974 Tanenbaum,A.; "Operating Systemas: Design and Implementation", Prentice Hall, 1997 (o su versión en español) Tanenbaum, A., Woodhull, A. S.; "Operating Systemas: Design and Implementation", 2nd edition.Prentice Hall, 1997. Bach,M.J.; "The Design of the UNIX Operating System", Prentice Hall, 1987 McKusick et ál; "The Design and Implementation of the 4.4BSD Operating System",Addison-Wesley,1996. Vahalia, U.; "UNIX Internals: The New Frontiers", Prentice Hall, 1996. Pate, S.D.; "UNIX Internals: A Practical Approach", AddisonWesley, 1996 JRA © 2008 Sistemas Operativos – Introducción Bibliografía de Sistemas Operativos (Cont.) Revistas Técnicas “Operating System Review" SIG del ACM. "Computing Surveys" de ACM. "Transaction on Computer Systems" de ACM. "Transaction on Software Engineering" del IEEE. "Transaction on Computers" del IEEE. "Computer Magazine" del IEEE. "Software Magazine" del IEEE. JRA © 2008 Sistemas Operativos – Introducción Sistemas Operativos Módulo 1: Introducción JRA © 2008 Sistemas Operativos – Introducción Introducción ¿Qué hace un Sistema Operativo? Organización del Sistema de Cómputo Arquitectura del Sistema de Cómputo Estructura del Sistema Operativo Operaciones del Sistema Operativo Administración de Procesos Administración de Memoria Administración del Almacenamiento Protección y Seguridad Sistemas Distribuidos Sistemas de Propósito Especial Ambientes de Computación Sistemas Operativos – Introducción JRA © 2008 Introducción ¿Qué es un sistema operativo? Un programa que actúa como un intermediario entre un usuario de una computadora y el hardware de la computadora. Objetivos de Sistema Operativo: Ejecutar los programas de usuario y permitir la solución de problemas del usuario mas facilmente. Conveniencia de uso del sistema de la computadora. Uso del hardware de la computadora de manera eficiente. JRA © 2008 Sistemas Operativos – Introducción Introducción Componentes del Sistema de Cómputo 1.Hardware – provee los recursos básicos de computación (CPU, memoria, dispositivos de E/S). 2. Sistema Operativo – controla y coordina el uso del hardware entre varios programas de aplicación para varios usuarios. 3. Programas de Aplicación – define el modo en el cual los recursos del sistema son usados para resolver los problemas de computación de los usuarios (compiladores, sistemas de bases de datos, videojuegos, web, programas administrativos, etc). 4.Usuarios (gente, máquinas, otras computadoras). Sistemas Operativos – Introducción JRA © 2008 Introducción Usuario 1 Compilador Usuario 2 Usuario 3 Ensamblador Editor Programas de Sistema y de Aplicación Sistema Operativo Hardware JRA © 2008 Sistemas Operativos – Introducción Usuario n Sistema de Base de Datos Introducción Vista Abstracta de los Componentes del Sistema Hardware Sistema Operativo Utilitarios Librerías Interfaz JRA © 2008 Sistemas Operativos – Introducción Introducción Definiciones de Sistemas Operativos Alocador de recursos administra todos los recursos. decide sobre requerimientos conflictivos para asegurar eficiencia y uso imparcial de recursos Programa de Control controla ejecución de los programas para prevenir errores y el uso impropio de la computadora. JRA © 2008 Sistemas Operativos – Introducción Introducción Definiciones de Sistemas Operativos (cont) No existe una definición universalmente aceptada. “La cosa que un vendedor entrega cuando uno ordena un sistema operativo” resulta una buena aproximación “El programa que ejecuta todo el tiempo en la computadora” es el kernel o núcleo. Todo lo demás es un programa de sistema (viene junto con el sistema operativo) o un programa de aplicación. Sistemas Operativos – Introducción JRA © 2008 Introducción Inicio de la Computadora El programa de bootstrap es cargado en el encendido o reboot JRA © 2008 Tipicamente almacenado en ROM o EEPROM, generalmente conocido como firmware Inicializa todos los aspectos del sistema Carga el kernel del sistema operativo y comienza la ejecución Sistemas Operativos – Introducción Introducción Organización del Sistema de Cómputo Operación del Sistema de Cómputo Una o más CPUs, se provee acceso a la memoria compartida por dispositivos de control conectados a un canal común. La ejecución concurrente de CPUs y dispositivos compiten por ciclos de memoria. JRA © 2008 Sistemas Operativos – Introducción Introducción Organización del Sistema de Cómputo teclado impresora discos Controlador Controlador Adaptador disco USB gráfico memoria JRA © 2008 Sistemas Operativos – Introducción Introducción Operación del Sistema de Cómputo Los dispositivos de E/S y la CPU pueden ejecutar JRA © 2008 concurrentemente. Cada controlador de dispositivos está encargado de un tipo particular de dispositivo. Cada controlador de dispositivos tiene un buffer local. La CPU mueve datos desde/hacia la memoria principal a/desde los buffers locales. La E/S es desde el dispositivo al buffer local del controlador. El controlador de dispositivo informa a la CPU que ha finalizado su operación por medio de una interrupción. Sistemas Operativos – Introducción Introducción Funcionamiento de las Interrupciones Una interrupción transfiere el control a la rutina de servicio de la misma, generalmente por medio del vector de interrupción, que contiene las direcciones de todas las rutinas de servicio. La arquitectura de la interrupción debe salvar la dirección de la instrucción interrumpida. Las interrupciones entrantes son deshabilitadas mientras otra interrupción está siendo procesada para prevenir una pérdida de interrupción. Un trap es una interrupción generada por el software causada por un error o por un requerimiento de usuario. Un sistema operativo es manejado por las interrupciones. JRA © 2008 Sistemas Operativos – Introducción Introducción Manejo de Interrupciones El sistema operativo preserva el estado de la CPU almacenando los registros y el contador de programa. Determina que tipo de interrupción ha occurrido: polling Sistema de interrupción vectoreado Segmentos de código separados determinan que tipo de acción deberían llevarse a cabo para cada tipo de interrupción. Sistemas Operativos – Introducción JRA © 2008 Introducción Línea de tiempo de Interrupción para un proceso simple realizando una salida proc ejec proc de int de E/S CPU Ocioso Dispositivo transfiriendo Req E/S JRA © 2008 E/S transferencia hecha Req E/S Sistemas Operativos – Introducción transferencia hecha Introducción Estructura de E/S Forma Sincrónica Luego que la E/S comienza, el control retorna al programa del usuario solo cuando la E/S se haya completado. JRA © 2008 una instrucción de espera mantiene ociosa la CPU hasta la próxima interrupción. lazo de espera (contención para el acceso a memoria). A lo sumo una E/S requerida es atendida a la vez, no hay procesamiento simultáneo de E/S. Sistemas Operativos – Introducción Inroducción Estructura de E/S (Cont.) Forma Asincrónica Luego que la E/S comienza, el control retorna al programa del usuario sin esperar que la E/S se haya completado. Llamada al Sistema – requiere al SO que permita al usuario esperar por la terminación de la E/S. Tabla de estado de los dispositivos: contiene una entrada por cada dispositivo de E/S indicando su tipo, dirección, y estado. El SO pone un índice en la tabla de dispositivos de E/S para determinar el estado del dispositivo y modificar la entrada a la tabla para incluir la interrupción. JRA © 2008 Sistemas Operativos – Introducción Introducción Dos Métodos de E/S Sincrónico ⌠ usuario ⌠ kernel Asincrónico proc que requiere proc que requiere espera driver de disp manejador de int Hardware transf de datos driver de disp manejador de int Hardware transf de datos usuario ⌡ kernel ⌡ tiempo tiempo Sistemas Operativos – Introducción JRA © 2008 Introducción Tabla de estado de dispositivos disp: lect tarjetas 1 status: ociosa disp: impresora 3 status: ocupada req para imp direc: 38769 long: 1245 disp: unidad disco 1 status: ociosa disp: unidad disco 2 status: ociosa disp: unidad disco 3 status: ocupada JRA © 2008 req para unidad de disco 3 arch: xxx oper: lect dir:43098 Long: 20000 Sistemas Operativos – Introducción req para unidad de disco 3 arch: yyy oper: esc dir: 05678 Long: 500 Introducción Estructura de Acceso Directo a Memoria (DMA) CPU Memoria Disp E/S Instrucciones de E/S Usado por dispositivos de E/S de alta velocidad para transmitir información a velocidades similares a la de la memoria. El controlador de dispositivos transfiere bloques de datos desde el buffer de almacenamiento directamente a la memoria principal sin la intervención de la CPU. Solo una interrupción es generada por bloque, y no una por byte. Sistemas Operativos – Introducción JRA © 2008 Introducción Estructura de almacenaje Memoria principal– único medio de almacenaje que la CPU puede acceder directamente. Almacenaje Secundario – extensión de la memoria principal que provee una gran capacidad de almacenaje no volátil. Discos Magnéticos – JRA © 2008 La superficie del disco está logicamente dividida en tracks (pistas), los cuales están subdivididas en sectores. El controlador de disco determina la interacción lógica entre el dispositivo y la computadora. Sistemas Operativos – Introducción Introducción Mecanismo del Movimiento de Cabezas en el Disco Sistemas Operativos – Introducción JRA © 2008 Introducción Jerarquía de almacenaje Los sistemas de almacenaje está organizado en jerarquía. Velocidad Costo Volatilidad Caching – información copiada en un sistema de almacenaje rápido; la memoria principal puede verse como el último cache para el almacenaje secundario. JRA © 2008 Sistemas Operativos – Introducción Introducción Jerarquía de Dispositivos de Almacenaje registros cache memoria principal disco electrónico disco magnético disco óptico cinta magnética Sistemas Operativos – Introducción JRA © 2008 Introducción Caching Principio importante que es llevado a cabo por varios niveles en una computadora (en hardware, sistema operativo, software) La información en uso copiada desde un almacenaje lento a uno más rápido temporariamente. El almacenaje más rápido (cache) es verificado primero para determinar si la información está alli: JRA © 2008 Si está, es usada directamente del cache (rápido) Si no, el dato es copiado al cache y usado allí. Sistemas Operativos – Introducción Introducción Caching (Cont.) El caché es más pequeño que el almacenaje de donde se ha traído la información: JRA © 2008 La administración del cache es un problema importante de diseño. El tamaño del cache y la política de reemplazo. Sistemas Operativos – Introducción Introducción Rendimiento de varios niveles de almacenamiento Movimiento entre niveles de la jerarquía de almacenaje puede ser explícito o implícito. JRA © 2008 Sistemas Operativos – Introducción Introducción Migración de un entero A de disco a registro Ambientes multitarea deben ser cuidadosos en el uso de los valores más recientes, no importa donde está almacenado en la jerarquía de almacenaje Disco magnéti co Memori a principa l Caché Registro hardwar e Sistemas Operativos – Introducción JRA © 2008 Introducción Migración de un entero A de disco a registro (cont.) Los ambientes multiprocesador deben ofrecer coherencia de caché en hardware tal que todas las CPUs tienen el más reciente valor en sus cachés. En los ambientes distribuidos la situación es más compleja: JRA © 2008 Existen varias copias de datos. Existen varias soluciones que no son motivo de este curso. Sistemas Operativos – Introducción Introducción Estructura del Sistema Operativo La Multiprogramación es necesaria para lograr eficiencia: JRA © 2008 Un simple usuario no puede mantener la CPU y los dispositivos de E/S ocupados todas las veces. La multiprogramación organiza las tareas (código y datos) de tal manera que la CPU siempre tiene uno ejecutando. Un subconjunto del total de tareas en el sistema se mantienen en memoria. Una tarea es selecionada y ejecuta vía una planificación de tareas. Cuando tiene que esperar (p.e. E/S), el sistema operativo conmuta a otra tarea. Sistemas Operativos – Introducción Introducción Estructura del Sistema Operativo El Tiempo Compartido (multitarea) es una extensión lógica en la cual la CPU conmuta tareas tan frecuentemente que los usuarios pueden interactuar con cada tarea mientras está ejecutando, creando la computación interactiva. El tiempo de respuesta debería ser < 1 second Cada usuario tiene al menos un programa ejecutando en memoria proceso Si hay varias tareas listas para ejecutar al mismo tiempo planificación de CPU. Si un proceso no entra en memoria, el swapping lo mueve fuera y hacia dentro de la memoriamoves para ejecutar. La Memoria Virtual permite la ejecución de procesos no completos en la memoria. JRA © 2008 Sistemas Operativos – Introducción Introducción Distribución de la memoria en un sistema multiprogramado 0 Sistema Operativo job 1 job 2 job 3 job 4 512 k Sistemas Operativos – Introducción JRA © 2008 Introducción Operaciones del Sistema Operativo Las interrupciones son manejadas por el hardware El error o requerimiento de software crea una excepción o trap Division por cero, requiere por un servicio del sistema operativo Otros problemas de procesos incluyen lazos infinitos, procesos que se modifican unos con otros o el sistema operativo. JRA © 2008 Sistemas Operativos – Introducción Introducción Operaciones del Sistema Operativo La operación en modo dual permite al sistema operativo protegerse a si mismo y otros compionentes del sistema Modo usuario y modo kernel El bit de modo es provisto por el hardware Provee la habilidad para distinguir cuando el sistema está ejecutando código de usuario o código kernel. Algunas instrucciones son privilegiadas, sólo se ejecutan en modo kernel. La llamada a sistema cambia el modo a kernel, el retorno de la llamada reinicia al modo usuario. Sistemas Operativos – Introducción JRA © 2008 Introducción Transición del modo usuario al modo kernel Timer para prevenir lazos infinitos / alto consumo de recursos por procesos JRA © 2008 Produce un interrupción luego de un período específico. El SO decrementa un contador. Cuando el contador llega a cero genera una interrupción. Se inicia antes que el proceso planificado gane el control o termina el programa que excede el tiempo fijado. Sistemas Operativos – Introducción Introducción Transición del modo usuario al modo kernel (cont) JRA © 2008 Sistemas Operativos – Introducción Introducción Administración de Procesos Un proceso es un programa en ejecución. Es una unidad de trabajo dentro del sistema. Un programa es una entidad pasiva, el proceso es una entidad activa. El proceso necesita recursos para realizar su tarea. CPU, memoria, E/S, archivos Initialización de datos La terminación de procesos require reclamar los recursos reusables. JRA © 2008 Sistemas Operativos – Introducción Introducción Administración de Procesos (cont.) Los procesos de hilo simple tienen un contador de programa especificando la locación de la próxima instrucción a ejecutar. El proceso ejecuta instrucciones secuencialmente, una por vez hasta terminar. Procesos multihilados tienen un contador de programa por hilo. Tipicamente un sistema tiene muchos procesos, algún usuario, algún SO ejecutando concurrentemente en una o más CPUs. Concurrencia por multiplexado de CPUs entre procesos / hilos. Sistemas Operativos – Introducción JRA © 2008 Introducción Actividades de la Administración de Procesos El sistema operativo es responsable por las siguientes actividades en conexión con la administración de procesos. Creación y eliminación de procesos. Suspensión y reactivación de procesos. Provisión de mecanismos para: sincronización de procesos comunicación de procesos manejo JRA © 2008 de interbloqueos Sistemas Operativos – Introducción Introducción Administración de Memoria Todos los datos antes y después del procesamiento. Todas las instrucciones en memoria para ejecutar. Determina que hay en memoria cuando es necesario optimizar la utilización de CPU y el tiempo de respuesta a los Actividades de la administración de memoria: Lleva control de que partes de la memoria están siendo usadas y por quien. Decide que procesos cargar cuando hay espacio de memoria disponible. Ocupa y desocupa espacio de memoria cuando necesite. Sistemas Operativos – Introducción JRA © 2008 Introducción Administración del almacenaje El SO provee una visión lógica y uniforme del almacenaje de información Hace abstracción de las propiedades físicas a una unidad lógica de almacenaje – archivo. Cada medio es controlado por un dispositivo (p.e. disco, cinta, etc) Propiedades variables incluyen velocidad de acceso, capacidad, método de acceso (secuencial o al azar) JRA © 2008 Sistemas Operativos – Introducción Introducción Administración del almacenaje (cont.) Administración del Sistema de Archivos Los archivos, usualmente están organizados en directorios El control de acceso en la mayoría de los sistemas determina quien puede acceder a que Las actividades del SO incluyen: Creación y destrucción de archivos y directorios. Soporte de primitivas para el manejo de archivos y directorios. Mapeo de archivos sobre el almacenaje secundario. Respaldo JRA © 2008 sobre medios de almacenajes estables . Sistemas Operativos – Introducción Introducción Administración de Almacenaje Secundario Los discos son usados para almacenar datos que no entran en memoria principal o para datos que tienen que ser guardados un largo período de tiempo. Su administración es de vital importancia. La velocidad de operación de la computadora dependen del subsistema de discos y sus algoritmos. JRA © 2008 Sistemas Operativos – Introducción Introducción Administración de Almacenaje Secundario Las actividades del SO: Administración del espacio libre Alocación del almacenaje Planificación del disco (no hoy en día ….) Algunos tipos de almacenajes no necesitan ser rápidos: Almacenaje terciario como el óptico y las cintas magnéticas Pero aún así deben ser administrados. Varian entre WORM (write-once, read-many-times) y RW (read-write) Sistemas Operativos – Introducción JRA © 2008 Introducción Subsistema de E/S Uno de los propósitos del SO es esconder las peculiaridades de los dispositivos de hardware de los usuarios. Los subsistemas de E/S son responsables de: JRA © 2008 Administración de memoria de las E/S incluyendo el buffering (almacena datos temporariamente mientras están siendo transferidos), caching (almacena partes de datos en almacenamiento rápido por rendimiento), spooling (el solapado de la salida de un job con la entrada a otros) Interfaz general de drivers de dispositivos. Drivers específicos para dispositivos de hardware Sistemas Operativos – Introducción Introducción Protección y Seguridad Protección – mecanismo para controlar el acceso de procesos o usuarios a recursos definido por el SO Seguridad– defensa del sistema contra ataques internos y externos Amplio rango, incluyendo DoS, worms, virus, robo de identidad, robo de servicios Sistemas Operativos – Introducción JRA © 2008 Introducción Protección y Seguridad (cont.) Los Sistemas generalmente primero distinguen entre usuarios para determinar quien puede que: Identidad de usuarios (ID de usuarios, IDs de seguridad) incluye nombre y número asociado, uno por usuario El ID de usuario se asocian con todos los archivos, procesos de ese usuario para determinar el control de acceso Identificador de grupo (ID de grupo) permite definir a un conjunto de usuarios controlar el manejo, también asociado con cada proceso, archivo Escalamiento de privilegios permite al usuario cambiar a un ID efectivo con más derechos JRA © 2008 Sistemas Operativos – Introducción Introducción Ambientes de Computación Computadora Tradicional Borrosa en el tiempo Ambiente de oficina PCs conectadas a una red, terminales conectados mainframe o minicomputadoras proveyendo procesamiento en lotes y tiempo compartido Ahora portales permitiendo conexión en red y sistemas remotos acceder a los mismos recursos. Redes hogareñas Usados Ahora como sistemas simples, luego modems firewalls y redes Sistemas Operativos – Introducción JRA © 2008 Introducción Ambientes de Computación (Cont.) Computación Cliente-Servidor Terminales “bobos” suplantados por PCs Muchos sistemas, ahora servidores, respondesn a requerimientos generados por los clientes El servidor provee una interfaz al cliente que requiere el servicio (p.e. base de datos) El servidor de archivos provee una interfaz para que clientes almacenen y recuperen archivos cliente cliente cliente cliente red servido r JRA © 2008 Sistemas Operativos – Introducción Introducción Computación Peer-to-Peer (P2P) Otro modelo de sistema distribuido P2P no distingue entre clientes y servidores Todos los nodos son considerados peers Cada uno puede actuar como cliente, servidor o ambos El Nodo debe agregarse a la red P2P Registra su servicio con un servicio central de búsqueda sobre la red o Requerir por un broadcast un servicio y responder a los requerimientos por servicio via protocolo de descubrimiento. Ejemplos incluyen Napster y Gnutella Sistemas Operativos – Introducción JRA © 2008 Introducción Computación basada en la Web La Web se ha convertido ubicua Las PCs son los dispositivos que prevalecen La mayoría de los dispositivos están en red para tener acceso a la web Nueva categoría de dispositivos para manejar el tráfico de la web entre servidores similares: balanceadores de carga. El uso de SOs como Windows 95, lado del cliente, han evolucionado hacia Linux y Windows XP, los cuales pueden ser clientes y servidores JRA © 2008 Sistemas Operativos – Introducción Fin del Módulo 1