Ejemplos de sistemas operativos multiprogramación

S.O: Programa o conjunto de programas que sirven de intermediario entre el usuario/programa y el hardware del ordenador.

Objetivos


Proporcionar a los programas de usuario una máquina abstracta

Administrar eficientemente los recursos del ordenador

El sistema operativo como máquina abstracta

El hardware y el software del ordenador se estructuran en forma jerárquica, en niveles, de forma que cada nivel utiliza los servicios del nivel inmediatamente inferior para prestar unos servicios mejorados al nivel inmediatamente superior.

El SO proporciona al resto de aplicaciones una máquina abstracta, es decir, oculta los detalles concretos del ordenador y las complejidades del hardware. Para ello, proporciona una API (Application Programming Interface, Interfaz de programación de aplicaciones), que es un conjunto de funciones que pueden utilizar los programas de usuario.

La ocultación del Hardware a las aplicaciones de los usuarios tiene dos objetivos:

Abstracción


La tendencia actual del software es la de dar una visión global y abstracta del ordenador haciendo fácil su uso, ocultando por completo la gestión interna.

Seguridad


Existen instrucciones en la máquina que pueden detener el ordenador, interferir procesos, etc. Pero ello, es necesario restringir determinadas operaciones a los usuarios creando diferentes niveles de privilegio, de forma que cada usuario tenga protegida su información y procesos.

Recurso es un componente hardware necesario para llevar a cabo un trabajo. En los ordenadores existen cuatro tipos de recursos: el procesador, la memoria principal, el almacenamiento secundario y los periféricos de entrada/salida.

Programa:


Conjunto de instrucciones + estructuras de datos…Þ es un concepto estático.

Proceso (trabajo, JOB):


Programa en ejecución Þ concepto dinámico.

Observaciones relacionadas con los conceptos de programa y proceso:

Un programa puede dar lugar a distintos procesos (según los datos, etc).

El sistema operativo va a gestionar los programas en ejecución (procesos).

Procesador (CPU):


Ente capaz de ejecutar procesos.

  1. Primerageneración: 1945-1955

Desde la construcción de los primeros computadores (1943) hasta aproximadamente el año 1955 no existen sistemas operativos. El usuario que deseaba utilizar un ordenador debía apuntarse en un cuaderno de reservas de horas. Cuando llegaba su turno, el programador, que hacía también las funciones de operador, introducía su programa (con conmutadores) y esperaba a que poco a poco fuesen escribiéndose en una impresora los resultados.

El programa se daba a través de tarjeta perforada y se redactaba a mano en lenguaje máquina. Los datos también se suministraban al computador con tarjetas perforadas.

Posteriormente, se idearon los ensambladores. Después de ensamblar el programa, el programa objeto obtenido (en lenguaje máquina) se montaba manualmente; es decir, se juntaba con otros paquetes de tarjetas que contenían las funciones utilizadas en el programa y no definidas en el mismo (multiplicación o raíz cuadrada, por ejemplo). El paquete total de tarjetas, por último, se ejecutaba con los datos del programa. En resumen, la máquina, durante su utilización, estaba totalmente bajo el control directo del usuario.

Con esta forma de trabajar no se obtenía un aprovechamiento adecuado del computador. Cuando la CPU estaba trabajando, los dispositivos de E/S estaban inactivos, y cuando un dispositivo de E/S estaba actuando, las demás unidades, incluyendo la CPU, no trabajaban. Las grandes posibilidades operativas de la CPU, en cuanto a velocidad de ejecución, no se aprovechaban adecuadamente.

Como resumen de esta primera etapa (1943 a 1955) podemos decir que la introducción y control de la ejecución de programas se hacía manualmente, uno a uno: no existían sistemas operativos.

Procesamiento en serie

  1. Segunda etapa: 1956-1965

En la segunda etapa en vez de utilizar sólo lectoras de tarjetas e impresoras, se utilizan soportes de información intermedios, como cinta magnética.

Inicialmente, en cinta magnética sólo se encontraban los traductores, funciones de biblioteca, etc., necesitándose dar por tarjeta únicamente el programa y datos del usuario.

Posteriormente, se dio un paso importante. Se utilizó un ordenador periférico para gestionar las entradas/salidas, y el ordenador principal (más potente) únicamente leía/escribía sobre cinta magnética. Este era el caso del computador IBM-7090, que se utilizaba en conjunción con un IBM-140l.

