17

Click here to load reader

Apuntes Para Resumen _alumnos de Sistemas Operativos 1

Embed Size (px)

Citation preview

Page 1: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

SISTEMAS OPERATIVOS 1

Unidad 1Introducción a los sistemas operativos.

1.1 Definición, objetivos y funciones de un S.O.1.2 Historia y evolución de los S.O.1.3 Subsistemas de un S.O.1.4 Estructuras de los sistemas operativos1.5 Análisis de los SO más comerciales. (LINUX, UNÍX, Windows, MACH, OS/2, VAX, MVS, etc.).

1.1 Definición, objetivos y funciones de un S.O.

Definición de Sistema Operativo

El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc. En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder, es como un policía de tráfico, se asegura de que los programas y usuarios que están funcionando al mismo tiempo no interfieran entre ellos. El sistema operativo también es responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan acceso al sistema. Clasificación de los Sistemas Operativos

Los sistemas operativos pueden ser clasificados de la siguiente forma:

•Multiusuario: Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos permiten a centenares o millares de usuarios al mismo tiempo.

•Multiprocesador: soporta el abrir un mismo programa en más de una CPU.

•Multitarea: Permite que varios programas se ejecuten al mismo tiempo.

•Multitramo: Permite que diversas partes de un solo programa funcionen al mismo tiempo.

•Tiempo Real: Responde a las entradas inmediatamente. Los sistemas operativos como DOS y UNIX, no funcionan en tiempo real.

Cómo funciona un Sistema Operativo

Los sistemas operativos proporcionan una plataforma de software encima de la cual otros programas, llamados aplicaciones, puedan funcionar. Las aplicaciones se programan para que funcionen encima de un sistema operativo particular, por tanto, la elección del sistema operativo determina en gran medida las aplicaciones que puedes utilizar.

Los sistemas operativos más utilizados en los PC son DOS, OS/2, y Windows, pero hay otros que también se utilizan, como por ejemplo Linux.

Cómo se utiliza un Sistema Operativo

Un usuario normalmente interactúa con el sistema operativo a través de un sistema de comandos, por ejemplo, el sistema operativo DOS contiene comandos como copiar y pegar para copiar y pegar archivos respectivamente. Los comandos son aceptados y ejecutados por

Page 2: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

una parte del sistema operativo llamada procesador de comandos o intérprete de la línea de comandos. Las interfaces gráficas permiten que utilices los comandos señalando y pinchando en objetos que aparecen en la pantalla.

Ejemplos de Sistema Operativo

A continuación detallamos algunos ejemplos de sistemas operativos:

Familia Windows •Windows 95 •Windows 98 •Windows ME •Windows NT •Windows 2000 •Windows 2000 server •Windows XP •Windows Server 2003 •Windows CE •Windows Mobile •Windows XP 64 bits •Windows Vista (Longhorn)

Familia Macintosh •Mac OS 7 •Mac OS 8 •Mac OS 9 •Mac OS X

Familia UNIX •AIX •AMIX •GNU/Linux •GNU / Hurd •HP-UX •Irix •Minix •System V •Solaris •Unix Ware ?

El objetivo fundamental de los sistemas operativos

Es gestionar y administrar eficientemente los recursos hardware, permitiendo que se ejecuten concurrentemente varios programas, sin que haya conflictos en el acceso de cada uno de ellos a cada uno de los recursos que necesite, y sin que ningún programa monopolice alguno de ellos. Un sistema operativo 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. Es un programa de control, ya que se encarga de gestionar y asignar los recursos hardware que requieren los programas. Pensemos en una computadora que es utilizada desde diversos terminales por varios usuarios. Los recursos hardware son: el procesador (CPU), la memoria principal, los discos, y otros periféricos. Obviamente, si varios usuarios están utilizando la misma Computadora, debe haber alguien o algo que asigne los recursos y evite los conflictos que puedan surgir cuando dos programas requieran los mismos elementos (la misma unidad de disco, o la impresora, por ejemplo). Esta es una de las funciones del sistema operativo. Además de esta función de asignar los recursos a cada programa, el sistema operativo se encarga de contabilizar de éstos, y de la seguridad (que un usuario no pueda acceder sin autorización a la información de otro, por ejemplo).

