Resumen Procesos Tannenbaum
Enviado por sowi_12 • 8 de Febrero de 2013 • 2.966 Palabras (12 Páginas) • 848 Visitas
Capitulo 2: procesos e hilos
2.1 Procesos
Un proceso es un programa en ejecución, una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados.
2.1.1 El modelo del proceso
Se organiza en varios procesos secuenciales. Cada proceso tiene su CPU virtual. La CPU real conmuta de un proceso a otro.
Multiprogramación: la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y sean ejecutados al "mismo tiempo" en una CPU (en realidad estamos ante un pseudo-paralelismo, dado que en una única CPU sólo puede haber un proceso ejecutándose a la vez).
La diferencia entre un proceso y un programa es sutil pero crucial. Un proceso es una actividad de cierto tipo. Varios procesos pueden compartir un solo procesador mediante el uso de un algoritmo de planificación para detener el trabajo.
Si un programa se está ejecutando por duplicado cuenta como dos procesos, son procesos distintos.
2.1.2 Creación de un proceso
Hay cuatro eventos principales para crear procesos:
• Arranque del sistema.
• La ejecución, desde un proceso, de una llamada al sistema.
• Una petición de usuario para crearlo.
• El inicio de un trabajo por lotes.
Cuando se arranca un SO se crean varios procesos. Algunos de ellos son procesos en 1er plano (interactúan con los usuarios y realizan trabajos para ellos). Otros son en 2º plano (no asociados a los usuarios, sino con una función específica).
En Windows la llamada a una función de Win32 (createProcess) maneja la creación de procesos y carga el programa correcto. Tiene 10 parámetros que incluyen el programa a ejecutar, los parámetros de la line de comandos, varios atributos de seguridad, información de prioridad, etc. Win32 tiene 100 funciones más para administrar y sincronizar procesos.
En UNIX, el espacio de direcciones inicial de hijo es una copia del padre. En Windows los espacios de direcciones de padre e hijo son distintos desde el principio.
2.1.3 Terminación de procesos
Las condiciones de un proceso son:
1. Salida normal (voluntaria)
2. Salida por error (voluntaria)
3. Error fatal (involuntaria)
4. Eliminado por otro proceso (involuntaria)
La primera razón de que termine un proceso puede ser por una llamada al sistema.
• Exit (UNIX), exitprocess (Windows): cuando un compilador ha compilado el programa que recibe, ejecuta una llamada al sistema para indicar al sistema operativo que ha terminado.
La segunda razón de que un proceso termine es que el proceso descubra un error.
La tercera razón de que termine un proceso es un error fatal producido por el proceso, debido a un error del programa. En algunos sistemas como UNIX un proceso puede indicar al SO que desea manejar ciertos errores por si mismo que interrumpe en vez de finalizar.
La cuarta razón de que termine un proceso puede ser la eliminación de un proceso a través de una llamada al sistema. En UNIX, kill. En Win32 es TerminateProcess. En ambas el proceso eliminador tiene que tener la suficiente autorización.
2.1.4 Jerarquías de procesos
En UNIX los procesos con sus hijos y sus siguientes sucesores, hacen un grupo de procesos. De manera individual, cada proceso puede atrapar, ignorar o tomar una acción predeterminada que es eliminada por una señal.
En Windows no hay concepto de jerarquía de procesos. Todos los procesos son iguales. Cuando se crea un proceso, el padre recibe un indicador especial (token, manejador) que puede utilizar para controlar al hijo. Pero puede utilizarla con otros procesos. Así invalida la jerarquía.
2.1.5 Estados de un proceso
Un proceso puede generar cierta salida que otro proceso utiliza de entrada. En comando Shell: cat capitulo1 capitulo2 capitulo3 | grep árbol
El primer proceso, Cat, concatena 3 archivos que los envía como salida. El 2º proceso, grep, selecciona las líneas que contengan la palabra árbol. Puede que grep este preparado antes que la misma entrada, entonces debe bloquearse hasta que esté lista.
Un proceso se puede encontrar en 3 estados:
• En ejecución (usando la CPU).
• Listo (ejecutable; se detuvo temporalmente para dejar que se ejecute otro proceso).
• Bloqueado (no puede ejecutarse hasta que no ocurra cierto proceso externo).
Hay 4 transiciones posibles entre estos 3 estados:
• 1: cuando el SO descubre que un proceso no puede continuar justo en ese momento. Llamada PAUSE
• 2 y 3: son producidas por el planificador de procesos, sin que el proceso sepa de ellas. La 2 ocurre cuando el planificador decide que el proceso en ejecución debe detenerse para dejar pasar a otro proceso. La 3 ocurre cuando todos los demás han tenido su parte de tiempo en la CPU y el 1er proceso deba ejecutarse de nuevo.
• 4: cuando se produce el evento externo por el que un proceso estaba esperando.
2.1.6 Implementación de los procesos
La tabla de procesos implementa el modelo de procesos con solo una entrada (bloques de control de procesos) por cada proceso. Contiene información importante acerca del estado de proceso.
Algunos de los campos de una entrada típica a la tabla de procesos.
El vector de interrupciones es un vector que contiene el valor que apunta a la dirección en memoria del gestor de una interrupción. Los vectores de interrupción se almacenan en una tabla en una zona de memoria, la llamada tabla de vectores de interrupción. Cuando se atiende una petición de interrupción de número n, transfiere el control a la dirección indicada por el elemento enésimo de dicha tabla.
Lo que hace el nivel más bajo de SO cuando ocurre una interrupción es:
• El hardware mete el contador del programa a la pila
• “ “ carga el nuevo contador del programa del vector de interrupciones
• Procedimiento en el lenguaje ensamblador guarda los registros
• “ “ “ “ establece la nueva pila
• El servicio de interrupciones de C se ejecuta (lee y guarda la entrada en el búfer)
• El planificador decide qué proceso se va a ejecutar a continuación
• Procedimiento en C regresa al código de ensamblador
• “ “ lenguaje ensamblador inicia el nuevo proceso actual
2.2 Hilos
Hilos: es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo. Es cada subproceso dentro
...