El sistema era gestionado por personas especializadas u “operadores”, que eran quienes manipulaban los computadores. El IBM-1401 contenía programas, suministrados por el fabricante, que volcaban sobre cinta magnética los programas en tarjeta de los usuarios. En la cinta se tenían así grabadas imágenes de tarjeta. Posteriormente, y una vez que en una cinta había una cola de trabajos, el operador desmontaba la cinta del 1401 y la montaba en el 7090.  El 7090 leía los programas de la cinta, y los resultados a imprimir los escribía en otra cinta magnética, obteniéndose así por cada programa un archivo de impresión grabado en cinta. El operador, con cierta regularidad, montaba la cinta de archivos de impresión en el 1401, y éste los iba escribiendo por las impresoras.

El operador organizaba el trabajo incluyendo, por ejemplo, en una misma cinta todos los trabajos con programas en FORTRAN, en otra los trabajos con programas en COBOL, etc. Cuando se pasaban al IBM-7090 los trabajos en FORTRAN, se montaba en otra unidad la cinta con el compilador y bibliotecas de FORTRAN, cargándose en el computador cuando fuese necesario.

El procedimiento de funcionamiento descrito, desde el punto de vista del usuario-programador, es mucho más sencillo que el de la primera etapa. Pero es necesario un control automático del flujo o cola de trabajos.
En efecto, este tipo de funcionamiento, denominado por lotes o batch, es posible gracias a la existencia de un sistema operativo; es decir, un programa de control. Este programa de control que planifica los trabajos se suele denominar monitor.

Poco a poco los monitores se perfeccionaron, incluyendo rutinas de control de E/S, módulos controladores del tiempo máximo de CPU (para evitar que un programa se esté ejecutando por tiempo indefinido, a causa de un error de programación), módulo de contabilidad del uso del computador por los usuarios, etc.

Esta segunda etapa la podríamos denominar de procesamiento de trabajos en lotes, o también de utilización de dispositivos de E/S fuera de línea.

  1. Tercera y cuarta etapa: 1966 a 1981

La tercera etapa se caracteriza fundamentalmente por el perfeccionamiento del sistema de trabajos por lotes, el desarrollo de sistemas operativos en multiprogramación que permite a una máquina estar realizando varios procesos a la vez; los usuarios pueden trabajar en forma interactiva/conversacional y se introduce el concepto de memoria virtual.

En un sistema de tipo multiusuario, existen varios usuarios con un terminal en línea (usuarios interactivos), se llama sistema de tiempo compartido.
En estos sistemas se divide el tiempo del procesador central, y de los demás recursos del ordenador, de forma que cada usuario tiene la ilusión de que todo el ordenador se le dedica exclusivamente a él, al recibir unos tiempos de respuesta aceptables. En un sistema de tiempo compartido los usuarios suelen ejecutar programas cortos (por ejemplo, compilar un programa), frente a los programas largos (por ejemplo, ordenar una cinta de un millón de datos) que se suelen dar en los sistemas batch.

Hay que indicar que algunos sistemas operativos permiten tanto usuarios interactivos como lotes de trabajos batch. En estos sistemas se atiende a los usuarios interactivos con mayor prioridad, ejecutándose los programas batch cuando no hay programas de usuario.

También aparecen las técnicas spooling gracias a las cuales se almacenan trabajos en colas de espera.

Quinta y sexta etapa: 1982-actualidad

La cuarta etapa se caracteriza por el desarrollo de sistemas operativos para computadores personales (MS-DOS, OS/2, etc.), SO con interfaces gráficos, y para estaciones de trabajo (UNIX, Windows-NT, etc.).

También se desarrollan sistemas operativos de red y sistemas operativos distribuidos.
Los sistemas operativos en red no se diferencian sustancialmente de los sistemas operativos convencionales, ya que pueden considerarse como una ampliación de éstos con programas de control de interfaz con la red y permiten realizar una sesión de trabajo con un computador remoto.

Los sistemas operativos distribuidos son mucho más complejos, ya que permiten que un usuario ejecute, de forma transparente, uno o varios programas en varios procesadores trabajando simultáneamente y, posiblemente, con datos distribuidos en diferentes servidores de archivos, lo cual requiere un SO adecuado.

Monolítica:


es la estructura utilizada en los primeros SO en la que todas las funciones se implementaban en el Kernel o núcleo. Puede decirse que su estructura consistía en que no existía una estructura como tal.

El SO estaba constituido por un único programa compuesto por multitud de  rutinas interrelacionadas entre sí, de forma que cada una de ellas podía llamar a cualquier otra. Un ejemplo de SO de este tipo es el MS-DOS para PC.

Por capas o jerárquica:


A medida que los SO fueron creciendo, fue necesario tener una estructura más organizada. Para ello el SO se dividió en distintos niveles, cada uno de ellos con funciones concretas y especializadas. Estos niveles dieron lugar a una jerarquía entre funciones, de ahí que se conozcan como SO jerárquicos. Estos SO se estructuran en las siguientes capas:

    • Hardware: nivel mas bajo de todo el sistema.
    • Gestión de procesos
    • Gestión de memoria
    • Gestión de E/S
    • Gestión del sistema de archivos
    • Control de programas de usuario

La funciones de nivel superior solo pueden invocar a las de nivel inferior.

Máquina virtual:


se trata de un tipo de SO que presenta una interfaz a cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente.

Estos SO separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramación y la máquina extendida.

El núcleo de estos SO 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.

La principal ventaja de esta estructura reside en que permite implementar varios tipos de SO sobre cada máquina virtual. No obstante presenta el problema de que los SO implementados son disjuntos, lo cual complica enormemente la interacción, comunicación y compartición que necesitan.

Unix                                                               MS-DOS

Hw virtual                                                     Hw virtual

HARDWARE

Cliente-Servidor:


es la más difundida. El núcleo se hace cada vez más descargado de código, dotándole solamente de funciones criticas. Ahora son los programas los que realizan las funciones del SO. Los procesos pueden ser clientes y servidores. Además el núcleo se encargaría de establecer la comunicación entre los clientes y los servidores.

Orientada a objetos:


El SO se ve como una colección de objetos en ves de funciones. Un objeto sería un programa, las funciones del SO etc. El núcleo del SO es el responsable del mantenimiento de las definiciones de los tipos de objetos soportados y del control de los privilegios de acceso a los mismos.

Un ejemplo de SO que utilizaba esta estructura es el Windows NT de Microsoft.

Procesamiento por lotes (batch)


Se llaman así a aquellos sistemas que emplean procesos (trabajos) que no necesitan la interacción con el usuario, se cargan, se procesan y devuelven un resultado sin apenas intervención por parte del usuario. Lo que supone que la mayor parte del tiempo del proceso está dedicado al procesamiento de los datos y muy poco a gestionar los lentos procesos de entrada y salida de la información. Ejemplos de estos sistemas serían: SCOPE (procesamiento científico) y EXEC II (procesamiento académico).

Actualmente se puede llevar a cabo este tipo de procesamiento en tareas como: procesos de actualización de bases de datos, la cola de trabajos de impresión de una impresora, los ficheros de procesamiento por lotes de MS-DOS, etc.

       No hay interacción con el usuario.

Tiempo compartido:


en estos SO durante la ejecución de los programas se pueden pedir datos al usuario y aceptar sus respuestas. La entidad a controlar por el sistema son las sesiones y no los trabajos. Una sesión comprende el intervalo de tiempo transcurrido desde el momento en que un usuario se identifica en el PC hasta que lo abandona. Durante una sesión el usuario cree que todos los recursos del PC los tiene asignados y disponibles, a pesar de que pueda haber más sesiones de otros usuarios activas a la vez.

En estos sistemas se produce una interrogación secuencial a los distintos usuarios (son conversacionales), asegurando que cada cierto intervalo de tiempo el sistema atenderá a cada uno de ellos. Además usan técnicas de buffering y spooling para que las respuestas hacia los usuarios se emitan lo más rápido posible. Ejemplos de estos sistemas serían: UNIX, Windows XP, Windows Server etc.

 Hay interacción con el usuario.

Tiempo real


Existe una interacción continua entre el usuario que se encarga de introducir la información y el proceso. Además el resultado del procesamiento de los datos se obtiene de forma inmediata.

A veces las respuestas que se obtienen proceden de sucesos externos al propio sistema, por ejemplo aquellos sistemas empleados para el control de instalaciones (telecomunicaciones, tráfico aéreo etc).

Algunos ejemplos de estos sistemas serían: Solaris, Spectra, Windows Xp, Windows 7, Windows Server,etc.

   Hay mucha interacción con el usuario.

3.3. Por los servicios ofrecidos.

En esta clasificación se tiene en cuenta la visión del usuario final y puede ser:

3.3.1. Por el número de usuarios.

Atendiendo al número de usuarios que pueden utilizar los recursos del sistema.

Monousuario:


son aquellos que únicamente soportan un usuario a la vez. En estos sistemas todos los recursos están a disposición de ese usuario y no pueden ser utilizados por nadie más hasta que éste no finalice. Como ejemplos se tienen el MS-DOS, Windows XP, Vista, 7 etc.