El sistema operativo facilita el uso de la computadora. Veamos un ejemplo de cómo lo hace. Cada dispositivo de E/S, para ser utilizado, requiere varias instrucciones máquina que establezcan un dialogo entre las unidades centrales y el periférico, enviando o captando el dato de salida o de entrada, respectivamente. Estas instrucciones dependen considerablemente de las características concretas del periférico. Si se trata, por ejemplo, de una unidad de disco, hay que considerar el ancho de los buses, el tamaño de su memoria intermedia, el arranque (y parada) de los motores de la unidad, el código identificador de la posición a donde hay que acceder, etc. Por otra parte, un dispositivo dado, estas instrucciones u operaciones son comunes para grabar o leer cual tipo de información (programas o datos), sea cual sea su naturaleza. El sistema operativo, con objetivo de facilitar el trabajo de los programadores, contiene módulos de gestión de entradas / salidas que evitan a los usuarios tener que incluir esas instrucciones cada vez que hacen una operación de entrada o salida. Se puede decir que esos programas del sistema operativo hacen transparente al usuario las características hardware concretas de los dispositivos. El sistema operativo también hace que la computadora se utilice eficientemente. Para poner de manifiesto cómo el sistema operativo puede incrementar la eficiencia consideremos un ejemplo sencillo. Los programas tradicionalmente se ejecutan secuencialmente; es decir, hasta que no concluye la ejecución de una instrucción no se ejecuta la siguiente. Supongamos que dentro de un programa hay una instrucción que implica la escritura de una página en una impresora láser. Hasta que no acabe de imprimirse dicha página el programa no puede continuar ejecutándose. En resumen, el sistema operativo efectúa, entre otras, las siguientes funciones: - Facilita el uso de la computadora, en general, la comunicación computadora / usuario - Gestiona y asigna recursos hardware (procesador, memoria y periféricos) a los distintos programas o tareas - Gestiona y mantiene los archivos en dispositivos de memoria masiva - Apoya a otros programas - Protege los datos y los

Page 3: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

programas, cuestión especialmente compleja en sistemas multiusuario - Identifica y autentifica a los usuarios que hacen uso de la computadora. - Contabiliza la utilización de los recursos realizada por los distintos usuarios

Sus funciones mas importantes son:

-Gestiona los recursos del ordenador en sus niveles mas bajos. -Dispone de una interface (elemento que hace posible la fácil comunicación usuario maquina) liberando al usuario del conocimiento del hardware. El SO windows se basa en una interface graficas, “GUI” (Interface Grafica de Usuario), permitiendo al usuario interactuar con el hardware de una forma sencilla y rápida. -Sobre el SO funcionan el resto de programas y aplicaciones del software.

Grafico interno de la fusión entre el software y el hardware.

Una de las características he imnovaciones mas importantes de un SO es la llamada multi-tarea. Un SO opera entre la CPU y los periféricos y con la tecnología multi-tarea reparte el tiempo entre ellos dos. Suponiendo que se lancen tres procesos (A,B,C), (proceso: conjunto de rutina, algoritmos, etc.). Lo que el SO hace internamente con esta tecnología es: recoger la primera operación del proceso A en CPU luego pasa a los periféricos con lo que la CPU descansa y en ese momento, recoge la primera operación del proceso B en CPU, posteriormente en cuanto va a los periféricos pasa al proceso C, y cuando a este le llegan los turnos que corresponden a los periféricos pasa a la segunda operación del proceso A. Y asi sucesivamente. Con esta tecnología se logra apurar y reducir enormemente el tiempo de proceso del SO, podemos llegar a unas 50 tareas simultáneamente. Sistemas operativos como, el ms-dos no disponen de ella, pero otros como windows si alcanzan esta tecnología.

