Inf-3240 Presentación Guía de la Unidad 2.ppt

nueru622 0 views 92 slides Sep 20, 2025
Slide 1
Slide 1 of 92
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81
Slide 82
82
Slide 83
83
Slide 84
84
Slide 85
85
Slide 86
86
Slide 87
87
Slide 88
88
Slide 89
89
Slide 90
90
Slide 91
91
Slide 92
92

About This Presentation

Presentación Guía de la Unidad 2


Slide Content

Sistemas operativos: una visión aplicada
Capítulo 3
Procesos

Sistemas operativos: una visión aplicada 2 © 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 3 © 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 4 © 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
•Planificador: Módulo del SO que decide qué proceso se ejecuta
•Proceso nulo
L isto B loqueado
E jecución
O
p
e
ra
c

n
E
/S
Final E/S
Termina
Nuevo
Fin tiem
po
Planificado

Sistemas operativos: una visión aplicada 5 © 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 6 © 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
•Proceso hermano
•Proceso abuelo
•Vida de un proceso
•Crea
•Ejecuta
•Muere o termina
•Ejecución del proceso
•Batch
•Interactivo
•Grupo de procesos
P ro c . In ic .
In ic io In ic io
S h ellSh ell
E d ito r
D e m . Im p r.D e m . C o m ..
P ro c e so A
P ro c e so B P ro c e so D P ro c e s o C
P ro c e so EP ro c e so F
I n ic ioI n ic io

Sistemas operativos: una visión aplicada 7 © 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 8 © 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 9 © J. Carretero, F. García, P. de Miguel, F. Pérez
Tipos de sistemas operativos
Nº procesos
1
1
más de 1
más de 1
Nº usuarios
Monoproceso
Monousuario
Multiproceso
Monousuario
Multiproceso
Multiusuario

Sistemas operativos: una visión aplicada 10 © 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
Procesam iento
E ntrada/salida
Tiem po

Sistemas operativos: una visión aplicada 11 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Ejemplo de ejecución en un sistema multitarea
•Proceso nulo
Procesamiento
Entrada/salida
Listo
SO
Tiem po
Proceso A
Proceso B
Proceso C
Procesador

Sistemas operativos: una visión aplicada 12 © 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 13 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Proceso B
Proceso A
Proceso C
SO
Cada proceso reside
totalmente en M.p
Memoria
principal
Grado de multiprogramación
U
t
i
l
i
z
a
c
i
ó
n

d
e
l

p
r
o
c
e
s
a
d
o
r
100%
0%
Grado de multiprogramación
•Grado de multiprogramación: nº de procesos activos
•Necesidades de memoria principal: Sistema sin memoria virtual

Sistemas operativos: una visión aplicada 14 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Nivel de Multiprogramación
Al aumentar el nivel de multiprogramación a
cada proceso le tocan menos marcos de página
M
a
r
c
o
s

d
e

p
á
g
i
n
a

p
o
r

p
r
o
c
e
s
o
1 2 3 4
Necesidades de memoria principal
•Necesidades de memoria principal: Sistema con memoria virtual

Sistemas operativos: una visión aplicada 15 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Nivel de M ultiprogram ación
%

U
t
i
l
i
z
a
c
i
ó
n

d
e

U
C
P
MEMORIA GRANDE
Lim itado por el dispositivo
de paginación
100 %
Nivel de M ultiprogram ación
Lim itado por el dispositivo
de paginación
%

U
t
i
l
i
z
a
c
i
ó
n

d
e

U
C
P
100 %
M EM ORIA PEQUEÑA
Rendimiento del procesador y grado de
multiprogramación
•Necesidades de memoria principal: Sistema con memoria virtual

Sistemas operativos: una visión aplicada 16 © 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 17 © 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 18 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Información de un proceso II
M apa de
M emoria
M apa de m em oria
del P ro ceso A
Ta blas S O
PC
SP
Estado
M apa de m em oria
del P ro ceso B
M apa de m em oria
del P ro ceso C
R egistros
generales
R egistros
especiales
Ta blas del sistem a operativo
Tabla de procesos
- Tabla de m em oria
- Tabla de E/S
- Tabla de ficheros
B C P Proceso BB C P Proceso A B C P Proceso C
-
- Iden tificación
- C ontrol
E stad o (registros)-
- Iden tificación
- C ontrol
E stad o (registros) -
- Iden tificación
- C ontrol
E stad o (registros)

Sistemas operativos: una visión aplicada 19 © 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 20 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Preparación del código de un proceso
Módulo
fuente A
Módulo
fuente B
Compilador o
ensamblador
Módulo
objeto A
Módulo
objeto B
Otros
objetos
Montador
Objeto
ejecutable
Cargador
Editor
Ejecutable en
memoria
Problema
Bibliotecas
del sistema

Sistemas operativos: una visión aplicada 21 © 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 22 © J. Carretero, F. García, P. de Miguel, F.
Pérez
PROCESOPROCESO
TEXTO
DATOS
PILA
•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
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

Sistemas operativos: una visión aplicada 23 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Imagen de memoria III
•Sistema co n memoria vir tual
•La info rmación de traducción est á en la tabl a de páginas
•Preasignac ión de zona de intercambi o: To das la s páginas están en disco, algunas están copiadas en mar cos de pági na
M em oria
virtual
D isco
M em oria
princip al
Ta bla d e
páginas
U na tabla de
páginas
por pro ceso
C ódigo
D atos
Pila
R IE D
Ta m a ñ o

Sistemas operativos: una visión aplicada 24 © 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 25 © 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 26 © 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 27 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Compartir información
Ta b la d e
fich ero s
Ta b la d e
fich ero s
Ta bla d e
fich eros
BCP 4 BCP 7 BCP 23
23 23
24 45 6
IDFF PP
0
54
45 6 3 456 3
34 51 22 3 45
63 3
56 56
28 5 5 66
53 68
4 4
34 51 21 0 000
33
67 8 2
0 0 0
1 1
1
1
2 2
2
2
3 3
3
3
4 4
4
4
fd
0
fd fd

Sistemas operativos: una visión aplicada 28 © 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 29 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Formación de un proceso
Objeto
ejec utable
Bibliotec a
sistema
Mapa de
memoria
Ima gen
del proc eso
Ta bla de proc esos
BC P
C
a
r
g
a
d
o
r

Sistemas operativos: una visión aplicada 30 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Estados de un proceso
Ejecución
Listo y
susp endido
Listo
Bloqu eado y
susp endido
Bloqueado
P
l a
n i f i c a d o
T
i e m
p
o
c o
n s u
m
i d
o
E
s
p
e
r
a

p
o
r

E
/
S
Fin E/S
Exit
Fin E/S
E
x
p
u
ls
a
d
o

a
l
d
is
c
o
E
x
p
u
ls
a
d
o

a
l
d
is
c
o
R
e
c
u
p
e
r
a
d
o

d
e
l
d
is
c
o
E n tra a l
sis te m a
M
e
m
o
r
i
a
Procesos por lotes
en espera
Z
o
n
a

d
e
i
n
t
e
r
c
a
m
b
i
o

Sistemas operativos: una visión aplicada 31 © 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 32 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Interrupción: se salva el estado
P C
S P
E stado
R egistros
generales
R egistros
especiales
Tabla de procesos
E
s
t
a
d
o
B C P P roceso BB C P P roceso A B C P P roceso N
Inform ac ión de
C ontro l
Inform ac ión de
C ontro l
Inform ac ión de
C ontro l
Inform ac ión de
identificació n
Inform ac ión de
identificació n
Inform ac ión de
identificació n
E stad o
(registros)
E stad o
(registros)
E stad o
(registros)

Sistemas operativos: una visión aplicada 33 © 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 34 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Proceso
Procesos ligeros
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
–Señales y semáforos
–Contabilidad

Sistemas operativos: una visión aplicada 35 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Estados del proceso ligero
Proceso
Procesos ligeros
Activo
Bloqueado por acceso a disco
Bloqueado por comunicación

Sistemas operativos: una visión aplicada 36 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Estructura de un proceso en Windows
NT
Thread 1
R e gistros
P ila
Entorno del proceso
Recursos (ficheros, ...)
Datos
Código
Proceso
Thread n
R e gistros
P ila
......

Sistemas operativos: una visión aplicada 37 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Procedimiento 2
Procedimiento 1
Espera
en E/S
P F
Procedimiento 1
Ejecución
paralela
Ejecución
serie
Espera
en E/S
P F
Procedimiento 2
Procesamiento
Espera
en E/S
P F
Espera
en E/S
P F
Paralelización utilizando procesos ligeros

Sistemas operativos: una visión aplicada 38 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Trabajador
Puerto
Núcleo S
o
l
i
c
i
t
u
d
e
s
Puerto
Núcleo S
o
l
i
c
i
t
u
d
e
s
Puerto
Núcleo
Distribuidor
S
o
l
i
c
i
t
u
d
e
s
Procesos ligeros en el diseño de servidores

Sistemas operativos: una visión aplicada 39 © 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 40 © 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 41 © 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 42 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Estados del proceso
•Sin expulsión
•Ejecución
•Listo
•Bloqueado
•Con expulsión al disco (swap)
Ejecución
Listo y
susp endido
Listo
Bloqu eado y
susp endido
Bloqueado
P
l a n i f i c a d o
T
i e m
p
o
c o n
s u
m
i d
o
E
s
p
e
r
a

p
o
r

E
/
S
Fin E/S
Exit
Fin E/S
E
x
p
u
ls
a
d
o

a
l

d
is
c
o
E
x
p
u
ls
a
d
o

a
l

d
is
c
o
R
e
c
u
p
e
r
a
d
o

d
e
l

d
i
s
c
o
E ntra al
siste m a
M
e
m
o
r
i
a
Procesos batch
en espera
Z
o
n
a

d
e
i
n
t
e
r
c
a
m
b
i
o

Sistemas operativos: una visión aplicada 43 © 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
E je c u ción
L is to y
s u s p e n d i d o
L is to
B l o q u e a d o y
s u s p e n d id o
B lo q ue a d oF in E /S
E xit
E n tr a a l
s is te m a
P la n if ic a c ió n a c o rt o p la z o
P la n ific a c ió n a m e d i o p la z o
P la n ific a c ió n a
la rg o p la z o
M
e
m
o
r
i
a
S
w
a
p
P ro c e s o s B a tc h
e n e s p e r a

Sistemas operativos: una visión aplicada 44 © 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 45 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Colas de procesos
Cabecera de la Subcola
de Prioridad 0
Cabecera de la Subcola
de Prioridad 29
Cabecera de la Subcola
de Prioridad 1
Cabecera de la Subcola
batch 1
Cabecera de la Subcola
batch 0
BCP-A
BCP-B
BCP-C BCP-E BCP-F
BCP-D
Palabra
Resumen
Bit 0
Bit 1
Bit 29
Bit 30
Bit 31
1
0
1
1
0

Sistemas operativos: una visión aplicada 46 © 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 47 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Tabla de procesos
BCP1 BCP7BCP2 BCP8BCP3 BCP9BCP4 BCP10BCP5 BCP11BCP6 BCP12
1 90 56 11 87 0
4
Punteros de las colas
2
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

Sistemas operativos: una visión aplicada 48 © J. Carretero, F. García, P. de Miguel, F.
Pérez
P ro c e so
en e jec u c ió n
5 3 71 3 28 7 23
P ro c e so
en e je c u c ió n
53 71 3 28 7 23
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)
•Prioridades
–Fijas (problema de inanición)
–Aumentarlas con el envejecimiento

Sistemas operativos: una visión aplicada 49 © 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 50 © 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 51 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Planificación en Windows NT
Iniciado Situar en la cola
de listos
Reiniciado
Ejecución
finalizada
Bloqueado
Espera
terminada
Cam bio de contexto. Com ienzo de ejecución
Fin de bloqueo
Seleccionado
para
ejecución
Expulsado
Expulsado
Pila del kernel
en swap
Pila del
kernel en m em oria
Listo
ReservaEjecución
Fin alizado
Transición
Bloqueado

Sistemas operativos: una visión aplicada 52 © 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 53 © 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
Señal
Código
Proceso
Función
tratamiento

Sistemas operativos: una visión aplicada 54 © 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 55 © 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 56 © 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 57 © 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 58 © 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 59 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Proceso servidor
PROCESO
SERVIDOR
PROCESOS
CLIENTES
RECURSO

Sistemas operativos: una visión aplicada 60 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Funcionamiento de un proceso servidor
Puerto A Puerto A Puerto A Puerto B
Servidor
Padre
Servidor
Hijo
Cliente A Cliente A
a) b) c)
Servidor
Padre
Servidor
Padre

Sistemas operativos: una visión aplicada 61 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Procesos cliente y servidor en máquinas distintas
Cliente
Puerto
Servidor
ficheros
Servidor
impresión
Servidor
e_mail
SO SO SO SO
RED

Sistemas operativos: una visión aplicada 62 © 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 63 © 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 64 © 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 65 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Servicios POSIX: fork
•El fork crea un proceso clonando al padre
Im a gen del
proc e so B
Ta bla de proc e sos
BC P
A
Ma pa de
m e m oria
Im a gen del
proc e so A
Ta bla de proc e sos
BC P
A
BC P
B
Ma pa de
m e m oria
Im a gen del
proc e so A
Nuevo PID
Nueva de sc ripc ión de m e m oria
Distinto va lor de re torno (0 e n el hijo)
El proc e so A ha c e un fork y c re a
el proc e so hijo B

Sistemas operativos: una visión aplicada 66 © J. Carretero, F. García, P. de Miguel, F.
Pérez
O b je to
e je c uta b le
Bib lio te c a
siste m a
Ma p a d e
m e m o ria
Im a g e n
d e l p ro c e so
Ta b la d e p ro c e so s
BC P
Ma p a d e
m e m o ria
Im a g e n
d e l p ro c e so
C
a
r
g
a
d
o
r
Ta b la d e p ro c e so s
BC P
Ma p a d e
m e m o ria
Ta b la d e p ro c e so s
BC P
El p ro c e so ha c e un e xe c
Se b o rra la im a g e n d e m e m o ria
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 nse rva e l PID
Se c a rg a la nue va im a g e n
Se p o ne PC e n d ire c c ió n d e a rra nq ue
Se c o nse rva n lo s fd
Servicios POSIX: exec
•El exec cambia el programa de un proceso

Sistemas operativos: una visión aplicada 67 © J. Carretero, F. García, P. de Miguel, F.
Pérez
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.
Servicios gestión de procesos (POSIX)

Sistemas operativos: una visión aplicada 68 © 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 69 © 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 70 © 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 71 © 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 72 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Uso normal de los servicios
fork()
exec() exit()
wait()
pid P
padre
pid H
padre
pid P
padre
zombie
pid P
hijohijo
pid H
hijo
pid H
pid P pid P pid P pid Ppid Hpid H
texto
pila
datos
Ficheros, tuberías, ...

Sistemas operativos: una visión aplicada 73 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Evolución de procesos I
•El padre muere: INIT acepta los hijos
exit()
Init
Proceso A
fork()
Init
Proceso B
Proceso A
Init
Proceso B
Proceso A
wait()
Init
wait()
Init
exit()
Proceso B
Proceso B

Sistemas operativos: una visión aplicada 74 © 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
wait()
Init
Proceso B
Proceso A
Init
Proceso A
exit()
Proceso B
Init
Proceso A
zombie
Proceso B
Init
zombie
Proceso B
Proceso A
Init
Proceso A
fork()

Sistemas operativos: una visión aplicada 75 © 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 76 © 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 77 © 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 78 © 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 79 © J. Carretero, F. García, P. de Miguel, F.
Pérez
Jerarquía de procesos ligeros
No independ.
Proceso
ligero A
p_join
p_exit
p_exit
p_exit
p_create
p_create
p_create
Proceso
ligero B
Proceso
ligero D
Proceso
ligero C

Sistemas operativos: una visión aplicada 80 © 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 81 © 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 82 © 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 83 © 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 84 © J. Carretero, F. García, P. de Miguel, F.
Pérez
#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();
}
}
Programa de ejemplo I

Sistemas operativos: una visión aplicada 85 © 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 86 © 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 87 © 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 88 © 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 89 © 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 90 © 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 91 © 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 92 © 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);
Tags