Está en la página 1de 92

Sistemas operativos: una visión aplicada

Capítulo 3
Procesos
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32
Sistemas operativos: una visión aplicada 2 © J. Carretero, F. García, P. de Miguel, F. Pérez
Concepto de proceso
• Proceso
– Programa en ejecución
– Unidad de procesamiento gestionada por el SO
• Información del proceso
– Imagen de memoria (core image)
– Estado del procesador (registros del modelo de programación)
– Bloque de control del proceso BCP
• Identificador “pid”
• “uid”
• Arvhivos abiertos
• Segmentos de memoria
• Temporizadores
• Señales
• Semáforos
• Puertos

Sistemas operativos: una visión aplicada 3 © J. Carretero, F. García, P. de Miguel, F. Pérez


Estados básicos de un proceso
• En ejecución (uno por procesador)
• Bloqueado (en espera de completar E/S)
• Listo para ejecutar

E je c u c ió n Term ina
po O pe
i e m d o ra c
t a ió n
F in a n if i c E /S
P l
N u evo Final E /S
L is to B lo q u e a d o

• Planificador: Módulo del SO que decide qué proceso se ejecuta


• Proceso nulo
Sistemas operativos: una visión aplicada 4 © J. Carretero, F. García, P. de Miguel, F. Pérez
Entorno del proceso

• Tabla NOMBRE-VALOR que se pasa al proceso en su creación


• 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 visión aplicada 5 © J. Carretero, F. García, P. de Miguel, F. Pérez
Jerarquía de procesos
• Grupos de procesos dependientes de cada shell
• Familia de procesos
• Proceso hijo
• Proceso padre P ro c . In ic .

• Proceso hermano In ic io In icio In icio In ic io D em . Im pr. D em . C om ..


• Proceso abuelo
Shell Shell
• Vida de un proceso
• Crea E d ito r
P ro c e so A

• Ejecuta
P ro c e so B P ro c e so D P ro ce so C
• Muere o termina
• Ejecución del proceso P ro c e so E P ro c eso F

• Batch
• Interactivo
• Grupo de procesos
Sistemas operativos: una visión aplicada 6 © J. Carretero, F. García, P. de Miguel, F. Pérez
Usuario
• Usuario: Persona autorizada a utilizar un sistema
– Se identifica en la autenticación mediante:
• Código 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 visión aplicada 7 © J. Carretero, F. García, P. de Miguel, F. Pérez


Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32

Sistemas operativos: una visión aplicada 8 © J. Carretero, F. García, P. de Miguel, F. Pérez


Tipos de sistemas operativos

N º procesos

1 m ás de 1

M on oproceso M ultiproceso
1
M on ousuario M on ousuario
N º usuarios
M ultiproceso
m ás de 1
M ultiusuario

Sistemas operativos: una visión aplicada 9 © J. Carretero, F. García, P. de Miguel, F. Pérez


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

P ro c esa m ie n to

E n trad a /s a lid a
T ie m p o

Sistemas operativos: una visión aplicada 10 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Ejemplo de ejecución en un sistema multitarea

P ro c e so A

P ro c eso B Procesam iento


Entrada/salida
Listo
P ro c eso C SO

P ro c e sa d o r
T ie m p o

• Proceso nulo

Sistemas operativos: una visión aplicada 11 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Ventajas de la multitarea

• Facilita la programación, dividiendo los programas en procesos


(modularidad)
• Permite el servicio interactivo simultáneo 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 visión aplicada 12 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Grado de multiprogramación

• Grado de multiprogramación: nº de procesos activos


• Necesidades de memoria principal: Sistema sin memoria virtual
100%

U tilización del procesador


P ro c e s o A

P ro c e s o B
P ro c e s o C
SO
M e m o ria
p rin c ip a l
C a d a p ro c e s o re s id e 0%
to ta lm e n te e n M .p G ra d o d e m u ltip ro g ra m a c ió n

Sistemas operativos: una visión aplicada 13 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Necesidades de memoria principal
• Necesidades de memoria principal: Sistema con memoria virtual
M a rco s d e p á g in a p o r p ro ce so

Al aum entar el nivel de m ultiprogram ación a


cada proceso le tocan m enos m arcos de página

N ivel de M ultiprogram ación


1 2 3 4

Sistemas operativos: una visión aplicada 14 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Rendimiento del procesador y grado de
multiprogramación

• Necesidades de memoria principal: Sistema con memoria virtual

1 00 % 100 %
Lim itado por el dispositivo
% U tilización de U C P

% U tilización de U C P
de paginación
Lim itado por el dispositivo
de paginación

N ivel de M ultiprogram ación N ivel de M ultiprogram ación


M EM O RIA PEQ UEÑA M EM O RIA G R AN D E

Sistemas operativos: una visión aplicada 15 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32

Sistemas operativos: una visión aplicada 16 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Información de un proceso

• Estado del procesador: contenido de los registros del modelo de


programación.
• Imagen de memoria: contenido de los segmentos de memoria en
los que reside el código y los datos del proceso
• Contenido del bloque de control del proceso (BCP).

Sistemas operativos: una visión aplicada 17 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Información de un proceso II

R eg istro s
esp ec iales M ap a d e m em o ria
d e l P ro ce so A

M ap a d e m em o ria
d e l P ro ceso B
R eg istro s Ta b la s d e l siste m a o p e ra tiv o
M ap a d e m em o ria
g en e rales d e l P ro ceso C Tab la d e p ro ceso s
B C P P ro ceso A B C P P ro ceso B B C P P ro ceso C
- E sta d o (r eg istr o s) - E sta d o (reg istro s) - E sta d o (reg istro s)
Tab las S O - Id e n tific ació n - Id en tificac ió n - Id en tificac ió n
PC - C o n tro l - C o n tro l - C o n tro l
- Tab la d e m em o ria
SP M apa de - Tab la d e E /S
E stad o M em oria - Tab la d e fich e ro s

Sistemas operativos: una visión aplicada 18 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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 visión aplicada 19 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Preparación del código de un proceso
Problem a

E d itor

M ódulo M ódulo
fuente A fuente B

C om pilador o
ensam blador

M ódulo M ódulo O tros


objeto A objeto B objetos

M ontado r

O bjeto B ibliotecas
ejecutable del sistem a

C arg ador

E jecutab le en
m em oria

Sistemas operativos: una visión aplicada 20 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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 dirección 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 física.

Sistemas operativos: una visión aplicada 21 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Imagen de memoria II
• La memoria del proceso la asigna el gestor de memoria del SO
• El proceso sólo debe utilizar la memoria asignada
• Segmentos juntos o dispersos

PILA

PR OC ESO PR O CESO
DATO S
TEXTO

• Espacio de direcciones del proceso


– Antiguamente equivalía a memoria física
– Actualmente equivale a memoria virtual
• En sistemas con mem. virtual el proceso recibe del SO memoria virtual
• No confundir asignación de memoria con asignación de marcos de memoria

Sistemas operativos: una visión aplicada 22 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Imagen de memoria III
• Sistema con memoria virtual

R IED
• La información de traducción está en la tabla de páginas
• Preasignación de zona de intercambio: Todas las páginas están en disco, algunas están copiadas en marcos de página

M em o ria
M em o ria p rin c ip al
vir tu al
C ó digo

Tam a ñ o
D ato s D isco

Ta b la d e
p ág in a s
P ila
U n a tab la d e
p ág in a s
p or p ro ceso

Sistemas operativos: una visión aplicada 23 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Información del BPC
• Información de identificación
– PID del proceso, PID del padre
– ID de usuario real (uid real)
– ID de grupo real (gid real)
– ID de usuario efectivo (uid efectivo)
– ID de grupo efectivo (gid efectivo)
• Estado del procesador
• Información de control del proceso
– Información de planificación y estado
– Descripción de los segmentos de memoria del proceso
– Recursos asignados (ficheros abiertos, ...)
– Comunicación entre procesos.
– Punteros para estructurar los procesos en listas o colas.