Mulprogramacion o multiproceso: Es la técnica que permite cargar varios programas o procesos al mismo tiempo de forma simultanea.

Cada programa o proceso ha de usar unos recursos y el SO ha de gestionar esto. Se pueden dar los llamados interbloqueos en la que 2 o mas programas estan a la espera por solicitar un dispositivo o memoria. El SO debe solucionar esto.

Batch: sirve para aprovechar tiempos muertos (noches), etc. En grandes empresas los usan para hacer copias de seguridad.

Tiempo real: Asigna de forma primaria unos tiempos si se pasa de ellos da paso al siguiente.

Seguridad: El SO debe suministrar los medios para la ejecución concurrente de los procesos, sincronizacion entre procesos, comunicación entre procesos. El SO debe suministrar algoritmos de gestion y planificación de procesos que se encarguen de decidir que proceso se ejecutara o cual tomara al procesador y de llevar cuenta de los estados y procesos, sus prioridades y todo la restante información relevante.

Estado de los procesos Activo: Ejecutándose en un instante de tiempo. En un sistema monoprocesador, solo puede haber uno. Preparado: Listos para ejecutarse. Esperando que un procesador quede libre, bloqueado o suspendido, a la espera de que se cumpla una condicion. Muerto: Ha terminado su ejecución o el sistema ha detectado un error fatal y la ha transferido ha estado nonato. Nonato: El programa existe pero todavía no es conocido por el SO.

El estado global del SO en un instante determinado, es el conjunto de recursos y procesos existentes con sus estados correspondientes

Transición entre procesos

El distribuidor: es uin modulo del SO que activa procesos preparados de acuerdo con unos criterios determinados por ejemplo: prioridad. Interrupcion: Son las llamadas del SO para solicitar servicios por ejemplo: una operación.de E/S. Planificador: Modulo del SO que translada

Page 4: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

procesos de ejecución a preparados, por ejemplo: en sistemas de tiempo compartido porque se les ajusta el tiempo. O llega uno de mayor prioridad. Paso de preparado a bloqueado: Cuando tiene lugar un evento que estuviera esperandopara poder perseguirlo

1.2 Historia y evolución de los S.O.

Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie de cambios revolucionarios llamados generaciones. En el caso del Hardware, las generaciones han sido marcadas por grandes avances en los componentes utilizados, pasando de válvulas ( primera generación ) a transistores ( segunda generación ), a circuitos integrados ( tercera generación), a circuitos integrados de gran y muy gran escala (cuarta generación). Cada generación Sucesiva de hardware ha ido acompañada de reducciones substanciales en los costos, tamaño, emisión de calor y consumo de energía, y por incrementos notables en velocidad y capacidad.

Generacion Cero (década de 1940)

Los primeros sistemas computacionales no poseían sistemas operativos. Los usuarios tenían completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano.

Primera Generacion (década de 1950)

Los sistemas operativos de los años cincuenta fueron diseñados para hacer mas fluida la transición entre trabajos. Antes de que los sistemas fueran diseñados, se perdía un tiempo considerable entre la terminación de un trabajo y el inicio del siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunían por grupos o lotes. Cuando el trabajo estaba en ejecución, este tenia control total de la maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y leía e iniciaba el trabajo siguiente.

Al inicio de los 50′s esto había mejorado un poco con la introducción de tarjetas perforadas (las cuales servían para introducir los programas de lenguajes de máquina), puesto que ya no había necesidad de utilizar los tableros enchufables.

Además el laboratorio de investigación General Motors implementó el primer sistema operativo para la IBM 701. Los sistemas de los 50′s generalmente ejecutaban una sola tarea, y la transición entre tareas se suavizaba para lograr la máxima utilización del sistema. Esto se conoce como sistemas de procesamiento por lotes de un sólo flujo, ya que los programas y los datos eran sometidos en grupos o lotes.

La introducción del transistor a mediados de los 50′s cambió la imagen radicalmente.

