UNIDAD 3 Los Sistemas Operativos

Share Embed Donate


Short Description

Download UNIDAD 3 Los Sistemas Operativos...

Description

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

UNIDAD 3.

TEORÍA GENERAL DE SISTEMAS OPERATIVOS 1. Conceptos Informática es la ciencia que estudia el tratamiento automático y racional de la información. El término proviene de la contracción de las palabras INFORmación autoMÁTICA. Se dice que el tratamiento es automático por ser máquinas las que realizan los trabajos de captura, proceso y presentación de la información, y se habla de racional por estar todo el proceso definido a través de programas que siguen el razonamiento humano. La informática nace de la idea de ayudar al hombre en aquellos trabajos rutinarios y repetitivos, generalmente de cálculo y de gestión, donde es frecuente la repetición de tareas. Ordenador (computadora) es una máquina compuesta de elementos físicos, en su mayoría de origen electrónico, capaz de realizar una gran variedad de trabajos a gran velocidad y con gran precisión, siempre que se le den las instrucciones adecuadas. Programa es un conjunto de órdenes o instrucciones que se le dan a un ordenador para realizar un proceso determinado. Los programas pueden haberse elaborado utilizando directamente las instrucciones del procesador (lenguaje máquina), o bien, utilizando órdenes o instrucciones de algún lenguaje de programación cercano al lenguaje humano. En el primer caso hablamos de programas escritos a bajo nivel, y en el segundo, hablamos de programas escritos en alto nivel. Los programas pueden catalogarse en dos categorías funcionales: software de sistema y software de aplicación Aplicación informática es un conjunto de uno o varios programas que, coordinadamente, realizan una determinada función o trabajo, ofreciéndosele al usuario como un paquete funcional que se carga o instala en el ordenador.

Recurso es un componente hardware necesario para llevar a cabo una determinada función. En los ordenadores existen cuatro tipos de recursos principales: el procesador, la memoria principal, el almacenamiento secundario y los dispositivos de entrada/salida.

-1-

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

La utilización de los recursos mediante programas es muy complicada, puesto que cada dispositivo es diferente y con gran cantidad de características a controlar, es por ello, que, con el tiempo, fue desarrollándose un software especializado y diseñado específicamente para el control de los recursos, liberando de ésta compleja e inevitable función a los programas de aplicación. Este software acabó siendo lo que hoy conocemos como sistema operativo.

SISTEMA OPERATIVO

Sistema operativo es un conjunto de programas, ordenadamente relacionados entre sí, destinado a muchas tareas entre las que destaca la administración eficaz de los recursos del ordenador. El sistema operativo es, sin duda, el programa más complejo e importante de un ordenador, actuando como intermediario entre los distintos elementos que intervienen y proporcionando un entorno en el cual los usuarios puedan ejecutar las aplicaciones que requieran. A veces también se denomina Software de sistema o Software de base, sirviendo, básicamente, para:  controlar e interactuar con todos los elementos del sistema informático (aún siendo externos al propio ordenador)  controlar y gestionar los dispositivos hardware de la máquina desde los niveles más básicos  proporcionar una interfaz que permita el diálogo con el usuario  administrar y mantener los sistemas de ficheros en los dispositivos de almacenamiento  dar soporte a otros programas, ofreciendo una gran variedad de servicios, que son invocados mediante las conocidas como “llamadas al sistema” Frecuentemente, bajo el concepto de software de base también nos referimos al software que se puede encontrar en la mayoría de los aparatos electrónicos que utilizan microprocesadores para funcionar, ya que gracias a éste software, podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autoradios, electrodomésticos automáticos, etc.). Este software, suele venir almacenado en una memoria no volátil y, habitualmente, también se denomina firmware.

-2-

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

Desde el punto de vista del usuario, el sistema operativo debe cumplir los siguientes objetivos: 

Ocultar, tanto al usuario final como a los programadores, los detalles del funcionamiento de la máquina, proporcionando más comodidad en el uso del ordenador.



Gestionar y administrar de manera eficiente los recursos del equipo, repartiendo el uso de los mismos entre los distintos usuarios y/o los distintos procesos (programas) en ejecución.



Proporcionar una interfaz al usuario, ejecutando instrucciones, comandos o acciones indicadas por cualquier otro procedimiento.



Permitir que los cambios debidos al desarrollo del propio SO se puedan realizar sin interferir con los servicios que ya se prestaban (evolutividad).

Un sistema informático o sistema de computación puede considerarse compuesto, globalmente, por tres componentes: el hardware (ordenador o máquina física), el software, que a su vez está compuesto por el sistema operativo (software de base) y los programas de aplicación (software de usuario) y, por último, el recurso humano (usuarios).

SISTEMA INFORMÁ TICO

-3-

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

