Beruflich Dokumente
Kultur Dokumente
Captulo 3 Procesos
Contenido
Procesos Multitarea Informacin del proceso Formacin de un proceso Estados del proceso Procesos ligeros Planificacin Seales y excepciones Temporizadores Servidores y demonios Servicios POSIX Servicios Win32
2 J. Carretero, F. Garca, P. de
Concepto de proceso
Proceso Programa en ejecucin Unidad de procesamiento gestionada por el SO Informacin del proceso
Imagen de memoria (core image) Estado del procesador (registros del modelo de programacin) Bloque de control del proceso BCP
Identificador pid uid Arvhivos abiertos Segmentos de memoria Temporizadores Seales Semforos Puertos
J. Carretero, F. Garca, P. de
Concepto de proceso
Proceso Programa en ejecucin Unidad de procesamiento gestionada por el SO Informacin del proceso
Imagen de memoria (core image) Estado del procesador (registros del modelo de programacin) Bloque de control del proceso BCP
Identificador pid uid Arvhivos abiertos Segmentos de memoria Temporizadores Seales Semforos Puertos
J. Carretero, F. Garca, P. de
Nuevo
Listo
Jerarqua de procesos
Grupos de procesos dependientes de cada shell Familia de procesos
Proceso hijo Proceso padre Proceso hermano Proceso abuelo
P roc. Inic.
Inicio Shell
Inicio
Inicio
D em . Im pr.
D em .C om ..
Vida de un proceso
Crea Ejecuta Muere o termina
Grupo de procesos
Sistemas operativos: una visin aplicada Miguel, F. Prez 7 J. Carretero, F. Garca, P. de
Usuario
Usuario: Persona autorizada a utilizar un sistema Se identifica en la autenticacin mediante:
Cdigo de cuenta Clave (password)
Internamente el SO le asigna el uid (user identification) Super-usuario Tiene todos los derechos Administra el sistema Grupo de usuarios Los usuarios se organizan en grupos
Alumnos Profesores
Contenido
Procesos
Multitarea
Informacin del proceso Formacin de un proceso Estados del proceso Procesos ligeros Planificacin Seales y excepciones Temporizadores Servidores y demonios Servicios POSIX Servicios Win32
9 J. Carretero, F. Garca, P. de
N p r o c e s o s 1 1 N u s u a r io s m sd e1 M o n o p r o c e s o M o n o u s u a r io m sd e1 M u lt ip r o c e s o M o n o u s u a r io M u lt ip r o c e s o M u lt iu s u a r io
10
J. Carretero, F. Garca, P. de
Base de la multitarea
Paralelismo real entre E/S y UCP (DMA) Alternancia en los procesos de fases de E/S y de procesamiento La memoria almacena varios procesos
11
J. Carretero, F. Garca, P. de
Proceso nulo
12
Ventajas de la multitarea
Facilita la programacin, dividiendo los programas en procesos (modularidad) Permite el servicio interactivo simultneo de varios usuarios de forma eficiente Aprovecha los tiempos que los procesos pasan esperando a que se completen sus operaciones de E/S Aumenta el uso de la CPU
13
Grado de multiprogramacin
Grado de multiprogramacin: n de procesos activos Necesidades de memoria principal: Sistema sin memoria virtual
P r o c e s o A P r o c e s o B P r o c e s o C S O M e m o r i a p r i n c i p a l C a d a p r o c e s o r e s i d e t o t a l m e n t e e n M . p
1 0 0 %
0 %
G r a d o d e m u l t i p r o g r a m a c i n
14
A la u m e n t a re ln i v e ld e m u l t i p r o g r a m a c i n a c a d a p r o c e s o l e t o c a n m e n o s m a r c o s d e p g i n a
15
1 0 0 %
1 0 0 %
% Utilizacin de UCP
L i m i t a d o p o r e l d i s p o s i t i v o d e p a g i n a c i n
% Utilizacin de UCP
L i m i t a d o p o r e l d i s p o s i t i v o d e p a g i n a c i n
N i v e l d e M u l t i p r o g r a m a c i n M E M O R I A P E Q U E A
N i v e l d e M u l t i p r o g r a m a c i n M E M O R I A G R A N D E
16
Contenido
Procesos Multitarea
17
Informacin de un proceso
Estado del procesador: contenido de los registros del modelo de programacin. Imagen de memoria: contenido de los segmentos de memoria en los que reside el cdigo y los datos del proceso Contenido del bloque de control del proceso (BCP).
18
Informacin de un proceso II
R eg istro s esp eciales
R eg istro s g en erales
T ab la d ep ro ceso s
B C PP ro ceso A B C PP ro ceso B B C PP ro ceso C -E sta d o (reg istro s) - E sta d o (reg istro s) - E sta d o (reg istro s) - Id entificaci n - Id entificaci n - Id entificaci n -C o n tro l -C o n tro l -C o n tro l
P C S P E stad o
M a p ad e M e m o r ia
19
20
Compilador o ensamblador Mdulo objeto A Mdulo objeto B Montador Objeto ejecutable Cargador Ejecutable en memoria
Bibliotecas del sistema
Otros objetos
21
Imagen de memoria
La imagen de memoria est formada por los espacios de memoria que un proceso est autorizado a utilizar. Si un proceso genera una direccin que esta fuera del espacio de direcciones el HW genera un trap. La imagen de memoria dependiendo del computador puede estar referida a memoria virtual o memoria fsica.
22
Imagen de memoria II
La memoria del proceso la asigna el gestor de memoria del SO El proceso slo debe utilizar la memoria asignada Segmentos juntos o dispersos
P IL A P R O C E S O D A T O S T E X T O
P R O C E S O
Espacio de direcciones del proceso Antiguamente equivala a memoria fsica Actualmente equivale a memoria virtual En sistemas con mem. virtual el proceso recibe del SO memoria virtual No confundir asignacin de memoria con asignacin de marcos de memoria
23
M e m o r i a v i r t u a l C d i g o
M e m o r i a p r i n c i p a l
D a t o s
T a m a o
D i s c o
P i l a
T a b l ad e p g i n a s U n at a b l ad e p g i n a s p o rp r o c e s o
La informacin de traduccin est en la tabla de pginas Preasignacin de zona de intercambio: Todas las pginas estn en disco, algunas estn copiadas en marcos de pgina
24
26
27
Compartir informacin
B C P4 B C P7 B C P 23 T abla de ficheros 0 23 1 4563 2 56 34 40 T abla de ficheros 0 54 1 633 2 5368 3 33 42
fd
fd
fd
28
Contenido
Procesos Multitarea Informacin del proceso
Formacin de un proceso
Estados del proceso Procesos ligeros Planificacin Seales y excepciones Temporizadores Servidores y demonios Servicios POSIX Servicios Win32
29
Formacin de un proceso
M a p a d e m e m o r i a
T a b l a d e p r o c e s o s
O b j e t o e j e c u t a b l e B i b l i o t e c a s i s t e m a
Cargador
I m a g e n d e lp r o c e s o
B C P
30
Estados de un proceso
E je cuc i n
o ad ific n ido Pla um s on oc p m Tie
E x it
Es pe ra po rE /S
Listo
F in E /S
B lo qu ea do
Expulsado al disco
E n tra a l siste m a
Expulsado al disco
P ro ce so sp o r lo tes e ne sp era
L is to y su s pe n d id o
F in E /S
B lo q ue a d oy su s pe n d id o
Zona de intercambio
Memoria
31
Cambio de contexto
Cuando se produce una interrupcin se cambia de contexto. Cambio de contexto es el conjunto de dos operaciones: Se salva el estado del procesador en el correspondiente BCP Se pasa a ejecutar la rutina de tratamiento de interrupcin del SO Planificador: Mdulo del SO que decide el siguiente proceso a ejecutar. Activador: Mdulo del SO que pone a ejecutar un proceso. Copia el estado del BCP a los registros Termina con una instruccin RETI (retorno de interrupcin)
Restituye el registro de estado (bit de nivel de ejecucin) Restituye el contador de programa (para el nuevo proceso).
32
R egistros especiales
T abla de procesos
BC P Proceso A Estado (registros) Inform acin de identificacin Inform acin de Control BC P Proceso B Estado (registros) Inform acin de identificacin Inform acin de Control BC P Proceso N Estado (registros) Inform acin de identificacin Inform acin de Control
Estado
R egistros generales
PC SP E stado
33
Contenido
Procesos Multitarea Informacin del proceso Formacin de un proceso Estados del proceso Planificacin Seales y excepciones Temporizadores Servidores y demonios Servicios POSIX Servicios Win32
Procesos ligeros
34
P r o c e s o
P r o c e s o s l i g e r o s
35
P r o c e s o
B l o q u e a d o p o r c o m u n i c a c i n B l o q u e a d o p o r a c c e s o a d i s c o A c t i v o
P r o c e s o s l i g e r o s
36
......
Thread n
Registros Pila
37
j e c u c i n FE s e r i e
P r o c e d i m i e n t o 1 P E s p e r a e n E / S F
P r o c e d i m i e n t o 2 P E s p e r a e n E / S F
E j e c u c i n p a r a l e l a
P r o c e s a m i e n t o
38
D i s t r i b u i d o r
T r a b a j a d o r
Solicitudes
Solicitudes
N c l e o
P u e r t o
N c l e o
P u e r t o
N c l e o
P u e r t o
39
Solicitudes
40
41
Contenido
Procesos Multitarea Informacin del proceso Formacin de un proceso Estados del proceso Procesos ligeros Seales y excepciones Temporizadores Servidores y demonios Servicios POSIX Servicios Win32
Planificacin
42
do mi u ns co o mp Tie
Listo
F in E /S
B loqueado
Expulsado al disco
Entra al sistem a
Expulsado al disco
Listo y suspendido
F in E /S
B loqueado y suspendido
43
Zona de intercambio
Memoria
E jecucin
do ica f i n Pla
E xit
Es pe ra po rE /S
Planificacin de procesos
Planificador : Selecciona el proceso Activador: Da control al proceso (cambio de contexto) Planificacin A largo plazo (aadir procesos a ejecutar) A medio plazo (aadir procesos a RAM) A corto plazo (qu proceso tiene la UCP) Planificacin de E/S
Memoria
Planificacin a largo plazo
Ejecucin Exit
Listo
Fin E/S
Bloqueado
Swap
Listo y suspendido
Bloqueado y suspendido
44
Planificacin de procesos
Tipos de planificacin Sin expulsin: el proceso conserva la UCP mientras desee. Con expulsin: el SO quita la UCP al proceso
Exige un reloj que interrumpe peridicamente
45
Colas de procesos
P a la b r a R e s u m e n B it 0 1 B it 1 0 C a b e c e r ad elaS u b c o la d eP r io r id a d0 C a b e c e r ad elaS u b c o la d eP r io r id a d1 B C P A
B it 2 9 1 B it 3 0 1 B it 3 1 0
B C P B B C P C
B C P D B C P E B C P F
46
Objetivos de planificacin
Reparto de UCP equitativo Eficiencia (optimizar UCP) Mejor tiempo de respuesta en uso interactivo Mejor tiempo de espera en lotes (batch) Mayor nmero de trabajos por unidad de tiempo
47
2 4 P u n t e r o s d e l a s c o l a s
48
Algoritmos de planificacin I
Cclico o Round Robin Asignacin de procesador rotatoria Equitativo (mejor hacerlo por uid y no por proceso) Uso en sistemas de tiempo compartido Se asigna un tiempo mximo de procesador (rodaja)
P r o c e s o e n e j e c u c i n 5 8 1 3 3 3 7 7 2 2 P r o c e s o e n e j e c u c i n 8 1 3 3 3 7 7 2 2 5
Prioridades Fijas (problema de inanicin) Aumentarlas con el envejecimiento Sistemas operativos: una visin aplicada 49
Algoritmos de planificacin II
Primero el trabajo ms corto Uso en sistemas batch Produce el menor tiempo de respuesta Penaliza a los trabajos largos Dificultad en conocer a priori la duracin del trabajo FIFO Uso en sistemas batch Aleatorio o lotera Tiempo real: plazos de ejecucin fijos Sistemas de tiempo real duros Sistemas de tiempo real blandos Sistemas operativos: una visin aplicada 50
Planificacin en POSIX
Cada poltica de planificacin lleva asociado un rango con al menos 32 niveles de prioridad. El planificador elegir el proceso o proceso ligero con la prioridad ms alta Polticas de planificacin FIFO Cclica Otra
51
Planificacin en Windows NT
R e in ic ia d o
In ic ia d o
F in a liz a d o
F ind eb lo q u e o
B lo q u e a d o
P ilad e lk e rn e l e ns w a p P ilad e l k e rn e le nm e m o ria
L is to
E je c u c i n fin a liz a d a
E s p e ra te rm in a d a
B lo q u e a d o
T ra n s ic i n
E x p u ls a d o
x p u ls a d o S e le c c io n a d oE p a ra e je c u c i n
E je c u c i n
C a m b iod ec o n te x to .C o m ie n z od ee je c u c i n
R e s e r v a
52
Contenido
Procesos Multitarea Informacin del proceso Formacin de un proceso Estados del proceso Procesos ligeros Planificacin Temporizadores Servidores y demonios Servicios POSIX Servicios Win32
Seales y excepciones
53
Seales
Las seales son interrupciones al proceso Envo o generacin Proceso- Proceso (dentro del grupo) con el kill SO - Proceso
Seal
Proceso Cdigo
Funcin tratamiento
54
Seales II
Hay muchos tipos de seales, segn su origen
SIGILL instruccin ilegal SIGALRM vence el temporizador SIGKILL mata al proceso
El servicio pause para el proceso hasta que recibe una seal Sistemas operativos: una visin aplicada 55
Excepciones
Evento que ocurre durante la ejecucin de un programa y que requiere la ejecucin de un fragmento de cdigo fuera del flujo normal de ejecucin. Manejo de excepcion
try { Bloque donde puede producirse una excepcin } except { Bloque que se ejecutar si se produce una excepcin en el bloque anterior }
56
Contenido
Procesos Multitarea Informacin del proceso Formacin de un proceso Estados del proceso Procesos ligeros Planificacin Seales y excepciones Temporizadores Servidores y demonios Servicios POSIX Servicios Win32 57
Temporizadores
El SO mantiene un temporizador por proceso El proceso activa el temporizador con alarma El SO enva una seal SIGALRM al proceso cuando vence su temporizador
58
Contenido
Procesos Multitarea Informacin del proceso Formacin de un proceso Estados del proceso Procesos ligeros Planificacin Seales y excepciones Temporizadores
Servidores y demonios
Servicios POSIX Servicios Win32
59
Proceso servidor
P R O C E S O S C L IE N T E S
P R O C E S O S E R V ID O R
R E C U R S O
60
a)
S ervidor P adre P uertoA
b )
S ervidor P adre P uertoA S ervidor P adre P uertoA
c)
S ervidor H ijo P uerto B
C lienteA
C lienteA
61
P u e r t o
C l i e n t e S O
S e r v i d o r f i c h e r o s S O
S e r v i d o r i m p r e s i n S O R E D
S e r v i d o r e _ m a i l S O
62
Procesos demonios
Es un proceso que ejecuta: En background (su padre no le espera) No asociado a un terminal o proceso login Que espera que ocurra un evento O que debe realizar una tarea de forma peridica Caractersticas Se arrancan al iniciar el sistema No mueren Estn normalmente en espera de evento No hacen el trabajo, lanzan otros procesos o procesos ligeros
63
Contenido
Procesos Multitarea Informacin del proceso Formacin de un proceso Estados del proceso Procesos ligeros Planificacin Seales y excepciones Temporizadores Servidores y demonios
Servicios POSIX
Servicios Win32
64
65
66
T a b lad ep r o c e s o s B C P
M a p ad e m e m o r ia
Cargador
O b je to e je c u ta b le B ib lio te c a s is te m a
I m a g e n d e lp r o c e s o
T a b lad ep r o c e s o s B C P
67
int execl(const char *path, const char *arg, ...) int execlp(const char *file, const char *arg, ...) int execvp(const char *file, char *const argv[])
Permite a un proceso ejecutar un programa (cdigo) distinto. Cambia la imagen de memoria del proceso.El pid no cambia.
pid_t getpid(void)
Devuelve el identificador del proceso.
pid_t getppid(void)
Devuelve el identificador del proceso padre.
68
Devuelve: El identificador de proceso hijo al proceso padre y 0 al hijo -1 el caso de error Descripcin : Crea un proceso hijo que ejecuta el mismo programa que el padre Hereda los ficheros abiertos (se copian los descriptores). Las alarmas pendientes se desactivan.
69
Argumentos: path, file: nombre del archivo ejecutable arg: argumentos Descripcin: Devuelve -1 en caso de error, en caso contrario no retorna. Cambia la imagen de memoria del proceso. El mismo proceso ejecuta otro programa. Los ficheros abiertos permanecen abiertos Las seales con la accin por defecto seguirn por defecto, las seales con manejador tomarn la accin por defecto. Sistemas operativos: una visin aplicada 70
Argumentos: Cdigo de retorno al proceso padre Descripcin: Finaliza la ejecucin del proceso. Se cierran todos los descriptores de ficheros abiertos. Se liberan todos los recursos del proceso
71
Argumentos: Devuelve el cdigo de terminacin del proceso hijo. Descripcin: Devuelve el identificador del proceso hijo o -1 en caso de error. Permite a un proceso padre esperar hasta que termine un proceso hijo. Devuelve el identificador del proceso hijo y el estado de terminacin del mismo.
72
z o m b ie
p id P
p id P
p id H
p id P p id H
p id P te x to d a to s p ila F ic h e ro s , tu b e ra s , ...
73
Evolucin de procesos I
El padre muere: INIT acepta los hijos
I n i t I n i t I n i t I n i t w a i t ( ) I n i t w a i t ( )
P r o c e s o A f o r k ( )
P r o c e s o A
P r o c e s o A e x i t ( )
P r o c e s o B
P r o c e s o B
P r o c e s o B
P r o c e s o B e x i t ( )
74
Evolucin de procesos II
Zombie: el hijo muere y el padre no hace wait
I n i t
I n i t
I n i t
I n i t
I n i t
P r o c e s o A f o r k ( )
P r o c e s o A
P r o c e s o A
P r o c e s o A
P r o c e s o A w a i t ( )
P r o c e s o B
P r o c e s o B e x i t ( )
P r o c e s o B z o m b i e
P r o c e s o B z o m b i e
75
Programa de ejemplo I
#include <sys/types.h> #include <stdio.h> /* programa que ejecuta el mandato ls -l */ main() { pid_t pid; int status; pid = fork(); if (pid == 0) { /* proceso hijo */ execlp("ls","ls","-l",NULL); exit(-1); } else /* proceso padre */ while (pid != wait(&status)); exit(0); }
76
Programa de ejemplo II
#include <sys/types.h> #include <stdio.h> main(void) { /* programa que ejecuta el mandato ls -l */ pid_t pid; int status; char *argumentos[3]; /* crea los argumentos */ argumentos[0] = "ls"; argumentos[1] = "-l"; argumentos[2] = NULL; pid = fork(); if (pid == 0) {/* proceso hijo */ execvp(argumentos[0], argumentos); exit(-1); } else /* proceso padre */ while (pid != wait(&status)) continue; exit(0); }
77
pthread_t pthread_self(void)
Devuelve el identificador del thread que ejecuta la llamada.
78
79
Proceso ligero C
p_join p_exit
80
Programa de ejemplo I
#include <stdio.h> #include <pthread.h> #define MAX_THREADS 10 void func(void) { printf("Thread %d \n", pthread_self()); pthread_exit(0); } main() { int j; pthread_attr_t attr; pthread_t thid[MAX_THREADS]; pthread_attr_init(&attr); for(j = 0; j < MAX_THREADS; j ++) pthread_create(&thid[j], &attr, func, NULL); for(j = 0; j < MAX_THREADS; j ++) pthread_join(thid[j], NULL); }
81
Programa de ejemplo II
#include <stdio.h> #include <pthread.h> #define MAX_THREADS 10 void func(void) { printf("Thread %d \n", pthread_self()); pthread_exit(0); } main() { int j; pthread_attr_t attr; pthread_t thid[MAX_THREADS]; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); for(j = 0; j < MAX_THREADS; j ++) pthread_create(&thid[j], &attr, func, NULL); sleep(5); }
82
83
84
Programa de ejemplo I
#include <signal.h> #include <stdio.h> void tratar_alarma(void) { printf("Activada \n"); } main() { struct sigaction act; /* establece el manejador para SIGALRM */ act.sa_handler = tratar_alarma; /* funcin a ejecutar */ act.sa_flags = 0; /* ninguna accin especifica */ sigaction(SIGALRM, &act, NULL); act.sa_handler = SIG_IGN; /* ignora la seal SIGINT */ sigaction(SIGINT, &act, NULL); /* recibe SIGALRM cada 3 segundos */ for(;;){ alarm(3); pause(); } }
85
main(int argc, char **argv) { int status; char **argumentos; struct sigaction act; argumentos = &argv[1]; pid = fork();
86
87
Contenido
Procesos Multitarea Informacin del proceso Formacin de un proceso Estados del proceso Procesos ligeros Planificacin Seales y excepciones Temporizadores Servidores y demonios Servicios POSIX Servicios Win32 88
Creacin de procesos
BOOL CreateProcess ( LPCTSTR lpszImageName, LPTSTR lpszCommandLine, LPSECURITY_ATTRIBUTES lpsaProcess, LPSECURITY_ATTRIBUTES lpsaThread, BOOL fInheritHandles, DWORD fdwCreate, LPVOID lpvEnvironment, LPCTSTR lpszCurdir, LPSTARTUPINFO lpsiStartInfo, LPPROCESS_INFORMATION lppiProcInfo);
89
Terminacin de procesos
Terminar la ejecucin de un proceso
VOID ExitProcess(UINT nExitCode);
90
91
Servicios de planificacin
Clases de prioridad IDLE_PRIORITY_CLASS con prioridad base 4
BELOW_NORMAL_PRIORITY_CLASS con prioridad base 6 NORMAL_PRIORITY_CLASS con prioridad base 9 ABOVE_NORMAL_PRIORITY_CLASS con prioridad base 10 HIGH_PRIORITY_CLASS con prioridad base 13 REAL_TIME_PRIORITY_CLASS con prioridad base 24.
hProcess,
92
Servicios de planificacin
Prioridad de los procesos ligeros
THREAD_PRIORITY_LOWEST THREAD_PRIORITY_BELOW_NORMAL THREAD_PRIORITY_NORMAL THREAD_PRIORITY_ABOVE_NORMAL THREAD_PRIORITY_HIGHEST
DWORD
93