Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Universidad Nacional del Litoral FACULTAD DE INGENIERÍA Y CIENCIAS HÍDRICAS Sistemas Operativos La totalidad de la información y textos aquí presentados pueden ser utilizados sin necesidad de requerimiento de permiso escrito o de cualquier otra índole de la cátedra siempre que se efectúe con un fin específicamente académico y sin fines de lucro. Sistemas Operativos – Unidad 1 – Introducción Página 2 de 19 Sistemas Operativos Introducción Metodología de Trabajo Para este curso de Taller de Ofimática I, la técnica de trabajo propuesta será la siguiente: Lea detalladamente el material de lectura propuesto para las unidades de la asignatura, los cuales estarán accesibles en la plataforma educativa, y plantee en el foro correspondiente a la misma todas sus preguntas y dudas sobre lo allí expuesto. Luego de la lectura del contenido de cada unidad, se recomienda no demorar en tiempo la realización de la autoevaluación, si correspondiera, ya que las mismas tienen fechas límites de plazo máximo. Se recomienda al alumno realizar su propio diccionario de términos técnicos computacionales en base a los que surjan del material de lectura, del uso del software o de la lectura de las ayudas. Es importante manejar el vocabulario o jerga informática para interpretar de mejor manera todo el material de información computacional o técnico. Además, a medida que se avance en la lectura de las unidades, notará una serie de trucos o "atajos" en el uso y el conocimiento del software. Le recomendamos aplicarlos y seguir profundizando sobre tópicos que no se explicitan o aclaran, por una cuestión de tiempo, en el desarrollo del presente tema. Se le recuerda que deberá seguir incrementando su glosario de términos técnicos. Objetivos � Introducirnos a la Historia de los Sistemas Operativos. � Definir que es un Sistema Operativo. � Introducir conceptos sobre los Firmwares � Conocer las diferentes clasificaciones de los mismos. � Identificar un determinado Sistema Operativo. � Comprender el concepto de uso. � Aprender a Instalar un Sistema Operativo en un Hardware. Introducción a los Sistemas Operativos – Un poco de Historia La informática tal y como se le conoce hoy día, surgió a raíz de la II Guerra Mundial, en la década de los 40. En esos años no existía siquiera el concepto de "Sistema Operativo" y los programadores interactuaban directamente con el hardware de las computadoras trabajando en lenguaje máquina (esto es, en binario, programando únicamente con 0s y 1s). El concepto de Sistema Operativo surge en la década de los 50. El primer Sistema Operativo de la historia fue creado en 1956 para un ordenador IBM 704, y básicamente lo único que hacía era comenzar la ejecución de un programa cuando el anterior terminaba. En los años 60 se produce una revolución en el campo de los Sistemas Operativos. Aparecen conceptos como sistema multitarea, sistema multiusuario, sistema multiprocesadores y sistema en tiempo real. Es en esta década cuando aparece UNIX, la base de la gran mayoría de los Sistemas operativos que existen hoy en día. Sistemas Operativos – Unidad 1 – Introducción Página 3 de 19 En los años 70 se produce un boom en cuestión de ordenadores personales, acercando estos al público general de manera impensable hasta entonces. Esto hace que se multiplique el desarrollo, creándose el lenguaje de programación C (diseñado específicamente para reescribir por completo el código UNIX). Como consecuencia de este crecimiento exponencial de usuarios, la gran mayoría de ellos sin ningún conocimiento sobre lenguajes de bajo o alto nivel, hizo que en los años 80, la prioridad a la hora de diseñar un sistema operativo fuese la facilidad de uso, surgiendo así las primeras interfaces de usuario. En los 80s nacieron sistemas como MacOS, MS-DOS, Windows. Sistemas Operativos – Unidad 1 – Introducción Página 4 de 19 En la década de los 90 hace su aparición Linux, publicándose la primera versión del núcleo en septiembre de 1991, que posteriormente se uniría al proyecto GNU, un sistema operativo completamente libre, similar a UNIX, al que le faltaba para funcionar un núcleo funcional. Hoy en día la mayoría de la gente conoce por Linux al Sistema Operativo que realmente se llama GNU/Linux. Sistemas Operativos – Unidad 1 – Introducción Página 5 de 19 Conceptos sobre los Firmwares El firmware es el conjunto de programas y datos que vienen en una computadora desde su fabricación, en una memoria que no puede ser modificada por el usuario. Estos programas pueden venir implantados en el propio cableado del ordenador, denominándose en estos casos lógica cableada, y también pueden venir en memorias de solo lectura (Read only memory-ROM), conociéndose en estos casos como microcódigo o microprograma. Microcódigo (Microcode). Se denomina así a la representación simbólica del microprograma. Microprograma (Microprogram). Secuencia de instrucciones elementales en código máquina que corresponden a una operación completa de la computadora. En general, podemos decir que una máquina microprogramada interpreta instrucciones (microinstrucciones) no existentes directamente en el hardware, basándose en otras más elementales que si están directamente disponibles en la máquina. En la actualidad, la microprogramación se utiliza para realizar funciones de control en una computadora y es facultad de los diseñadores de hardware. Existen varias modalidades de firmware: Programas tableados (Wired-in). Son secuencias de acciones que configuran determinados algoritmos implantados en el tableado. El ejemplo más corriente es el de las calculadoras. Control por programa (Program control). El control se realiza por un programa o conjunto de ellos grabados en una memoria ROM, donde las instrucciones máquina son interpretadas como un juego de señales de control. Control rígido (Hard-wired). Consiste en una mezcla de los dos anteriores, donde la conversión de códigos de operación de las instrucciones del programa almacenado en señales de control se establece por cableado. Sistemas Operativos – Unidad 1 – Introducción Página 6 de 19 Control por microprograma (Microprogramed). Se realiza el control por medio de un programa (microprograma) almacenado en memoria ROM, cuyas instrucciones son menos numerosas que el mismo programa en código máquina, donde además se puede emular una máquina virtual más potente que la real que configura el propio hardware. ¿Qué es un Sistema Operativo? – Definición Formal En primer lugar definimos el elemento físico en el que se centra toda la actividad informática, es decir, la computadora. Sistemas Operativos – Unidad 1 – Introducción Página 7 de 19 Una computadora es una máquina de origen electrónico con una o más unidades de proceso y equipos periféricos controlados por programas almacenados en su memoria, que pueden realizar una gran variedad de trabajos. Todo este componente físico es denominado comúnmente Hardware. Ahora bien, al ser una máquina programable tiene que contar con información que le indique cómo utilizar todas sus unidades físicas o herramientas que la componen, conocidas como recursos, para llevar a cabo el trabajo. Esta información es lo que denominamos soporte lógico o Software. Una computadora sin Software sería una máquina inútil, mientras que con él puede almacenar, procesar y obtener información, editar textos, procesar video, controlar el entorno, etc. Un Sistema Operativo es un elemento constitutivo de software que en sus principios fue definido de la siguiente manera: • Programa fundamental del Software del Sistema que controla todos los recursos del Sistema Computacional y proporciona la base sobre la cuál pueden escribirse los programas de aplicación. • Colección organizada de extensiones software del hardware, consistenteen rutinas de control que hacen funcionar un computador y proporcionan un entorno para la ejecución de los programas. • El Sistema Operativo proporciona facilidades de apoyo a otros programas de manera que éstos puedan tener acceso a los recursos del Sistema Computacional (ej, archivos, dispositivos de E/S, etc.). • Un Sistema Operativo actúa como gestor de los recursos del Sistema Computacional, tales como el procesador, la memoria, los archivos y los dispositivos de E/S. En esta función, el Sistema Operativo lleva la cuenta del estado de cada recurso y decide quién lo obtiene, por cuánto tiempo y en qué instante. En sistemas que soportan ejecución concurrente de programas, el Sistema Operativo resuelve las peticiones conflictivas de recursos de manera de preservar la integridad del sistema, de manera de optimizar el rendimiento global. En la actualidad, no resulta sencilla su definición, de forma que pueden darse varias desde distintos puntos de vista: Punto de vista del Usuario Un Sistema Operativo es un conjunto de programas y funciones que ocultan los detalles del hardware, ofreciendo al usuario una vía sencilla y flexible de acceso al mismo. La ocultación de los detalles del hardware a usuarios y parte del personal informático tiene dos objetivos: Abstracción. La tendencia actual del software en toda su extensión es la de dar una visión global y abstracta de la computadora haciendo fácil su uso ocultando por completo la gestión interna. Seguridad. Existen instrucciones en la máquina que pueden parar la computadora, interferir procesos, etc. Por ello, es necesario restringir determinadas operaciones a los usuarios creando varios niveles de privilegio, de tal forma que cada usuario tenga protegida su información y sus procesos. Sistemas Operativos – Unidad 1 – Introducción Página 8 de 19 Punto de vista de GESTOR DE RECURSOS Un Sistema Operativo es el administrador de recursos ofrecidos por el hardware para alcanzar un eficaz rendimiento de los mismos. Estos recursos son: � El microprocesador. � La memoria. � Los dispositivos de Entrada/Salida. � La información. � Los programas. � La seguridad. � Etc. Los sistemas operativos construyen recursos de alto nivel, que denominaremos VIRTUALES, a base de encubrir los realmente existentes de bajo nivel, que denominaremos FISICOS. Por tanto, desde el punto de vista del usuario o de un proceso, la máquina física es convertida por el Sistema Operativo en una máquina virtual, también conocida como máquina extendida, que, a diferencia de la física, ofrece muchas más funciones y más cómodas de utilizar. El sistema operativo proporciona, además, servicios de los que no dispone el hardware, como pueden ser, por ejemplo, la utilización de la computadora por varios usuarios simultáneamente, interacción entre usuario y programa en ejecución al mismo tiempo, etc. Para concluir, vamos a dar una definición más académica que las anteriores, basándonos en la definición previa de los términos SISTEMA y OPERATIVO. Sistema. Conjunto de personas, máquinas y cosas que, ordenadamente relacionadas entre sí, contribuyen a lograr un determinado objetivo. Sistemas Operativos – Unidad 1 – Introducción Página 9 de 19 Operativo. Personas, máquinas y cosas que trabajan conjuntamente y consiguen el objetivo deseado. De las definiciones anteriores podemos obtener la de sistema operativo de la siguiente forma: SISTEMA OPERATIVO: Un sistema operativo (SO) es un programa o conjunto de programas que, en un sistema informático, gestiona los recursos de hardware y provee servicios a los programas de aplicación, ejecutándose en modo privilegiado respecto de los restantes. Como resumen, podemos decir que los sistemas operativos cubren dos objetivos fundamentales: facilitar el trabajo al usuario y gestionar de forma eficiente los recursos. Ahora bien, no todo el software que se ejecuta sobre el hardware se considera como sistema operativo. Existen dos tipos de programas que conviene distinguir: • Programas del sistema: son los que manejan el hardware, controlan los procesos, hacen más cómodo el entorno de trabajo, etc. • Programas de aplicación: son los que resuelven un problema concreto de los usuarios y que no son suministrados con el sistema operativo. Son programas diseñados y codificados por analistas y programadores de aplicaciones conjuntamente con los usuarios. Tipos de Sistemas Operativos En una primera caracterización, podemos diferenciar 5 tipos de Sistemas operativos: Los Sistemas Monolíticos (Sistemas de Estructuras Simples) Según la Real Academia Española Monolítico es algo de una pieza, sin fisuras o rígido, inflexible. Los sistemas Monolíticos son la estructura más simple para un Sistema Operativo. También llamados de Estructura Modular, fue escrito para proporcionar una máxima funcionalidad dentro del menor espacio posible. Se caracteriza porque no tienen una estructura totalmente clara, con esto nos referimos a que sus rutinas y funcionalidades (ej. manejo de drivers -controladores-, sistemas de archivos, gestión de memoria, etc.), se encuentran agrupados en un solo programa (que es el propio Sistema Operativo). Este sistema está descrito como un conjunto de procedimientos o rutinas entrelazadas de tal forma que cada una tiene la posibilidad de llamar a las otras rutinas cada vez que así lo requiera. Sin embargo, cabe destacar las falencias en este tipo de estructura que radica principalmente en la poca confiabilidad otorgada, ya que todo el sistema, al no tener una estructura definida, se ejecuta todo en el mismo nivel del núcleo (kernel) lo que lo hace altamente vulnerable, por esta razón cuando falla un programa se produce un error en todo el sistema. Además, otro problema inherente al Sistema Monolítico es que si se modifica el hardware por lo general es necesario recompilar el kernel para poder disponer de las funcionalidades. Esto consume tiempo y recursos porque la compilación de un nuevo kernel puede durar varias horas y necesita de una gran cantidad de memoria. Cada vez que alguien añade una nueva característica o corrige un error, significa que se necesitará hacer una recompilación del kernel entero, un ejemplo de esto podemos verlo en Linux. También el hecho de que en el espacio del kernel están incluidos todos los servicios básicos, tiene tres grandes inconvenientes: el tamaño del núcleo, la falta de extensibilidad y la mala capacidad de mantenimiento. Sistemas Operativos – Unidad 1 – Introducción Página 10 de 19 Ejemplos de Sistemas Monolíticos Los ejemplos típicos de este sistema son Unix, MS-DOS y Mac OS hasta Mac OS 8.6. Otros ejemplos son: Linux, Syllable Núcleos tipo DOS, DR-DOS, Familia Microsoft Windows 9x (95, 98, 98SE, Me). Los sistemas de Micronúcleo o Microkernel El Micronúcleo surge como una nueva forma de organización para un Sistema Operativo. Es un término algo tedioso de entender ya que puede no ser relativo a su tamaño, pero si a su diseño. En este sistema las funciones centrales son manejadas por el núcleo (kernel) y la interfaz de usuario es manejada por el entorno (shell). El Microkernel se encarga de todo el código de un sistema, y de planificar los hilos (threads) con la finalidad de tener multitareas. Algunas ventajas que podemos destacar de los Micronúcleos son los siguientes: • Uniformidad de interfaces: disponen de una interfaz única para las solicitudes de los procesos y el paso de mensajes. • Portabilidad: reduciendo el núcleo e implementando casi todo en servidores, para implementarlo en arquitecturas diferentes, sólo habría que modificar el núcleo haciendo más simple su portabilidad. • Fiabilidad: es más fácil corregir fallas en un sistema pequeño ya que se pueden realizar pruebas más rigurosas que en un sistema mucho más grande. Ejemplos de Sistemas Micronúcleo AIX, BeOS, Mach, MorphOS, QNX, Minix, Hurd, L4, RadiOS, Symbian, VSTa A continuaciónexaminaremos cuáles son las principales características de un sistema Monolítico y un Micronúcleo, además se podrá notar por qué el Sistema Micronúcleo supera algunas problemáticas relativas al diseño de un sistema Monolítico: Sistemas Operativos – Unidad 1 – Introducción Página 11 de 19 Sistema Cliente-Servidor Dentro de esta estructura de Sistemas MicroKernel también podríamos incluir el Sistema Cliente- Servidor ya que presenta una ligera variación en la idea del “Microkernel” la cual es que este sistema hace la diferencia entre dos clases de procesos: los servidores, cada uno de los cuales proporciona cierto servicio, y los clientes, que utilizan estos servicios. A menudo la capa inferior es un Microkernel, pero eso no es requerido. La esencia es la presencia de procesos cliente y procesos servidor. En los sistemas operativos modernos, los sistemas cliente-servidor nacen con la finalidad de minimizar el núcleo (kernel), trasladando el código de todos sus servicios a las capas superiores; y el núcleo sólo deberá controlar la comunicación, que se realiza mediante mensajes, entre clientes y servidores o servidores y hardware. El objetivo es desarrollar la mayoría de las funciones del sistema operativos como procesos de usuario. Un proceso de usuario, llamado en este caso proceso cliente, envía una solicitud a un proceso servidor, que realiza el trabajo y devuelve la respuesta. El sistema operativo se divide en partes donde cada una controla una faceta del sistema, entre ellos servicios a archivos, servicios a procesos, servicios a terminales, o servicios a la memoria, donde cada una es pequeña y controlable, así al ejecutar los procesos en modo usuario y no en modo núcleo si hay algún error en algún servidor, este afectará sólo a dicha parte y no a toda la máquina, ya que no se tiene acceso al hardware. Sistemas Operativos – Unidad 1 – Introducción Página 12 de 19 Un caso sencillo de cliente, en este caso, es un programa de aplicación que llama al servidor para acceder a un archivo, otro ejemplo es cuando el programa de aplicación realiza una operación de entrada o salida a un dispositivo concreto. En cada uno de estos casos el cliente a su vez puede ser servidor de otros servicios. Esta idea se refleja a continuación: Sistemas por Capas o Jerárquica (Estructura por niveles) En esta estructura, el Sistema Operativo queda definido modularmente por divisiones en capas o niveles, cuya organización está dada como una jerarquía de capas donde cada una de ellas ofrece una interfaz clara y bien definida, la capa superior solamente utiliza los servicios y funciones que ofrece la capa inferior, es decir, la capa n sólo se comunica para obtener lo requerido con la capa n- 1 (Ver imagen de arriba), donde la capa inferior es la más privilegiada. El encargado de que solamente haya comunicación entre capas adyacentes es el procesador. La capa más interna o inferior (capa 0) corresponde al Hardware, mientras que la más alta o externa corresponde a la interfaz de usuario. El primer sistema construido de esta manera fue el sistema THE (Technische Hogeschool Eindhoven), desarrollado en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema original consta de 6 capas: Capa 5: Se encuentra la interfaz de usuario. Capa 4: Aloja los programas de usuario. Sistemas Operativos – Unidad 1 – Introducción Página 13 de 19 Capa 3: Se controlan los dispositivos E/S (entrada y salida). Capa 2: Se administra la comunicación inter-proceso y la consola del operador. Capa 1: Administración de memoria y discos. Capa 0: Correspondiente al Hardware, realizando asignación del procesador; también alterna entre procesos cuando ocurren interrupciones o se han expirado y proporciona multiprogramación básica de la CPU. Como ventajas de este sistema podemos mencionar que al tener una organización modularizada, otorga facilidad en construcción y depuración del sistema. La facilidad de construcción se respalda porque al existir esta división en módulos (capas) se produce una abstracción del problema, simplificándose solamente a la función que realiza el módulo correspondiente a una capa N. También al lograr esta abstracción, no es necesario saber detalles de implementación de las capas inferiores, sólo se utilizan. La facilidad de depuración, quiere decir, que sea más simple la tarea de encontrar errores en el código y corregirlos. Otro aspecto positivo relacionado con la modularidad existente, cuando ocurre un error o falla en una de las capas, no se compromete a todo el sistema, sólo a la capa relacionada con la falla. Con respecto a las desventajas de esta organización, al realizar la construcción de las capas, la problemática es la forma de realizar la división y definición de las funcionalidades, ya que se tiene considerar que las capas superiores solamente pueden utilizar los servicios de la capa que se encuentra inferior, por lo tanto, se debe tener mucho cuidado en la planificación del sistema para que exista un óptimo funcionamiento. Otra desventaja que podemos mencionar es el gasto de tiempo que se genera en ir de una capa a otra, cada capa implica un gasto y tiempo extra. Sistemas Operativos – Unidad 1 – Introducción Página 14 de 19 Ejemplos de Sistemas por Capas THE (Technische Hogeschool Eindhoven), Venus, MULTICS (Multiplexed Information and Computing Service) Sistemas por módulos La mayoría de los sistemas operativos modernos implementan este enfoque. Lo que caracteriza este tipo de estructura es que el kernel se compone por módulos, y cada uno de estos módulos se encuentra separado de forma independiente, tal que, si alguno falla no afecta a los otros, ni al núcleo, por ejemplo, si el módulo de software que se encarga de controlar el proceso de Telnet en una unidad se bloquea o es atacado, sólo este proceso se verá afectado. El resto de las operaciones siguen sus funciones habituales. Los módulos se pueden cargar dinámicamente en el núcleo cuando se necesiten, ya sea, en tiempo de ejecución o durante el arranque del sistema. El kernel dispone de los componentes fundamentales y se conectan directamente con servicios adicionales. Además otros componentes pueden cargarse dinámicamente al núcleo. Este enfoque modular utiliza la programación orientada a objetos. En general, esta estructura se parece bastante a la de capas, pero es mucho más flexible debido a que cualquier módulo de esta estructura puede llamar a otro. Es similar a la estructura de microkernel, pues el kernel también tiene las funciones esenciales, pero este es más eficiente ya que no necesitan un mecanismo de paso de mensajes para comunicarse, sólo interfaces conocidas. Ejemplos de Sistemas por Módulos SO Unix modernos, Solaris, etc Continuando con el análisis de los diferentes tipos de sistemas operativos, también los podemos caracterizar según los siguientes aspectos: Monousuarios Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón. Sistemas Operativos – Unidad 1 – Introducción Página 15 de 19 Multiusuarios Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente. Monotareas Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendosolo una tarea a la vez. Multitareas Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico en un proceso en background. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad. Uniproceso Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS. Multiproceso Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a cualesquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema. Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un área de memoria, un conjunto de registros con valores específicos, la pila y otros valores de contexto. Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la paralelización que a elaborar el algoritmo inicial. Sistemas Operativos – Unidad 1 – Introducción Página 16 de 19 Sistemas Operativos por la Forma de Ofrecer sus Servicios Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la del usuario, el cómo accesa los servicios. Bajo esta clasificación se pueden detectar dos tipos principales: sistemas operativos de red y sistemas operativos distribuidos. � Sistemas Operativos de Red Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar con sistemas operativos en otras computadoras por medio de un medio de transmisión con el objeto de intercambiar información, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades. El punto crucial de estos sistemas es que el usuario debe saber la sintaxis de un conjunto de comandos o llamadas al sistema para ejecutar estas operaciones, además de la ubicación de los recursos que desee accesar. Por ejemplo, si un usuario en la computadora hidalgo necesita el archivo matriz.pas que se localiza en el directorio /software/codigo en la computadora morelos bajo el sistema operativo UNIX, dicho usuario podría copiarlo a través de la red con los comandos siguientes: hidalgo% hidalgo% rcp morelos:/software/codigo/matriz.pas . hidalgo% En este caso, el comando rcp que significa "remote copy" trae el archivo indicado de la computadora morelos y lo coloca en el directorio donde se ejecutó el mencionado comando. Lo importante es hacer ver que el usuario puede accesar y compartir muchos recursos. � Sistemas Operativos Distribuidos Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando integrar recursos (impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso) en una sola máquina virtual que el usuario accesa en forma transparente. Es decir, ahora el usuario ya no necesita saber la ubicación de los recursos, sino que los conoce por nombre y simplemente los usa como si todos ellos fuesen locales a su lugar de trabajo habitual. Todo lo anterior es el marco teórico de lo que se desearía tener como sistema operativo distribuido, pero en la realidad no se ha conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos en las varias unidades de procesamiento, reintegrar sub-resultados, resolver problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribuidos y consolidar la protección y seguridad entre los diferentes componentes del sistema y los usuarios. Los avances tecnológicos en las redes de área local y la creación de microprocesadores de 32 y 64 bits lograron que computadoras mas o menos baratas tuvieran el suficiente poder en forma autónoma para desafiar en cierto grado a los mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo la oportunidad de partir procesos muy pesados en cálculo en unidades más pequeñas y distribuirlas en los varios microprocesadores para luego reunir los sub-resultados, creando así una máquina virtual en la red que exceda en poder a un mainframe. El sistema integrador de los microprocesadores que hacer ver a las varias memorias, procesadores, y todos los demás recursos como una sola entidad en forma transparente se le llama sistema operativo distribuido. Las razones para crear o adoptar sistemas distribuidos se dan por dos razones principales: por necesidad (debido a que los problemas a resolver son inherentemente distribuidos) o porque se desea tener más confiabilidad y disponibilidad de recursos. En el primer caso tenemos, por ejemplo, el control de los cajeros automáticos en diferentes estados de la república. Ahí no es posible ni eficiente mantener un control centralizado, es más, no existe capacidad de cómputo y de entrada/salida para dar servicio a los millones de operaciones por minuto. En el segundo caso, supóngase que se tienen en una gran empresa varios grupos de trabajo, cada uno necesita almacenar grandes cantidades de información en disco duro con una alta confiabilidad y disponibilidad. La solución puede ser que para cada grupo de trabajo se asigne una partición de disco duro en servidores diferentes, de manera que si uno de los servidores falla, no se deje dar el Sistemas Operativos – Unidad 1 – Introducción Página 17 de 19 servicio a todos, sino sólo a unos cuantos y, más aún, se podría tener un sistema con discos en espejo (mirror) a través de la red, de manera que si un servidor se cae, el servidor en espejo continúa trabajando y el usuario ni cuenta se da de estas fallas, es decir, obtiene acceso a recursos en forma transparente. Ventajas de los Sistemas Distribuidos En general, los sistemas distribuidos (no solamente los sistemas operativos) exhiben algunas ventajas sobre los sistemas centralizados que se describen enseguida. • Economía: El cociente precio/desempeño de la suma del poder de los procesadores separados contra el poder de uno solo centralizado es mejor cuando están distribuidos. • Velocidad: Relacionado con el punto anterior, la velocidad sumada es muy superior. • Confiabilidad: Si una sola máquina falla, el sistema total sigue funcionando. • Crecimiento: El poder total del sistema puede irse incrementando al añadir pequeños sistemas, lo cual es mucho más difícil en un sistema centralizado y caro. • Distribución: Algunas aplicaciones requieren de por sí una distribución física. Por otro lado, los sistemas distribuidos también exhiben algunasventajas sobre sistemas aislados. Estas ventajas son: • Compartir datos: Un sistema distribuido permite compartir datos más fácilmente que los sistemas aislados, que tendrían que duplicarlos en cada nodo para lograrlo. • Compartir dispositivos: Un sistema distribuido permite accesar dispositivos desde cualquier nodo en forma transparente, lo cual es imposible con los sistemas aislados. El sistema distribuido logra un efecto sinergético. • Comunicaciones: La comunicación persona a persona es factible en los sistemas distribuidos, en los sistemas aislados no. • Flexibilidad: La distribución de las cargas de trabajo es factible en el sistema distribuido, se puede incrementar el poder de cómputo. Desventajas de los Sistemas Distribuidos Así como los sistemas distribuidos exhiben grandes ventajas, también se pueden identificar algunas desventajas, algunas de ellas tan serias que han frenado la producción comercial de sistemas operativos en la actualidad. El problema más importante en la creación de sistemas distribuidos es el software: los problemas de compartir datos y recursos es tan complejo que los mecanismos de solución generan mucha sobrecarga al sistema haciéndolo ineficiente. El chequear, por ejemplo, quiénes tienen acceso a algunos recursos y quiénes no, el aplicar los mecanismos de protección y registro de permisos consume demasiados recursos. En general, las soluciones presentes para estos problemas están aún en pañales. Otros problemas de los sistemas operativos distribuidos surgen debido a la concurrencia y al paralelismo. Tradicionalmente las aplicaciones son creadas para computadoras que ejecutan secuencialmente, de manera que el identificar secciones de código `paralelizable' es un trabajo arduo, pero necesario para dividir un proceso grande en sub-procesos y enviarlos a diferentes unidades de procesamiento para lograr la distribución. Con la concurrencia se deben implantar mecanismos para evitar las condiciones de competencia, las postergaciones indefinidas, el ocupar un recurso y estar esperando otro, las condiciones de espera circulares y , finalmente, los "abrazos mortales" (deadlocks). Estos problemas de por sí se presentan en los sistemas operativos multiusuarios o multitareas, y su tratamiento en los sistemas distribuidos es aún más complejo, y por lo tanto, necesitará de algoritmos más complejos con la inherente sobrecarga esperada. Sistemas Operativos – Unidad 1 – Introducción Página 18 de 19 Por otro lado, en el tema de sistemas distribuidos existen varios conceptos importantes referentes al hardware que no se ven en este trabajo: multicomputadoras, multiprocesadores, sistemas acoplados débil y fuertemente, etc. Servicios de los Sistemas Operativos El intérprete de comandos y los programas del sistema son los que fijan el entorno y la forma de ver el sistema operativo por los usuarios. En cambio, el programador del sistema tiene una visión totalmente diferente; para él todo son recursos físicos y dispositivos que deben ser convertidos en entidades lógicas para ofrecérselas a los usuarios. Se puede decir que un sistema operativo es un programa activado por eventos; es decir, si no hay programas en ejecución, ni operaciones de entrada/salida pendientes, etc., el sistema estará inactivo hasta que se produzca alguna nueva petición. Normalmente cada evento producirá una interrupción de la ejecución del sistema operativo. Llamadas al sistema operativo En esta ocasión las llamadas al sistema operativo se agrupan por el tipo de llamada y no por la acción que realizan. Pueden ser: • Terminación normal: Se realiza la devolución del control al usuario cuyo proceso ha terminado, a través del intérprete de comandos. • Terminación anormal: Cuando aparece un error en la ejecución de un programa, éste se da por terminado, devolviendo el control al intérprete de comandos, que indicará tal situación de error al usuario. • Peticiones de estado: Se procesa la petición solicitada y se devuelve el control al programa que la solicitó. • Peticiones de recursos: Los programas solicitarán recursos durante su ejecución que serán atendidos de inmediato o se entrará en un estado de espera hasta que puedan ser atendidos. • Peticiones de entrada/salida: De igual forma, los programas las solicitarán y serán atendidas de inmediato o tras un pequeño período de espera. Interrupciones de los dispositivos de E/S Una vez que un programa en ejecución realiza una petición de entrada/salida, se pueden tomar dos tipos de acción por parte del sistema operativo: • El proceso queda en espera hasta que se termina la operación de entrada/salida: En este caso el dispositivo externo, cuando termine la operación, producirá una interrupción que dará control al sistema operativo, el cual activará el proceso que estaba en espera. • El proceso seguirá realizando otras operaciones: En este caso el dispositivo externo también produce una interrupción en el sistema operativo, el cual no activará el proceso puesto que no estaba en espera, pero sí le indicará que la operación solicitada ha terminado. Gestión de excepciones Cuando un programa en ejecución comete un error, se producirá una interrupción; por ejemplo, una división por 0, intento de violación de un archivo protegido, intento de ejecución de una instrucción no permitida o privilegiada, etc. El tratamiento de estos errores se conoce como manejo de excepciones. Sistemas Operativos – Unidad 1 – Introducción Página 19 de 19 Los sistemas operativos suelen asociar alguna función para el tratamiento de estos errores. El núcleo da control a esta función en el momento de aparición de un error de este tipo. Protecciones Los programas de aplicación de los usuarios no están exentos de errores, así como los sistemas tampoco están libres de usuarios con malas intenciones. Por ello, el sistema operativo debe incluir ciertas funciones de protección con objeto de evitar problemas entre procesos y entre éstos y el propio sistema operativo. Protección de la entrada/salida Todos los dispositivos externos cuentan, por parte del sistema operativo, con rutinas para el control de las operaciones de entrada/salida. Estas rutinas se denominan controladores o drivers de dispositivos y entre otras funciones protegen los accesos incorrectos, devolviendo el control al núcleo del sistema operativo, indicándole la situación errónea que se ha producido. Protección de la memoria En general, cada proceso tiene una zona de memoria asignada para el tratamiento de sus datos denominada espacio de direccionamiento y no puede acceder a zonas asignadas al sistema operativo o a otros procesos. Para evitarlo existen unos registros frontera que indican el límite de memoria asignado a cada proceso. Si un proceso intentase acceder a direcciones que están fuera de la zona de memoria de su espacio de direccionamiento, se producirá una interrupción que dará control al sistema operativo dando cuenta del error que se ha producido. Protección del procesador Otro tipo de problemas que pueden presentarse es la presencia de bucles infinitos o accesos al procesador que no lo liberan nunca. En estos casos la única solución es la de apagar y volver a encender (reset) para volver a comenzar desde el principio. Para evitarlo, el hardware incluye un temporizador que marca periodos de tiempo, de manera que al terminar un período de tiempo se produzca una interrupción y tome el control el sistema operativo.
Compartir