Unidad 1

16

Click here to load reader

Transcript of Unidad 1

Page 1: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 1

1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS 1.1 CONCEPTO Y FUNCIONES DEL SISTEMA OPERATIVO Sin el software una computadora es en esencia una masa metálica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar información, encontrar errores de ortografía e intervenir en muchas otras valiosas actividades para ganar el sustento. El software para computadoras puede clasificarse en general, en 2 clases: los programas de sistema, que controlan la operación de la computadora en sí y los programas de aplicación, los cuales resuelven problemas para sus usuarios. El programa fundamental de todos los programas de sistema, es el Sistema Operativo, que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse los programas de aplicación. ¡Qué es un Sistema Operativo? Una de las definiciones más comúnmente aceptadas expresa: “Un Sistema Operativo es un grupo de programas de proceso con las rutinas de control necesarias para mantener continuamente operativos dichos programas”. Un Sistema Operativo es un programa que actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un Sistema Operativo es, entonces, lograr que el Sistema de computación se use de manera cómoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. En base en lo anterior, el objetivo primario de un Sistema Operativo es:

• Optimizar todos los recursos del sistema para soportar los requerimientos. El Sistema Operativo es el programa fundamental de todos los programas de sistema. El protege y libera a los programadores de la complejidad del hardware, colocándose un nivel de software por sobre el hardware para:

• Controlar todas las partes del sistema. • Presentar al usuario una interfaz o máquina virtual.

Una de las principales funciones del Sistema Operativo es ocultar toda esta complejidad y brindar al programador un conjunto más conveniente de instrucciones para trabajar. El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de código que se encuentra en el procesador, el cual carga el BIOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicación y software variado. En los años sesenta, un sistema operativo se podría haber definido como el software que controla al hardware. Sin embargo, actualmente existe una tendencia significativa a la transferencia de las funciones del software al firmware, es decir, microcódigo. Dicha tendencia se ha pronunciado tanto que es probable que en algunos sistemas las funciones codificadas en firmware sobrepasen pronto a aquéllas codificadas en software.

Es evidente que se necesita una nueva definición de sistema operativo. Se puede imaginar un sistema operativo como los programas, instalados en el software o el firmware, que hacen utilizable el hardware.

Page 2: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 2

Un sistema operativo es un conjunto de programas que administran eficientemente los recursos de un sistema de cómputo, controlando la ejecución de programas de aplicación y actuando como una interfaz entre el usuario y la computadora (el hardware).

Puede considerarse que un sistema operativo lleva a cabo tres funciones principales:

• Comodidad: Un sistema operativo hace que una computadora sea más fácil de utilizar. • Eficiencia: Un sistema operativo permite que los recursos de un sistema informático se

aprovechen de una manera más eficiente. • Capacidad de evolución: Un sistema operativo deberá construirse de modo que permita el

desarrollo efectivo, la verificación y la introducción de nuevas funciones en el sistema y a la vez, no interferir en los servicios que brinda.

Las principales características de los S. O. son:

• Definir la “Interfaz del Usuario”. • Compartir el hardware entre usuarios. • Permitir a los usuarios compartir los datos entre ellos. • Planificar recursos entre usuarios. • Facilitar la entrada / salida. • Recuperarse de los errores.

Los principales recursos administrados por los S. O. son:

• Procesadores. • Almacenamiento. • Dispositivos de e / s. • Datos.

Los sistemas operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware de la computadora: el procesador, los medios de almacenamiento, los dispositivos de E/S, los dispositivos de comunicación y los datos.

Los sistemas operativos realizan muchas funciones, como proporcionar la interfaz con el usuario, permitir que los usuarios compartan entre sí el hardware y los datos, evitar que los usuarios se interfieran recíprocamente, planificar la distribución de los recursos entre los usuarios, facilitar la entrada y salida, recuperarse de los errores, contabilizar el uso de los recursos, facilitar las operaciones en paralelo, organizar los datos para lograr un acceso rápido y seguro, y manejar las comunicaciones en red.

Fig 1.1: Hardware, Sistema Operativo y Aplicaciones

Como sea que se decida definir los sistemas operativos, lo importante es no olvidar que constituyen una parte integral del ambiente de cómputo y, por tanto, necesitan ser comprendidos en alguna medida por todos los usuarios de computadoras.

Page 3: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 3

1.2 ESTRUCTURA DE UN SISTEMA OPERATIVO El esquema que suele usarse para el estudio de los sistemas operativos recibe el nombre de “modelo de cebolla”, debido a que esta formado por capas concéntricas al rededor del núcleo (ver figura 1.2).

