Sie sind auf Seite 1von 92

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada Miguel, F. Prez

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

Sistemas operativos: una visin aplicada Miguel, F. Prez

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

Sistemas operativos: una visin aplicada Miguel, F. Prez

J. Carretero, F. Garca, P. de

Estados bsicos de un proceso


En ejecucin (uno por procesador) Bloqueado (en espera de completar E/S) Listo para ejecutar
Ejecucin Termina
Ope po raci m o e d i t n a E/S Fin anific l P Final E/S Bloqueado

Nuevo

Listo

Planificador: Mdulo del SO que decide qu proceso se ejecuta Proceso nulo


Sistemas operativos: una visin aplicada Miguel, F. Prez 5 J. Carretero, F. Garca, P. de

Entorno del proceso


Tabla NOMBRE-VALOR que se pasa al proceso en su creacin Se incluye en la pila Se establece: Por defecto Mediante mandatos del shell (export) Mediante API del SO (putenv, getenv) Ejemplo PATH=/usr/bin:/home/pepe/bin TERM=vt100 HOME=/home/pepe PWD=/home/pepe/libros/primero TIMEZONE=MET
Sistemas operativos: una visin aplicada Miguel, F. Prez 6 J. Carretero, F. Garca, P. de

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 Shell P roceso A

Inicio

D em . Im pr.

D em .C om ..

Vida de un proceso
Crea Ejecuta Muere o termina

E ditor P roceso B P roceso E P roceso F P roceso D P roceso C

Ejecucin del proceso


Batch Interactivo

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

Todo usuario ha de pertenecer a un grupo


Sistemas operativos: una visin aplicada Miguel, F. Prez 8 J. Carretero, F. Garca, P. de

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

Sistemas operativos: una visin aplicada Miguel, F. Prez

Tipos de sistemas operativos

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

Sistemas operativos: una visin aplicada Miguel, F. Prez

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

Procesamiento Entrada/salida Tiempo

Sistemas operativos: una visin aplicada Miguel, F. Prez

11

J. Carretero, F. Garca, P. de

Ejemplo de ejecucin en un sistema multitarea

Proceso A Proceso B Proceso C Procesador Tiempo


Procesamiento Entrada/salida Listo SO

Proceso nulo

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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

Utilizacin del procesador

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

Sistemas operativos: una visin aplicada

14

Necesidades de memoria principal


Necesidades de memoria principal: Sistema con memoria virtual

Marcos de pgina por proceso

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

N i v e ld e M u l t i p r o g r a m a c i n Sistemas operativos: una visin aplicada

15

Rendimiento del procesador y grado de multiprogramacin


Necesidades de memoria principal: Sistema con memoria virtual

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

Sistemas operativos: una visin aplicada

16

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

Sistemas operativos: una visin aplicada

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).

Sistemas operativos: una visin aplicada

18

Informacin de un proceso II
R eg istro s esp eciales

M ap ad em em o ria d el P rocesoA M ap ad em em o ria d el P rocesoB

R eg istro s g en erales

T a b la sd el sistem ao p era tivo


M ap ad em em o ria d el P rocesoC T ab las S O

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

-T ab la d em em o ria -T ab la d eE /S -T ab la d e fich ero s

Sistemas operativos: una visin aplicada

19

Estado del procesador


Est formado por el contenido de todos sus registros: Registros generales Contador de programa Puntero de pila Registro de estado Registros especiales Cuando un proceso est ejecutando su estado reside en los registros del computador. Cuando un proceso no ejecuta su estado reside en el BCP.

Sistemas operativos: una visin aplicada

20

Preparacin del cdigo de un proceso


Problema Editor Mdulo fuente A Mdulo fuente B

Compilador o ensamblador Mdulo objeto A Mdulo objeto B Montador Objeto ejecutable Cargador Ejecutable en memoria
Bibliotecas del sistema

Otros objetos

Sistemas operativos: una visin aplicada

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.

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

23

Imagen de memoria III


Sistema con memoria virtual
R I E D

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

Sistemas operativos: una visin aplicada

24

Informacin del BCP II


Informacin fuera del BCP Por implementacin (la consideramos del BCP) Para compartirla Tabla de pginas: Se pone fuera Describe la imagen de memoria del proceso Tamao variable El BCP contiene el puntero a la tabla de pginas (La comparticin de memoria requiera que sea externa al BCP) Punteros de posicin de los ficheros Si aaden a la tabla de ficheros abiertos (en el BCP) no se pueden compartir Si se asocian al nodo-i se comparte siempre Se ponen en una estructura comn a los procesos y se asigna uno nuevo en cada servicio OPEN

Sistemas operativos: una visin aplicada

26

Tablas del sistema operativo


Tabla de procesos (tabla de BCP) Tabla de memoria: informacin sobre el uso de la memoria. Tabla de E/S: guarda informacin asociada a los perifricos y a las operaciones de E/S Tabla de fichero: informacin sobre los ficheros abiertos.
La informacin asociada a cada proceso en el BCP. La decisin de incluir o no una informacin en el BCP se toma segn dos criterios: Eficiencia Compartir informacin

Sistemas operativos: una visin aplicada

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

T abla de ficheros 0 23 1 4563 2 56 34 4 678

fd

fd

ID FF 1 24456 2 34512 3 28 4 34512

P P 0 2345 5566 10000

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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

Recuperado del disco

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

Sistemas operativos: una visin aplicada

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).

Sistemas operativos: una visin aplicada

32

Interrupcin: se salva el estado

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

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

34

Procesos ligeros o threads


Por proceso ligero Contador de programa, Registros Pila Procesos ligeros hijos Estado (ejecutando, listo o bloqueado) Por proceso Espacio de memoria Variables globales Ficheros abiertos Procesos hijos Temporizadores Seales y semforos Contabilidad

P r o c e s o

P r o c e s o s l i g e r o s

Sistemas operativos: una visin aplicada

35

Estados del proceso ligero

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

Sistemas operativos: una visin aplicada

36

Estructura de un proceso en Windows NT


Proceso
Cdigo Datos Recursos (ficheros, ...) Entorno del proceso Thread 1
Registros Pila

......

Thread n
Registros Pila

Sistemas operativos: una visin aplicada

37

Paralelizacin utilizando procesos ligeros


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 P r o c e d i m i e n t o 2 FP E s p e r a e n E / S

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

Sistemas operativos: una visin aplicada

38

Procesos ligeros en el diseo de servidores


Procesos Ligeros Especializados

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

Recepcion de las ordenes y su traspaso a un proceso ligero trabajador

Acepta una orden (Leer de un puerto)

Segmentacion Cada trabajo se divide en una serie de fases

Sistemas operativos: una visin aplicada

39

Solicitudes

Diseo con procesos ligeros


Procesos Ligeros Paralelismo y variables compartidas Llamadas al sistema bloqueantes por proceso ligero Ventajas: Permite separacin de tareas Permite divisin de tareas (modularidad) Aumenta la velocidad de ejecucin del trabajo Programacin concurrente
Simplicidad versus exclusin en el acceso Imaginar otra llamada al mismo cdigo Mecanismo de sicronizacion Mutex Variables globales (C)

Sistemas operativos: una visin aplicada

40

Alternativas de diseo con procesos ligeros


Proceso con un solo proceso Ligero No hay paralelismo Llamadas al sistema bloqueantes Mquina de estados finitos Paralelismo Llamadas al sistema no bloqueantes Mltiples procesos convencionales cooperando Permite paralelismo No comparten variables Mayor sobrecarga de ejecucin

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

42

Estados del proceso


Sin expulsin
Ejecucin Listo Bloqueado

do mi u ns co o mp Tie

Listo

F in E /S

B loqueado

Recuperado del disco

Expulsado al disco

Entra al sistem a

Expulsado al disco

Procesos batch en espera

Listo y suspendido

F in E /S

B loqueado y suspendido

Sistemas operativos: una visin aplicada

43

Zona de intercambio

Memoria

Con expulsin al disco (swap)

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

Planificacin a corto plazo Entra al sistema

Procesos Batch en espera

Swap

Listo y suspendido

Bloqueado y suspendido

Planificacin a m edio plazo

Sistemas operativos: una visin aplicada

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

Colas de procesos Por prioridad Por tipo

Sistemas operativos: una visin aplicada

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

C a b e c e r ad elaS u b c o la d eP r io r id a d2 9 C a b e c e r ad elaS u b c o la b a t c h1 C a b e c e r ad elaS u b c o la b a t c h0

B C P B B C P C

B C P D B C P E B C P F

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

47

Implementacin de las colas de procesos


El SO mantiene diversas colas de procesos Se implementa con punteros internos al BCP (BCP de tamao fijo) Acceso eficiente
T a b l a d e p r o c e s o s
B C P 1 B C P 2B C P 3B C P 4B C P 5B C P 6B C P 7 B C P 8B C P 9B C P 1 0 B C P 1 1 B C P 1 2 0 7 6 1 1 1 5 0 8 9

2 4 P u n t e r o s d e l a s c o l a s

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

51

Planificacin en Windows NT

R e in ic ia d o

In ic ia d o

S itu a re nlac o la d elis to s

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

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

54