Se crearon máquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados, aunque sólo las grandes universidades y las grandes corporaciones o bien las oficinas del gobierno se podían dar el lujo de tenerlas.

Para poder correr un trabajo (programa), tenían que escribirlo en papel (en Fortran o en lenguaje ensamblador) y después se perforaría en tarjetas. Enseguida se llevaría la pila de tarjetas al cuarto de introducción al sistema y la entregaría a uno de los operadores. Cuando la computadora terminara el trabajo, un operador se dirigiría a la impresora y desprendería la salida y la llevaría al cuarto de salida, para que la recogiera el programador.

Segunda Generacion (a mitad de la década de 1960)

La característica de los sistemas operativos fue el desarrollo de los sistemas compartidos con multiprogramación, y los principios del multiprocesamiento. En los sistemas de multiprogramación, varios programas de usuario se encuentran al mismo tiempo en el almacenamiento principal, y el procesador se cambia rápidamente de un trabajo a otro. En los

Page 5: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

sistemas de multiprocesamiento se utilizan varios procesadores en un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de la maquina.

La independencia de dispositivos aparece después. Un usuario que desea escribir datos en una cinta en sistemas de la primera generación tenia que hacer referencia especifica a una unidad de cinta particular. En la segunda generación, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto numero de pistas y cierta densidad.

Se desarrollo sistemas compartidos, en la que los usuarios podían acoplarse directamente con el computador a través de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el control de procesos industriales. Los sistemas de tiempo real se caracterizan por proveer una respuesta inmediata.

Tercera Generacion (mitad de década 1960 a mitad década de 1970)

Se inicia en 1964, con la introducción de la familia de computadores Sistema/360 de IBM. Los computadores de esta generación fueron diseñados como sistemas para usos generales . Casi siempre eran sistemas grandes, voluminosos, con el propósito de serlo todo para toda la gente. Eran sistemas de modos múltiples, algunos de ellos soportaban simultáneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se había construido algo similar, y muchos de los esfuerzos de desarrollo terminaron muy por arriba del presupuesto y mucho después de lo que el planificador marcaba como fecha de terminación.

Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no estaban acostumbrados los usuarios.

Cuarta Generacion (mitad de década de 1970 en adelante)

Los sistemas de la cuarta generación constituyen el estado actual de la tecnología. Muchos diseñadores y usuarios se sienten aun incómodos, después de sus experiencias con los sistemas operativos de la tercera generación.

Con la ampliación del uso de redes de computadores y del procesamiento en línea los usuarios obtienen acceso a computadores alejados geográficamente a través de varios tipos de terminales.

Los sistemas de seguridad se ha incrementado mucho ahora que la información pasa a través de varios tipos vulnerables de líneas de comunicación. La clave de cifrado esta recibiendo mucha atención; han sido necesario codificar los datos personales o de gran intimidad para que; aun si los datos son expuestos, no sean de utilidad a nadie mas que a los receptores adecuados.

El porcentaje de la población que tiene acceso a un computador en la década de los ochenta es mucho mayor que nunca y aumenta rápidamente.

El concepto de maquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los detalles físicos de; sistema de computación que esta siendo accedida. En su lugar, el usuario ve un panorama llamado maquina virtual creado por el sistema operativo.

Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una sociedad orientada hacia la información, y el trabajo de las bases de datos es hacer que esta información sea conveniente accesible de una manera controlada para aquellos que tienen derechos de acceso.

Sus generaciones:

Page 6: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

-Generación 0º: década de los 40 los sistemas informáticos no disponían de SO con lo que los usuarios de estos debían introducir las instrucciones en código binario lo que hacia su uso restringido a personas de mucho conocimiento en esa materia. -Generación 1º: década de los 50. Aparece el primer SO para lograr la fluidez en la trasmisión de información. Aparece el JLC (lenguaje de control de trabajo), se usaban tarjetas perforadas y eran controladas por operadores (personas con cierto conocimiento). Posteriormente se pasaron de las tarjetas a las cintas perforadas y estas iban mucho mas rápido. En el primer SO había en ocupaba en memoria 64 KB (bastante en función de la capacidad total de la memoria en aquella época).