Multiusuario:


varios usuarios podrán utilizar simultáneamente los recursos del sistema. Pueden compartir, sobre todo, los dispositivos externos de almacenamiento y periféricos de salida (impresora). También pueden compartir el acceso a una misma Base de Datos etc. Como ejemplos tenemos: UNIX, Windows Server etc.

3.3.2. Por el número de tareas o procesos.

Esta clasificación se hace atendiendo al número de programas que pueden ejecutarse simultáneamente en el equipo.

Monoprogramación o monotarea:


el sistema solamente puede ejecutar un programa a la vez. De esta forma, los recursos del sistema estarán dedicados al programa hasta que finalice su ejecución. MS-DOS es un sistema de este tipo.

El que un sistema sea monotarea no implica que no pueda ser multiusuario. Se pueden tener varios usuarios usando el mismo equipo pero cada uno de ellos ejecutando una sola tarea. Se controla la tarea de cada usuario de manera secuencial. Cuando termina una empieza la del siguiente.

Multiprogramación o multitarea:


el sistema permite ejecutar varios programas “simultáneamente”. De manera real sólo se consigue la simultaneidad en aquellos sistemas que tienen más de un procesador. En los casos que solo exista un procesador, la CPU compartirá su tiempo entre los diferentes programas a ejecutar. Ejemplos de estos sistemas serían: LINUX, Windows XP, Vista, 7 etc.

3.3.3. Por el número de procesadores

Esta clasificación depende del número de procesadores que el SO es capaz de gestionar.

Monoprocesador:


el ordenador consta de un solo procesador. Todos los trabajos pasarán por él ya sean de uno o varios usuarios. Este procesador sólo será capaz de atender en cada momento a un único proceso, pero se podrá simular la multitarea repartiendo su tiempo entre los distintos procesos.

Multiprocesador:


el ordenador cuenta con 2 o mas procesadores. Los programas se podrán ejecutar sobre cualquier procesador. Además permite el multiprocesamiento, es decir, la ejecución de varios procesos de manera simultánea.

Hay dos formas  de utilizar los distintos procesadores por parte del SO:

Multiproceso simétrico (SMP)


El SO distribuirá la carga de procesamiento por igual entre todos los procesadores existentes.

Multiproceso asimétrico (AMP):


el SO reparte las tareas que esta realizando a cada procesador en función de su prioridad. En el caso que se tenga un sistema biprocesador, se pueden ejecutar unas tareas concretas en uno y en el otro el resto de tareas (programas de usuario). Podría darse el caso que un procesador este siempre trabajando y el otro, en ocasiones, éste totalmente parado.

3.4. Por la forma de ofrecer los servicios

En esta clasificación se encuentran:

Sistemas centralizados:


hasta que los computadores no tuvieron un precio accesible y suficiente potencia, la mayoría de los sistemas utilizaban el modelo de proceso centralizado. Con este tipo de modelo los computadores mainframe se encargaban de todo el procesamiento y los usuarios manejaban únicamente terminales tontos (sin memoria ni procesador). Ejemplos de estos sistemas serían: OS/390, Linux etc.

Sistemas distribuidos:


son sistemas cuasi-independientes que permiten distribuir los trabajos, tareas o procesos entre un conjunto de procesadores. Puede ocurrir que este conjunto de procesadores se encuentren en el mismo equipo o en equipos distintos (siendo en este último caso transparente para el usuario).

Los sistemas distribuidos más extendidos son: Solaris-MC, Spring, Taos etc.

Sistemas operativos en red:


son aquellos que mantienen a dos o más computadoras unidas a través de algún medio de comunicación (físico o no), con el objetivo de primordial de poder compartir los diferentes recursos y la información del sistema. En este entorno cada computador mantiene su propio sistema operativo y su propio sistema de archivos local.

Los sistemas en red mas usados son: Novell NetWare, Windows Server, Linux Server etc.

Sistemas operativos de escritorio:


estos sistemas son los que se utilizan en los equipos de sobremesa, estaciones de trabajo o portátiles. También se les puede denominar sistemas operativos cliente. Entre ellos se encuentran: Windows XP Professional, Windows Vista, Windows 7 y Linux.

3.5. Por su disponibilidad.

En esta clasificación se encuentran:

Sistemas propietarios:


son aquellos que son propiedad intelectual de alguna empresa. Esto implica que se necesitan licencias de uso para que el usuario ejecute el software y no se dispone de acceso a su código fuente o, aun teniendo acceso a él, no se tiene derecho a modificarlo ni distribuirlo. En este grupo se encuentra Windows.