Sistemas operativos: una visión aplicada 24 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Información del BCP II

• Información fuera del BCP


– Por implementación (la consideramos del BCP)
– Para compartirla
• Tabla de páginas: Se pone fuera
– Describe la imagen de memoria del proceso
– Tamaño variable
– El BCP contiene el puntero a la tabla de páginas
– (La compartición de memoria requiera que sea externa al BCP)
• Punteros de posición de los ficheros
– Si añaden 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 común a los procesos y se asigna uno
nuevo en cada servicio OPEN
Sistemas operativos: una visión aplicada 25 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Tablas del sistema operativo
• Tabla de procesos (tabla de BCP)
• Tabla de memoria: información sobre el uso de la memoria.
• Tabla de E/S: guarda información asociada a los periféricos y a
las operaciones de E/S
• Tabla de fichero: información sobre los ficheros abiertos.

• La información asociada a cada proceso en el BCP.


• La decisión de incluir o no una información en el BCP se toma
según dos criterios:
– Eficiencia
– Compartir información

Sistemas operativos: una visión aplicada 26 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Compartir información

BCP 4 BCP 7 BCP 23


Ta b la d e Ta b la d e Ta bla d e
fich e ro s fich eros fich ero s
0 23 0 23 0 54
fd 1 4 5 63 fd 1 45 6 3 fd 1 633
2 56 2 56 2 5368
3 4 3 4 3 33
4 678 4 0 4 2

IDFF PP
1 2 4 4 56 0
2 3 4 5 12 23 4 5
3 28 55 6 6
4 3 4 5 12 10 0 0 0

Sistemas operativos: una visión aplicada 27 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32

Sistemas operativos: una visión aplicada 28 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Formación de un proceso

Ma p a d e
m e m o ria Ta b la d e p ro c e so s
C a rg a d o r

O b je to
e je c u ta b le Im a g e n BC P
d e l p ro c e so
Bib lio te c a
siste m a

Sistemas operativos: una visión aplicada 29 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Estados de un proceso

Exit
Ejecución
o Es
ic ad pe
ra
n if do

M em oria
a po
Pl mi rE
u /S
ns
co
po
em
Ti
Listo Fin E/S Bloqueado

Recuperado del disco

Expulsado al disco

Expulsado al disco
E n tra a l
s is te m a

in te rca m b io
Z on a d e
Listo y Fin E/S Bloqu eado y
P rocesos por lotes susp endido susp endido

en espera

Sistemas operativos: una visión aplicada 30 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Cambio de contexto

• Cuando se produce una interrupción 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 interrupción del
SO
• Planificador: Módulo del SO que decide el siguiente proceso a
ejecutar.
• Activador: Módulo del SO que pone a ejecutar un proceso.
– Copia el estado del BCP a los registros
– Termina con una instrucción RETI (retorno de interrupción)
• Restituye el registro de estado (bit de nivel de ejecución)
• Restituye el contador de programa (para el nuevo proceso).
Sistemas operativos: una visión aplicada 31 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Interrupción: se salva el estado

R eg istro s
esp eciale s
Ta b la d e p ro ceso s

B C P P ro c eso A B C P P ro c eso B B C P P ro ceso N


E sta d o

R eg istro s E sta d o E sta d o E sta d o


g en erales (reg istro s) (re g istro s) (reg istro s)
In fo rm ac ió n d e In fo rm ac ió n d e In fo rm ac ió n d e
id en tificació n id en tificació n id en tificació n
PC
In fo rm ac ió n d e In fo rm ac ió n d e In fo rm ac ió n d e
SP C o n tro l C o n tro l C o n tro l
E stad o

Sistemas operativos: una visión aplicada 32 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32

Sistemas operativos: una visión aplicada 33 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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
Proceso
– Ficheros abiertos
– Procesos hijos
– Temporizadores
– Señales y semáforos
– Contabilidad