2. Evolución de los sistemas operativos 2.1 Los primeros ordenadores Los primeros ordenadores eran de gran tamaño, extremadamente caros y muy difíciles de usar. Estas enormes máquinas ocupaban amplias salas y eran gestionadas por el usuario desde una consola, único medio de acceder al ordenador. Estos ordenadores no disponían de recursos lógicos adicionales, como pudieran ser medios de almacenamiento secundario, por lo que, los usuarios, en primer lugar, debían cargar el programa manualmente en la memoria, desde los interruptores del tablero frontal (una instrucción en cada ocasión), desde una cinta de papel o desde tarjetas perforadas. Luego se pulsaban los botones adecuados para establecer la dirección de inicio y comenzar la ejecución del programa. Mientras éste se ejecutaba, el programador-operador lo podía supervisar observando las luces en la consola, si se descubrían errores, podía detener el programa, examinar el contenido de la memoria y los registros y depurarlo directamente desde la consola. La salida del programa se imprimía, o se perforaba en cintas de papel o tarjetas para su impresión posterior. Sin embargo, con este procedimiento se presentaban ciertos problemas. Supongamos que un usuario se había registrado para usar una hora de tiempo del computador dedicada a ejecutar el programa que estaba desarrollando, pero se topaba con algún error difícil y no podía terminar en esa hora. Si alguien más había reservado el siguiente bloque de tiempo, debía detenerse, rescatar lo que pudiera y volver mas tarde para continuar. Por otra parte, si el programa se ejecutaba sin problemas, podría terminar en 35 minutos; pero como tenía reservada una hora, la máquina permanecería inactiva durante 25 minutos. De todo esto podemos deducir que el aprovechamiento de los recursos del ordenador era escasísimo y, por tanto, carísimo, además de no ser satisfactorio para los usuarios; de ahí los esfuerzos que siguieron para mejorar su rendimiento.

2.2 Acceso por operador Analizando el procedimiento anterior, pueden pensarse varios mecanismos para obtener un mayor aprovechamiento del ordenador, inciendo en los tiempos muertos del sistema. Los propietarios de los sistemas contrataron a una o varias personas especializadas para ejecutar rutinas de carga y descarga, con el fin de mantener el sistema con la máxima ocupación posible, recibiendo los trabajos de los usuarios para su ejecución. Al recibir dichos trabajos, los reunía y ejecutaba secuencialmente consumiendo únicamente el tiempo que realmente necesitasen y evitando en gran medida los tiempos de inactividad del ordenador. Esta persona se conoce como el operador del ordenador. En el caso de existir errores en la ejecución de los trabajos, se hacía un volcado en código binario de la memoria para su entrega al programador, y se ejecutaba inmediatamente el siguiente trabajo. Otra misión del operador era agrupar los trabajos que tuvieran necesidades de recursos físicos y lógicos similares para que se ejecutasen como un grupo.

2.3 Secuencia automática de trabajos y monitor residente A pesar del ahorro de tiempo inactivo y de la agrupación de trabajos, aún persistían breves periodos de inactividad, empleados en la cargas y descargas y en los volcados cuando se daban errores. Analizando el trabajo del operador se observó que era bastante mecánico y que se podía automatizar en gran parte, pensando que podía diseñarse un programa que estuviese permanentemente en la memoria del ordenador y que fuese el que realizase muchas de esas operaciones, surgiendo así la secuencia automática de trabajos. -4-

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

Se diseño un pequeño programa que transfería automáticamente el control de un trabajo a otro. Este programa se denominó Monitor Residente, y se puede considerar como un primer sistema operativo muy rudimentario. El monitor tenía un funcionamiento bastante simple, residía permanentemente en memoria y en el momento de encender el ordenador se daba control al monitor; éste se limitaba a cargar un programa en memoria, leyéndolo de una cinta o de tarjetas perforadas, y transfiriéndole el control para que se ejecutara, de manera que cuando terminaba su ejecución, el monitor tomaba el control de nuevo activando el siguiente trabajo, y así sucesivamente.

2.4 Procesamiento por lotes A pesar de todas las mejoras conseguidas, los dispositivos de E/S todavía eran una fuente de ineficiencia puesto que al ser su funcionamiento principalmente mecánico, operaban muy por debajo de la velocidad de los componentes electrónicos. En aquellos tiempos, los dispositivos de E/S eran un auténtico cuello de botella para el rendimiento de los sistemas. Como solución para minimizar este problema se pensó en montar los procesos o trabajos en un mismo conjunto de tarjetas o un mismo núcleo de cinta, de forma que se ejecutaran uno a continuación de otro sin perder apenas tiempo en la transición.

2.5 Sistemas con almacenamiento temporal de E/S Con el tiempo, los dispositivos de E/S aumentaron su velocidad, lo que podría haber resuelto el problema, pero como el procesador también aumento su capacidad de procesamiento, hubo que pensar en otro tipo de solución. Al ser la cinta el dispositivo más rápido de la época, se impuso la técnica de escribir los programas en tarjetas perforadas que eran leidas por una lectora y copiadas directamente en una cinta magnética, en sentido inverso, los resultados de los procesos se volcaban en una cinta que a su vez era volcada sobre una impresora. En definitiva, que la cinta magnética se convirtió en el único dispositivo con el que directamente intercambiaba información el ordenador. Al ser estas acciones muy lentas, el copiado de tarjetas a cinta y el volcado de cinta a impresora, se hacían sin intervención del ordenador, normalmente en unidades externas especiales para tal fin y sin restar tiempo de proceso al ordenador. Esto se conoce como operación off-line. Más adelante, se avanzó en el hardware, creando el soporte de interrupciones, lo que permitió llevar a cabo un intento de solución más avanzado: solapar la E/S de un trabajo con sus propios cálculos. Para ello se crea el sistema de buffers con el siguiente funcionamiento: • • • • •