Sistemas libres:


son aquellos que garantizan las 4 libertades del software:

La libertad de usar el programa con cualquier propósito.

La libertad de estudiar como funciona el programa y modificarlo, adaptándolo a las necesidades que tuviera el usuario.

La libertad de distribuir copias del programa con lo que se puede ayudar a otros usuarios.

La libertad de mejorar el programa y hacer publicas dichas mejoras a otros usuarios de modo que toda la comunidad se beneficie de ello.

Las libertades 2 y 4 requieren acceso al código fuente para estudiar y modificar dicho software, por lo que al final el software libre es también software de código abierto.

El software libre suele estar disponible gratuitamente o al precio de coste de la distribución a través de otros medios, sin embargo no es obligatorio que sea así, por lo tanto, no hay que asociar software libre a software gratuito, ya que, conservando su carácter libre, podrá ser distribuido comercialmente (software comercial)
.

Del mismo modo, el software gratuito puede incluir el código fuente, pero eso no quiere decir que se pueda considerar como libre a no ser que se garanticen los derechos de modificación y redistribución de las versiones modificadas del programa.

Tampoco debe confundirse software libre con software de dominio público.
Este último es aquel que no requiere de licencia pues sus derechos de explotación pertenecen a todos por igual y cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original.

4. FUNCIONES DE UN SISTEMA OPERATIVO.

A continuación se muestran las funciones principales que realiza todo sistema operativo:

Control de la ejecución de los programas


Para ello, acepta los trabajos, administra la manera en que se realizan, les asigna los recursos y los conserva hasta su finalización.

Administración de periféricos


Coordinando y manipulando los dispositivos conectados al ordenador.

Gestión de permisos y de usuarios


Adjudica los permisos de acceso a los usuarios y evita que las acciones de uno afecten el trabajo que está realizando otro.

Control de concurrencia


Establece prioridades cuando diferentes procesos solicitan el mismo recurso.

Control de errores


Gestiona los errores de hardware y la pérdida de datos.

Administración de memoria


Asigna memoria a los procesos y gestiona su uso.

Control de  seguridad


debe proporcionar  seguridad  tanto para  los usuarios  como para  el  software  y  la información almacenada en los sistemas.

En concordancia con estas funciones principales, es posible analizar la estructura de un sistema operativo en cinco niveles. Los primeros dos niveles entrarían dentro de la parte del sistema operativo dependiente del hardware, el resto de los niveles pertenecen a la parte portable del mismo (véase la figura mostrada a continuación).

Cada uno de estos niveles se comunica con el inmediatamente inferior y superior coordinando sus funciones.

Nivel 1. Gestión del procesador


En este nivel se encuentra el Kernel o núcleo que es la parte del sistema operativo encargada de la gestión de la CPU. Cuando arranca el ordenador se carga en memoria y permanece allí realizando las siguientes funciones:

Comunicación y conmutación de procesos


Controla los procesos activos, trasladando el control de CPU de un proceso y guardando el estado de un proceso. El planificador de procesos realiza la asignación de CPU a cada uno de los procesos.

Control de interrupciones.

Manejo de condiciones de error.

Nivel 2. Gestión de memoria


Es el encargado de repartir la memoria disponible entre los recursos. Las acciones principales son:

Asignación y liberación de memoria.

Control de violación de acceso a zonas no permitidas de memoria.

Nivel 3. Gestión de procesos


Es el encargado de la creación y destrucción de procesos, intercambio de mensajes y detección y arranque de los mismos.

Nivel 4. Gestión de dispositivos


Se encarga de la función de creación de procesos de E/S, asignación y liberación de dispositivos de E/S y planificación de E/S.

Nivel 5. Gestión de la información


Gestiona el espacio de nombres lógicos, para simplificar el acceso a los recursos y protección de la información  realizando funciones de creación y eliminación de ficheros, apertura y cierre de ficheros, lectura y escritura de ficheros, y protección de acceso.

5. INTERFAZ DE COMUNICACIÓN CON EL USUARIO.

Hay que destacar las interfaces como medio de comunicación entra hardware y software a través del sistema operativo. Las interfaces se pueden clasificar en:

Interfaz tipo texto


Si el sistema operativo tiene una interfaz de tipo texto, todas las órdenes que el usuario introduzca y las respuestas que el sistema operativo dé, se introducirán o se visualizarán mediante cadenas de caracteres.

Interfaz tipo gráfico


Hoy en día, la mayoría de los sistemas operativos utilizan medios de comunicación entre usuario y máquina de tipo gráfico.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.