Procesos ligeros

Sistemas operativos: una visión aplicada 34 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Estados del proceso ligero

Bloqueado por com unicación


Proceso Bloqueado por acceso a disco
Activo

Procesos ligeros

Sistemas operativos: una visión aplicada 35 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Estructura de un proceso en Windows
NT
Proceso

C ó digo

D atos

R ecurso s (ficheros, ...)

E nto rno d el p roce so

Thread 1 Thread n
R e gistros ...... R e gistros

P ila P ila

Sistemas operativos: una visión aplicada 36 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Paralelización utilizando procesos ligeros

Procedim iento 1 Procedim iento 2


P F P F Ejecución
Espera Espera serie
en E/S en E/S

Procedim iento 1
P F
Espera
en E/S
Ejecución
paralela
Procedim iento 2
P F
Espera Procesam iento
en E/S

Sistemas operativos: una visión aplicada 37 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Procesos ligeros en el diseño de servidores

Trabajador
D istribuidor

Solicitudes

Solicitudes

Solicitudes
N úcleo N úcleo Núcleo
Puerto Puerto Puerto

Sistemas operativos: una visión aplicada 38 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Diseño con procesos ligeros

• P. Ligero
– Paralelismo y variables compartidas
– Llamadas al sistema bloqueantes por proceso ligero
– Permite separación de tareas
– Permite división de tareas
– Aumenta la velocidad de ejecución del trabajo
– Programación concurrente
• Simplicidad versus exclusión en el acceso
• Imaginar otra llamada al mismo código
• Mutex
• Variables globales

Sistemas operativos: una visión aplicada 39 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Alternativas de diseño con procesos ligeros

• Proceso con un solo proceso Ligero


– No hay paralelismo
– Llamadas al sistema bloqueantes
• Máquina de estados finitos
– Paralelismo
– Llamadas al sistema no bloqueantes
• Múltiples procesos convencionales cooperando
– Permite paralelismo
– No comparten variables
– Mayor sobrecarga de ejecución

Sistemas operativos: una visión aplicada 40 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32

Sistemas operativos: una visión aplicada 41 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Estados del proceso
• Sin expulsión
• Ejecución
• Listo
• Bloqueado Exit
Ejecución
• Con expulsión al disco (swap) ic ad
o Es
pe
ra
n if
id o po

M em oria
a
Pl rE
s um /S
n
co
po
em
Ti
Listo Fin E/S Bloqueado

Recuperado del disco

Expulsado al disco

Expulsado al disco
E n tra a l
s is te m a

in te rc a m b io
Zona de
Listo y Fin E/S Bloqu eado y
P ro c e so s b atc h susp endido susp endido

e n e sp e ra
Sistemas operativos: una visión aplicada 42 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Planificación de procesos
• Planificador : Selecciona el proceso
• Activador: Da control al proceso (cambio de contexto)
• Planificación
– A largo plazo (añadir procesos a ejecutar)
– A medio plazo (añadir procesos a RAM)
– A corto plazo (qué proceso tiene la UCP)
– Planificación de E/S
P la n ific a ció n a
la rg o p la z o Exit
M e m o r ia

Ejecu ción

Listo Fin E/S Bloqueado

P la n ific a ció n a c o rto p la zo


E n tra a l
s is te m a

Listo y B loqu eado y


P ro c e so s B a tc h
Sw ap

susp endido susp endido

e n e sp e ra P la n ific a ció n a m e dio p la z o

Sistemas operativos: una visión aplicada 43 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Planificación de procesos

• Tipos de planificación
– Sin expulsión: el proceso conserva la UCP mientras desee.
– Con expulsión: el SO quita la UCP al proceso
• Exige un reloj que interrumpe periódicamente
• Colas de procesos
– Por prioridad
– Por tipo

Sistemas operativos: una visión aplicada 44 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Colas de procesos