La parte interna del conjunto jerárquico de programas que forman un sistema operativo recibe el nombre de núcleo o kernel. Las otras capas se encargan del manejo de la memoria, el procesador, los dispositivos de E/S y los archivos.

¿Cómo está conformado un sistema operativo? Un sistema operativo está conformado básicamente por cuatro módulos:

• Núcleo o Kernel. • Administrador de memoria. • Sistema de entrada/salida. • Administrador de archivos.

A veces se considera un quinto módulo: el intérprete de comandos o intérprete de instrucciones, también llamado “shell”, el cual se encarga de "traducir" las órdenes que el usuario ingresa mediante el teclado u otros dispositivos a un "lenguaje" que la máquina pueda entender. Núcleo o Kernel Es el módulo de más bajo nivel de un sistema operativo, pues descansa directamente sobre el hardware de la computadora. Entre las tareas que desempeña se incluyen el manejo de las interrupciones, la asignación de trabajo al procesador y el proporcionar una vía de comunicación entre los distintos programas. En general, el núcleo se encarga de controlar el resto de los módulos y sincronizar su ejecución. El núcleo contiene un submódulo denominado "planificador", el cual se encarga de asignar tiempo del procesador a los programas, de acuerdo a una cierta política de planificación que varía de un sistema operativo a otro. Normalmente se utiliza una jerarquía de prioridades que determinan cómo se asignará el tiempo del CPU a cada programa. Una política de planificación muy común en los sistemas de multiprogramación y multiproceso son las técnicas de "time slicing" (fracción de tiempo). Se asigna a cada programa un corto intervalo de tiempo del procesador. Si el programa no ha terminado durante este intervalo de tiempo, vuelve a la cola de programas. Administrador de memoria Este módulo se encarga de asignar ciertas porciones de la memoria principal (RAM) a los diferentes programas o partes de los programas que la necesiten, mientras el resto de los datos y los programas se mantienen en los dispositivos de almacenamiento masivo. De este modo, cuando se asigna una parte de la memoria principal se hace de una forma estructurada, siguiendo un determinado orden. La forma más común de administración de la memoria supone crear una memoria virtual; con este sistema, la memoria de la computadora aparece, para cualquier usuario del sistema, mucho mayor de lo que en realidad es.

Page 4: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 4

Sistema de entrada/salida (E/S) Este componente presenta al usuario la E/S de datos como una cuestión independiente del dispositivo; es decir, para los usuarios, todos los dispositivos tienen las mismas características y son tratados de la misma forma, siendo el sistema operativo el encargado de atender las particularidades de cada uno de ellos (como su velocidad de operación). Una técnica muy común, especialmente en salida, es el uso de "spoolers". Los datos de salida se almacenan de forma temporal en una cola situada en un dispositivo de almacenamiento masivo (el spool), hasta que el dispositivo periférico requerido se encuentre libre; de este modo se evita que un programa quede retenido porque el periférico no esté disponible. Administrador de archivos Se encarga de mantener la estructura de los datos y los programas del sistema y de los diferentes usuarios (que se mantienen en archivos) y de asegurar el uso eficiente de los medios de almacenamiento masivo. El administrador de archivos también supervisa la creación, actualización y eliminación de los archivos, manteniendo un directorio con todos los archivos que existen en el sistema en cada momento y coopera con el módulo administrador de memoria durante las transferencias de datos desde y hacia la memoria principal. Si se dispone de un sistema de memoria virtual, existen transferencias entre la memoria principal y los medios de almacenamiento masivo para mantener la estructura de la misma. 1.3 CLASIFICACION DE LOS SISTEMAS OPERATIVOS En esta sección se describirán las características que clasifican a los sistemas operativos, básicamente se cubrirán tres clasificaciones:

• sistemas operativos por su estructura (visión interna), • sistemas operativos por los servicios que ofrecen, • sistemas operativos por la forma en que ofrecen sus servicios (visión externa).

Sistemas Operativos por su Estructura

Estructura monolítica.

Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra (Ver Fig. 2).

Page 5: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 5

Las características fundamentales de este tipo de estructura son: • Construcción del programa final a base de módulos compilados separadamente que se unen a

través del ligador. • Buena definición de parámetros de enlace entre las distintas rutinas existentes, que puede

provocar mucho acoplamiento. • Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los

recursos de la computadora, como memoria, disco, etc. • Generalmente están hechos a medida, por lo que son eficientes y rápidos en su ejecución y