Grafico interno de un sistema operativo de la época y en parte en la actualidad

Generación 2º: Se dan los primeros pasos de la multiprogramación es decir varios programas de usuario. El SO reparte tiempos del procesador. Aparece la llamada tecnología DMA usa buffers entre terminales: impresora, etc. ¿Qué es un buffer?: Es una fuente de almacenamiento temporal que reside en el propio dispositivo ya sea de entrada, o de salida. Aparece el termino spooding: viene a ser como lo que gestiona la cola de instrucciones en el buffer.

Terminales de Impresora

Durante esta generación aparecen los primeros multiprocesarodes (varios procesadores trabajando simultáneamente, a la vez).

Generación 3º: segunda mitad de la década de los 60 y 1º mitad de los 70. Es entonces cuando se desarrollan los SO tan importantes como el UNÍS para la gestión de grandes mainframes. Durante esta generación el usuario perdió el control del hardware. Los equipos informáticos venían con el software (SO) de “regalo”.

Generación 4º: segunda mitad de los 70 y primera de los 80. Los SO aumentan sus prestaciones y gestionan eficientemente los recursos del ordenador. Es en esta época donde mas facilidad se le da al usuario para su manejo. IBM separa los costos de hardware y software con esta estrategia de marketing se pensaba que facturarían el doble en ganancias. Pero no fue así. Los vendedores de software pasan a hacerse responsables de los bugs (o fallos de sus programas). Proliferaron las empresas desarrolladoras de software esto perjudico seriamente a IBM ya que así perdió la exclusividad. Posteriormente se abrió el mercado de computadoras compatibles con IBM, estos son los llamados clónicos (varios dispositivos informáticos de distintas fabricas o procedencias intercomunicados y compatibles entre si constituyendo un único equipo informático. Este tipo de ordenadores es de precio mucho mas reducido que los IBM y sus prestaciones son las mismas).

Generación 5º: década de los 90. Los entornos gráficos cobraron mucha importancia, proliferaron y evolucionaron las llamadas GUIs (interfaces graficas del usuario). Los sistemas operativos tipo windows 9*, millenium o NT para empresas proliferaron y desplazaron de las empresas al ya consolidado UNÍS.

1.3. SUBSISTEMAS DE UN SISTEMA OPERATIVO

Administración de Archivos.

Un archivo es un conjunto de información, que se encuentra almacenada o guardada en la memoria principal del computador, en el disco duro, en el disquete flexible o en los discos compactos (Cd-Rom). Antes de que un archivo pueda leerse o escribirse en él, debe abrirse, momento en el cual se verifican los permisos. Estos archivos se abren especificando en el computador la ruta de acceso al archivo desde el directorio raíz, que es la unidad principal del disco del computador, este puede ser un disco duro o disco flexible.

Page 7: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

Uno de los problemas mas frecuentes en el manejo de archivos son los deadlock, un deadlock es una situación no deseada de espera indefinida y se da cuando en un grupo de procesos, dos o más procesos de ese grupo esperan por llevar a cabo una tarea que será ejecutada por otro proceso del mismo grupo, entonces se produce el bloqueo.

Dispositivos de Entrada y Salida

El código destinado a manejar la entrada y salida de los diferentes periféricos en un sistema operativo es de una extensión considerable y sumamente complejo. Resuelve la necesidades de sincronizar, atrapar interrupciones y ofrecer llamadas al sistema para los programadores.Los dispositivos de entrada salida se dividen, en general, en dos tipos: dispositivos orientados a bloques y dispositivos orientados a caracteres. Orientados a Bloques.Los dispositivos orientados a bloques tienen la propiedad de que se pueden direccionar, esto es, el programador puede escribir o leer cualquier bloque del dispositivo realizando primero una operación de posicionamiento sobre el dispositivo. Orientados a Caracteres.Los dispositivos orientados a caracteres son aquellos que trabajan con secuencias de bytes sin importar su longitud ni ninguna agrupación en especial.

