Traductor

jueves, 2 de junio de 2016

PROCESOS

PROCESOS

Todas las computadoras modernas ofrecen varias cosas al mismo tiempo; quienes están acostumbrados a trabajar con ellas tal vez no estén completamente conscientes de este hecho, por lo que utilizaremos algunos ejemplos para aclarar este punto. Consideremos primero un servidor Web, a donde convergen las peticiones de páginas Web provenientes de todos lados. Cuando llega una petición, el servidor verifica si la página que se necesita está en la caché. De ser así, devuelve la pá- gina; en caso contrario, inicia una petición al disco para obtenerla y, desde la perspectiva de la CPU, estas peticiones tardan eternidades. Mientras se espera el cumplimiento de una petición, muchas más pueden llegar. Si hay varios discos presentes, algunas o todas las demás peticiones podrían dirigirse a otros discos mucho antes de que se cumpla la primera petición. Es evidente que se necesita cierta forma de modelar y controlar esta concurrencia. Los procesos (y en especial los hilos) pueden ayudar en este caso


El modelo del proceso
En este modelo, todo el software ejecutable en la computadora, que algunas veces incluye al sistema
operativo, se organiza en varios procesos secuenciales (procesos, para abreviar). Un proceso
no es más que una instancia de un programa en ejecución, incluyendo los valores actuales del
contador de programa, los registros y las variables. En concepto, cada proceso tiene su propia
CPU virtual; en la realidad, la CPU real conmuta de un proceso a otro, pero para entender el sistema
es mucho más fácil pensar en una colección de procesos que se ejecutan en (pseudo) paralelo,
en vez de tratar de llevar la cuenta de cómo la CPU conmuta de programa en programa. Esta
conmutación rápida de un proceso a otro se conoce como multiprogramación, como vimos en el
capítulo 1.
Creación de un proceso
Los sistemas operativos necesitan cierta manera de crear procesos. En sistemas muy simples o sistemas
diseñados para ejecutar sólo una aplicación (por ejemplo, el controlador en un horno de microondas),
es posible tener presentes todos los procesos que se vayan a requerir cuando el sistema
inicie. No obstante, en los sistemas de propósito general se necesita cierta forma de crear y terminar
procesos según sea necesario durante la operación. Ahora analizaremos varias de estas cuestiones.
Hay cuatro eventos principales que provocan la creación de procesos:
1. El arranque del sistema.
2. La ejecución, desde un proceso, de una llamada al sistema para creación de procesos.
3. Una petición de usuario para crear un proceso.
4. El inicio de un trabajo por lotes.


Terminación de procesos
Una vez que se crea un proceso, empieza a ejecutarse y realiza el trabajo al que está destinado. Sin
embargo, nada dura para siempre, ni siquiera los procesos. Tarde o temprano el nuevo proceso terminará,
por lo general debido a una de las siguientes condiciones:
1. Salida normal (voluntaria).
2. Salida por error (voluntaria).
3. Error fatal (involuntaria).
4. Eliminado por otro proceso (involuntaria).

Jerarquías de procesos
En algunos sistemas, cuando un proceso crea otro, el proceso padre y el proceso hijo continúan asociados
en ciertas formas. El proceso hijo puede crear por sí mismo más procesos, formando una jerarquía
de procesos. Observe que, a diferencia de las plantas y los animales que utilizan la
reproducción sexual, un proceso sólo tiene un padre (pero cero, uno, dos o más hijos).
En UNIX, un proceso y todos sus hijos, junto con sus posteriores descendientes, forman un grupo
de procesos. Cuando un usuario envía una señal del teclado, ésta se envía a todos los miembros
del grupo de procesos actualmente asociado con el teclado (por lo general, todos los procesos activos
que se crearon en la ventana actual). De manera individual, cada proceso puede atrapar la señal,
ignorarla o tomar la acción predeterminada que es ser eliminado por la señal.

Estados de un proceso
Aunque cada proceso es una entidad independiente, con su propio contador de programa y estado
interno, a menudo los procesos necesitan interactuar con otros. Un proceso puede generar cierta salida
que otro proceso utiliza como entrada. En el comando de shell
cat capitulo1 capitulo2 capitulo3 | grep arbol
En la figura 2-2 podemos ver un diagrama de estados que
muestra los tres estados en los que se puede encontrar un proceso:
1. En ejecución (en realidad está usando la CPU en ese instante).
2. Listo (ejecutable; se detuvo temporalmente para dejar que se ejecute otro proceso).
3. Bloqueado (no puede ejecutarse sino hasta que ocurra cierto evento externo).

Implementación de los procesos
Para implementar el modelo de procesos, el sistema operativo mantiene una tabla (un arreglo de estructuras)
llamada tabla de procesos, con sólo una entrada por cada proceso (algunos autores llaman
a estas entradas bloques de control de procesos). Esta entrada contiene información importante
acerca del estado del proceso, incluyendo su contador de programa, apuntador de pila, asignación de
memoria, estado de sus archivos abiertos, información de contabilidad y planificación, y todo lo demás
que debe guardarse acerca del proceso cuando éste cambia del estado en ejecución a listo o bloqueado,
de manera que se pueda reiniciar posteriormente como si nunca se hubiera detenido.
La figura 2-4 muestra algunos de los campos clave en un sistema típico. Los campos en la primera
columna se relacionan con la administración de procesos; los otros dos se relacionan con la
administración de memoria y archivos, respectivamente. Hay que recalcar que los campos contenidos
en la tabla de procesos varían de un sistema a otro, pero esta figura nos da una idea general de
los tipos de información necesaria.
Modelación de la multiprogramación
Cuando se utiliza la multiprogramación, el uso de la CPU se puede mejorar. Dicho en forma cruda:
si el proceso promedio realiza cálculos sólo 20 por ciento del tiempo que está en la memoria, con
cinco procesos en memoria a la vez la CPU deberá estar ocupada todo el tiempo. Sin embargo, este
modelo es demasiado optimista, ya que supone que los cinco procesos nunca estarán esperando
la E/S al mismo tiempo.
La figura muestra el uso de la CPU como una función de n, a lo cual se le conoce como el grado
de multiprogramación.


2 comentarios: