Actividad 3
Actividad 3
Actividad 3
CAMPUS: COMITANCILLO
Nuevo Terminado
preparado Ejecución
Bloqueado
Representar con ejemplos de la vida real los conceptos: Proceso, Programa y Procesador. (3pts)
Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador
de programa, los registros y las variables. Conceptualmente cada uno de estos procesos tienen su
propia CPU virtual. Desde luego, en la realidad la verdadera CPU conmuta de un proceso a otro.
Como ejemplos de la vida real puedo definir de una manera muy fácil los conceptos de proceso
programa y procesador.
Un ejemplo muy claro seria cuando se talan los arboles para obtener madera para la creación de
muebles, se habla de un cierto proceso.
Los arboles son talados de los bosques, y estos son llevadas a una fábrica de madera, donde los
troncos de los árboles serán procesados, se cortan los troncos en paneles de maderas y seran
pulidas por ciertas maquinas cortadoras y pulidoras para convertirlas en madera fina para la
creación de muchos muebles.
En este caso el proceso son las etapas que pasan los troncos para convertirse en madera fina.
Diferenciar estos conceptos indicando su utilidad: Algoritmo, Programa, Proceso, Tarea, Job,
Sesión, Lote. (5pts)
Por otro lado, un hilo (thread o hebra) es una entidad más reducida capaz de convivir junto a otros
hilos bajo el contexto de un único proceso, permitiendo compartir la información de estado, el
área de memoria y/o los recursos asociados a ese proceso.
Dentro de un proceso puede haber uno o más hilos de control cada uno con:
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.
Investigar los mecanismos empleados para la sincronización de procesos, así como, diferenciar
los que existen para los threads y multithreads.(6pts).
La comunicación entre procesos: necesaria si se desea que varios procesos puedan colaborar para
realizar una misma tarea.
Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos, son en
conjunto conocidos como un proceso. El hecho de que los hilos de ejecución de un mismo proceso
compartan los recursos hace que cualquiera de estos hilos pueda modificar éstos. Cuando un hilo
modifica un dato en la memoria, los otros hilos acceden e ese dato modificado inmediatamente a
en la siguiente figura podemos observar un ejemplo de un hilo de ejecución.
Sincronización de hilos
Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser
archivos abiertos. Cualquier modificación de un recurso desde un hilo afecta al entorno del resto
de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la actividad de los distintos
hilos para que no interfieran unos con otros o corrompan estructuras de datos.
Una ventaja de la programación multihilo es que los programas operan con mayor velocidad en
sistemas de computadores con múltiples CPUs (sistemas multiprocesador o a través de grupo de
máquinas) ya que los hilos del programa se prestan verdaderamente para la ejecución
concurrente. En tal caso el programador necesita ser cuidadoso para evitar condiciones de carrera
(problema que sucede cuando diferentes hilos o procesos alteran datos que otros también están
usando), y otros comportamientos no intuitivos. Los hilos generalmente requieren reunirse para
procesar los datos en el orden correcto. Es posible que los hilos requieran de operaciones
atómicas para impedir que los datos comunes sean cambiados o leídos mientras estén siendo
modificados, para lo que usualmente se utilizan los semáforos. El descuido de esto puede generar
interbloqueo.
Es decir, cuando todos los procesos aseguran algunos recursos, pero quedan a la espera de otros,
los cuales han sido asignados a procesos diferentes. Estos a su vez, necesitan los recursos
asignados a los primeros procesos. De esta forma, cada proceso asegura algún recurso, pero
queda en espera de otro.
Las soluciones del interbloqueo se presentan a través de tres estrategias: prevención, detección y
predicción del mismo.
Prevención: se logra a partir del diseño del sistema operativo impidiendo que exclusión mutua,
retención y espera y no apropiación puedan darse.
Detección: aquí el interbloqueo puede presentarse, sin embargo, el sistema operativo ejecuta
periódicamente un algoritmo que crea estrategias de recuperación ante la aparición del círculo
vicioso de espera. Las estrategias de recuperación pueden ser abandono, retroceso, abandono
controlado o apropiación total de recursos.