P alabra
R esu m en
C a becera de la S ubcola
B it 0 1 B C P -A
de P riorid ad 0
B it 1 0 C a becera de la S ubcola
de P riorid ad 1

C a becera de la S ubcola
B it 29 1 B C P -B B C P -D
de P riorid ad 29
B it 30 1 C a becera de la S ubcola
B C P -C B C P -E B C P -F
ba tch 1
B it 31 0 C a becera de la S ubcola
ba tch 0

Sistemas operativos: una visión aplicada 45 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Objetivos de planificación

• Reparto de UCP equitativo


• Eficiencia (optimizar UCP)
• Mejor tiempo de respuesta en uso interactivo
• Mejor tiempo de espera en lotes (batch)
• Mayor número de trabajos por unidad de tiempo

Sistemas operativos: una visión aplicada 46 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Implementación de las colas de procesos

• El SO mantiene diversas colas de procesos


• Se implementa con punteros internos al BCP (BCP de tamaño
fijo)
• Acceso eficiente

Tabla de procesos
BCP1 BCP2 BCP3 BCP4 BCP5 BCP6 BCP7 BCP8 BCP9 B C P 1 0 B C P 11 B C P 12

0 7 6 1 11 5 0 8 9

2 4
P unte ros de las cola s

Sistemas operativos: una visión aplicada 47 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Algoritmos de planificación I

• Cíclico o Round Robin


– Asignación de procesador rotatoria
– Equitativo (mejor hacerlo por uid y no por proceso)
– Uso en sistemas de tiempo compartido
– Se asigna un tiempo máximo de procesador (rodaja)
P ro c e so P ro c e so
e n e je c u c ió n e n e je c u c ió n

5 8 13 3 37 72 2 8 13 3 37 72 2 5

• Prioridades
– Fijas (problema de inanición)
– Aumentarlas con el envejecimiento

Sistemas operativos: una visión aplicada 48 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Algoritmos de planificación II

• Primero el trabajo más corto


– Uso en sistemas batch
– Produce el menor tiempo de respuesta
– Penaliza a los trabajos largos
– Dificultad en conocer a priori la duración del trabajo
• FIFO
– Uso en sistemas batch
• Aleatorio o lotería
• Tiempo real: plazos de ejecución fijos
– Sistemas de tiempo real duros
– Sistemas de tiempo real blandos

Sistemas operativos: una visión aplicada 49 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Planificación en POSIX

• Cada política de planificación lleva asociado un rango con al


menos 32 niveles de prioridad.
• El planificador elegirá el proceso o proceso ligero con la
prioridad más alta
• Políticas de planificación
– FIFO
– Cíclica
– Otra

Sistemas operativos: una visión aplicada 50 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Planificación en Windows NT

Reiniciado Iniciado S ituar e n la cola


de listos

F in alizad o
Fin de b loqueo
Bloqueado L isto

E spera P ila del kerne l


E jecución en swap
terminada
finalizada P ila del
Seleccionado E xpulsado
kernel en m em oria
para
ejecución
B loqueado Transición

E xpulsado
E jecució n R eserva
Cam bio de contexto. Com ienzo de eje cución

Sistemas operativos: una visión aplicada 51 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32

Sistemas operativos: una visión aplicada 52 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Señales

• Las señales son interrupciones al proceso


• Envío o generación
– Proceso- Proceso (dentro del grupo) con el kill
– SO - Proceso

S eñ a l
P roce so
Función
tratam iento
C ód ig o

Sistemas operativos: una visión aplicada 53 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Señales II

• Hay muchos tipos de señales, según su origen


• SIGILL instrucción ilegal
• SIGALRM vence el temporizador
• SIGKILL mata al proceso
• El SO las transmite al proceso
– El proceso debe estar preparado para recibirla
• Especificando un procedimiento de señal con sigaction
• Enmascarando la señal con sigprogmask
– Si no está preparado  acción por defecto
• El proceso, en general, muere
• Hay algunas señales que se ignoran o tienen otro efecto
• El servicio pause para el proceso hasta que recibe una señal

