viernes, 6 de mayo de 2011

PROCESOS

Universidad Autónoma de Santo Domingo  
                                                                                                        Escuela de Informática


Profesor:
José Binet


Asignatura:
INF-324  Sistema Operativo


Semestre: 
 2011-1

Sección:
01


Tema 7:
Procesos


Sustentantes del Grupo VII
Los Procesadores:

Eliana Suazo DC-6254
Angstrom Mena 100012920
Yaneri Reyna BB-3290
Carlos Ramírez CF-0044

       

  


Indice.

Introducción
  1. Definición de un proceso.
  2. Contador de programa.
  3. Memoria de los procesos
  4. Modelo de Procesos .
  5. Estados De Un proceso.
  6. Transiciones entre estados.
  7. Bloque de control del proceso. 
  8. Creación de procesos.
  9. Listas de procesos.
  10. Motivación.
  11. Interrupciones y excepciones. 
  12. Algoritmos.
  13. Conclusiones
  14. Sugerencias
  15. Referencias
  16. Examen del tema








Introducción:

El siguiente documento describe las características que presentan los sistemas operativos para la administración de procesos en los sistemas mono y multiprocesadores. Se comienza con una introducción sobre la funcionalidad de un proceso para luego entrar en los detalles de implementación típicos de los sistemas operativos. Aún no termine la totalidad del documento pero lo quiero publicar en Internet para obtener feedback por parte de los lectores interesados en el mismo.




1.           Definición de un proceso.
Un proceso es un programa en ejecución, pero esto no quiere decir que un programa por sí mismo es un proceso, un programa es una entidad pasiva.
Por ejemplo un exe es una entidad pasiva guardada en el disco, cuando nosotros ejecutamos el exe entonces se convierte en una entidad activa con un contador de programa que especifica la siguiente instrucción a ejecutarse y un conjunto de recursos asociados.
Entre los tipos de proceso se encuentran:
·      Los procesos de tiempo real: Son aquellos en el que tiempo de respuesta es crítico para que no superen un tiempo límite.
·      Los procesos de segundo plano (procesos de cálculo y servidores): Son los que no tienen interacción con el usuario y cuyo tiempo de respuesta no es crítico.
·      Los procesos interactivos: Estos no suelen usar mucho tiempo de cómputo, pero estos procesos al ser requeridos deben tener un tiempo de respuesta rápido, ya que por lo general es cuando un usuario los pide.

2.           Contador de programa.
Cada proceso tiene su program counter, y avanza cuando el proceso tiene asignado el recurso procesador. A su vez, a cada proceso se le asigna un número que lo identifica entre los demás: identificador de proceso (process id).
3.           Memoria de los procesos
Un proceso en memoria se constituye de varias secciones:
·      Código (text): Instrucciones del proceso.
·      Datos (data): Variables globales del proceso.
·      Memoria dinámica (Heap): Memoria dinámica que genera el proceso.
·      Pila (Stack): Utilizado para preservar el estado en la invocación anidada de procedimientos y funciones.

4.           Modelo de Procesos

El concepto central de cualquier Sistema Operativo es el de proceso: una abstracción de un programa en ejecución también llamada tarea. No hay un acuerdo universal sobre una definición de proceso, pero sí algunas definiciones aceptadas. 
·      Un programa que se está ejecutando.
·      Una actividad asincrónica.
·      El emplazamiento del control de un procedimiento que está siendo ejecutado.
·      Aquello que se manifiesta por la existencia en el Sistema Operativo de un bloque de control de proceso.
·      Aquella entidad a la cual son asignados los procesadores.
·      La unidad despachable.

En sistemas de multiprogramación la CPU alterna de programa en programa, en un esquema de seudo paralelismo, es decir que la CPU ejecuta en cierto instante un solo programa, intercambiando muy rápidamente entre uno y otro.
El paralelismo real de hardware se da en las siguientes situaciones: 
·      En ejecución de instrucciones de programa con más de un procesador de instrucciones en uso simultáneamente.
·      Con la superposición de ejecución de instrucciones de programa con la ejecución de una o más operaciones de entrada / salida.

El objetivo es aumentar el paralelismo en la ejecución. El modelo de procesos posee las siguientes características:
·      Todo el software ejecutable, inclusive el Sistema Operativo, se organiza en varios procesos secuenciales o procesos.
·      Un proceso incluye al programa en ejecución y a los valores activos del contador, registros y variables del mismo.
·      Conceptualmente cada proceso tiene su propia CPU virtual.

Si la CPU alterna entre los procesos, la velocidad a la que ejecuta un proceso no será uniforme, por lo que es necesario aclarar lo siguiente:

·      Que los procesos no deben programarse con hipótesis implícitas acerca del tiempo.
·      Que normalmente la mayoría de los procesos no son afectados por la multiprogramación subyacente de la CPU o las velocidades relativas de procesos distintos.
·      Un proceso es una actividad de un cierto tipo, que tiene un programa, entrada, salida y estado.
·      Un solo procesador puede ser compartido entre varios procesos con cierto “algoritmo de planificación”, el cual determina cuándo detener el trabajo en un proceso y dar servicio a otro distinto.



5.           Estados De Un proceso.

·      Nuevo: Es cuando el proceso se está creando.
·      Ejecución: Es cuando se están ejecutando instrucciones.
·      Espera: Es cuando el proceso está esperando que ocurra algún evento.
·      Listo: Es cuando el proceso está a la espera de ser asignado a un procesador.
·      Terminado: Es cuando el proceso ha terminado su ejecución.
Los nuevos estados Nuevo y Terminado son útiles para la gestión de procesos. En este modelo los estados Bloqueado y Listo tienen ambos una cola de espera. Cuando un nuevo proceso es admitido por el sistema operativo, se sitúa en la cola de listos. A falta de un esquema de prioridades ésta puede ser una cola FIFO. Los procesos suspendidos son mantenidos en una cola de bloqueados. Cuando se da un suceso se pasan a la cola de listos los procesos que esperaban por ese suceso.
Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar a continuación.
Hay que recalcar que estos nombres son arbitrarios, por lo que en cada sistema operativo pueden cambiar, sin embargo todo sistema operativo los tiene, es por eso que a la hora de programar en java no representa ningún problema.
·      Diagrama de estados y transiciones de los procesos.

