lunes, 27 de mayo de 2013

UNIDAD 2 MINISTRACION DE PROCESOS Y PROCESADOR

  1.1 PROCESO

El concepto central de cualquier Sistema Operativo es el de proceso: una abstracción de un programa en ejecución también llamada tarea. No hay un acuerdo universal sobre una definición de proceso, pero sí algunas definiciones aceptadas [7, Deitel]
·                     Un programa que se está ejecutando.
·                     Una actividad asincrónica.
·                     El emplazamiento del control de un procedimiento que está siendo ejecutado.
·                     Aquello que se manifiesta por la existencia en el Sistema Operativo de un bloque de control de proceso.
·                     Aquella entidad a la cual son asignados los procesadores.
·                     La unidad despachable.
En sistemas de multiprogramación la cpu alterna de programa en programa, en un esquema de seudo paralelismo, es decir que la cpu ejecuta en cierto instante un solo programa, intercambiando muy rápidamente entre uno y otro.
El paralelismo real de hardware se da en las siguientes situaciones: 
·                     En ejecución de instrucciones de programa con más de un procesador de instrucciones en uso simultáneamente.
·                     Con la superposición de ejecución de instrucciones de programa con la ejecución de una o más operaciones de entrada / salida.


El objetivo es aumentar el paralelismo en la ejecución. El modelo de procesos posee las siguientes características: 
·                     Todo el software ejecutable, inclusive el Sistema Operativo, se organiza en varios procesos secuencialesprocesos.
·                     Un proceso incluye al programa en ejecución y a los valores activos del contador, registros y variables del mismo.
·                     Conceptualmente cada proceso tiene su propia cpu virtual.
·                     Si la cpu alterna entre los procesos, la velocidad a la que ejecuta un proceso no será uniforme, por lo que es necesario aclarar lo siguiente:
·                                             Que los procesos no deben programarse con hipótesis implícitas acerca del tiempo.
·                                             Que normalmente la mayoría de los procesos no son afectados por la multiprogramación subyacente de la cpu o las velocidades relativas de procesos distintos.
·                     Un proceso es una actividad de un cierto tipo, que tiene un programa, entrada, salida y estado.
·                     Un solo procesador puede ser compartido entre varios procesos con cierto “algoritmo de planificación” , el cual determina cuándo detener el trabajo en un proceso y dar servicio a otro distinto (ver Figura 2.1 [23, Tanenbaum]).


                              1.2 ESTADO Y TRANCICIONES DE LOS PROCESOS

Durante su existencia un proceso pasa por una serie de estados discretos, siendo varias las circunstancias que pueden hacer que el mismo cambie de estado. Debido a ello se puede establecer una “Lista de Listos” para los procesos “listos” y una “Lista de Bloqueados” para los “bloqueados”. La “Lista de Listos” se mantiene en orden prioritario y la “Lista de Bloqueados” está desordenada, ya que los procesos se desbloquean en el orden en que tienen lugar los eventos que están esperando. Al admitirse un trabajo en el sistema se crea un proceso equivalente y es insertado en la última parte de la“Lista de Listos”. La asignación de la cpu al primer proceso de la “Lista de Listos” se denomina “Despacho”, que es ejecutado por una entidad del Sistema Operativo llamada “Despachador”. El “Bloqueo” es la única transición de estado iniciada por el propio proceso del usuario, puesto que las otras transiciones son iniciadas por entidades ajenas al proceso. La manifestación de un proceso en un Sistema Operativo es un “Bloque de Control de Proceso” (PCB) con información que incluye 
[7, Deitel]
·                     Estado actual del proceso.
·                     Identificación única del proceso.
·                     Prioridad del proceso.
·                     Apuntadores para localizar la memoria del proceso.
·                     Apuntadores para asignar recursos.
·                     Área para preservar registros.