Sistemas operativos: una visión aplicada 54 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Excepciones

• Evento que ocurre durante la ejecución de un programa y que


requiere la ejecución de un fragmento de código fuera del flujo
normal de ejecución.
• Manejo de excepcion
try {
Bloque donde puede producirse una excepción
}
except {
Bloque que se ejecutará si se produce una
excepción
en el bloque anterior
}

Sistemas operativos: una visión aplicada 55 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32
Sistemas operativos: una visión aplicada 56 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Temporizadores

• El SO mantiene un temporizador por proceso


– El proceso activa el temporizador con alarm
• El SO envía una señal SIGALRM al proceso cuando vence su
temporizador

Sistemas operativos: una visión aplicada 57 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32

Sistemas operativos: una visión aplicada 58 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Proceso servidor

PR O CESO S
CLIENTES

PR O CESO RECU RSO


SERVIDO R

Sistemas operativos: una visión aplicada 59 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Funcionamiento de un proceso servidor

a) b) c)
S ervidor Servidor Servidor S ervidor
Padre Padre Padre H ijo

Puerto A Puerto A Puerto A Puerto B

C liente A C liente A

Sistemas operativos: una visión aplicada 60 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Procesos cliente y servidor en máquinas distintas

Servidor Servidor Servidor


Cliente e_m ail
Puerto ficheros im presión

SO SO SO SO

RED

Sistemas operativos: una visión aplicada 61 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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 periódica
• Características
– Se arrancan al iniciar el sistema
– No mueren
– Están normalmente en espera de evento
– No hacen el trabajo, lanzan otros procesos o procesos ligeros

Sistemas operativos: una visión aplicada 62 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32

Sistemas operativos: una visión aplicada 63 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Servicios de gestión de procesos (POSIX)

• Identificación de procesos
• Entorno de un proceso
• Creación de procesos
• Cambio del programa de un proceso
• Esperar la terminación de un proceso
• Finalizar la ejecución de un proceso
• Información sobre procesos

Sistemas operativos: una visión aplicada 64 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Servicios POSIX: fork
• El fork crea un proceso clonando al padre
Ma p a d e
m e m o ria

Im a g e n d e l
p ro c e so A Ta b la d e p ro c e so s

BC P
A

El p ro c e so A h a c e u n fo rk y c re a
e l p ro c e so h ijo B

Ma p a d e
m e m o ria

Im a g e n d e l
p ro c e so A Ta b la d e p ro c e so s
Nu e vo PID
Im a g e n d e l BC P BC P
Nu e va d e sc rip c ió n d e m e m o ria
p ro c e so B A B
Distin to va lo r d e re to rn o (0 e n e l h ijo )

Sistemas operativos: una visión aplicada 65 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Servicios POSIX: exec
• El exec cambia el programa de un proceso
Ma p a d e
m e m o ria

Ta b la d e p ro c e so s
Im a g e n El p ro c e so h a c e u n e xe c
d e l p ro c e so BC P

Ma p a d e
m e m o ria

Se b o rra la im a g e n d e m e m o ria
Ta b la d e p ro c e so s Se b o rra la d e sc rip c ió n d e la m e m o ria y re g istro s
Se c o n se rva e l PID
BC P

Ma p a d e
m e m o ria

Se c a rg a la n u e va im a g e n
C a rg a d o r

O b je to Ta b la d e p ro c e so s Se p o n e PC e n d ire c c ió n d e a rra n q u e
e je c u ta b le Im a g e n
d e l p ro c e so Se c o n se rva n lo s fd
BC P
Bib lio te c a
siste m a

Sistemas operativos: una visión aplicada 66 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Servicios gestión 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 (código) 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 terminación del
mismo.
void exit(int status)
– Finaliza la ejecución de un proceso indicando el estado de terminación del mismo.
pid_t getpid(void)
– Devuelve el identificador del proceso.
pid_t getppid(void)
– Devuelve el identificador del proceso padre.
Sistemas operativos: una visión aplicada 67 © J. Carretero, F. García, P. de Miguel, F.
Pérez
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
• Descripción :
– 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 visión aplicada 68 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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
• Descripción:
– 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 señales con la acción por defecto seguirán por defecto,
las señales con manejador tomarán la acción por defecto.