Seales II
Hay muchos tipos de seales, segn su origen
SIGILL instruccin ilegal SIGALRM vence el temporizador SIGKILL mata al proceso

El SO las transmite al proceso El proceso debe estar preparado para recibirla


Si no est preparado accin por defecto
Especificando un procedimiento de seal con sigaction Enmascarando la seal con sigprogmask El proceso, en general, muere Hay algunas seales que se ignoran o tienen otro efecto

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 }

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

60

Funcionamiento de un proceso servidor

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

Sistemas operativos: una visin aplicada

61

Procesos cliente y servidor en mquinas distintas

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

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

64

Servicios de gestin de procesos (POSIX)


Identificacin de procesos Entorno de un proceso Creacin de procesos Cambio del programa de un proceso Esperar la terminacin de un proceso Finalizar la ejecucin de un proceso Informacin sobre procesos

Sistemas operativos: una visin aplicada

65

Servicios POSIX: fork


El fork crea un proceso clonando al padre
M a p ad e m e m o r i a I m a g e nd e l p r o c e s oA T a b l ad ep r o c e s o s B C P A E lp r o c e s oA h a c eu nf o r k yc r e a e lp r o c e s oh i j oB M a p ad e m e m o r i a I m a g e nd e l p r o c e s oA I m a g e nd e l p r o c e s oB T a b l ad ep r o c e s o s B C P A B C P B N u e v oP I D N u e v ad e s c r i p c i nd em e m o r i a D i s t i n t ov a l o rd er e t o r n o( 0e ne lh i j o )

Sistemas operativos: una visin aplicada

66

Servicios POSIX: exec


El exec cambia el programa de un proceso
M a p ad e m e m o r ia T a b lad ep r o c e s o s I m a g e n d e lp r o c e s o E lp r o c e s oh a c eu ne x e c B C P

M a p ad e m e m o r ia S eb o r r alaim a g e nd em e m o r ia S eb o r r alad e s c r ip c i nd elam e m o r iayr e g is tr o s S ec o n s e r v ae lP I D

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

S ec a r g alan u e v aim a g e n S ep o n eP Ce nd ir e c c i nd ea r r a n q u e S ec o n s e r v a nlo sfd

Sistemas operativos: una visin aplicada

67

Servicios gestin de procesos (POSIX)


pid_t fork(void)
Crea un proceso hijo. Devuelve 0 al proceso hijo y el pid del hijo al proceso padre.

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 wait(int *status)


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.

void exit(int status)


Finaliza la ejecucin de un proceso indicando el estado de terminacin del mismo.

pid_t getpid(void)
Devuelve el identificador del proceso.

pid_t getppid(void)
Devuelve el identificador del proceso padre.

Sistemas operativos: una visin aplicada

68

fork. Crea un proceso


Servicio:
#include <sys/types.h> pid_t fork(void);

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.

Sistemas operativos: una visin aplicada

69

exec. Cambio del programa de un proceso


Servicios:
int execl(const char *path, const char *arg, ...) int excelp(const char *file, const char *arg, ...) int execvp(const char *file, char *const argv[])

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

exit. Terminacin de un proceso


Servicios:
int exit(int status);

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

Sistemas operativos: una visin aplicada

71

wait. Espera la terminacin de un proceso hijo


Servicios:
#include <sys/types.h> pid_t wait(int *status);

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.

Sistemas operativos: una visin aplicada

72

Uso normal de los servicios


p id P fo rk () p a d re p id H h ijo e x e c () p id P p a d re p id H h ijo e x it() p id H h ijo p id P w a it() p a d re

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 , ...

Sistemas operativos: una visin aplicada

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 ( )

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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); }

Sistemas operativos: una visin aplicada

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); }

Sistemas operativos: una visin aplicada

77

Servicios POSIX para la gestin de procesos ligeros


int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*func)(void *), void *arg)
Crea un proceso ligero que ejecuta "func" con argumento "arg" y atributos "attr". Los atributos permiten especificar: tamao de la pila, prioridad, poltica de planificacin, etc. Existen diversas llamadas para modificar los atributos.

int pthread_join(pthread_t thid, void **value)


Suspende la ejecucin de un proceso ligero hasta que termina el proceso ligero con identificador "thid". Devuelve el estado de terminacin del proceso ligero.

int pthread_exit(void *value)


Permite a un proceso ligero finalizar su ejecucin, indicando el estado de terminacin del mismo.

pthread_t pthread_self(void)
Devuelve el identificador del thread que ejecuta la llamada.

Sistemas operativos: una visin aplicada

78

Servicios POSIX para la gestin de procesos ligeros II