Un programa escribe su salida en un área de memoria (buffer 1). El monitor residente inicia la salida desde el buffer y el programa de aplicación calcula depositando la salida en el buffer 2. La salida desde el buffer 1 termina y el nuevo cálculo también. Se inicia la salida desde el buffer 2 y otro nuevo cálculo dirige su salida al buffer 1. El proceso se puede repetir de nuevo.

2.6 Spoolers Hace aparición el disco magnético con lo que surgen nuevas soluciones a los problemas de rendimiento. Se eliminan las cintas magnéticas para el volcado previo de los datos de dispositivos lentos y se sustituyen por discos (un disco puede simular varias cintas). Debido al solapamiento del cálculo de un trabajo con la E/S de otro trabajo se crean tablas en el disco para diferentes tareas, lo que se conoce como Spool (Simultaneous Peripherial Operation On-Line).

-5-

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

2.7 La Multiprogramación Sí ejecutamos un solo programa en el ordenador, difícilmente podremos acercarnos a un rendimiento del 100% ya que siempre tendrá que realizar operaciones de E/S, es decir, siempre existirán tiempos muertos del procesador durante los que no realizará ningún trabajo. Para comprenderlo mejor, podemos tomar como ejemplo la ejecución de los programas representados en la siguiente figura, donde se detalla el diagrama de tiempos de ocupación de los recursos (cpu y E/S):

Podemos observar que existen varios intervalos de tiempo durante los cuales no se hace ningún uso del procesador, estando totalmente inactivo con un pésimo rendimiento. Por otro lado, pueden existir en el sistema otros programas que esten esperando su oportunidad para acceder al procesador con el fin de ejecutarse; entonces, ¿por qué no utilizar dichos intervalos de inactividad del procesador para ejecutarlos? La contestación es muy sencilla, si que podemos utilizarlos y no solo para dos únicos procesos sino muchos otros de forma conjunta, ya que todos tendrán que realizar operaciones de E/S, cuyos tiempos serán aprovechados por los demás para hacer uso del procesador. Esta técnica se conoce como Multiprogramación o Multitarea y tiene como finalidad conseguir un mejor aprovechamiento de los recursos del ordenador, ejecutando simultáneamente varios programas y ofreciendo, al usuario, una falsa apariencia de ejecución paralela de los mismos. Actualmente, los sistemas operativos multiprogramados son bastante sofisticados, ya que la administración y reparto de los recursos entre los distintos programas no es una tarea sencilla de llevar a cabo, y de hecho, no pudo implementarse hasta que no se desarrollaron diversos mecanismos hardware que más adelante se relacionan. El elevado coste que representa el diseño y creación de éstos sistemas, se ve ampliamente recompensado con el amplio abanico de posibilidades que se le ofrece a los usuarios en cuanto a rapidez de respuesta, de ejecución y de diversidad de servicios. En la siguiente figura puede verse el diagrama de ejecución de los dos procesos anteriores, tanto en el caso de ejecutarse secuencialmente, como en el caso de ejecutarse utilizando las técnicas de multiprogramación, pudiendo resaltar el ahorro de tiempo que se obtiene en el segundo caso, así como el mayor aprovechamiento del procesador.

-6-

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

Debido a la implantación de la multiprogramación fue necesario replantearse la estructura del sistema operativo: a partir de este momento se habla de núcleo (o kernel) del mismo, que se compone de rutinas que gestionan la memoria central, el procesador, los dispositivos y otros recursos, respondiendo a las peticiones realizadas por los programas y a las interrupciones de los dispositivos de entrada/salida. La multiprogramación fue posible gracias al desarrollo y optimización de los diversos mecanismos hardware: 

Mecanismos de interrupción: fundamentales para llevar a cabo la multiprogramación.



Mecanismos de temporización: es necesario instalar procedimientos de medida de tiempo con el fin de controlar la ejecución de los programas y llevar a cabo una equitativa distribución del tiempo del procesador.



Técnicas de protección de la memoria: consistentes fundamentalmente en registros de la cpu que indican los límites de las áreas de memoria asignadas a cada programa y en el uso de excepciones.



Reasignación dinámica de direcciones de memoria: este mecanismo permite poder liberar una zona de memoria ocupada por un programa cuando su ejecución finaliza, así como la reubicación de otros que residan en la misma

Una consecuencia del uso de la multiprogramación fue la aparición de los sistemas de tiempo compartido y sistemas multiusuario, en los cuales una máquina ejecuta distintos procesos requeridos por distintos usuarios de forma simultánea.

-7-

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

2.8 Administración de redes y procesamiento distribuido Aparecen las redes de datos y con ellas la capacidad de los sistemas operativos para administrarlas y hacer uso de las mismas, permitiendo transferir ficheros de una máquina a otra. El extenso uso de las redes de ordenadores de distintas coberturas (locales, nacionales, internacionales) supuso un revolucionario desarrollo de los sistemas operativos. El sistema operativo, además de gestionar los recursos de la máquina local en la que está instalado, debe ser capaz de interactuar con otras máquinas distantes, llegando, incluso, en algunos casos, a tener el control remoto de las mismas. Uno de los usos más extendidos de las redes son los sistemas cooperativos, en los cuales se divide la aplicación o trabajo que se desea realizar en varias partes o subprocesos, que se ejecutan en distintos ordenadores, conectados entre sí. En definitiva, la aplicación global se encuentra distribuida en distintas máquinas, muy distantes o no, que realizan un trabajo de forma conjunta, sumando sus respectivas capacidades de proceso y/o aportando un nivel de seguridad superior (por redundancia de equipos). A este esquema de interconexión y cooperación se le denomina procesamiento distribuido. Veamos dos ejemplos de procesamiento distribuido:

La figura de la izquierda presenta un esquema de interconexión de tres sistemas con un reparto equilibrado de la carga de trabajo y, posiblemente, con redundancia de equipos: en caso de fallo o caida de uno de los sistemas, los restantes asumen su trabajo sin que se resienta el proceso. La figura de la derecha presenta una red donde existe un ordenador central que se encarga de la gestión y almacenamiento de los datos y un determinado número de terminales remotos que se encargan de la presentación. Este reparto de funciones, almacenamiento-procesamiento e interfaz de usuario, se encuentra en los denominados sistemas cliente-servidor.

-8-

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

2.9 Sistemas multiprocesador A pesar de la importante evolución de los sistemas, las necesidades de los usuarios también fueron progresando y sus exigencias crecieron vertiginosamente, hasta el punto en que los ordenadores con una única CPU no eran capaces de aportar la potencia de proceso requerida. Así nacieron los sistemas multiprocesador, en los cuales existen dos o más CPU’s que comparten la memoria y el reloj, incrementando la capacidad de procesamiento de la máquina. El sistema operativo trata los distintos procesadores como recursos que va asignando, de forma rotativa, a los distintos procesos en ejecución, llevándose a cabo el procesamiento paralelo de varios procesos (uno por CPU) de forma realmente simultánea. Un sistema operativo multiprocesador distribuye constantemente la carga del sistema para que todos los procesadores estén igualmente ocupados. Existen dos tipos de multiprocesamiento:  

Multiprocesamiento simétrico: cada procesador ejecuta una copia del sistema operativo Multiprocesamiento asimétrico: cada procesador tiene asignada una tarea específica; existe un procesador maestro que asigna tareas a los procesadores esclavos

-9-

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

3. Tipos de sistemas operativos Se pueden clasificar los sistemas operativos según distintos puntos de vista:     

Según la utilización de recursos Según la interactividad Según el número de usuarios Según el tipo de aplicaciones Según su estructura

3.1 Según la utilización de recursos Esta clasificación se basa en las características técnicas con que se hayan diseñados dichos sistemas para hacer uso de los recursos existentes.

Sistemas Monoprogramados Estos sistemas son los que sólo admiten la ejecución de un programa en el sistema, sin hacer uso de las técnicas de la multiprogramación. En estos sistemas operativos el programa se carga inicialmente en memoria y permanece en ella hasta finalizar su ejecución; mientras, ningún otro programa puede ejecutarse, aunque existiese espacio libre en la memoria principal. Este tipo de sistemas son los que se diseñaron inicialmente cuando se utilizaban los monitores residentes y, posteriormente, durante una larga etapa, en los ordenadores personales. El ejemplo más conocido de este tipo de sistemas fue el MS-DOS.

Sistema Operativo Programa de usuario

Memoria Principal

Memoria no usada

Sistemas Multiprogramados Este tipo de sistemas se basan fundamentalmente en las técnicas de la multiprogramación, pueden admitir uno o varios usuarios simultáneamente y son los utilizados en la actualidad, incluso en ordenadores personales. Actualmente, se habla de dos tipos de sistemas operativos multitarea, según realicen la gestión del procesador: 

Multitarea apropiativa (preemptive): es la que utilizan los sistemas operativos cuya gestión del procesador se basa en quitar el control del mismo al programa que se está ejecutando. Esta pérdida de

- 10 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

control del procesador por el programa es totalmente involuntaria y ajena a él, siendo el sistema operativo el responsable de la misma, normalmente, para permitir que otros programas se ejecuten también. 

Multitarea cooperativa: el programa es el que controla el procesador de manera que, sí lo tiene, será el responsable de permitir que otras aplicaciones se puedan ejecutar. El sistema operativo, por lo tanto, no toma el control del procesador, de forma voluntaria, para poder decidir el programa que se debe ejecutar, estando a merced de lo que dicte la aplicación que en ese momento se esté ejecutando.

Dispositivos E/S

Memoria Principal Drivers E/S Sistema Operativo Planificador

Progra ma

Progra ma

1

2

Libre

Progra ma

Libre

3

CPU

Sistemas de Multiprocesamiento Los dos sistemas anteriores se utilizan en ordenadores cuya arquitectura sólo soporte un único procesador, pero las tendencias actuales con grandes exigencias de potencia de procesamiento han obligado a la aparición de ordenadores con dos o más procesadores. Los sistemas de multiprocesamiento son capaces de administrar el uso de los distintos procesadores presentes en la máquina, repartiendo equitativamente la carga de trabajo.

Como se muestra en la figura, el núcleo del sistema operativo reparte el uso de las CPU’s presentes entre las aplicaciones o procesos que se encuentran en ejecución.

- 11 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