Administración de Proceso.

Uno de los conceptos mas importantes que gira entorno a un sistema operativo es el de proceso. Un proceso es un programa en ejecución junto con el entorno asociado (registros, variables ,etc.).

El corazón de un sistema operativo es el núcleo, un programa de control que reacciona ante cualquier interrupción de eventos externos y que da servicio a los procesos, creándolos, terminándolos y respondiendo a cualquier petición de servicio por parte de los mismos. Planificación del Procesador.

La planificación del procesador se refiere a la manera o técnicas que se usan para decidir cuánto tiempo de ejecución y cuando se le asignan a cada proceso del sistema. Obviamente, si el sistema es monousuario y monotarea no hay mucho que decidir, pero en el resto de los sistemas esto es crucial para el buen funcionamiento del sistema.

Características a considerar de los Procesos:Estas características pueden ser:

Cantidad de Entrada/Salida: Existen procesos que realizan una gran cantidad de operaciones de entrada y salida.

Cantidad de Uso de CPU: Existen procesos que no realizan muchas operaciones de entrada y salida, sino que usan intensivamente la unidad central de procesamiento.

Procesos de Lote o Interactivos: Un proceso de lote es más eficiente en cuanto a la lectura de datos, ya que generalmente lo hace de archivos.

Procesos en Tiempo Real: Si los procesos deben dar respuesta en tiempo real se requiere que tengan prioridad para los turnos de ejecución.

Longevidad de los Procesos: Existen procesos que típicamente requerirán varias horas para finalizar su labor, mientras que existen otros que solo necesitan algunos segundos.

Gestión de la memoria :

Page 8: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

El sistema operativo se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo puede crear una zona de memoria en el disco duro, denominada “memoria virtual”.

La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más lenta.

1.4. ESTRUCTURA DE LOS SISTEMAS OPERATIVOS

TIPOS DE 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 y, finalmente, sistemas operativos por la forma en que ofrecen sus servicios (visión externa).

2.1 Sistemas Operativos por su Estructura

Según [Alcal92], se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los cuales son:

Requisitos de usuario: Sistema fácil de usar y de aprender, seguro, rápido y adecuado al uso al que se le quiere destinar.

Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operación, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad.

A continuación se describen las distintas estructuras que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener.

2.1.1 Estructura monolítica.

Es la estructura de los primeros sistemas operativos constituídos 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). 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.

2.1.2 Estructura jerárquica.

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.

Page 9: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

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. [Feld93].

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).

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.

2.1.3 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).

2.1.4 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.

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.” [Alcal92]. 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.

2.2 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.

Page 10: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

2.2.1 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.

2.2.2 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.

2.2.3 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.

2.2.4 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.

2.2.5 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 ? .

2.2.6 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 cualesquira 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. Us 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.

Page 11: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

2.3. 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 distribuídos.

2.3.1 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 cinjunto 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.

2.3.2 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 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 simplementa 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: distribuír 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. [Tan92]. 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 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. 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.

2.3.2.1 Ventajas de los Sistemas Distribuídos

Page 12: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

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 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 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 tendrian 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.

• Comunicaciones: La comunicación persona a persona es factible en los sistemas distribuídos, en los sistemas aislados no. _ Flexibilidad: La distribución de las cargas de trabajo es factible en el sistema distribuídos, se puede incrementar el poder de cómputo.

2.3.2.2 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 aplicaiones 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 hadware que no se ven en este trabajo: multicomputadoras, multiprocesadores, sistemas acoplados débil y fuertemente, etc. En [Tan92] páginas 366 - 376 puede encontrarse material relacionado a estos conceptos.

Page 13: Apuntes Para Resumen _alumnos de Sistemas Operativos 1

1.5 Análisis de los SO más comerciales. (LINUX, UNÍX, Windows, MACH, OS/2, VAX, MVS, etc.).

TAREA 1