int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)
Establece el estado de terminacin de un proceso ligero. Si "detachstate" = PTHREAD_CREATE_DETACHED el proceso ligero liberara sus recursos cuando finalice su ejecucin. Si "detachstate" = PTHREAD_CREATE_JOINABLE no se liberarn los recursos, es necesario utilizar pthread_join().

Sistemas operativos: una visin aplicada

79

Jerarqua de procesos ligeros


Proceso ligero A

p_create p_create p_create


No independ.

Proceso ligero D Proceso ligero B p_exit

Proceso ligero C

p_join p_exit

Sistemas operativos: una visin aplicada

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); }

Sistemas operativos: una visin aplicada

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); }

Sistemas operativos: una visin aplicada

82

Servicios POSIX para la planificacin de procesos


Modificar la prioridad de un proceso
int sched_param(pid_t pid, const struct_param *param);

Modificar la prioridad y la poltica


int sched_scheduler(pid_t pid, const sched_param *param);

Obtener los parmetros de planificacin de un proceso


int sched_param(pid_t pid, const struct_param *param);

Obtener la prioridad de un proceso


int sched_getscheduler(pid_t pid);

Sistemas operativos: una visin aplicada

83

Servicios POSIX para la gestin de seales


int kill(pid_t pid, int sig)

Enva al proceso "pid" la seal "sig"


int sigaction(int sig, struct sigaction *act, struct sigaction *oact)

Permite especificar la accin a realizar como tratamiento de la seal "sig"


int pause(void)

Bloquea al proceso hasta la recepcin de una seal.


unsigned int alarm(unsigned int seconds)

Genera la recepcin de la seal SIGALRM pasados "seconds segundos.


sigprocmask(int how, const sigset_t *set, sigset_t *oset)

Se utiliza para examinar o modificar la mscara de seales de un proceso.

Sistemas operativos: una visin aplicada

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(); } }

Sistemas operativos: una visin aplicada

85

Programa de ejemplo II (A)


#include <sys/types.h> #include <signal.h> #include <stdio.h> /* programa que temporiza la ejecucin de un proceso hijo */ pid_t pid; void tratar_alarma(void) { kill(pid, SIGKILL); }

main(int argc, char **argv) { int status; char **argumentos; struct sigaction act; argumentos = &argv[1]; pid = fork();

Sistemas operativos: una visin aplicada

86

Programa de ejemplo II (B)


switch(pid) { case -1: /* error del fork() */ perror ("fork"); exit(-1); case 0: /* proceso hijo */ execvp(argumentos[0], argumentos); perror("exec"); exit(-1); default: /* padre */ /* establece el manejador */ act.sa_handler = tratar_alarma; act.sa_flags = 0; /* ninguna accin especfica */ sigaction(SIGALRM, &act, NULL); alarm(5); wait(&status); } exit(0); }

Sistemas operativos: una visin aplicada

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

Sistemas operativos: una visin aplicada

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);

Sistemas operativos: una visin aplicada

89

Terminacin de procesos
Terminar la ejecucin de un proceso
VOID ExitProcess(UINT nExitCode);

Obtener el cdigo de terminacin de un proceso


BOOL GetExitCodeProcess(HANDLE hProcess, LPDWORD lpdwExitCode);

Finalizar la ejecucin de otro proceso


BOOL TerminateProcess(HANDLE uExitCode); hProcess, UINT

Esperar por la finalizacin de un proceso


DWORD WaitForSingleObject(HANDLE hObject, DWORD dwTimeOut); DWORD WaitForMultipleObjects(DWORD cObjects, LPHANDLE lphObjects, BOOL fWaitAll, DWORD dwTimeOut);

Sistemas operativos: una visin aplicada

90

Servicios de gestin de procesos ligeros


Crear un proceso ligero
BOOL CreateThread ( LPSECURITY_ATTRIBUTES lpsa, DWORD cbStack, LPTHREAD_START_ROUTINE lpStartAddr; LPVOID lpvThreadParam, DWORD fdwCreate, LPDWORD lpIdThread);

Terminar la ejecucin de un proceso ligero


VOID ExitThread(DWORD dwExitCode);

Sistemas operativos: una visin aplicada

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,

Modificar o consultar la clase de prioridad


BOOL SetPriorityClass(HANDLE DWORD fdwPriorityClass); DWORD GetPriorityClass(HANDLE hProcess);

Sistemas operativos: una visin aplicada

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

Modificar o consultar el nivel de prioridad de un proceso ligero:


BOOL SetTrheadPriority(HANDLE hThread, fdwPriority); DWORD GetThreadPriority(HANDLE hProcess);

Sistemas operativos: una visin aplicada

93

Das könnte Ihnen auch gefallen