3.2 Según la interactividad En este caso la clasificación depende del tipo de trabajo y los objetivos que debe cumplir cada sistema para dar el mejor servicio a los usuarios a quienes está destinado.

Sistemas de procesamiento por lotes (batch) Son sistemas, en general multiprogramados, ya en desuso, para la ejecución de programas muy poco conversacionales con el usuario, basados en la ejecución de paquetes o lotes de comandos u órdenes del sistema operativo. Cada paquete batch consiste en un conjunto de pasos secuenciales relacionados entre si, asemejándose a una secuencia de instrucciones para realizar las operaciones requeridas. Con el objeto de identificar cada paso de un trabajo, se definió el término proceso para hacer referencia al programa en ejecución que realiza dicho paso. Procesamiento por lotes también puede referirse al proceso de almacenar transacciones durante un cierto lapso de tiempo antes de su envío a un archivo maestro para su posterior tratamiento, por lo general una operación separada que se efectúa durante la noche. Características de los sistemas de procesamiento por lotes: No existe intervención del usuario durante la ejecución de los trabajos: nula interacción Son convenientes para procesamiento de trabajos de larga duración (análisis estadísticos, nóminas de personal, etc.)  No existen restricciones de tiempo, es decir, no importa el tiempo que se necesite para llevar a cabo el trabajo.  

Sistemas de tiempo compartido (time sharing) Una vez desarrollados los sistemas multiprogramados se introdujo la multiprogramación interactiva con la finalidad de permitir que durante la ejecución de los programas, éstos pudiesen pedir datos al usuario y aceptar sus respuestas. El tiempo compartido en ordenadores o computadoras consiste en el uso de un sistema por varios usuarios al mismo tiempo. El tiempo compartido ejecuta programas separados de forma concurrente, intercambiando porciones de tiempo asignadas a cada programa (usuario). Los terminales necesitan ser dispositivos conversacionales e interactivos, permitiendo que el usuario pueda recibir respuesta inmediata a sus datos o peticiones. Ahora, la entidad básica a controlar por el sistema no son los trabajos, sino las sesiones. Una sesión comprende el intervalo de tiempo transcurrido desde el momento en que un usuario se identifica en el ordenador hasta que lo abandona despidiéndose del mismo. 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 la memoria principal y el almacenamiento secundario. Características de los sistemas operativos de tiempo compartido: Deben ser muy conversacionales. Dan la ilusión de que cada usuario tiene una máquina para sí, en exclusividad, para ello deben presentar un corto tiempo de respuesta, del orden de pocos segundos.  La mayoría utilizan algoritmo de reparto circular o interrogación secuencial (polling).  

- 12 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

Evitan monopolización del sistema asignando tiempos de procesador a cada sesión (time slot). Gestión de memoria: incorporan potentes funciones de memoria virtual y proporcionan protección a los programas residentes de los usuarios.  Gestión de archivos: debe proporcionar protección y control de acceso debido a que pueden existir múltiples usuarios accesando un mismo archivo.  

Sistemas de tiempo real (real time) Son otro tipo de sistemas operativos multiprogramados e interactivos con un elevado grado de exigencia. Se suelen emplear en aplicaciones dedicadas al control de instalaciones o máquinas diversas. Su funcionamiento se basa en responder a ciertos sensores que obtienen los datos de entrada al sistema, procesarlos y actuar rápidamente sobre el sistema a controlar, con objeto de producir los efectos necesarios para que se comporte correctamente, intentando mantener los datos recibidos dentro de un cierto margen permitido o de buen funcionamiento.

ENTIDAD QUE SE CONTROLA

SISTEMA DE CONTROL (ordenador)

Los sistemas operativos de tiempo real, cuentan con las siguientes características:       

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos. Su objetivo es proporcionar rápidos tiempos de respuesta, del orden de milisegundos. La información con la que trabajan debe estar permanentemente actualizada. Los programas deben ser pequeños, rápidos u muy eficientes, siendo capaces de procesar ráfagas de miles de interrupciones por segundo sin perder un solo suceso. Un proceso se activa tras la ocurrencia de un suceso, mediante interrupción. Usualmente los procesos permanecen residentes en memoria. Poco movimiento de programas entre almacenamiento secundario y memoria. Se utilizan en control industrial, conmutación telefónica, control de vuelo, control de seguimiento de satélites, simulaciones en tiempo real, aplicaciones militares, etc.

3.3 Según el número de usuarios Sistemas monousuario Son sistemas muy simples que sólo aceptan la conexión de un solo usuario en un momento dado, por lo que no necesitan ningún tipo de gestión de usuarios ni controlar el acceso al mismo. Suelen estar presentes en pequeños ordenadores. Estos sistemas pueden ser monoprogramados o multiprogramados, aunque en cualquiera de los dos casos sólo admitirán un solo usuario.

- 13 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

Sistemas multiusuario Estos sistemas se basan siempre en las técnicas de la multiprogramación permitiendo que varios usuarios puedan acceder simultáneamente, por lo que, normalmente, son sistemas de tiempo compartido, aunque, en algún caso, podrían ser también de tiempo real, según el grado de exigencias y objetivos que deban cumplir dichos sistemas.

