Publicado el 2 de Junio del 2019
946 visualizaciones desde el 2 de Junio del 2019
554,0 KB
78 paginas
Creado hace 7a (06/02/2017)
Tema 3
Descripción y Control de Procesos
Stallings: 3.1 – 3.4
Contenido
Introducción: qué es un proceso.
Estados de un proceso: modelos de colas.
Creación y terminación de procesos.
Descripción de procesos: estructuras de
control.
Control de procesos.
Modos de ejecución.
A.Ortigosa
Principales requisitos de los
sistemas operativos
Intercalar la ejecución de múltiples procesos
para maximizar la utilización del procesador
ofreciendo a la vez un tiempo de respuesta
razonable.
Asignar los recursos a los procesos.
Dar soporte a la comunicación entre procesos
y la creación de procesos por parte del
usuario.
A.Ortigosa
Proceso
También se llama tarea.
Ejecución de un programa individual.
Traza del proceso:
Listado de la secuencia de instrucciones que se
ejecutan para dicho proceso.
Dintinguir entre Proceso (concepto dinámico) y
Programa (concepto estático).
Proceso = Código (texto)
+ Actividad (contador, registros, ficheros, E/S)
+ Pila (datos temporales, parámetros,...)
+ Datos (globales)
A.Ortigosa
Dirección
0
100
5.000
8.000
12.000
Memoria principal
Contador de programa
8000
Distribuidor
Proceso A
Proceso B
Proceso B
Proceso C
Proceso C
Figura 3.1. Instantánea de un ejemplo de ejecución (Figura 3.3)
en el ciclo de instrucción 13.
(a) Traza del proceso A
(b) Traza del proceso B
(c) Traza del proceso C
5000 = Dirección de comienzo del programa del proceso A
8000 = Dirección de comienzo del programa del proceso B
12000 = Dirección de comienzo del programa del proceso C
Figura 3.2. Trazas de los procesos de la Figura 3.1.
Fin de plazo
Fin de plazo
Solicitud de E/S
Fin de plazo
Fin de plazo
100 = Dirección de comienzo del programa distribuidor
Las áreas sombreadas indican ejecución del proceso distribuidor;
la primera y tercera columna cuentan los ciclos de instrucción;
la segunda y cuarta columna muestran la dirección de la
instrucción a ejecutar.
Figura 3.3. Traza combinada de los procesos de la Figura 3.1.
- Procedimiento empleado en Multiprogramación y Tiempo Compartido
Hardware
Interrupción
Interrupción
Proceso P0
Sistema Operativo
Proceso P1
Guarda estado en BCP0
Rutina de atención interr + Planificador
Recupera estado de BCP1
Guarda estado en BCP1
Rutina de atención interr + Planificador
Recupera estado de BCP0
Modo del Procesador:
Modo
Usuario
Modo
Núcleo
Modo
Usuario
Modelo de proceso con dos
estados
Un proceso puede estar en uno de dos estados:
Ejecución.
No Ejecución.
Expedir
Entrar
No
No ejecución
Ejecución
Salir
Ejecución
Ejecución
Pausar
(a) Diagrama de transición de estados
A.Ortigosa
Proceso en estado de No Ejecución
en una cola
Entrar
Cola
Expedir
Salida
Proce-
sador
Pausa
(b) Diagrama de colas
Planificador
a corto plazo
(Dispatcher)
A.Ortigosa
Procesos
No Ejecución:
Listos para ejecutarse.
Bloqueado:
Esperan a que termine una operación de E/S.
El distribuidor podría no seleccionar
exactamente el proceso que está en el
extremo más antiguo de la cola porque
podría estar bloqueado.
A.Ortigosa
Un modelo de cinco estados
Ejecución.
Listo.
Bloqueado.
Nuevo.
Terminado.
A.Ortigosa
Admitir
Nuevo
Nuevo
Listo
Listo
Expedir
Fin del
tiempo
Ejecución
Ejecución
Salir
Terminado
Terminado
Ocurre
suceso
Espera
suceso
Bloqueado
Bloqueado
Figura 3.5. Modelo de procesos de cinco estados.
Diagramas de Gantt:
Proceso A
Proceso B
Proceso C
Planificador
0
5
10
15
20
25
30
35
40
45
50
Ejecución
Listo
Bloqueado
Figura 3.6. Estados de un proceso para la traza de la Figura 3.3.
Normalmente los diagramas no incluyen la actividad el SO (planificador)
Dos colas de bloqueados
Admitir
Cola de listos
Expedir
Salir
Proce-
sador
Fin de plazo
Cola de bloqueados
Esperar suceso
Ocurre
suceso
(a) Una sola cola de bloqueados
Planificador
a corto plazo
(Dispatcher)
A.Ortigosa
Admitir
Cola de listos
Expedir
Proce-
sador
Salir
Fin de plazo
Cola del suceso 1
Cola del suceso 2
Esperar suceso 1
Esperar suceso 2
Cola del suceso n
Esperar suceso n
(b) Varias colas de bloqueados
Ocurre
suceso 1
Ocurre
suceso 2
Ocurre
suceso n
Procesos suspendidos
El procesador es más rápido que la E/S, por lo que suele
ser habitual que todos los procesos de memoria estén
esperando por E/S.
Intercambiar una parte (memoria virtual) o todo el
proceso al disco para liberar memoria ppal.
Cuando los procesos de la memoria principal están en el
estado Bloqueado, el sistema operativo puede suspender
un proceso poniéndolo en estado Suspendido.
Dos nuevos estados:
Bloqueado y suspendido.
Listo y suspendido.
A.Ortigosa
Un estado de suspensión
Admitir
Nuevo
Nuevo
Listo
Listo
Expedir
Fin de plazo
Ejecución
Ejecución
Salir
Terminado
Terminado
Activar
o
s
e
c
u
s
e
r
r
u
c
O
Esperar suceso
Suspendido
Suspendido
Suspender
Bloqueado
Bloqueado
(a) Con un estado de suspensión
A.Ortigosa
Ejemplo (Diagrama de Gantt)
P A
P B
P C
P D
P E
Di
0
5
10
15
20
25
30
35
40
45
50
Ejecución
Listo
Bloqueado
Suspendido
Retorno E/S
t=0
t=5
t=10
t=17
PD
PE
PA
PB
PC
PD
PE
PA
PB
PC
PD
PE
PA
PB
PC
PA
PE
PD
PB
PC
Disco Memoria
Disco Memoria Disco Memoria Disco Memoria
t=25
t=38
t=48
PA
PB
PD
PE
PC
PD
PE
PA
PD
PC
PB
PE
PA
PB
PC
Disco Memoria
Disco Memoria Disco Memoria
Dos estados de suspensión
Nuevo
Nuevo
Admitir
A
d
m
i
t
i
r
Listo/
suspendido
Activar
Suspender
o
s
e
c
u
s
e
r
r
u
c
O
Listo
o
s
e
c
u
s
e
r
r
u
c
O
Bloqueado/
suspendido
Activar
Suspender
Bloqueado
Bloqueado
Suspender
Expedir
Fin de plazo
Ejecución
Ejecución
Salir
Terminado
Terminado
Esperar suceso
A.Ortigosa
(b) Con dos estados de suspensión
Creación de procesos
Emisión de un trabajo por lotes.
El nuevo usuario intenta conectarse.
Se crea para ofrecer un servicio, como por
ejemplo la impresión.
Un proceso puede originar la creación de
otro.
A.Ortigosa
Creación de procesos
Proceso hijo inicialmente igual que padre: copia exactamente segmento
de datos, pila y estructura de usuario
Forma de distinguirle del padre: mediante el retorno de fork : 0 para el
hijo y el pid del hijo para el padre
A medida que el hijo va ejecutando otro código, su memoria, pila y
estructura se diferencia del padre
El hijo no termina, hasta que el padre recoge su código de finalización
( devuelto con exit ).
El hijo queda zombie, si el padre termina y no ha recogido su código
de finalización. El padre debe esperar a sus hijos.
El hijo queda huérfano, si el padre muere cuando el hijo aún está en
ejecución.
A.Ortigosa
Creación de procesos
Crear nuevo proceso:
asignarle entrada en la tabla de procesos y su
}
A.Ortigosa
identificador (pid ).
estado listo para ejecutar
Padre
Hijo
Ejemplo:
int id ;
id = fork();
switch(id)
{
case -1 : /* error */ break ;
case 0 : /* hijo */ break ;
default : /* padre, id tiene el pid del hijo */ break ;
Creación de procesos
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
main( ) {
int childpid;
...
if ((childpid=fork())==0) fprintf(stderr,"Soy el hijo con PID
%d\n",getpid());
else if (childpid > 0) fprintf(stderr,"Soy el padre con PID
%d\n", getpid());
}
La función fork() devuelve el PID del hijo al padre, devuelve el valor 0
al hijo
A.Ortigosa
Creación de procesos
Tabla de procesos
• Dirección BCP
•Atributos:
•PID
•Información de estado
•Información de control
Dirección
BCP A
+ ....
Dirección
BCP A
+ ....
fork( ) en el hijo:
• Nuevo PID
• Nueva descripción de memoria
•Distinto valor de retorno (hijo = 0)
Dirección
BCP B
+ ....
Memoria
Imagen
Proceso A
fork( )
Imagen
Proceso A
Imagen
Proceso B
A.Ortigosa
Creación de procesos
Asignar una nueva entrada a la tabla principal
de procesos.
Asignar espacio para la imagen del proceso.
Inicializar el bloque de control de proceso.
Establecer los enlaces apropiados
Ej: Añadir un proceso nuevo a una lista enlazada que
se utiliza como cola de planificación.
Crear o ampliar otras estructuras de datos
Ej: Mantener un archivo de contabilidad, actualizar
la tabla de gestión de memoria...
A.Ortigosa
Creación de procesos
Proceso hijo inicialmente igual que el padre salvo en el
PID: se copia exactamente el segmento de datos, pila y
estructura de usuario.
El hijo no termina hasta que el padre recoge su código de
finalización devuelto con exit( ):
El S.O. libera los recursos utilizados, actualiza las estadísticas y lo
notifica al padre
El padre debe esperar a sus hijos, espera con wait( ):
detiene al proceso que la invoca hasta que un hijo termine,
si no tiene hijos wait( ) regresa de inmediato.
A.Ortigosa
Creación de procesos
Forma de distinguir el hijo del padre: mediante el retorno de fork( )
0 para el hijo
PID del hijo para el padre.
Tanto el padre como el hijo prosiguen con la ejecución a partir de la
siguiente instrucción a la del fork( ). Ambos procesos continúan
ejecutando el mismo código.
Es posible que el proceso hijo reemplace su código inicial por otro
código ejecutable y así se diferencie de su padre: A medida que el hijo
va ejecutando otro código, su memoria, pila y estructura se diferencian
del padre.
Familia de llamadas exec( ) Permite a un proceso cambiar su imagen de
memoria y ejecutar otro programa distinto.
A.Ortigosa
Creación de procesos
Hijo zombie: Hijo termina y el padre no recoge el
código de finalización del hijo.
Un proceso zombie no tiene ni área de código, ni
área de datos, ni pila, ni estructura ..., pero afecta
a la tabla de procesos del sistema, pues sigue
ocupando una entrada de la tabla.
Los zombies permanecen
Comentarios de: Tema 3 - Descripción y Control de Procesos (0)
No hay comentarios