gestión, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones.

Estructura jerárquica o por capas.

A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organización del software, del sistema operativo, donde una parte del sistema contenía subpartes y esto organizado en forma de niveles.

Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos.

Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos (Ver Fig. 3). Se puede pensar también en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categoría.

En la estructura anterior se basan prácticamente la mayoría de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concéntricos o "rings" (Ver Fig. 4).

Page 6: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 6

En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más externas. Las capas más internas serán, por tanto, más privilegiadas que las externas.

Máquina Virtual.

Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramación y la máquina extendida. El objetivo de los sistemas operativos de máquina virtual es el de integrar distintos sistemas operativos dando la sensación de ser varias máquinas diferentes.

El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas máquinas virtuales como se soliciten. Estas máquinas virtuales no son máquinas extendidas, sino una réplica de la máquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina extendida al usuario (Ver Fig. 5).

Cliente-servidor ( Microkernel)

El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas.

Este sistema sirve para toda clase de aplicaciones por tanto, es de propósito general y cumple con las mismas actividades que los sistemas operativos convencionales.

Se separa el sistema operativo en módulos: Sistema de Archivos, Memoria, Procesos, etc. El kernel sólo se dedica a pasar mensajes entre los módulos. La mayoría de los módulos en user-mode.

El núcleo tiene como misión establecer la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicación normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operación de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro." . Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el núcleo provee solamente funciones muy básicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la mayoría que el usuario final o programador puede usar. Estos servidores deben tener mecanismos de seguridad y protección que, a su vez, serán filtrados por el núcleo que controla el hardware. Actualmente se está trabajando en una versión de UNIX que contempla en su diseño este paradigma.

Page 7: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 7

Sistemas Operativos por Servicios

Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario final. Esta clasificación se comprende fácilmente con el cuadro sinóptico que a continuación se muestra en la Fig. 6.

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.

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 haciendo solo 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.

Page 8: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 8

Multiproceso Un sistema operativo multiproceso se refiere a l 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 cualquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema. 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.

Sistemas Operativos por la Forma de Ofrecer sus Servicios Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. Se utilizan en entornos donde son procesados un gran número de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:

• Control de trenes. • Telecomunicaciones. • Sistemas de fabricación integrada. • Producción y distribución de energía eléctrica. • Control de edificios. • Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra.

Page 9: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 9

Sistemas Operativos por lotes.

Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.

Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos.

Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico.

Figura. Trabajos más comunes que realiza el Sis tema Operativo por lotes. Sistemas Operativos de tiempo compartido.

Permiten la simulación de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posib le, y la respuesta aparecerá en la terminal del usuario.

Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria.

Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.

Page 10: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 10

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.

Figura. Se muestra un Sistema Operativo en red.

El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic. Sistemas Operativos paralelos.

En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo.

En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso.

Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.

Page 11: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 11

Sistemas Operativos Distribuídos

Los sistemas operativos distribuídos 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 acceda 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 distribuído, 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 distribuídos y consolidar la protección y seguridad entre los diferentes componentes del sistema y los usuarios.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo.

Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.

El sistema integrador de los microprocesadores que hace ver a las varias memorias, procesadores, y todos los demás recursos como una sola entidad en forma transparente se le llama sistema operativo distribuído. Las razones para crear o adoptar sistemas distribuídos se dan por dos razones principales: por necesidad (debido a que los problemas a resolver son inherentemente distribuídos) 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.

Page 12: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 12

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 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 Distribuídos