Cuando el Sistema Operativo cambia la atención de la cpu entre los procesos, utiliza las áreas de preservación del PCB para mantener la información que necesita para reiniciar el proceso cuando consiga de nuevo la cpu. Los sistemas que administran los procesos deben poder crear, destruir, suspender, reanudar, cambiar la prioridad, bloquear, despertar y despachar un proceso. La “creación” de un proceso significa: 
·                     Dar nombre al proceso.
·                     Insertar un proceso en la lista del sistema de procesos conocidos.
·                     Determinar la prioridad inicial del proceso.
·                     Crear el bloque de control del proceso.
·                     Asignar los recursos iniciales del proceso.


Un proceso puede “crear un nuevo proceso”, en cuyo caso el proceso creador se denomina “proceso padre” y el proceso creado “proceso hijo” y se obtiene una “estructura jerárquica de procesos”. La “destrucción” de un proceso implica: 
·                     Borrarlo del sistema.
·                     Devolver sus recursos al sistema.
·                     Purgarlo de todas las listas o tablas del sistema.
·                     Borrar su bloque de control de procesos.


Un proceso “suspendido” no puede proseguir hasta que otro proceso lo reanude. Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue suspendido. La “destrucción” de un proceso puede o no significar la destrucción de los procesos hijos, según el Sistema Operativo. Generalmente se denomina “Tabla de Procesos” al conjunto de información de control sobre los distintos procesos.

                                         1.3 PROCESOS LIGEROS: HILOS Y HEBJRAS
Un proceso ligero, o thread, es un programa en ejecucion (flujo de ejecucion) que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Como muestra la Figura , un proceso puede contener un solo flujo de ejecucion, como ocurre en los procesos clasicos, o mas de un flujo de ejecucion (procesos ligeros).
Desde el punto de vista de la programacion, un proceso ligero se define como una funcion cuya ejecucion se puede lanzar en paralelo con otras. El hilo de ejecucion primario, o proceso ligero primario, corresponde a la funcion main.
Cada proceso ligero tiene informaciones que le son propias y que no comparte con otros procesos ligeros. Las informaciones propias se refieren fundamentalmente al contexto de ejecucion, pudiendose destacar las siguientes:
·                     Contador de programa.
·                     Pila.
·                     Registros.
·                     Estado del proceso ligero (ejecutando, listo o bloqueado).
Todos los procesos ligeros de un mismo proceso comparten la informacion del mismo. En concreto, comparten:
·                     Espacio de memoria.
·                     Variables globales.
·                     Archivos abiertos.
·                     Procesos hijos.
·                     Temporizadores.
·                     Senales y semaforos.
·                     Contabilidad.
Es importante destacar que todos los procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones de memoria, que incluye el codigo, los datos y las pilas de los diferentes procesos ligeros. Esto hace que no exista proteccion de memoria entre los procesos ligeros de un mismo proceso, algo que si ocurre con los procesos convencionales.
El proceso ligero constituye la unidad ejecutable en Windows NT. La Figura representa de forma esquematica la estructura de un proceso de Windows NT con sus procesos ligeros.


                                          1.4 CONCURRENCIA Y SECUENCIABILIDAD

Los procesos son concurrentes si existen simultaneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asincronos, lo cual significa que en ocasiones requieren cierta sincronizacion o cooperacion.

Cuando dos o mas 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 mas procesos sean concurrentes , es necesario que tengan alguna relacion entre ellos como puede ser la cooperacion para un determinado trabajo o el uso de informacion o recursos compartidos, por ejemplo: en un sistema de un procesador , la multiprogramacion es una condicion necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente.
Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre si ya sea para utilizar informacion en comun o para cualquier otra cosa.
Existen tres formas modelos de computadora en los que se puede pueden ejecutar procesos concurrentes:
Multiprogramacion con un unico procesador.
En este modelo todos los procesos concurrentes ejecutan sobre un unico procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecucion de los mismos para dar asi una apariencia de ejecucion simultanea.
Multiprocesador.
Un multiprocesador es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no solo pueden intercalar su ejecucion sino tambien superponerla. En este caso si existe una verdadera ejecucion simultanea de procesos, al coincidir las fases de procesamiento de distintos procesos. En un instante dado se pueden ejecutar de forma simultanea tantos procesos como procesadores haya.
Multicomputadora.
Una multicomputadora es una maquina de memoria distribuida, en contraposicion con el multiprocesador que es de memoria compartida. Esta formada por una serie de computadoras completas con su UCP, memoria principal y, en su caso, periferia. Cada uno de estos procesadores completo se denomina nodo. Los nodos se encuentran conectados y se comunican entre si a traves de una red de interconexion, empleando el metodo de paso de mensajes. En este tipo de arquitecturas tambien es posible la ejecucion simultanea de los procesos sobre los distintos procesadores.
En general la concurrencia sera aparente siempre que el numero de procesos sea mayor que el de procesadores disponibles, es decir, cuando haya mas de un proceso por procesador. La concurrencia sera real cuando haya un proceso por procesador

                       1.5 NIVELES OBJETIVOS Y CRITERIOS DE  EVALUACION

En epocas pasadas de los sistemas de procesamiento por lotes, con una entrada en forma de imagenes de tarjetas en una cinta magnetica, el algoritmo de planificacion era sencillo: solo habia que ejecutar el siguiente trabajo en la cinta. 
En los sistemas de multiusuario de tiempo compartido, que se combinaban con un fondo de trabajos procesados en lote, el algoritmo era mas complejo. En forma invariable, existian varios usuarios en espera de servicio y podian existir tambien otros trabajos para ser procesados en lote. Incluso en los sistemas puros de tiempo compartido existen con frecuencia los trabajos colaterales, como el sistema de correo electronico, que a menudo se ejecuta todo el tiempo para enviar o recibir correo o noticias.
Cuando mas de un proceso es ejecutable, el Sistema Operativo debe decidir cual de ellos debera ejecutarse primero. Hay que tener una planificacion de los procesos que quieren ejecutarse en el sistema.La planificacion es una funcion primordial del Sistema Operativo. La mayoria de los recursos, si no es que todos, se planifican antes de que se utilicen. La asignacion de procesadores fisicos a los procesos hace posible que estos realicen su trabajo, y tal asignacion es un problema complejo manejado por el Sistema Operativo.
                       1.6 TECNICAS DE ADMINISTRACION DEL PLANIFICADOR
Es muy simple, los procesos se despachan de acuerdo con su tiempo de llegada a la cola de listos. Una vez que el proceso obtiene la cpu, se ejecuta hasta terminar, ya que es una disciplina “no apropiativa”. Puede ocasionar que procesos largos hagan esperar a procesos cortos y que procesos no importantes hagan esperar a procesos importantes. Es más predecible que otros esquemas. No puede garantizar buenos tiempos de respuesta interactivos. Suele utilizarse integrado a otros esquemas, por ejemplo, de la siguiente manera: Los procesos se despachan con algún esquema de prioridad. Los procesos con igual prioridad se despachan “FIFO”."
"Es una disciplina no apropiativa y por lo tanto no recomendable en ambientes de tiempo compartido. El proceso en espera con el menor tiempo estimado de ejecución hasta su terminación es el siguiente en ejecutarse. Los tiempos promedio de espera son menores que con “FIFO”. Los tiempos de espera son menos predecibles que en “FIFO”. Favorece a los procesos cortos en detrimento de los largos. Tiende a reducir el número de procesos en espera y el número de procesos que esperan detrás de procesos largos. Requiere un conocimiento preciso del tiempo de ejecución de un proceso, lo que generalmente se desconoce. Se pueden estimar los tiempos en base a series de valores anteriores. "
2.6.3 RR
"Los procesos se despachan en “FIFO” y disponen de una cantidad limitada de tiempo de cpu, llamada “división de tiempo” o “cuanto”. Si un proceso no termina antes de expirar su tiempo de cpu ocurren las siguientes acciones: La cpu es apropiada. La cpu es otorgada al siguiente proceso en espera. El proceso apropiado es situado al final de la lista de listos. Es efectiva en ambientes de tiempo compartido. La sobrecarga de la apropiación se mantiene baja mediante mecanismos eficientes de intercambio de contexto y con suficiente memoria principal para los procesos. "

No hay comentarios.:

Publicar un comentario