Diferencia entre revisiones de «Multiprogramación»

(Tipos de sistemas operativos de multiprogramación == === Sistemas de tiempo compartido =)
Línea 6: Línea 6:
 
|concepto= Se denomina multiprogramación a una técnica por la que dos o más procesos pueden alojarse en la memoria principal y ser ejecutados concurrentemente por el procesador o CPU.
 
|concepto= Se denomina multiprogramación a una técnica por la que dos o más procesos pueden alojarse en la memoria principal y ser ejecutados concurrentemente por el procesador o CPU.
 
}}
 
}}
 +
<div align="justify">
 
'''Multiprogramación.''' El concepto de multiprogramación se refiere a la idea general de poder cargar múltiples programas dentro de un mismo computador para que sean ejecutados en un determinado momento. Para lograr manejar múltiples programas, es necesario primero definir que compone a un programa. En general, se puede decir que un programa está compuesto por dos partes: su representación en memoria que incluye el código, datos y stack del programa, y su estado de ejecución que incluye los valores almacenados en los registros de la [[CPU]] (PC, registros acumuladores, SP, Status register, etc.) que indican el estado actual del programa en la máquina. Para lograr trabajar con múltiples programas, entonces, es necesario permitir el manejo de múltiples representaciones en memoria y de múltiples estados de ejecución.
 
'''Multiprogramación.''' El concepto de multiprogramación se refiere a la idea general de poder cargar múltiples programas dentro de un mismo computador para que sean ejecutados en un determinado momento. Para lograr manejar múltiples programas, es necesario primero definir que compone a un programa. En general, se puede decir que un programa está compuesto por dos partes: su representación en memoria que incluye el código, datos y stack del programa, y su estado de ejecución que incluye los valores almacenados en los registros de la [[CPU]] (PC, registros acumuladores, SP, Status register, etc.) que indican el estado actual del programa en la máquina. Para lograr trabajar con múltiples programas, entonces, es necesario permitir el manejo de múltiples representaciones en memoria y de múltiples estados de ejecución.
  

Revisión del 14:29 19 mar 2015

Multiprogramación
Información sobre la plantilla
Multiprogramacion.jpg
Concepto:Se denomina multiprogramación a una técnica por la que dos o más procesos pueden alojarse en la memoria principal y ser ejecutados concurrentemente por el procesador o CPU.

Multiprogramación. El concepto de multiprogramación se refiere a la idea general de poder cargar múltiples programas dentro de un mismo computador para que sean ejecutados en un determinado momento. Para lograr manejar múltiples programas, es necesario primero definir que compone a un programa. En general, se puede decir que un programa está compuesto por dos partes: su representación en memoria que incluye el código, datos y stack del programa, y su estado de ejecución que incluye los valores almacenados en los registros de la CPU (PC, registros acumuladores, SP, Status register, etc.) que indican el estado actual del programa en la máquina. Para lograr trabajar con múltiples programas, entonces, es necesario permitir el manejo de múltiples representaciones en memoria y de múltiples estados de ejecución.


Se denomina multiprogramación a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al "mismo tiempo" (pseudo-paralelismo, en una única CPU sólo puede haber un proceso a la vez) en la unidad central de proceso o CPU.


Importancia

Técnica para la ejecución simultanea de dos o mas programas es una misma computadora. La multiprogramación una técnica que intenta incrementar la utilización del CPU tratando de tener siempre algo para que el CPU lo ejecute.

Esta idea funciona de la siguiente manera:


El sistema operativo selecciona uno de los trabajos y empieza su ejecución. Eventualmente, el trabajo tiene que esperar por algo, tal como una lectura a disco, un comando que debe ser tecleado, etc. En un sistema no multiprogramado el CPU debe esperar si hacer nada. En un sistema con multiprogramación, el sistema operativo simplemente seleccionará otro trabajo y lo ejecutará.

Cuando ese trabajo necesite esperar, el CPU será asignado a otro trabajo y de esta forma continuará. Eventualmente el primer trabajo habrá terminado su espera y obtendrá el CPU nuevamente. De esta manera, sí siempre existe algún trabajo para ejecutar, el CPU nunca estará ocioso.


Los Sistemas Operativos son altamente sofisticados ya que necesitan tener varios trabajos listos para ser ejecutados, los cuales deben de estar simultáneamente en memoria principal. Con la multiprogramación, la ejecución de los procesos (o hilos) se va solapando en el tiempo a tal velocidad, que causa la impresión de realizarse en paralelo (simultáneamente). Se trata de un paralelismo simulado, dado que la CPU sólo puede trabajar con un proceso cada vez (el proceso activo). De ahí que, en rigor, se diga que la CPU ejecuta «concurrentemente» (no simultáneamente) varios procesos; en un lapso de tiempo determinado, se ejecutarán alternativamente partes de múltiples procesos cargados en la memoria principal.

En los antiguos sistemas monoprogramados, cuando un proceso en ejecución requería hacer uso de un dispositivo de E/S, el procesador quedaba ocioso mientras el proceso permaneciese en espera y no retomara su ejecución. En cambio, en un sistema multiprogramado, cuando un proceso Px concluye o se bloquea (en espera de una operación de E/S), el núcleo del sistema operativo toma el control de la CPU para efectuar lo que se denomina un «cambio de contexto», a fin de dar turno a otro proceso Py para que se ejecute. Nótese que cuando el proceso Px recupere su turno, reanudará su ejecución justo en el punto exacto en que se interrumpió. Este mecanismo supone un mejor reparto de la carga de trabajo y un mayor aprovechamiento de la CPU, lo que redunda en un mayor rendimiento del sistema.

Características de un Sistema Operativo de multiprogramación:

  • Mejora productividad del sistema y utilización de recursos.
  • Multiplexa recursos entre varios programas.
  • Generalmente soportan múltiples usuarios (multiusuarios).
  • Proporcionan facilidades para mantener el entorno de usuarios individuales.
  • Requieren validación de usuario para seguridad y protección.
  • Proporcionan contabilidad del uso de los recursos por parte de los usuarios.
  • Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real.
  • Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores.
  • En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.

Ventajas

  • Varios procesos en ejecución
  • Permite el servicio interactivo simultáneo a varios usuarios de manera eficiente
  • Aprovecha los tiempos que los procesos pasan esperando a que se completen sus operaciones de E/S y por ende aumenta la eficiencia en el uso del CPU.


Las direcciones de los procesos son relativas, el programador no se preocupa por saber en dónde estará el proceso dado que el sistema operativo es el que se encarga de convertir la dirección lógica en física.


Método

Un método para la multiprogramación es el Foreground/Background (o ejecución jerarquizada) (usado en sistemas por tandas, nunca en interactivos), en él hay un proceso prioritario (el foreground (FG)) que se ejecuta con preferencia de todos los demás, cuando este proceso solicita una operación L/E(Lectura/Escritura), mientras el s.o. la realiza, el proceso FG estará bloqueado por esta operación y le cede el control al proceso background 1 (BG), y si éste realiza una operación L/E, al BG2,… Cuando uno de los procesos bloqueados se desbloquea, recibe el control del procesador. Para que este método funcione de forma óptima la mejor forma es colocar los procesos ordenados de mayor a menor cantidad de operaciones L/E.

La multiprogramación es una técnica de multiplexación que permite la ejecución simultánea de múltiples procesos en un único procesador. En realidad, esta técnica produce una ilusión de paralelismo, de manera que parece que todos los procesos se están ejecutando a la vez. Sin embargo, hay un único proceso ejecutándose en el procesador a la vez.

Diagrama uso del procesador por tres procesos:

Diag procesador.png

Como se puede observar en el ejemplo anterior, los procesos alternan periodos en los que progresan en su actividad, cuando están asignados al procesador, con periodos de inactividad, en los que no progresan en absoluto.

Si los periodos de inactividad son los suficientemente pequeños como para que el usuario del sistema operativo no los note, que en práctica se traduce a periodos de inactividad de menos de 100ms, el efecto causado es una ilusión de paralelismo. En caso contrario dará una sensación de que se producen "saltos".

El planificador de procesos es la parte del sistema operativo que se encarga de decidir qué proceso emplea el procesador en cada instante, por tanto, es el encargado de implementar la multiprogramación.

Tipos de sistemas operativos de multiprogramación

Sistemas de tiempo compartido

El tiempo compartido es bastante popular en sistemas multiprogramados y multiusuarios. Estos sistemas de multiacceso dedican la mayor parte del tiempo de ejecución de un programa único de una gran aplicación. Son elementos dedicados que poseen un buen tiempo de respuesta del terminal y tratan con frecuencia de proporcionar un reparto equitativo del los recursos comunes para dar la ilusión a cada usuario de poseer la máquina para el mismo. Por ejemplo, cuando se carga el sistema, se hace esperar más a los usuarios con más requerimientos de proceso pedido.


El algoritmo empleado en el despacho de las actividades es único de la filosofía de estos sistemas. El mismo consiste en la ejecución de los programas con prioridad rotatoria que se incrementa con las esperas y cae después de que se dispensó el servicio. El sistema operativo interrumpe un programa y lo pone al final de la cola de programas en espera, cuando es más largo que la fracción de tiempo definida por el sistema, para prevenir a los programas de la monopolización del procesador.

El gestor de memoria del sistema proporciona el aislamiento y protección de los programas en ejecución. Sin embargo, se puede emplear un espacio de memoria compartido controlado por el sistema operativo.

Los componentes de entrada salida se rigen por un gestor I/O que debe permitir la cooperación con múltiples usuarios y dispositivos. Debido a la lenta respuesta de los terminales humanos y la reacción o respuesta humana, el procesamiento de las interrupciones del terminal no necesita ser críticas para el tiempo.

El gestor de archivos, por otro lado, debe proporcionar protección y control de acceso, dado a la posibilidad de concurrencia y de conflictos al acceder a los archivos.

Sistemas de tiempo real

Se usan en entornos donde se deben aceptar y procesar en tiempo breve y sin tiempos muertos un gran número de sucesos, en su mayoría externos al sistema de computadora. Son asuntos secundarios la conveniencia del usuario y la utilización de recursos.

Estos sistemas se caracterizan principalmente por encargarse de procesos que se activan al ocurrir el suceso relacionado, señalado frecuentemente por una interrupción. Se consigue el multiproceso planificando los procesos independientes unos de otros. Se asigna a cada proceso un cierto nivel de prioridad que corresponde a la importancia relativa de los sucesos que sirve. El procesador está normalmente asignado al proceso con más alta prioridad entre los que están listos para ejecutarse. Esta forma de planificación se llama planificación basada en la prioridad preferente.

A diferencia de los sistemas de tiempo compartido, el gestor de memoria está diseñado para tener un menor tiempo de respuesta debido a que los programas generalmente residen permanentemente en la memoria ya que usualmente son sistemas estáticos no diseñados para permitir la implementación de programas externos.

El tiempo crítico del gestor de dispositivo es una de las características principales de los sistemas de tiempo real. Además de las formas sofisticadas proporcionadas de gestión de interrupciones y almacenamiento intermedio, estos sistemas proporcionan frecuentemente llamadas del sistema que permiten a los procesos de usuario conectarse directamente a vectores de interrupción y sucesos de servicio. De esta forma, los programas pueden ceder espacio en procesador a otras ejecuciones con el levantamiento de una interrupción.

Generalmente estos sistemas de operación no poseen ningún tipo de almacenamiento secundario, solamente en aquellos sistemas de grandes magnitudes en los cuales si es requerido se necesita la implementación de un gestor de archivos que como en otros tipos de sistemas operativos debe manejar protección y control de acceso.

Sistemas operativos combinados

Lamentablemente el uso de sistemas operativos de tiempo son demasiado específicos y por lo tanto, a pesar de su gran utilidad en sistemas estáticos de gran escala, no satisfacen las necesidades de los usuarios en computadoras personales y emergentes dispositivos portátiles. Por dicha razón surge la necesidad de implementar sistemas operativos combinados que emplean las ventajas de los sistemas operativos de multiprogramación conjuntamente con los sistemas operativos por lotes.

Los sistemas combinados se caracterizan por poseer bloques o lotes que se ejecutan con una menor prioridad que el resto de las aplicaciones. Así se logra el uso completo del procesador al eliminar los tiempos muertos o de espera.

Vea además

Multiprogramación de partición fija, partición variable, con intercambio de almacenamiento

Fuentes

  • Consultado en: [1]
  • Revisado en: [2]
  • Extraído de: [3]
  • Consultado en: [4]