AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
Administrador de procesos
1. Universidad Regional Autónoma de los Andes
–UNIANDES–
CONCEPTO DE HILO Y LOS MODELOS DE HILOS
EXISTENTES, ASÍ COMO LOS PRINCIPALES ASPECTOS
DE SU DISEÑO COMO THREADS. ADEMÁS, EXPLICAR
LA INSERCIÓN DE HILOS EN EL ENTORNO DE UN
PROCESO, ASÍ COMO LA IMPLEMENTACIÓN DE
SEÑALES, TEMPORIZADORES Y EXCEPCIONES
Asas Saltos Jorge Bladimir
Ramírez Juan Carlos
Junio de 2017
2. OBJETIVO GENERAL:
Conocer acerca de la funcionalidad de los procesos ligeros (Hilos) en su desarrollo
en los Sistemas Operativos.
OBJETIVOS ESPECIFICOS:
Determinar la estructura de los procesos ligeros (Hilos).
Establecer los aspectos fundamentales de su diseño.
Analizar su entorno e implementación en ellos.
El presente documento contiene especificaciones claras efectivas y concisas acerca
de los procesos ligeros también conocidos como hilos, distribuido en secciones
valorizadas por su concepto, característica, modeló, funcionabilidad, e
implementación dentro de Sistemas Operativos. Dentro del desarrollo del
documento se orientó de manera unificada al método de investigación cualitativa
debido a que es fundamentada, orientada al descubrimiento, procesó y descripción.
Además de tener información valida, real y profunda no generalizable.
Se argumentó que los hilos son una ejecución concreta de un programa, con un
camino determinado y un valor de sus variables determinados. Para acotar la unidad
mínima de expedición y de asignación de recursos es el proceso. De igual forma la
Señal forma una interrupción al proceso. La excepción: Es un evento que ocurre
durante la ejecución de un programa y que requiere la ejecución de un fragmento
de código situado fuera del flujo normal de ejecución y los Temporizadores: Nos
permitan medir correctamente los tiempos de ejecución asociados a programas o
segmentos de código.
Para la conceptualización del tema se tuvo pequeñas dificultades entre las cuales
resalta la con función entre un proceso pesado y ligero, además que muy pocos
autores los llaman procesos ligeros, por ende, a la hora de recabar información
existió más tiempo de lo previsto. Para poder desarrollar y cumplir con las
especificaciones del documento requerido, se asistió con información adicional de
internet concreta.
3. DESARROLLO
Un proceso ligero o thread, es un programa en ejecución flujo de ejecución) que
comparte la imagen de memoria y otras informaciones con otros procesos ligeros.
Desde el punto de vista de la programación un proceso ligero se define como una
función cuya ejecución se puede lanzar en paralelo con otras. El hilo de ejecución
primario, o proceso ligero primario, corresponde a la función main. Cada proceso
ligero tiene información que le son propias y que no comparte con otros procesos
ligeros.
MODELOS DE HILOS:
Hay tres patrones en los que caen generalmente los modelos de hilos; podemos
emplear a más de uno de estos patrones en diferentes áreas de nuestra aplicación,
e incluso podemos anidarlos:
Jefe / trabajador: Un hilo tiene una tarea distinta de todos los demás: El hilo jefe
genera o recopila tareas que requieren ser cubiertas, las separa y se las entrega a
los hilos trabajadores. Este modelo es el más común para procesos que
implementan servidores y para aplicaciones gráficas, en que hay una porción del
programa (el hilo jefe) esperando a que ocurran eventos externos.
Equipo de trabajo: Al iniciar la porción multihilos del proceso, se crean muchos hilos
idénticos, que realizarán las mismas tareas sobre diferentes datos. Este modelo es
muy frecuentemente utilizado para cálculos matemáticos. Puede combinarse con
4. un estilo jefe/trabajador para irle dando al usuario una pre visualización del resultado
de su cálculo, dado que éste se irá ensamblando progresivamente, pedazo por
pedazo.
Su principal diferencia con el patrón jefe/trabajador consiste en que el trabajo a
realizar por cada uno de los hilos se plantea en un principio, esto es, el paso de
división de trabajo no es un hilo más, sino que prepara los datos para que éstos
sean lanzados en paralelo. Estos datos no son resultado de eventos independientes
(como en el caso anterior), sino partes de un solo calculo.
Línea de ensamblado: Si una tarea larga puede dividirse en pasos sobre bloques
de la información total a procesar, cada hilo puede enfocarse a hacer sólo una tarea
y pasarle los datos a otro hilo conforme vaya terminando. Una de las principales
ventajas de este modelo es que nos ayuda a mantener rutinas simples de
comprender, y permite que el procesamiento de datos continúe incluso si parte del
programa está bloqueado esperando E/S (dispositivos /archivos).
5. PRINCIPALES ASPECTOS DE SU DISEÑO COMO THREADS:
La utilización de procesos ligeros ofrece las ventajas de división de trabajo que dan
los procesos, pero con una mayor sencillez, lo que se traduce en mejores
prestaciones. En este sentido, es de destacar que los procesos ligeros comparten
memoria directamente, por lo que no hay que añadir ningún mecanismo adicional
para utilizarla, y que la creación y destrucción de procesos ligeros requiere mucho
menos trabajo que la de procesos.
Una de las aplicaciones típicas de los procesos ligeros es el diseño de procesos
servidores paralelos:
Proceso ligero Distribuidor: Se plantea un proceso ligero distribuidor cuya función
es la recepción de las ordenes y su traspaso a un proceso ligero trabajador. El
esquema puede funcionar creando un nuevo proceso ligero trabajador por cada
solicitud de servicios, proceso ligero que muere al finalizar su trabajo.
Proceso ligero Igual: Consiste en todos los cuales pueden aceptar una orden.
Cuando llega una solicitud, la recibe uno de los procesos ligeros que están leyendo
del puerto.
6. Este proceso ligero tratará la petición y, una vez finalizado el trabajo solicitado,
volverá a la fase de leer una nueva petición del puerto.
Proceso de Segmentación: También llamada pipe-line, cada trabajo se divide en
una serie de fases, encargándose de cada una de ellas un proceso ligero
especializado. El esquema permite tratar al mismo tiempo tantas solicitudes como
fases de la segmentación, puesto que se puede tener una en cada proceso ligero.
INSERCIÓN DE HILOS EN EL ENTORNO DE UN PROCESO
La memoria de trabajo del proceso ligero sigue siendo asignada por proceso, los
thread (hilos) dentro del proceso comparten toda la misma región de memoria, el
mismo espacio de direcciones. Cada hilo tiene su propio contexto (estado de
ejecución), así que cada vez que se suspende un hilo para permitir la ejecución de
otro, su contexto es guardado y restablecido nuevamente solo cuando es su turno
de ejecución.
7. El proceso si bien ya no es la unidad de ejecución sigue siendo parte fundamental
en el funcionamiento del sistema ya que el proceso hace parte de la asignación de
prioridad de ejecución, es al que se le asigna memoria y de hecho es al que se le
asignan los recursos, así como privilegios y otros datos importantes. El hilo es solo
quien se ejecuta (sin demeritar en absoluto algo tan importante como esto).
Adicionalmente se puede acotar para que haya una inserción en un proceso debe
pasar por los siguientes tres estados básicos: Ejecución, Bloqueado, Listo.
Ejecución: En este estado está el proceso está siendo ejecutado por el procesador,
es decir, que está en fase de procesamiento. En esta fase el estado del proceso
reside en los registros del procesador.
Bloqueado: Un proceso bloqueado está esperando a que ocurra un evento y no
puede seguir ejecutando hasta que suceda el evento. Una situación típica de
proceso bloqueado se produce cuando el proceso solicita una operación de
dispositivos/archivos. Hasta que no terminar esta operación, el proceso queda
bloqueado. Ilustración 5 Proceso Ligero Igual Ilustración 6 Proceso Pipe-Line
Listo: Un proceso está listo para ejecutar cuando puede entrar en fase de
procesamiento. Dado que puede haber varios procesos en este estado, una de las
tareas del sistema operativo que toma esta decisión se denomina planificador.
IMPLEMENTACIÓN DE SEÑALES, TEMPORIZADORES Y EXCEPCIONES
8. Las señales cumplen con el hilo que debe informar a otro que cierta condición está
ya cumplida. Por ejemplo, un hilo prepara una conexión en red mientras que otro
calcula lo que tiene que enviar. No podemos arriesgarnos a comenzar a enviar antes
de que la conexión esté lista. Dado que las señales se utilizan para indicarle al
proceso muchas cosas diferentes, existen una variedad de ellas, que se incluye tres
categorías de señales: Excepciones Hardware, Comunicación y FIS asíncrona.
Cada vez que la rutina del sistema operativo que trata las interrupciones de reloj
comprueba que ha transcurrido un segundo, de cementa todos los temporizadores
que no estén a 0 y comprueba si han llegado a 0. Para aquellos procesos cuyo
temporizador acaba de llegar a 0 el sistema operativo notifica el proceso que el
temporizador ha vencido. Por ejemplo, en POSIX se genera una señal SIGALRN.
En Win32 se ejecuta una función definida por el usuario y que asocia al
temporizador. El proceso activa el temporizador mediante un servicio en el que
especifica el número de segundo o milisegundo que quiere temporizar. Cuando
vence la temporización, recibirá la correspondiente señal o se ejecutará la función
asociada al mismo.
Las excepciones son eventos que ocurren durante la ejecución de un programa y
que requiere la ejecución de un fragmento de código situado fuera del flujo normal
de ejecución. Las excepcione son generadas por el hardware o el software.
Cuando ocurre una excepción, tanto hardware como software, el control es
transferido al sistema operativo, que ejecuta la rutina de tratamiento de excepción
correspondiente. Esta rutina crea un registro que contiene información sobre la
excepción generada. Si existe un manejador para la excepción generada, el sistema
operativo transfiere el control a dicho manejador, en caso contrario aborta la
ejecución del proceso. Ilustración 7 Estados de Proceso
9. CONCLUSIÓN:
Los procesos ligeros son una unidad básica de utilización del CPU consistente en
un juego de registros y un espacio de pila. Comparte el código, los datos y los
recursos con sus hebras pares. Una tarea (o proceso pesado) está formada ahora
por una o más hebras. Además, un proceso ligero consta de tres estados:
ejecutando, listo o bloqueado.
Cada Proceso necesita una serie de recursos, y cada proceso es secuencial para
ser atendido, ocupa un espacio de memoria que contiene el programa ejecutable,
sus datos, su pila, conjunto de registros asociados al proceso. Los beneficios clave
de los hilos se derivan de las implicaciones del rendimiento: se tarda menos tiempo
en crear un nuevo hilo de un proceso que ya existe, en terminarlo, y en hacer un
cambio de contexto entre hilos de un mismo proceso. Al someter a un mismo
proceso a varios flujos de ejecución se mantiene una única copia en memoria del
código, y no varias.
La funcionabilidad de los hilos es variada, y un ejemplo de aplicación que podría
hacer uso de los hilos es un servidor de ficheros de una red de área local. Cada vez
que llega una solicitud de una operación sobre un fichero, se puede generar un
nuevo hilo para su gestión. El servidor gestiona multitud de solicitudes, por tanto, se
pueden crear y destruir muchos hilos en poco tiempo para dar servicio a estas
peticiones. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de
un mismo proceso simultáneamente y en diferentes procesadores.