TEMA 1: VISIÓN GENERAL DE LOS SISTEMAS OPERATIVOS 1. Concepto de Sistema Operativo. Funciones Un sistema operativo (S.O.) es un programa o conjunto de programas de control que tiene por objeto facilitar el uso de la computadora y conseguir que ésta se utilice eficientemente. Las funciones que realiza son básicamente: • Presentar al usuario el equivalente de una máquina extendida o máquina virtual más fácil de programar. Ej.: Controlador de disco. Dispone de comandos que realizan operaciones tales como leer y escribir datos, mover el brazo, formatear pistas, recalibrado, ... El usuario ve el disco como una colección de archivos y carpetas/directorios. • Gestionar los recursos del sistema (procesadores, memoria, dispositivos de E/S, ...) para que se utilicen eficientemente y se puedan resolver los conflictos derivados de la competencia entre los distintos usuarios. Ej.: La impresora. Es un recurso asignado que se debe compartir. El S.O. mantiene una lista de los archivos a imprimir y los va encauzando hacia la impresora. 1 2. Evolución de los Sistemas Operativos Primera generación (1945-1955) • No existen Sistemas Operativos. • Un grupo reducido de gente diseñaba, construía, programaba, mantenía cada máquina. • Las instrucciones se codificaban a mano. • El programador insertaba su trabajo y esperaba su turno. • Existía un desaprovechamiento inadecuado del computador ("tiempos muertos de la CPU"). • Disparidad de tiempos de ejecución entre la CPU y los dispositivos de E/S. • En 1950 aparecen las tarjetas perforadas. Segunda generación (1955-1965) • Aparición de los transistores. • Se especializa el personal (diseñadores, analistas, ...). • Se desarrollan los primeros sistemas operativos. • Se procesan los trabajos por lotes ("batch"). • El S.O. se entiende como un programa de control que planifica los trabajos. Tercera generación (1965-1980) • Aparecen los circuitos integrados y la multiprogramación. • Existen muchas computadoras diferentes con S.O. muy diferentes. • Se suministran una gran cantidad de programas de utilidad. • Los S.O. son complejos. • Se utilizan dispositivos virtuales como las técnicas de SPOOL. • Multiprocesamiento (sistemas compuestos de varios procesadores). • Surgimiento de la Ingeniería del Software. • Separación entre la venta de hardware y software. 2 Cuarta generación (1980-2000) • Circuitos LSI (alta escala de integración) y, posteriormente, VLSI. • Relanzamiento de los ordenadores personales. • Crecimiento del software para las computadoras personales. • Crecimiento de las redes de computadoras que ejecutan S.O. en red y distribuidos. Quinta generación (2000-...) • Aparición de las computadoras de bolsillo (PDA, Personal Digital Assistant) como ampliación de las agendas electrónicas. • Los S.O. se adaptan a estas nuevas computadoras y teléfonos móviles (mucho más pequeños que una computadora). 3. Tipos de S.O. 3.1. Monoprogramación Hasta que no finaliza la ejecución de un programa de usuario no empieza a ejecutarse otro. Consecuencias: • Tiempos muertos de CPU, periféricos, ... • Desaprovechamiento de la Memoria Central (la no ocupada por el proceso). Entre la finalización de un programa y el comienzo del siguiente transcurre un tiempo en el que el núcleo del sistema operativo tiene el control del procesador (CPU). 3 3.2. Sistemas por lotes o colas ("sistemas batch") Un sistema por lotes realiza una secuenciación automática de trabajos. En él van pasando a ejecución de uno en uno los programas en espera. La planificación es muy simple. Los trabajos se procesan, en general, en el orden de admisión (FIFO). Un S.O. por lotes puede servir muy bien para programas que no requieran interacción con el usuario y aquellos con tiempos de ejecución largos, como los programas de nóminas, de análisis estadísticos, ... Debido a los retardos en el tiempo total de ejecución, el procesamiento por lotes no es muy conveniente para el desarrollo de programas. 3.3. S.O. de multiprogramación Se cargan en memoria principal varios programas que se van ejecutando concurrentemente con lo cual, en un determinado tiempo se estarán ejecutando varios programas. Ventajas: Aprovechamiento de la memoria y mejora de los tiempos muertos del procesador. Un programa en ejecución se conoce como proceso. El programa es, por tanto, un ente "pasivo" y el proceso un ente "activo". Un S.O. multiproceso o multitarea soporta dos o más procesos activos simultáneamente. 4 Un S.O. de multiprogramación soporta múltiples procesos concurrentes y, además, permite que residan simultáneamente en la memoria principal las instrucciones y datos procedentes de dos o más procesos disjuntos. La multiprogramación implica multiproceso pero el multiproceso no implica multiprogramación. Tipos de multiprogramación: • Clásica • Tratamiento paralelo • Tiempo compartido Multiprogramación clásica El planificador del procesador da el turno a un programa determinado. Cuando éste tiene que realizar una operación de E/S, le da el control del procesador a otro programa y así sucesivamente. Cuando un programa finaliza una operación de E/S, el periférico se lo comunica a la CPU (mediante una interrupción) para cederle el control la próxima ocasión que le toque su turno. Problema: Monopolización de la CPU por parte de programas con mucho cálculo y poca E/S. Tratamiento paralelo A cada uno de los programas en memoria se le asigna un intervalo de tiempo fijo o periodo T llamado "cuantum" (décimas de segundo). Al finalizar el cuantum asignado a un programa, el control de la CPU pasa al siguiente programa y así sucesivamente. 5 La cuenta del tiempo se realiza mediante un circuito contador activado por el reloj de la CPU (temporizador digital). Al transcurrir el periodo T se genera una interrupción de la CPU. Tiempo compartido Se asigna el control de la CPU a un nuevo programa interrumpiendo al anterior siempre que este último agote su cuantum de tiempo o que entre en la ejecución de una instrucción de E/S. La CPU trabaja el 100% en determinados intervalos según el tipo de carga. 3.4. S.O. de secuencias múltiples o colas paralelas (multisecuencias) Permiten coexistir en memoria en ejecución concurrente distintos tipos de trabajos (organizados en colas diferentes). Los trabajos se introducen en las distintas colas las cuales contienen distintas características (tiempo de CPU, prioridades, etc.) que deben reunir los trabajos. En ejecución concurrente habrá un trabajo por cada cola que exista. Pueden existir trabajos de tipo interactivo. 3.5. Sistemas de bases de datos Estos S.O. mantienen una gran cantidad de datos que pueden ser consultados en busca de una determinada información que debe suministrarse en un periodo razonable de tiempo. 6 La B.D. puede ser frecuentemente modificada para mantener la información actualizada y se evitan las operaciones simultáneas sobre los mismos datos. 3.6. Sistemas en tiempo real Un S.O. en tiempo real se caracteriza por el procesamiento de una actividad interrumpida, en la mayoría de los casos, por sucesos externos aleatorios. El procesamiento de un suceso particular viene acompañado por secuencias de tareas que se deben de realizar dentro de rígidas restricciones de tiempo. Un suceso puede ser: • La recepción de un dato (procedente, por ejemplo, de un sensor). • La demanda de servicio de un dispositivo en línea. Un sistema en tiempo real monitoriza y controla el sistema con mínima intervención humana. Sólo interviene en fallos del sistema o cuando se violan algunos límites. El sistema está completamente dedicado a la aplicación de control y debe estar configurado para garantizar respuestas rápidas en el tiempo incluso con cargas pesadas. Los procesos suelen residir permanentemente en memoria principal para proporcionar tiempos de respuesta rápidos. El entorno es tal que la utilización del equipo es menos importante que la respuesta al entorno. Ejemplos: Líneas de producción, semáforos de tráfico, equipamiento telefónico, control de vuelo, aplicaciones militares, ... 7 Es importante que el procesador pueda responder muy rápidamente a interrupciones externas y determinar intervalos de tiempo con una precisión muy alta. 3.7. Sistemas multiprocesador. Redes y sistemas distribuidos Una red interconecta varias computadoras ("hosts"), cada una de las cuales puede proporcionar servicios de computación a los usuarios de la red. Las redes están conectadas por subsistemas de comunicaciones y uno o varios tipos de enlaces de comunicaciones como pueden ser las líneas telefónicas, canales de satélite, cables coaxiales y enlaces de microondas. Tipos de aplicaciones de procesamiento distribuido: • Redes de recursos compartidos: Los recursos de las diferentes computadoras se ponen a disposición de las otras computadoras. La red proporciona los mecanismos para crear la ilusión de que los dispositivos remotos están disponibles en el sistema local. • Redes de computación distribuida: Realiza actividades de multitarea como pueden ser el control de procesos o de bases de datos, ... Ej.: Planta de fabricación de una compañía en todo un país. • Redes de comunicación remota: Proporcionan los medios para que los usuarios puedan acceder a instalaciones remotas de la forma más económica posible. 8 Un sistema operativo para red es una colección de software y protocolos asociados que permiten a varias computadoras autónomas que se encuentran interconectadas por una red de computadoras, ser utilizadas conjuntamente de una manera conveniente y económica. Los S.O. para redes se clasifican en: • S.O. en red (NOS, Network Operating System) • S.O. distribuidos (DOS, Distributed Operating System) S.O. en red Cada uno de los hosts de la red utiliza su propio S.O. que no es de red. La red está controlada por los programas de usuario ejecutados en los diferentes hosts. Los usuarios conocen la existencia de múltiples computadoras y pueden conectarse a máquinas remotas y copiar archivos de una máquina a otra. Cada máquina tiene sus propios usuarios y ejecuta su S.O. S.O. distribuidos Los S.O. individuales de los hosts quedan descartados y se implementa un único sistema operativo para toda la red. Aparece a los usuarios como un sistema uniprocesador aunque conste de muchos procesadores. Los usuarios no saben dónde se ejecutan sus programas ni dónde se localizan sus archivos. Por ello, la característica principal de un DOS es la transparencia. 9 4. Visión de los S.O. por parte de los usuarios Básicamente podemos dividir a los usuarios de los servicios de los sistemas operativos en dos amplias clases: usuarios del lenguaje de órdenes y usuarios de las llamadas al sistema. Informalmente, los usuarios del lenguaje de órdenes son aquellos que obtienen los servicios del sistema operativo mediante órdenes, ya sean tecleadas en el terminal o insertadas en un archivo de procesamiento (llamados scripts o batch). Estos lenguajes de órdenes suelen ser específicos del sistema, aunque, en general, las funciones suelen ser parecidas en todos ellos. Algunas de las clases funcionales típicas de las órdenes del sistema operativo son: las relacionadas con la conexión y desconexión, con la activación y control de programas, con la gestión de archivos, las que muestran información de estado, las que permiten la comunicación entre los usuarios y las relacionadas con la gestión del sistema. Los usuarios de las llamadas al sistema invocan los servicios del sistema operativo mediante llamadas al sistema en tiempo de ejecución. Estos usuarios, conocidos como programadores de sistemas y aplicaciones, invocan a las llamadas al sistema desde sus programas. Además de proporcionar la mayoría de la funcionalidad accesible a los usuarios del lenguaje de órdenes, las llamadas al sistema suelen permitir un mayor control sobre las operaciones del sistema y un acceso más directo a las facilidades del hardware, especialmente a las de entrada/salida; por este motivo, las llamadas al sistema representan un superconjunto de las funciones accesibles a nivel de orden. 10