6.           Transiciones entre estados.
·      Nuevo –> Listo
– Al crearse un proceso pasa inmediatamente al estado listo.
·      Listo –> Ejecutando
– En el estado de listo, el proceso solo espera para que se le asigne un procesador para ejecutar (tener en cuenta que puede existir más de un procesador en el sistema). Al liberarse un procesador el planificador (scheduler) selecciona el próximo proceso, según algún criterio definido, a ejecutar.
·      Ejecutando –> Listo
– Ante una interrupción que se generé, el proceso puede perder el recurso procesador y pasar al estado de listo. El planificador será el encargado de seleccionar el próximo proceso a ejecutar.
·      Ejecutando –> Bloqueado
– A medida que el proceso ejecuta instrucciones realiza pedidos en distintos componentes (ej.: genera un pedido de E/S). Teniendo en cuenta que el pedido puede demorar y, además, si está en un sistema multiprogramado, el proceso es puesto en una cola de espera hasta que se complete su pedido. De esta forma, se logra utilizar en forma más eficiente el procesador.
·      Bloqueado –> Listo
– Una vez que ocurre el evento que el proceso estaba esperando en la cola de espera, el proceso es puesto nuevamente en la cola de procesos listos.
·      Ejecutando -> Terminado
– Cuando el proceso ejecuta su última instrucción pasa al estado terminado. El sistema libera las estructuras que representan al proceso
7.           Bloque de control del proceso. 
El Bloque de control del proceso ó BCP o en inglés PCB (Process Control Block) es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el sistema operativo crea el BCP correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso.
Cuando el proceso termina, su BCP es borrado y el registro puede ser utilizado para otros procesos. Un proceso resulta conocido para el sistema operativo y por tanto elegible para competir por los recursos del sistema sólo cuando existe un BCP activo asociado a él. El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecución del proceso y de la utilización de recursos. La información almacenada en un BCP incluye típicamente algunos o todos los campos siguientes: 
·      Estado CPU: El contenido de esta estructura estará indefinido toda vez que el proceso está en estado ejecutando (puesto que estará almacenado en la CPU indicada por procesador). Registro de flags.
·      Procesador: [1...#CPU]: Contendrá el número de CPU que está ejecutando al proceso (si está en estado ejecutando), sino su valor es indefinido.
·      Memoria: Describe el espacio virtual y/o real de direccionamiento según la arquitectura del sistema.
·      Contendrá las reglas de protección de memoria así como cual es compartida, etc...
·      Estado del proceso: ejecutando, listo o bloqueado.
·      Recursos: Recursos de software (archivos, semáforos, etc.) y hardware (dispositivos, etc.).
·      Planificación: Tipo de planificador.
·      Prioridad: Podrá incluir una prioridad externa de largo aliento, o en su defecto una prioridad interna dinámica de alcance reducido.
·      Contabilización: Información contable como ser cantidad de E/S, fallos de páginas (page faults), consumo de procesador, memoria utilizada, etc.
·      Ancestro: Indica quien creó este proceso.
·      Descendientes: Lista de punteros a PCBs de los hijos de este proceso.
Algunos sistemas de multiprogramación incluyen información de mantenimiento con el propósito de facturar a los usuarios individuales el tiempo de procesador, el almacenamiento, las operaciones de E/S y otras utilizaciones de recursos.
Una vez creado, el BCP se rellena con los atributos definidos como parámetros que se hallan en la plantilla del proceso o que son especificados como parámetros de la llamada al sistema operativo crear_proceso. En ese momento el sistema operativo suele asignar valores a otros campos. Por ejemplo, cuando se crea un proceso, los registros e indicadores hardware se fijan a los valores proporcionados por el cargador/enlazador. Cada vez que un proceso queda suspendido, el contenido de los registros del procesador es generalmente guardado en la pila, y el puntero al marco de la pila en cuestión se almacena en el BCP. De este modo los valores de los registros son restaurados cuando el proceso es seleccionado para ejecutarse nuevamente. 
8.           Creación de procesos.
·      Los procesos de un sistema son creados a partir de otro proceso.
·      Al creador se le denomina padre y al nuevo proceso hijo. Esto genera una jerarquía de procesos en el sistema.
·      En el diseño del sistema operativo se debe decidir, en el momento de creación de un nuevo proceso, cuales recursos compartirán el proceso padre e hijo. Las opciones son que compartan todo, algo o nada.
·      Una vez creado el nuevo proceso tendrán un hilo (PC) de ejecución propia. El sistema genera un nuevo PCB para el proceso creado.
·      Ej.: UNIX
– UNIX provee el system call fork para la creación de un nuevo proceso.
– La invocación a esta función le retorna al padre el número de process id del hijo recién creado y al hijo el valor 0. El hijo comienza su ejecución en el retorno del fork.
– Además, se provee del system call exec que reemplaza el espacio de memoria del proceso por uno nuevo.
int main() {
pid_t pid;
/* fork another process */
pid = fork ();
if (pid < 0) { /* error occurred */
fprintf(stderr, "Fork Failed");
exit(-1);
}
if (pid == 0) /* child process */
execlp("/bin/ls", "ls", NULL);
else {  /* parent */
wait (NULL);
printf ("Child Complete");
exit(0);
      }
}

9.           Listas de procesos.

El Sistema Operativo mantiene listas de Bloque de Control de procesos para cada uno de los estados del sistema.
Cada proceso pertenece a una única lista. Posee una lista de procesos prepara dos, una lista de los bloquea dos y en el caso de sistemas multiprocesador es una lista de procesos activos.

10.       Motivación.

 

En principio, una computadora que dispone de un único microprocesador solamente puede ejecutar un programa al mismo tiempo. No es posible ejecutar otro programa hasta que ha finalizado el anterior. 
No obstante, sería posible simular la ejecución simultánea de dos o más programas si fuera posible detener un programa en cualquier momento y reanudarlo posteriormente sin pérdida de información. Los programas alternarían su ejecución durante cortos periodo de tiempo aparentando que se ejecutan todos a la vez. Esto se denomina ejecución concurrente.
Además, durante la ejecución de un programa existen muchos tiempos muertos donde no es necesario el uso del microprocesador. Se trata de los momentos en los que el programa está esperando a que finalice una operación de entrada/salida, por ejemplo, una lectura desde el disco duro. Estos tiempos muertos podrían aprovecharse para ejecutar otro programa.
11.       Interrupciones y excepciones. 
El SO ocupa una posición intermedia entre los programas de aplicación y el hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones en las que es el hardware el que necesita que se ejecute código del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones: 
·      Algún dispositivo de E/S necesita atención. 
·      Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación). 
En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa.
Según los dos casos anteriores tenemos las interrupciones y las excepciones: 

·      Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que la operación de la que se estaba ocupando, ya ha terminado. 
·      Excepción: una situación de error detectada por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por parte del SO. 
Al interrumpirse la ejecución de un proceso se salva su estado en el BCP, como se puede observar en la siguiente imagen:

Tratamiento de las interrupciones

Una interrupción se trata en todo caso, después de terminar la ejecución de la instrucción en curso. 
El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la interrupción, ante la cual debe poder identificar el dispositivo que la ha causado.

Importancia de las interrupciones

El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una aplicación, mientras otra permanece a la espera de que concluya una operación en un dispositivo de E/S.
El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el dispositivo, se continúe ejecutando.
En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción. Por ello las interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas).

Excepciones

Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la unidad de control lanza una excepción para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una interrupción, la instrucción en curso es abortada. Las excepciones al igual que las interrupciones deben estar identificadas. 

Clases de excepciones

Las instrucciones de un programa pueden estar mal construidas por diversas razones: 
·      El código de operación puede ser incorrecto.
·      Se intenta realizar alguna operación no definida, como dividir por cero.
·      La instrucción puede no estar permitida en el modo de ejecución actual.
·      La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso.

Importancia de las excepciones

El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de ejecución de la CPU y los mecanismos de protección de la memoria, que las aplicaciones realicen operaciones que no les están permitidas. En cualquier caso, el tratamiento específico de una excepción lo realiza el SO. 
Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y éste es el que trata la situación como convenga.
Es bastante frecuente que el tratamiento de una excepción no retorne al programa que se estaba ejecutando cuando se produjo la excepción, sino que el SO aborte la ejecución de ese programa. Este factor depende de la pericia del programador para controlar la excepción adecuadamente.


12.       Algoritmos.

Algoritmo de Turno Rotatorio (Round Robin, RR):

La desventaja principal es que cambia los procesos en ejecución con demasiada frecuencia. Lo que supone una pequeña pérdida de tiempo. El tiempo perdido depende, del ‘tiempo de ejecución dado al proceso’ (Quantum). Para valores de ‘Quantum’ pequeños, el resultado es malo. Para valores grandes el algoritmo equivale al ‘FCFS’.

Turno Rotatorio Virtual (Virtual Round Robin, VRR):

Intenta solucionar un problema que afecta al ‘quanto’ Estos procesos abandonan la CPU, para no consumir el quanto completo. (Ráfagas pequeñas) Por lo que deben esperar de nuevo en la cola de ‘listos’ Los procesos con ráfagas grandes consumen un cuarto del quanto completo.

Algoritmo HRRN:

Es el que muestra mayor tasa de respuesta Al ser no apropiativo, selecciona el proceso con mayor tasa de respuesta;
Trespuesta = (Tespera + Tservicio) / Tservicio
El algoritmo pone a ejecutar el proceso con mayor tasa de respuesta. Donde el tiempo de espera es el insumido desde que el proceso pasa de la cola de nuevos a la cola de listos. s = Tiempo de llegada + Tiempo actual.

Algoritmos Multiproceso.
Se utilizan múltiples colas en cada algoritmo. Es necesario definir el algoritmo que elige entre las colas, y asigna un proceso a estas. La primera cola es un FCFS Para la segunda empleamos un Round Robin (RR) Y a la hora de seleccionar entre colas utilizamos las prioridades Las colas multinivel utilizan la retroalimentación, según esto un proceso no tiene que estar siempre en la misma cola Además de los algoritmos necesarios para la cola multinivel, se necesita un algoritmo para cambiar entre colas Si el proceso consume el quanto pasa a la siguiente cola y si termina, regresa a la cola inicial.
















CONCLUSIÓN.

Ya conocimos que es un proceso, ya sabemos quién controla los procesos de nuestro computador pero también podemos decir que:
Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos.
El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación.
El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso.
Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar a continuación.
La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.








Sugerencias.

•    Esperar que el sistema operativo termine un proceso para luego comenzar otro, o de lo contrario se produce lo que llamamos dealock.

•    Planificar antes de comenzar un proceso porque de esta manera se asegure un final feliz.


  
Referencia.

•     Tanenbaum, Andrew S., Sistemas operativos modernos, 2ª Edition, Prentice Hall, 1997.  

•     Stallings, W. Operating Systems, 2ª Edition, Prentice Hall, 1995.


•     Bic. L Shaw, A. C. The Logical Design of Operating System, 2ª Edition, Prentice-Hall 1988.

•     http://www.mastermagazine.info/termino/6377.php Escrito por Marcos Guglielmetti.




Examen del Tema

Contesta:
1)        ¿Qué es un proceso?
2)        ¿Cuáles son las secciones  en que se constituye Un proceso en memoria?

Selecciona
Es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular.

a)    Process Control Block.
b)    Memoria de los Procesos.
c)    Listas de procesos.

¿Cuáles son los Estados de los Procesos?

a)        Motivacion, Interrupciones y excepciones.
b)        Nuevo, Ejecución, Espera, Listo y Terminado.
c)         Creacion y terminado.

No hay comentarios:

Publicar un comentario