Está en la página 1de 10

DIFERENCIA ENTRE HILOS Y PROCESOS

HILOS Unidad mnima de expedicin. Dos hilos de una misma tarea (denominados hilos pares) comparten el segmento de cdigo, el segmento de datos y un espacio de pila, es decir, los recursos asignados a la tarea. Podemos captar la funcionalidad de los hilos si comparamos el control de mltiples hilos con el control de mltiples procesos. En el caso de los procesos, cada uno opera independientemente de los otros; cada proceso tiene su propio contador de programa, registro de pila, y espacio de direcciones. Este tipo de organizacin es muy til cuando los trabajos que los procesos efectan no tienen ninguna relacin entre s. Pero cuando los trabajos a realizar van a necesitar, por ejemplo, la llamada a una misma funcin o bien, la comparticin de una variable en memoria, nos interesar englobarlos en una tarea. Ej: Avion-Torre. Cuando un hilo est en ejecucin, posee el acceso a todos los recursos que tiene asignados la tarea. Un hilo tendr lo siguiente:

Estado. Contexto del procesador. Punto en el que estamos ejecutando, la instruccin concretamente en la que nos hallamos. Es til a la hora de reanudar un hilo que fue interrumpido con anterioridad, puesto que al guardar el contexto, guardamos la ultima instruccin que ejecutamos, y as podemos conocer por donde tenemos que continuar la ejecucin del hilo. Pila de ejecucin donde se ir metiendo y sacando instrucciones. (Lugar donde almacenaremos las instrucciones que van a ser ejecutadas). Espacio de almacenamiento esttico donde almacenar las variables. Acceso a los recursos de la tarea, que son compartidos por todos los hilos de la tarea.

* Ventajas del uso de hilos.


Se tarda menos tiempo en crear un hilo de una tarea existente que en crear un nuevo proceso. Se tarda menos tiempo en terminar un hilo que en terminar un proceso. Se tarda menos tiempo en cambiar entre dos hilos de una misma tarea que en cambiar entre dos procesos (porque los recursos no cambian, por ejemplo) Es mas sencillo la comunicacin (paso de mensajes por ejemplo) entre hilos de una misma tarea que entre diferentes procesos. Cuando se cambia de un proceso a otro, tiene que intervenir el ncleo del sistema operativo para que haya proteccin. Cuando se cambia de un hilo a otro, puesto que la asignacin de recursos es la misma, no hace falta que intervenga el sistema operativo.

PROCESOS
Un proceso es un programa en ejecucin. Todos los procesos tienen asociados un espacio de direcciones en memoria, registros y el contador de programas. Un programa para poderse ejecutar necesita estar en memoria principal. Los procesos son dependientes del sistema operativo. El espacio de direcciones se compone adems de direcciones para almacenar datos, cdigo, la pila y el heap (montculo). Toda la informacin de los procesos en los SOs se guardan el PCB (Process Control Block) que es un arreglo o lista ligada que indica la descripcin de cada uno de los procesos. Los procesos tienen asignados un identificador de procesos (PID), el cual es la forma en que el SO trabaja con los procesos. La finalidad del administrador de procesos es realizar una buena administracin (planificacin) del tiempo de CPU.

Un proceso est en ejecucin cuando tiene acceso real al tiempo de CPU. Un proceso est listo cuando se puede ejecutar, es decir, por algn motivo se suspendi para dejar ejecutar otro proceso Un proceso est bloqueado cuando est en espera de algn recurso (E/S) o de que ocurra un evento.

EJEMPLOS Crear hilos: pthread_attr_t *attr, void *

intpthread_create(pthread_t *thread, (*start_routine)(void *), void *arg) Esperar la finalizacin de hilos:

intpthread_join(pthread_tth, void **thread_return) typedefstructparametros { int id; char *nombre }; void *funcion(parametros *p) { printf(%s %d, p->cadena, p->id); pthread_exit(&(p->id)) } Referencia asi mismo:

Yo = pthread_self(); /*Dems funciones*/ Enviar una seal a un hilo:

pthread_kill(pthread_thilo, intseal); Los hilos no estn tan extendidos por que existen muchas variantes: hilos mach, hilos solaris, Gthreads, etc. pthread_mutex_init(pthread_mutex_t *mutex, constpthread_mutex_attr_t *attr) intpthread_mutex_lock(pthread_mutex_t *mutex) intpthread_mutex_lock(pthread_mutext_t *mutex) intpthread_mutext_destroy(pthread_mutext_t *mutex)

PROCESADORES
Los procesadores distribuidos se pueden organizar de varias formas:

Modelo de estacin de trabajo. Modelo de la pila de procesadores. Modelo hbrido.

No existe el concepto de propiedad de los procesadores, los que pertenecen a todos y se utilizan compartidamente. El principal argumento para la centralizacin del poder de cmputo como una pila de procesadores proviene de la teora de colas:

Llamamos a la tasa de entradas totales de solicitudes por segundo de todos los usuarios combinados. Llamamos a la tasa de procesamiento de solicitudes por parte del servidor. Para una operacin estable debe darse que o Se pueden permitir pequeos lapsos de tiempo en los que la tasa de entrada exceda a la de servicio. Llamamos T al promedio de tiempo entre la emisin de una solicitud y la obtencin de una respuesta completa: o o Cuando tiende a 0, T no tiende a 0. Supongamos que tenemos n multiprocesadores personales, cada uno con cierto nmero de cpu y con su propio sistema de colas con tasas y y tiempo T: o Si reunimos todas las cpu y formamos una sola pila de procesadores tendremos un solo sistema de colas en vez de n colas ejecutndose en paralelo. o La tasa de entrada ser , la tasa de servicio ser y el tiempo promedio de respuesta ser: T1 o Conclusin: si reemplazamos n pequeos recursos por uno grande que sea n veces ms poderoso: Podemos reducir el tiempo promedio de respuesta n veces.

El modelo de pila es ms eficiente que el modelo de bsqueda de estaciones inactivas. Tambin existe el modelo hbrido que consta de estaciones de trabajo y una pila de procesadores. Las estrategias de asignacin de procesadores se dividen en:

No migratorias: o Una vez colocado un proceso en una mquina permanece ah hasta que termina. Migratorias: o Un proceso se puede trasladar aunque haya iniciado su ejecucin. o Permiten un mejor balance de la carga pero son ms complejas.

Los algoritmos de asignacin intentan optimizar algo:

Uso de las cpu: o Maximizar el nmero de ciclos de cpu que se ejecutan para trabajos de los usuarios. o Minimizar el tiempo de inactividad de las cpu. Tiempo promedio de respuesta: o Minimizar no los tiempos individuales de respuesta sino los tiempos promedio de respuesta. Tasa de respuesta: o Minimizar la tasa de respuesta, que es el tiempo necesario para ejecutar un proceso en cierta mquina dividido por el tiempo que tardara en cierto procesador de referencia.

Ejemplos de Algoritmos de Asignacin de Procesadores Un Algoritmo Determinista Segn la Teora de Grficas


Requerimientos de cpu y de memoria de los procesos. Trfico promedio entre cada par de procesos.

Si el nmero de procesos supera al nmero de cpu:


Habr que asignar varios procesos a la misma cpu. La asignacin deber minimizar el trfico en la red.

El sistema se puede representar en una grfica con pesos:


Cada nodo es un proceso. Cada arco es el flujo de mensajes entre dos procesos.

El problema es encontrar la forma de partir la grfica en subgrficas sujetas a restricciones (ej.: de cpu y de memoria) (ver Figura 10.1 y Figura 10.2):

Los arcos que van de una subgrfica a la otra representan el trfico en la red. Cada subgrfica es una unidad de asignacin. El algoritmo debe buscar unidades de asignacin fuertemente acopladas: o Trfico intenso dentro de la unidad de asignacin.

Trfico escaso entre unidades de asignacin.

Si el administrador que recibe una solicitud determina que no tiene suficientes procesadores disponibles, transfiere la solicitud hacia arriba a su superior, quien tambin podra trasladarla hacia arriba nuevamente. Si el administrador determina que s puede satisfacer la solicitud:

Divide la solicitud en partes y la distribuye a los administradores subordinados a l. Los subordinados repiten esta operacin hasta llegar al nivel inferior. Los procesadores se sealan como ocupados y el nmero de procesadores asignados se informa hacia arriba.

Un importante problema consiste en que podra haber varias solicitudes en distintas etapas del algoritmo de asignacin:

Puede conducir a estimaciones no actualizadas del nmero de procesadores disponibles (tambin pudieron salir de servicio algunos de los considerados disponibles). Podran presentarse situaciones de competencia, bloqueo, etc. en el intento de asignacin de procesadores.

MULTIPROCESADORES Son sistemas que tienen dos o ms procesadores (CPU), comparten la misma memoria (espacio de direcciones). Los sistemas multincleos es la nueva tendencia en el desarrollo de sistemas multiprocesadores. En un solo chip se tienen varios procesadores (no es nada nuevo bajo el sol).

En todos los sistemas de equipo de cmputo, algunas mquinas estn fuertemente acopladas, mientras que otras estn dbilmente acopladas. A continuacin se muestran cuatro categoras de sistemas de cmputo, en base al acoplamiento y tipo de conexin.

Multiprocesadores con base en buses. Multiprocesadores con conmutador. Multicomputadoras con base en buses. Multicomputadoras con conmutador.

MULTI HILOS
En general se ejecuta el hilo poniendo el mtodo start(), e.g.: hilo.start();

Otros mtodos de los hilos son: isAlive() para determinar si un hilo est con vida, el metodo stop()* finaliza un hilo, el mtodo suspend()* lo suspende, el mtodo resume() reanuda un proceso y join() espera a que finalice un proceso especificado. Se pueden asignar prioridades a los hilos con el mtodo setPriority(), en donde la prioridad puede ser MIN, MAX y NORM_PRIORITY. El mtodo yield() cede prioridad, mientras que el mtodo setDaemon(true) hace que un hilo sea demonio. Los demonios son hilos que pueden correrse sin depender de otros procesos. Se utilizan mucho para la programacin de servicios del sistema. Se pueden crear grupos de hilos con la clase GroupThread para un mejor manejo.

También podría gustarte