3.4 Según el tipo de aplicaciones Sistemas de propósito general En esta categoría entrarían los sistemas operativos que sirven para cualquier tipo de aplicación informática. Son sistemas operativos comerciales de uso estándar, para una arquitectura de máquina también estándar y con una gran versatilidad en su utilización. A este tipo pertenecen todos los sistemas operativos comercializados y comúnmente conocidos: En los años 70: Unix, MVS (para el exitoso sistema 360 de IBM) y CP/M En los años 80: MS-DOS para la arquitectura PC A partir de los años 90: Novell, Solaris, OS/2, Windows y los distintos desarrollos GNU/Linux.

Sistemas de propósito especial Bajo este tipo podemos recoger todos los sistemas diseñados específicamente para una determinada aplicación. Son sistemas hechos a medida de una máquina muy concreta y unos programas muy específicos, por tanto, no suelen ser sistemas comerciales ni de gran difusión, dadas sus especiales características. Su diseño y desarrollo tienen lugar como un componente más de un proyecto determinado para una aplicación determinada.

3.5 Según su estructura Existen cuatro tipos de diseño en cuanto a la estructura de un sistema operativo:    

Estructura monolítica Estructura por microkernel Estructura por anillos concéntricos Estructura cliente-servidor

Estructura monolítica (módulos independientes) También llamados sistemas monolíticos. Este tipo de organización bien podría recibir el subtitulo de “el gran embrollo”. La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de llamada.

- 14 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

Estructura por microkernel Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS es un programa con el nombre "COMMAND.COM" que tiene dos partes: el kernel, que se mantiene en memoria en todo momento, contiene el código máquina de bajo nivel para manejar la administración de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos. Las funciones de bajo nivel del SO y las funciones de interpretación de comandos están separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es precisamente lo que sucedía cuando se cargaba Microsoft Windows 3, el cual tomaba el lugar del shell, reemplazando la interfaz de línea de comandos por una interfaz gráfica.

Estructura por anillos concéntricos (capas o niveles) Es el diseño de estructura utilizada en los sistemas modernos. El sistema operativo se encuentra estratificado en “capas” o “niveles” con el fin de facilitar su diseño, su realización, su comprensión y reducir, en la medida de lo posible, su complejidad. Los distintos niveles de un sistema operativo no son estancos, se comunican entre sí mediante la petición y realización de servicios. Son las denominadas “llamadas al sistema”, rutinas o procesos que realizan las distintas funciones que el sistema operativo debe llevar a cabo. Las aplicaciones de usuario también interactuan con el sistema operativo mediante las llamadas estándar que éste ofrece y que son conocidas por los programadores o incorporadas en los procesos de compilación. La siguiente figura muestra los niveles clásicos que, con carácter general, se establecen:

USUARIO

APLICACIONES

NIVEL 5: Gestión de la información NIVEL 4: Gestión de dispositivos NIVEL 3: Gestión de procesos NIVEL 2: Gestión de la memoria NIVEL 1: Núcleo

HARDWARE

Nivel 1: Núcleo del sistema operativo. El objetivo del núcleo es administrar el uso de la CPU entre los diferentes procesos, alternando entre los procesos bien cuando suceden las interrupciones o bien cuando expiran las temporizaciones, en definitiva, es el encargado de llevar a cabo los procedimientos básicos de la multiprogramación.

- 15 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

El núcleo también se encarga de la carga inicial desde el disco y de la activación de la configuración y arranque del sistema. Nivel 2: Gestión de la memoria. Este nivel también está íntimamente ligado al hardware, al igual que el núcleo, y su objetivo primordial es administrar la memoria entre los diferentes procesos en ejecución. Sus funciones son asignar y liberar memoria según las necesidades de los procesos y controlar la protección en los accesos a memoria. Se encarga, en definitiva, del mecanismo denominado “asignación dinámica de memoria”. Nivel 3: Gestión de procesos. Su objetivo es gobernar los procesos a alto nivel. Se encarga de detener y arrancar los diferentes procesos y comunicar los procesos entre sí mediante el intercambio de mensajes. Entendemos por procesos, cada uno de los programas que, de manera simultánea, están en ejecución. Nivel 4: Gestión de dispositivos. Los procedimientos de este nivel tienen como misión gestionar las entradas y salidas a los dispositivos existentes. Las operaciones que controlan son, entre otras, crear procesos de E/S, asignar y liberar los distintos dispositivos y planificar la entrada/salida de datos de los distintos programas en ejecución, gestionando buffers y colas de salida de trabajos. Nivel 5: Gestión de la información. Es el nivel superior del sistema operativo y, por consiguiente, el más cercano al usuario. Es el encargado de proporcionar la interfaz de usuario, gestionando la comunicación entre el usuario y el sistema en ambos sentidos. También proporciona las funciones más externas del sistema, sobre las que se apoyan las aplicaciones de usuario, es decir, facilita la interfaz con las aplicaciones. En este nivel también reside el sistema de ficheros, encargándose de las operaciones de creación y eliminación de ficheros y directorios.

Estructura cliente – servidor Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el código a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo (kernel approach). El punto de vista usual es el de implantar la mayoría de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario, denominado proceso cliente, envía la solicitud a un proceso servidor, que realiza entonces el trabajo y retorna la respuesta. En este modelo, que se muestra en la siguiente figura, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos o servicio a la memoria, y cada parte es pequeña y controlable. Además como todos los servidores se ejecutan como procesos en modo usuario y no en modo núcleo o modo supervisor, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, éste puede fallar, pero esto no afectará en general a toda la máquina. Error: Reference source not found

