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
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.
Muy bien Brou...
ResponderBorrargracias compa jaja
ResponderBorrar