Buscar este blog

martes, 10 de octubre de 2017

2.2 Estados y transiciones de los procesos

2.2 Estados y transiciones de los procesos.

Un proceso puede estar en cualquiera de los siguientes tres estados: Listo, En ejecución y Bloqueado.
Los procesos en el estado listo son los que pueden pasar a estado de ejecución si el planificador los selecciona. Los procesos en el estado ejecución son los que se están ejecutando en el procesador en ese momento dado. Los procesos que se encuentran en estado bloqueado están esperando la respuesta de algún otro proceso para poder continuar con su ejecución. Por ejemplo operación de E/S.
Un proceso puede variar entre 5 distintos estados:
New: cuando el proceso esta siendo creado.
Running: cuando el proceso se esta ejecutando.
Waiting: cuando el proceso esta esperando que se cumpla algún otro evento.
Ready: cuando el proceso esta pronto para ejecutar, esperando por la CPU.
Terminated: cuando el proceso esta terminado.
Estado de los Procesos.Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario.
Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.
1.- Estados activos: Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en:
Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).
Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida).
2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio.
Son de dos tipos:
·         Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.
·         Suspendido programado. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.
Estados de los procesos
•Nuevo: El proceso es creado.
•Ejecución: Se ejecutan instrucciónes.
•Espera: El proceso esta en espera por la ocurrencia de algún evento.
•Listo: El proceso esta esperando a que le asignen el procesador.
•Terminado: El proceso finaliza su ejecución.
•Diagrama de estados de los procesos.
Información asociada con cada proceso:
•Estado del proceso
•Program counter
•Registros del CPU
•Información de planificación del CPU
•Memoria
•Información para administración
•Información de estatus de E/S
Creación de Procesos.
En UNIX el lanzamiento de procesos se realiza a través de la llamada al sistema fork().

Para utilizar esta llamada al sistema se emplea el header  <unistd.h>.

Su sintaxis es:
                        Pid=fork();

Una llamada exitosa a fork() crea un proceso que es una copia del proceso que lo invoco. Duplica las variables del proceso original con una excepción, el nuevo proceso creado recibe le nombre de proceso hijo. El proceso que lo creo se denomina proceso padre, y el sistema devuelve un 0 al proceso hijo y un valor positivo distinto de 0 (pid del hijo) al proceso  padre.

Después de la llamada exitosa a fork(), tanto el proceso padre como el hijo corren en forma simultanea a partir del punto siguiente a la invocación del fork.

La figura siguiente muestra esta situación:


…..
Printf(“Antes del fork \n”);
Pid=fork();
Printf(“Después del fork\n”);
…….

AC
A








Antes
------------------------------------------ fork   ------------------------------------------------------------
Después
…..
Printf(“Antes del fork \n”); Pid=fork();

Printf(“Después del fork\n”);
…….

AC
…..
Printf(“Antes del fork \n”); Pid=fork();

Printf(“Después del fork\n”);
…….

AC
B
A









En la figura se muestran 3 líneas de código de un proceso; un printf, un fork y otro printf.
Hay 2 secciones en la figura: antes y después. La sección antes muestra la situación antes de la invocación al fork. Sólo existe el proceso A. El Apuntador AC (apuntador de código) señala a la instrucción que se está ejecutando. Como se está indicando el primer printf  Imprime el texto “Antes del fork”.
La sección después muestra la situación inmediatamente después de la llamada a fork. Existen ahora 2 procesos: Ay B. A es el proceso original, es decir, el proceso padre. B es una copia de A, es decir el proceso hijo. Ambos corren en forma simultánea. Dado que el apuntador AC, señala al último printf, se imprime el texto “Después del fork”. Se imprime 2 veces, una por parte del padre y la otra por parte del hijo.
h
Descriptor  de procesos y recursos.
            Es una estructura de datos asociada a una entidad informática ya sea un (Recurso o Proceso), en la cual se indica y actualiza todas las informaciones relativas a dicha entidad.
En el caso de un proceso la información general  que contiene es:
1).-      Identificador: Que puede ser interno y externo.
                                   - Interno:       Sistemas.
                                   - Externo:      Usuario.
2).-      Descripción de la máquina virtual asociada: como espacio virtual asignado, tipo de mapeo, tipo de acceso.
3).-      Descripción de los recursos de la máquina que usa como: Lista de recursos que el proceso tiene  derecho a solicitar, dirección real en la memoria principal, estado de las         variables internas  del CPU, prioridad, etc.
4).-      Estados funcionales del proceso:    Los  estados  de  los  procesos  son  internos  del sistema operativo  y  transparente  al   usuario.  Para  éste,  su proceso  estará  siempre en ejecución independientemente  del   estado  en que se encuentre internamente el sistema.

Los  procesos  se  pueden  encontrar  en  tres estados.

             Estados de los procesos.

            Un proceso puede encontrarse en estado de ejecución, bloqueado o listo (que también se llama ejecutable).
            De estos estados de los procesos se derivan las siguientes transiciones y estados:

Transición: El paso de un estado a otro.

Transiciones:

            1. El proceso se bloquea en la entrada.
            2. El planificador elige otro proceso.
            3. El planificador elige este proceso.
            4. La entrada se vuelve disponible.

            Estados:

            1. Ejecución (que en realidad hace uso del CPU en ese instante).
            2. Bloqueado (incapaz de correr hasta que suceda algún evento externo.
3. Listo (ejecutable; se detiene temporalmente para permitir que se ejecute otro
     proceso).

En estos tres estados son posibles cuatro transiciones:

1.         Ocurre cuando un proceso descubre que no puede continuar. En algún sistema el proceso debe ejecutar una llamada al sistema, BLOCK, para entrar en estado bloqueado.
2 y 3.   Son ocasionadas por el planificador del proceso, que es parte del sistema operativo sin que el proceso llegue a saber de ella.
2.         Ocurre cuando el planificador decide que el proceso en ejecución ya ha corrido el tiempo suficiente y es tiempo de permitir que otro proceso tome tiempo de CPU.
3.         Ocurre cuando todos los procesos han utilizado su parte del tiempo y es hora de que el primer proceso vuelva a correr.
4.         Ocurre cuando aparece el evento externo que estaba esperando un proceso (como el arribo de alguna entrada). Si ningún otro proceso corre en ese instante, la transición  3 se  activará de inmediato y el proceso iniciara su ejecución, de lo contrario tendrá que esperar, en estado listo.

            Los estados de los procesos se pueden dividir en dos tipos:  activos  e  inactivos.

No hay comentarios:

Publicar un comentario

6.6 VALIDACIÓN Y AMENAZA

Amenazas a la seguridad en el acceso al sistema: ·   Intrusos. ·   programas malignos. Intrusos: ·   Piratas o hackers:  individuos...