- 16 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

Modelo Cliente-servidor.

Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en los sistemas distribuidos (ver siguiente figura). Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta. Error: Reference source not found Modelo cliente-servidor en un sistema distribuido.

- 17 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

4. Funciones básicas Un sistema operativo desempeña un conjunto de funciones básicas en la operación de un sistema informático. A continuación se relacionan y comentan:

4.1 Interfaz de usuario Es la parte del sistema operativo que permite comunicarse con él, de tal manera que se puedan cargar programas, acceder archivos y realizar otras tareas. Existen tres tipos básicos de interfaces: las que se basan en comandos, las que utilizan menús y las interfaces gráficas de usuario (GUI).

Interfaz modo texto basada en comandos

Interfaz modo texto basada en menús

Interfaz Gráfica de Usuario (GUI)

Desde la aparición de los ordenadores, el sistema operativo ha sido el único interfaz entre la máquina y el usuario. Durante muchos años, aproximadamente hasta la década de los 90, el diálogo hombre máquina estaba basado en lenguajes de comando más o menos complejos, que obligaba al usuario a recordar y comprender las diferentes órdenes y, sobre todo, a tener un conocimiento más profundo y detallado del sistema. Es a partir de los años 90 cuando comienzan a surgir ciertas utilidades que complementan al sistema operativo “desnudo”, dando lugar a entornos gráficos (GUI – Graphic User Interface) cuya finalidad es facilitar el trabajo al usuario, al mismo tiempo que permiten, a los que no tengan experiencia o conocimientos suficientes, realizar funciones que antes sólo podían llevar a cabo usuarios expertos. A través de la Interfaz Gráfica, los usuarios pueden acceder a todos los recursos y herramientas del sistema, a la vez que se les proporciona un nivel de abstracción cuya finalidad es ocultar lo más posible los detalles de más bajo nivel y simplificar, enormemente, las operaciones. El aspecto negativo de los sofisticados y atractivos entornos gráficos que en la actualidad se utilizan, es el gran consumo que hacen de recursos, tanto a nivel del hardware, donde se necesitan potentes subsistemas gráficos, como a nivel de software, donde una parte importante de procesos, tanto del Sistema Operativo como de las aplicaciones, están dedicados a la presentación de la interfaz gráfica, consumiendo una capacidad de proceso nada desdeñable.

4.2 Administración de recursos Sirven para administrar los recursos de hardware de un sistema informático, como el procesador, la memoria, los dispositivos de almacenamiento secundario y los diferentes periféricos de entrada y salida. La gestión de los recursos reside en el nivel del sistema operativo más próximo a la máquina, es decir el núcleo o kernel. Estas funciones, de capital importancia, se basan en el empleo de las llamadas al S.O. y la utilización de recursos del procesador como son las interrupciones y las excepciones.

- 18 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

4.2.1 Llamadas al Sistema Operativo Definición breve: llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO. Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es el interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos de SO, y abrimos un programa diseñado para trabajar sobre el anterior, en general el programa no funcionará, a no ser que el nuevo SO tenga la misma interfaz. Para ello: • Las llamadas correspondientes deben tener el mismo formato. • Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior. Modos de ejecución en una CPU Las aplicaciones no deben poder usar todas las instrucciones del procesador, mientras que el SO, si debe poder utilizar todo el juego de instrucciones. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes: • •

Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones. Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones.

Bibliotecas de interfaz de llamadas al sistema Las llamadas al sistema no siempre tienen una expresión sencilla en los lenguajes de alto nivel, por ello se crean las bibliotecas de interfaz, que son bibliotecas de funciones que pueden usarse para efectuar llamadas al sistema. Las hay para los distintos lenguajes de programación. La aplicación llama a una función de la biblioteca de interfaz (mediante una llamada normal) y esa función es la que realmente hace la llamada al sistema.

4.2.2 Interrupciones y excepciones El SO ocupa una posición intermedia entre los programas de aplicación y el hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones en las que es el hardware el que necesita que se ejecute código del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones: • •

Algún dispositivo de E/S necesita atención. Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación).

En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa. Según los dos casos anteriores tenemos las interrupciones y las excepciones: • •

Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que necesita atención o bien que la operación de la que se estaba ocupando, ya ha terminado. Excepción: una situación de error detectada por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por parte del SO.

Tratamiento de las interrupciones Una interrupción se trata en todo caso, después de terminar la ejecución de la instrucción en curso. El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la interrupción, ante la cual debe poder identificar el dispositivo que la ha causado. El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una aplicación, mientras otra permanece a la espera de que concluya una operación en un dispositivo de E/S. El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el dispositivo, se continúe ejecutando. - 19 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción. Por ello las interrupciones pueden inhibirse por programa (interrupciones enmascarables). Excepciones Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la unidad de control lanza una excepción para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una interrupción, la instrucción en curso es abortada. Las excepciones al igual que las interrupciones deben estar identificadas. Las instrucciones de un programa pueden estar mal construidas por diversas razones: • • • •

El código de operación puede ser incorrecto. Se intenta realizar alguna operación no definida, como dividir por cero. La instrucción puede no estar permitida en el modo de ejecución actual. La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso (área de memoria no permitida).

El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de ejecución de la CPU y los mecanismos de protección de la memoria, que las aplicaciones realicen operaciones que no les están permitidas. En cualquier caso, el tratamiento específico de una excepción lo realiza el SO. Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y éste es el que trata la situación como convenga. Es bastante frecuente que el tratamiento de una excepción no retorne al programa que se estaba ejecutando cuando se produjo la excepción, sino que el SO aborte la ejecución de ese programa.

4.2.3 Gestión de la memoria principal La memoria principal es una gran tabla de palabras o bytes que se referencian cada una mediante una dirección única. Este almacén de datos de acceso muy rápido es compartido por la CPU y los dispositivos de E/S, es volátil y pierde su contenido en los fallos del sistema. En la memoria principal debe estar almacenado cualquier programa o proceso que vaya a ser ejecutado. El SO es el responsable de: • • •

Conocer qué áreas de la memoria están siendo utilizadas y por quién. Decidir qué procesos se cargarán en memoria cuando haya espacio disponible. Asignar y liberar espacio de memoria cuando sea necesario.

4.3 Administración de ficheros Toda la información, del tipo que sea, que se procesa o almacena en un ordenador, viene en unidades, paquetes o contenedores llamados ficheros o archivos y que los sistemas operativos deben ser capaces de administrar mediante los denominados sistemas de ficheros. Los ficheros suelen contener información homogénea, es decir de un mismo tipo: fichero de programa, fichero de texto, fichero de imagen, etc… Los sistemas de ficheros (filesystem) estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro) de un ordenador. La mayoría de los sistemas operativos poseen su propio sistema de ficheros. Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los mismos en paquetes elementales de un mismo tamaño, a veces llamados sectores y habitualmente de 512 bytes de longitud. El software del sistema de ficheros es el responsable de la organización de estos sectores en archivos y directorios y de mantener un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados, encontrándose libres. Los sistemas de ficheros tradicionales proveen métodos para crear, mover, renombrar y eliminar tanto archivos como directorios.

- 20 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

Generalmente un sistema de archivos tiene directorios que asocian un nombre de archivo a cada archivo, usualmente conectando el nombre de archivo a un índice en una tabla de asignación de archivos de algún tipo (como FAT en los sistemas MS-DOS o Windows y los inodos de los sistemas Unix). La estructura de directorios suele ser jerárquica, ramificada o "en árbol". En los sistemas de archivos jerárquicos, usualmente, se declara la ubicación precisa de un archivo con una cadena de texto llamada "ruta" o path.

Algunos de los sistemas de ficheros más conocidos son los siguientes: ♦ ♦ ♦ ♦ ♦ ♦

FAT16 y FAT32 (Microsoft: MS-DOS y primeras versiones de Windows) NTFS (Microsoft: sistemas operativos mas recientes, W. 2000, W. XP y W. Vista) Ext2 y Ext3 (la mayoría de implementaciones GNU/Linux) ReiserFS (algunas implementaciones GNU/Linux) HFS y HFS+ (Apple: sistemas operativos Mac OS) Berkeley FFS (sistemas operativos para servidores: FreeBSD y OpenBSD)

4.4 Gestión de procesos Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de: • • •

Crear y destruir los procesos. Parar y reanudar los procesos. Ofrecer mecanismos para que los procesos se comuniquen y sincronicen.

La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y después las de baja. Una vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas más antiguas.

4.5 Sistemas de protección Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de: • • •

Distinguir entre uso autorizado y no autorizado. Especificar los controles de seguridad a realizar. Forzar el uso de estos mecanismos de protección.

4.6 Servicios de comunicaciones Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envío y recepción de información a través de las interfaces de red. También hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información, y crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente.

- 21 -

Unidad 3: Teoría General de Sistemas Operativos

Sistemas Operativos y Lenguajes de Programación

4.7 Servicio de soporte y utilidades Los servicios de soporte de cada sistema operativo dependerán de la implementación particular de éste con la que estemos trabajando. Entre las más conocidas se pueden destacar las implementaciones de Unix, desarrolladas por diferentes empresas de software, los sistemas operativos de Apple Inc., como Mac OS X para los ordenadores de Apple Inc., los sistemas operativos de Microsoft, y las implementaciones de software libre, como GNU/Linux, producidas por empresas, universidades, administraciones públicas, organizaciones sin fines de lucro y/o comunidades de desarrollo. Estos servicios de soporte suelen consistir en: • • • • • •

Actualización de versiones. Mejoras de seguridad. Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para administrar alguna determinada función). Controladores para manejar nuevos periféricos (este servicio debe coordinarse a veces con el fabricante del hardware). Corrección de errores de software. Otros.

En cuanto a las utilidades, los fabricantes de sistemas operativos suelen acompañar a los mismos con una colección de programas de utilidad que no se pueden considerar como parte integrante del sistema, sino como programas o aplicaciones independientes. Como ejemplo de programas de utilidades, tendríamos los siguientes: • • • • •

Programas de manipulación y optimización de discos. Programas de Información del estado y diagnóstico del sistema. Soporte a lenguajes de programación. Programas de comunicaciones (navegador de internet, etc.) Programas antivirus.

- 22 -

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF