
jueves, 24 de agosto de 2017
2.1. Definición de Concepto.
Un proceso es una instancia de ejecución de un programa, caracterizado por su contador de programa, su palabra de estado, sus registros del procesador, su segmento de texto, pila y datos, etc. Un programa es un concepto estático, mientras que un proceso es un concepto dinámico. Es posible que un programa sea ejecutado por varios usuarios en un sistema multiusuario, por cada una de estas ejecuciones existirá un proceso, con su contador de programa, registros, etc.
Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria.
En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.

Un proceso es un programa en ejecución, que se ejecuta secuencialmente (no más de una instrucción a la vez).
2.2. Estados y Transiciones de los Procesos.
El estado de un proceso define su actividad actual.
Durante su existencia, un proceso pasa por una serie de estados discretos.
Estos estados son se muestran en el siguiente diagrama:

Un proceso puede variar entre 5 distintos estados:
Nuevo: Se dice que un proceso está en estado
de nuevo cuando apenas se encuentra en proceso de crearse.
Listo: Un proceso está en
estado de listo, cuando podría usar una CPU, si hubiera una disponible.
En ejecución: Se dice que un proceso está estado de ejecución, si en ese momento tiene
está ocupando la CPU.
Bloqueado: Se dice que un proceso está en estado de bloqueado, si espera que ocurra
algo, como por ejemplo, la terminación de una E/S, para así poder ponerse en marcha.
Terminado: Cuando un proceso se ha
completado su ejecución pasa a ser un proceso terminado.
Cuando un proceso pasa de un estado a otro se dice
que hace una transición de estado, estas transiciones se describen a
continuación.
Admitido (Proceso): Nuevo Listo: Cuando un proceso se ha creado y se le
es permito para competir por la CPU.
Despacho (Proceso): Listo En ejecución: La asignación de la CPU al primer proceso de la lista de listos es
llamado despacho y es ejecutado por la entidad de sistema llamada despachador.
Mientras que el proceso tenga la CPU se dice que está en ejecución.
Tiempo excedido(Proceso):En ejecución Listo: El S.O , cuando un proceso se le expira el intervalo de tiempo
asignado para estar en ejecución (CUANTO), hace que este proceso que se hallaba
en estado de ejecución pase al estado de listo y inmediatamente el despachador
hace que el primer proceso de la lista pase a estado de ejecución.
Bloqueo (Proceso): En ejecución Bloqueado: Si un proceso que se encuentra en estado de ejecución inicia una
operación de E/s antes que termine su cuanto, el proceso voluntariamente
abandona la CPU, es decir, el proceso se bloquea a sí mismo.
Despertar (Proceso): Bloqueo Listo: La única transición posible en nuestro modelo básico ocurre cuando
acaba una operación de E/S (o alguna otra causa por la que esté esperando el
proceso), y esta termina pasa a el estado de listo.
Salir (Proceso):En ejecución Terminado: Esta transición ocurre cuando el proceso se ha terminado de
ejecutarse, y pasa a un estado de terminado.
2.3. Procesos Ligeros: Hilos y Hebras.
Los procesos ligeros son programas en ejecución son
básicamente procesos pero a diferencia de éstos últimos que solo tienen un hilo
de ejecución los primeros tienen el hilo principal más hilos secundarios o
hijos, en éste caso todos los procesos hijos comparten la información del hilo
principal pero además puede cada hilo tener su información privada.
Unidad que posee recursos: A un proceso se le asigna un
espacio de memoria y, de tanto en tanto, se le puede asignar otros recursos
como dispositivos de E/S o ficheros.
Unidad a la que se le asigna el procesador: Un proceso es un flujo de ejecución (una traza) a través de uno o más programas. Esta ejecución se entremezcla con la de otros procesos. De tal forma, que un proceso tiene un estado (en ejecución, listo, etc) y una prioridad de expedición u origen. La unidad planificada y expedida por el sistema operativo es el proceso.
Unidad a la que se le asigna el procesador: Un proceso es un flujo de ejecución (una traza) a través de uno o más programas. Esta ejecución se entremezcla con la de otros procesos. De tal forma, que un proceso tiene un estado (en ejecución, listo, etc) y una prioridad de expedición u origen. La unidad planificada y expedida por el sistema operativo es el proceso.
En la mayoría de los sistemas operativos, estas dos
características son, de hecho, la esencia de un proceso. Sin embargo, son
independientes, y pueden ser tratadas como tales por el sistema operativo. Esta
distinción ha conducido en los sistemas operativos actuales a desarrollar la
construcción conocida como thread, cuyas traducciones más frecuentes son hilo,
hebra y proceso ligero. Si se tiene esta
división de características, la unidad de asignación de la CPU se conoce como
hilo, mientras que a la unidad que posee recursos se le llama proceso.
Un proceso ligero (thread o hebra) es un programa en
ejecución que comparte la imagen de la memoria y otras informaciones con otros
procesos ligeros.
- La sobrecarga debida a su creación y comunicación es menor que en los procesos pesados
- Cada hilo pertenece a un proceso pesado
- Todos los hilos comparten su espacio de direccionamiento
- Cada hilo dispone de su propia política de planificación, pila y contador de programa.
Multiproceso se refiere a dos programas que se
ejecutan "aparentemente" a la vez, bajo el controldel sistema
operativo.
Multihilo se refiere a que dos o mas tareas se
ejecutan "aparentemente" a la vez, dentro de un mismo programa.
2.4 Concurrencia y Secuenciabilidad
Los procesos son
concurrentes si existen simultáneamente. Cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se dice
que se ha presentado una concurrencia de procesos. Es importante
mencionar que para que dos o más procesos sean concurrentes, es necesario que
tengan alguna relación entre ellos.
Existen modelos de computadora en los que se puede pueden ejecutar procesos concurrentes:
Multiprogramación
con un único procesador: En este modelo
todos los procesos concurrentes ejecutan sobre un único procesador. El sistema
operativo se encarga de ir repartiendo el tiempo del procesador entre los
distintos procesos, intercalando la ejecución de los mismos para dar así una
apariencia de ejecución simultánea.
Multiprocesador: Un multiprocesador es una maquina formada por un
conjunto de procesadores que comparten memoria principal. En este caso si
existe una verdadera ejecución simultanea de procesos, al coincidir las fases
de procesamiento de distintos procesos. En un instante dado se pueden ejecutar
de forma simultánea tantos procesos como procesadores haya.
La concurrencia comprende un gran número de cuestiones de
diseño, incluyendo la comunicación entre procesos, comparación y competencia
por los recursos, sincronización de la ejecución de varios procesos y
asignación del tiempo de procesador a los procesos y es fundamental para que
existan diseños como Multiprogramación, Multiproceso y Proceso distribuido.
Los procesos son concurrentes si existen simultáneamente.
Cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se dice que se
ha presentado una concurrencia de procesos. Es importante mencionar que para
que dos o más procesos sean concurrentes, es necesario que tengan alguna
relación entre ellos.
La concurrencia puede presentarse en tres contextos
diferentes:
• Varias aplicaciones: La multiprogramación se creó para
permitir que el tiempo de procesador de la máquina fuese compartido
dinámicamente entre varios trabajos o aplicaciones activas.
• Aplicaciones estructuradas: Como ampliación de los
principios del diseño modular y la programación estructurada, algunas
aplicaciones pueden implementarse eficazmente como un conjunto de procesos
concurrentes.
• Estructura del sistema operativo: Las mismas ventajas
de estructuración son aplicables a los programadores de sistemas y se ha
comprobado que algunos sistemas operativos están implementados como un conjunto
de procesos.
Existen tres modelos de computadora en los que se pueden
ejecutar procesos concurrentes:
• Multiprogramación con un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultánea.
• Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su ejecución sino también superponerla.
• Multiprogramación con un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultánea.
• Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su ejecución sino también superponerla.
• Multicomputadora. Es una máquina de memoria
distribuida, que está formada por una serie de computadoras. En este tipo de
arquitecturas también es posible la ejecución simultánea de los procesos sobre
los diferentes procesadores.
En general, la concurrencia será aparente siempre que el
número de procesos sea mayor que el de procesadores disponibles, es decir,
cuando haya más de un proceso por procesador. La concurrencia será real cuando
haya un proceso por procesador. Aunque puede parecer que la intercalación y la
superposición de la ejecución de procesos presentan formas de ejecución
distintas, se verá que ambas pueden contemplase como ejemplos de procesos
concurrentes.
Existen diversas razones que motivan la ejecución de
procesos concurrentes en un sistema:
• Facilita la programación de aplicaciones al permitir
que éstas se estructuren como un conjunto de procesos que cooperan entre sí
para alcanzar un objetivo común.
• Acelera los cálculos. Si se quiere que una tarea se
ejecute con mayor rapidez, lo que se puede hacer es dividirla en procesos, cada
uno de los cuales se ejecuta en paralelo con los demás.
• Posibilita el uso interactivo a múltiples usuarios que
trabajan de forma simultánea.
• Permite un mejor aprovechamiento de los recursos, en
especial de la CPU, ya que pueden aprovechar las fases de entrada-salida de
unos procesos para realizar las fases de procesamiento de otros.
BENEFICIOS DE LA
CONCURRENCIA
- Trata de evitar los tiempos muertos de la UCP
- Comparte y optimiza el uso de recursos
- Permite la modularidad en las diferentes etapas del proceso
- Acelera los cálculos
- Da mayor comodidad
- Inanición e interrupción de procesos
- Ocurrencia de bloqueos
- Que dos o más procesos requieran el mismo recurso (no apropiativo).
2.5 Niveles, objetivos y criterios de planificación
Basandonos en el
concepto de Silbertschatz C. (1999), la planificación hace referencia a un
conjunto de políticas y mecanismos incorporados al sistema operativo que
gobiernan el orden en que se ejecutan los trabajos que deben ser cumplimentados
por el sistema informático. Se consideran tres niveles importantes de
planificación, los que se detallan a continuación:
- Planificación de alto nivel: Se encarga de llevar procesos de disco a
memoria y viceversa. Seleccionando los trabajos que deben admitirse en el
sistema.
- Planificación de nivel
intermedio: En algunos casos, en
especial cuando el sistema está sobrecargado, el planificador de nivel
medio encuentra ventajoso retirar trabajos activos de la memoria para
reducir el grado de multiprogramación, y por lo tanto, permitir que los
trabajos se completen mas aprisa.
- Planificación de bajo nivel: Se encarga de pasar de un proceso a otro en
memoria principal. Determinando a cuál proceso listo se le asignará el CPU
cuando éste se encuentra disponible. O Determina a qué proceso listo se le
asigna la CPU cuando esta queda disponible y asigna la cpu al mismo, es
decir que “despacha” la CPU al proceso.
Objetivo de la Planificacion
Según Silbertschatz C. (1999), el objetivo principal de la planificacion
es optimizar el rendimiento del sistema y proporcionar un buen servicio a todos
los procesos que se encuentren en el. En general, la planificacion trata de
cubrir los siguientes objetivos:
· Justicia. La planificacion debe ser lo mas justa posible con todos los procesos,
sin favorecer a unos y perjudicar a otros.
· Maxima capacidad de ejecucion. Debe dar un servicio eficiente para que todos los
trabajos se realicen lo mas rapidamente posible. Esto se puede lograr
disminuyendo el numero de cambios de proceso.
· Maximo numero de usuarios interactivos. En los sistemas de tiempo compartido se
tratara de que puedan estar trabajando el mayor numero de usuarios al mismo
tiempo.
· Predecibilidad. La planificación debe realizarse de tal forma que en todo momento
pueda saberse como será su ejecución.
· Minimización de la sobrecarga. La computadora debe tener poca sobrecarga ya que
esta afecta directamente al rendimiento final del sistema: a menor sobrecarga
mayor velocidad de proceso.
· Equilibrio en el uso de recursos. Para obtener un mayor rendimiento en el uso de
los recursos y que estos estén ocupados equitativamente el mayor tiempo
posible.
· Seguridad de las prioridades. Si un proceso tiene mayor prioridad que otro,
este debe ejecutarse mas rápidamente.
· Evitar la postergación indefinida. Esto se logra aumentando la prioridad de un
proceso mientras espere por un recurso. La prioridad llegara a ser tan alta que
al proceso le será asignado el recurso que pidió.
Criterios de la
planeación del procesador
· Equidad
· Eficacia
· Tiempo de respuesta
· Tiempo de regreso
· Rendimiento
Suscribirse a:
Entradas (Atom)
Unidad 1. Introducción a los Sistemas Operativos
INTRODUCCIÓN Un Sistema operativo es un programa que administra el hardware de una computadora. También proporciona las bases para los prog...

-
Los procesos ligeros son programas en ejecución son básicamente procesos pero a diferencia de éstos últimos que solo tienen un hilo de ejec...
-
Basandonos en el concepto de Silbertschatz C. (1999), la planificación hace referencia a un conjunto de políticas y mecanismos incorporados...