En general, los sistemas distribuídos (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 distribuídos.

• Velocidad: Relacionado con el punto anterior, la velocidad sumada es muy superior. • Confiabilidad: Si una sola máquina fa lla, 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. Por otro lado, los sistemas distribuídos también exhiben algunas ventajas sobre sistemas aislados. Estas ventajas son:

• Compartir datos: Un sistema distribuído 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 distribuído permite accesar dispositivos desde cualquier nodo en forma transparente, lo cual es imposible con los sistemas aislados. El sistema distribuído logra un efecto sinergético.

Desventajas de los Sistemas Distribuídos Así como los sistemas distribuídos 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 distribuídos es el software: los problemas de compartición de datos y recursos es tan complejo que los mecanismos de solución generan mucha sobrecarga al sistema haciéndolo ineficiente. El checar, 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 distribuídos 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 ardúo, 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 distribuídos es aún más complejo, y por lo tanto, necesitará de algoritmos más complejos con la inherente sobrecarga esperada. Por otro lado, en el tema de sistemas distribuídos existen varios conceptos importantes referentes al hardware que no se veremos en este momento: multicomputadoras, multiprocesadores, sistemas acoplados débil y fuertemente, etc.

Page 13: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 13

1.4 HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS

Historia de los Sistemas Operativos

Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales características de un Sistema Operativo contemporáneo, es útil considerar como han ido evolucionando éstos con el tiempo. Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos. La primera de estas versiones podría ser esta:

• En los 40's, se introducen los programas bit a bit, por medio de interruptores mecánicos y después se introdujo el lenguaje máquina que trabajaba por tarjetas perforadas.

• Con las primeras computadoras, desde finales de los años 40 hasta la mitad de los años 50, el programador interactuaba de manera directa con el hardware de la computadora, no existía realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a través del lenguaje máquina (bits) o a través de interruptores.

• Durante los años 50's y 60's.- A principio de los 50's, la compañía General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseñadores, capturistas, etc.), se encarguen de modificar sus programas. Establecían o apartaban tiempo, metían o introducían sus programas, corregían y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traducía en pérdida de tiempo y tiempos de programas excesivos.

• En los años 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta época surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo.

• En los 80's, inició el auge de la INTERNET en los Estados Unidos de América. A finales de los años 80's comienza el gran auge y evolución de los Sistemas Operativos. Se descubre el concepto de multiprogramación que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales.

• Los 90's y el futuro, entramos a la era de la computación distribuida y del multiprocesamiento a través de múltiples redes de computadoras, aprovechando el ciclo del procesador.

• Se tendrá una configuración dinámica con un reconocimiento inmediato de dispositivos y software que se añada o elimine de las redes a través de procesos de registro y localizadores.

• La conectividad se facilita gracias a estándares y protocolos de sistemas abiertos por organizaciones como la Org. Intern. de normas, fundación de software abierto, todo estará mas controlado por los protocolos de comunicación OSI y por la red de servicios digital ISDN.

Page 14: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 14

Se ha desarrollado otra versión, la cual se ha hecho en base a etapas o generaciones: • Primera generación (1945-1955): bulbos y conexiones:

o Carencia de S. O.

o En los años cincuenta comienzan como transición entre trabajos, haciendo la misma más simple.

o Completo acceso al lenguaje de máquina.

• Segunda generación (1955-1965): transistores y sistemas de procesamiento por lotes (batch):

o En los años sesenta aparecen los S. O. para sistemas compartidos con:

§ Multiprogramación: varios programas de usuarios se encuentran al mismo tiempo en el almacenamiento principal, cambiando el procesador rápidamente de un trabajo a otro.

§ Multiprocesamiento: varios procesadores se utilizan en un mismo sistema para incrementar el poder de procesamiento.

o Posteriormente aparece la independencia de dispositivo:

§ El programa del usuario especifica las características de los dispositivos que requieren los archivos.

§ El S. O. asigna los dispositivos correspondientes según los requerimientos y las disponibilidades.

• Tercera generación (1965-1980): circuitos integrados y multiprogramación:

o Difusión de la multiprogramación:

§ Partición de la memoria en porciones, con trabajos distintos en cada una de ellas.

§ Aprovechamiento del tiempo de espera consecuencia de operaciones de e / s, para utilizar la CPU para otros procesos.

o Protección por hardware del contenido de cada partición de memoria.

o Aparición de técnicas de spooling :

§ Simultaneous Peripheral Operation On Line: operación simultánea y en línea de periféricos.

§ Almacenamiento de trabajos de entrada y de salida en dispositivos transitorios rápidos (discos), para disminuir el impacto de los periféricos más lentos.

o Son sistemas de modos múltiples, es decir que deben soportar sistemas de propósitos generales; son grandes y complejos pero muy poderosos.

o Interponen una capa de software entre el usuario y el hardware.

Page 15: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 15

o Aparecen los lenguajes de control de trabajos, necesarios para especificar el trabajo y los recursos requeridos.

o Soportan timesharing (tiempo compartido), variante de la multiprogramación con usuarios conectados mediante terminales en línea, permitiendo la operación en modo interactivo o conversacional.

o Aparecen los sistemas de tiempo real, que requieren tiempos de respuesta muy exigentes, especialmente para usos industriales o militares.

o Se difunden las computadoras de rango medio.

• Cuarta generación (1980-1990): computadoras personales:

o Aparición de software amigable con el usuario, destinado a usuarios no profesionales y con una interfase gráfica muy desarrollada.

o Se hacen populares el MS-DOS y UNIX.

o Desarrollo de sistemas operativos de red y sistemas operativos distribuidos.

o Sistemas operativos de red:

§ Los usuarios están conscientes de la existencia de varias computadoras conectadas.

§ Cada máquina ejecuta su propio S. O. local.

§ Son similares a los S. O. de un solo procesador pero con el agregado de:

§ Controlador de interfaz de la red y su software de bajo nivel.

§ Software para conexión y acceso a archivos remotos, etc.

o Sistemas operativos distribuidos:

§ Aparece ante los usuarios como un S. O. de un solo procesador, aún cuando de soporte a varios procesadores.

§ Los usuarios no son conscientes del lugar donde se ejecutan sus programas o donde se encuentran sus archivos, ya que lo debe administrar el S. O. automáticamente.

o Aparición de emuladores de terminal para el acceso a equipos remotos desde computadoras personales (PC).

o Gran énfasis en la seguridad, en especial por el desarrollo de los sistemas de comunicaciones de datos.

o El S. O. crea un ambiente de trabajo según el concepto de máquina virtual, que lo aísla del funcionamiento interno de la máquina.

o Proliferación de sistemas de bases de datos, accesibles mediante redes de comunicación

o Para los 90's el paradigma de la programación orientada a objetos cobra auge, así como el manejo de objetos desde los sistemas operativos.

Page 16: Unidad 1

Sistemas Operativos Unidad 1

Universidad Autónoma de Nayarit 16

1.5 ANÁLISIS DE LOS SISTEMAS OPERATIVOS MÁS COMERCIALES.

Windows 98

http://www.microsoft.com/windows98/ Este es uno de los sistemas operativos de escritorio con mayor cantidad de usuarios en el mundo, ya que se encuentra a mitad de camino (en términos de tiempo) entre la aparición de Windows 95 y de Windows 2000, entre sus principales características se encuentra el soporte real a multitarea (en Win95 era simulado).

Windows 2000

http://www.microsoft.com/windows2000/ Win2000 es la nueva generación del sistema operativo para redes de esta empresa (Windows NT), constituyéndose en una mejora significativa desde varias perspectivas, entre las que cabe destacar la estabilidad.

Windows XP

http://www.microsoft.com/windowsxp Este sistema operativo hace uso del nuevo «motor de sistema» que Microsoft desarrolló para Windows 2000, por lo tanto integra altas prestaciones gráficas junto a características de trabajo corporativo (en redes) heredadas de Win2000.

Linux

Es un sistema libre desarrollado por miles de personas a través de Internet, y que es el sistema operativo de mayor crecimiento en la actualidad, y el segundo de mayor uso en el mundo (tomando como uno sólo a toda la gama de la familia Windows.

Mac OS X

http://www.apple.com/macosx/ Es un sistema operativo desarrollado por Apple Computer Inc., es una reescritura prácticamente completa de su sistema operativo Macintosh, este nuevo sistema Mac está basado en el sistema Darwin http://developer.apple.com/darwin/, un proyecto «OpenSource» (aunque esta es la definición que da Apple, prefiero utilizar el termino «Libre»), el cual utiliza características de otros sistemas UNIX como Mach, FreeBSD y otros, la idea detrás de Mac OS X y por supuesto de Darwin es crear un completo sistema operativo con la flexibilidad y robustez de un UNIX y la facilidad de uso que siempre a caracterisado a los MAC.

FreeBSD

http://www.freebsd.org FreeBSD es un sistema operativo derivado del 386 BSD, es un sistema operativo libre (y gratuito) creado por cientos de desarrolladores, es altamente usado como servidor de Internet debido a sus altas prestaciones en comunicaciones,

NetBSD

http://www.netbsd.org NetBSD es tal vez el sistema operativo más portado en el mundo, es otro descendiente de 4.4 BSD y 386 BSD, por lo cual también se distribuye bajo los términos de la licencia BSD4.1 , lo que implica que puede ser libremente distribuido en forma binaria o de código fuente. El principal objetivo de NetBSD es la portabilidad, obviamente sin descuidar seguridad y estabilidad como la mayoría de derivados UNIX.

OpenBSD

http://www.openbsd.org Este sistema operativo es derivado de NetBSD, sus principales metas son la seguridad, la estandarización y la portabilidad, está catalogado como el sistema operativo más seguro del mundo (aunque en términos de seguridad no se puede hablar de una verdad absoluta).