Sistemas operativos: una visión aplicada 69 © J. Carretero, F. García, P. de Miguel, F.


Pérez
exit. Terminación de un proceso

• Servicios:
int exit(int status);
• Argumentos:
– Código de retorno al proceso padre
• Descripción:
– Finaliza la ejecución del proceso.
– Se cierran todos los descriptores de ficheros abiertos.
– Se liberan todos los recursos del proceso

Sistemas operativos: una visión aplicada 70 © J. Carretero, F. García, P. de Miguel, F.


Pérez
wait. Espera la terminación de un proceso hijo

• Servicios:
#include <sys/types.h>
pid_t wait(int *status);
• Argumentos:
– Devuelve el código de terminación del proceso hijo.
• Descripción:
– 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 terminación del mismo.

Sistemas operativos: una visión aplicada 71 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Uso normal de los servicios

pid P pid P
pid P
fork() wait()
padre padre padre

pid H pid H pid H


exec() exit() zom bie
hijo hijo hijo

pid P pid P pid H pid P pid H pid P

texto

datos
pila

Ficheros, tuberías, ...

Sistemas operativos: una visión aplicada 72 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Evolución de procesos I

• El padre muere: INIT acepta los hijos

Init Init
Init Init Init w ait() w ait()

P roceso A P roceso A P roceso A


fork() exit()

P roceso B P roceso B P roceso B P roceso B


exit()

Sistemas operativos: una visión aplicada 73 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Evolución de procesos II

• Zombie: el hijo muere y el padre no hace wait

Init Init Init Init Init

P roceso A P roceso A P roceso A P roceso A P roceso A


fork() w ait()

P roceso B P roceso B P roceso B P roceso B


exit() zom bie zom bie

Sistemas operativos: una visión aplicada 74 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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 visión aplicada 75 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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 visión aplicada 76 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Servicios POSIX para la gestión 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: tamaño de la pila, prioridad, política de
planificación, etc.
– Existen diversas llamadas para modificar los atributos.
• int pthread_join(pthread_t thid, void **value)
– Suspende la ejecución de un proceso ligero hasta que termina el proceso ligero
con identificador "thid".
– Devuelve el estado de terminación del proceso ligero.
• int pthread_exit(void *value)
– Permite a un proceso ligero finalizar su ejecución, indicando el estado de
terminación del mismo.
• pthread_t pthread_self(void)
– Devuelve el identificador del thread que ejecuta la llamada.

Sistemas operativos: una visión aplicada 77 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Servicios POSIX para la gestión de procesos ligeros II

• int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)


– Establece el estado de terminación de un proceso ligero.
– Si "detachstate" = PTHREAD_CREATE_DETACHED el proceso
ligero liberara sus recursos cuando finalice su ejecución.
– Si "detachstate" = PTHREAD_CREATE_JOINABLE no se liberarn
los recursos, es necesario utilizar pthread_join().

Sistemas operativos: una visión aplicada 78 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Jerarquía de procesos ligeros
P ro ce so
lige ro A

p _ cre a te
p _ crea te
p_ cre ate
N o in d e p en d .

P ro ce so P ro ce so
lig e ro D lig e ro C
P ro ce so
lig e ro B
p _ e xit
p _ jo in

p _ e xit

Sistemas operativos: una visión aplicada 79 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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 visión aplicada 80 © J. Carretero, F. García, P. de Miguel, F.
Pérez
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 visión aplicada 81 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Servicios POSIX para la planificación de procesos

• Modificar la prioridad de un proceso


– int sched_param(pid_t pid, const struct_param *param);
• Modificar la prioridad y la política
– int sched_scheduler(pid_t pid, const sched_param
*param);
• Obtener los parámetros de planificación 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 visión aplicada 82 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Servicios POSIX para la gestión de señales
• int kill(pid_t pid, int sig)
– Envía al proceso "pid" la señal "sig"
• int sigaction(int sig, struct sigaction *act, struct sigaction *oact)
– Permite especificar la acción a realizar como tratamiento de la
señal "sig"
• int pause(void)
– Bloquea al proceso hasta la recepción de una señal.
• unsigned int alarm(unsigned int seconds)
– Genera la recepción de la señal SIGALRM pasados "seconds”
segundos.
• sigprocmask(int how, const sigset_t *set, sigset_t *oset)
– Se utiliza para examinar o modificar la máscara de señales de un
proceso.

Sistemas operativos: una visión aplicada 83 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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; /* función a ejecutar */
act.sa_flags = 0; /* ninguna acción especifica
*/

sigaction(SIGALRM, &act, NULL);


act.sa_handler = SIG_IGN; /* ignora la señal SIGINT */
sigaction(SIGINT, &act, NULL);
/* recibe SIGALRM cada 3 segundos */
for(;;){
alarm(3);
pause();
}
}Sistemas operativos: una visión aplicada 84 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Programa de ejemplo II (A)
#include <sys/types.h>
#include <signal.h>
#include <stdio.h>
/* programa que temporiza la ejecución 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 visión aplicada 85 © J. Carretero, F. García, P. de Miguel, F.


Pérez
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 acción específica
*/
sigaction(SIGALRM, &act, NULL);
alarm(5);
wait(&status);
} exit(0);
}

Sistemas operativos: una visión aplicada 86 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Contenido

• Procesos
• Multitarea
• Información del proceso
• Formación de un proceso
• Estados del proceso
• Procesos ligeros
• Planificación
• Señales y excepciones
• Temporizadores
• Servidores y demonios
• Servicios POSIX
• Servicios Win32
Sistemas operativos: una visión aplicada 87 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Creación 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 visión aplicada 88 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Terminación de procesos

• Terminar la ejecución de un proceso


– VOID ExitProcess(UINT nExitCode);
• Obtener el código de terminación de un proceso
– BOOL GetExitCodeProcess(HANDLE hProcess, LPDWORD
lpdwExitCode);
• Finalizar la ejecución de otro proceso
– BOOL TerminateProcess(HANDLE hProcess, UINT
uExitCode);
• Esperar por la finalización de un proceso
– DWORD WaitForSingleObject(HANDLE hObject, DWORD
dwTimeOut);
– DWORD WaitForMultipleObjects(DWORD cObjects,
LPHANDLE lphObjects, BOOL fWaitAll, DWORD dwTimeOut);

Sistemas operativos: una visión aplicada 89 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Servicios de gestión 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 ejecución de un proceso ligero
– VOID ExitThread(DWORD dwExitCode);

Sistemas operativos: una visión aplicada 90 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Servicios de planificación

• 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.
• Modificar o consultar la clase de prioridad
– BOOL SetPriorityClass(HANDLE hProcess,
DWORD fdwPriorityClass);
– DWORD GetPriorityClass(HANDLE hProcess);

Sistemas operativos: una visión aplicada 91 © J. Carretero, F. García, P. de Miguel, F.


Pérez
Servicios de planificación

• Prioridad de los procesos ligeros


  THREAD_PRIORITY_LOWEST
  THREAD_PRIORITY_BELOW_NORMAL
  THREAD_PRIORITY_NORMAL
  THREAD_PRIORITY_ABOVE_NORMAL
  THREAD_PRIORITY_HIGHEST
• Modificar o consultar el nivel de prioridad de un proceso ligero:
– BOOL SetTrheadPriority(HANDLE hThread, DWORD
fdwPriority);
– DWORD GetThreadPriority(HANDLE hProcess);

Sistemas operativos: una visión aplicada 92 © J. Carretero, F. García, P. de Miguel, F.


Pérez

También podría gustarte