Sistemas Operativos 2
Sistemas Operativos 2
Sistemas Operativos 2
De Programas a Procesos
Corresponde a:
Mdulo 2 de Notas Sobre Sistemas Operativos (Manual del alumno)
Captulos 3, y 4 de STALLINGS
Captulos 4 de SILBERSCHATZ
Carlos NEETZEL
cneetzel@sistemasoperativos.com.ar
CONCEPTO DE TASK
PROCESOS LIVIANOS
THREADS
FIBERS
LA REPRESENTACIN DE LOS PROCESOS
PROCESOS
VARIABLES LOCALES
RECURSOS DE UN PROCESO
VARIABLES GLOBALES
TIPOS PROCESOS
DISJUNTOS
CONCURRENTES
INTERACTUANTES
REUTILIZABLES
REENTRANTES
Definiciones Previas
Programa: conjunto ordenado de operaciones sobre un espacio de
nombres de objetos (variables, archivos, etc.) creados por el
programador y que representan un conjunto ordenado de instrucciones
que pretenden resolver un problema.
Una Instruccin es una unidad de Ejecucin que dura un tiempo finito
y se ejecuta sobre un procesador (es indivisible, no se descompone ni
se interrumpe y se dice que ejecuta atmicamente).
Pasos en la Ejecucin de un
Programa
Primer paso
PRG
FUENTE
Direcciones
Simblicas
Procesador
Lgico que
traduce al
fuente
Segundo Paso
PRG
OBJETO
Tercer Paso
PRG
EJECUTABLE
Identificadores
nicos
Direcciones
Relativas al origen
Especio de Nombres
para el Programa
(1) Compilador
(2) Link-editor
(3) Loader + S.O
Cuarto Paso
PRG en
ejecucin
Procesador
PCB
Imagen del
Proceso
Proceso
Resuelve las
referencias no
satisfechas por
el compilador
Deja un Archivo
en Lenguaje Ejecutable y Desplazamientos relativos al origen
guarda
Copia y
carga
Pila
Piladel
del
Proceso
Proceso
Es el rea de
memoria donde se
ejecuta el proceso
5
Definiciones
Diferencias de Conceptos:
PROGRAMA
PROCESO
Es un conjunto de instrucciones.
Es un conjunto de instrucciones ms
su contexto de ejecucin descrito en
su PCB.
Read (B)
Read (A)
Se pueden ejecutar
en paralelo
C = A+ B
7
JOB STEPS
Process
USER
JOB
Process
Job STEPS
Especificado y
creado por el User
Process
(dir. simblicas)
Espacio de Direccionamiento
CPU
Proceso
S.O.
PGR
Data
STACK
Heap
Operaciones
I/O
etc.
PROCESADORES
La ejecucin significa que se suceden los procesos del usuario mezclados con las
llamadas al sistema (System Calls) conmutndose el contexto de ejecucin en cada
cambio.
Usuario (User): Es aquel que somete un trabajo (Job) a un sistema de cmputos.
Trabajo (Job): Conjunto de programas y datos sometidos al Sistema Operativo.
Paso de trabajo (Job Steps): Unidad del Job que debe ejecutarse en forma secuencial
mediante una serie de procesos o tareas.
Proceso o tarea (Process or Task): Sucesin de operaciones que se ejecutan
secuencialmente en el tiempo (luego se ampliar este concepto).
HILO (thread): es una parte o seccin de un proceso (registros, pila y PCB propio), y
comparten la memoria con todos los hilos que forman parte del mismo proceso. 8
prg 1
prg 2
prg 3
MEMORIA CENTRAL (MC)
PROCESO P0
Interrupcin o
llamada al sistema
SISTEMA OPERATIVO
Interrupcin o llamada al sistema
PROCESO P1
Referencias:
Ejecutando
Inactivo
Interrupcin o
llamada al sistema
11
Pointer (Puntero)
CPU DATA:
Memory Management:
FILE Management:
I/O Mangement:
ACCOUNT
Privilegios:
12
PCB:
Contiene: contexto de un proceso y todos los datos necesarios
para hacer posible la ejecucin de ese proceso y satisfacer sus
necesidades.
Se encuentra en Memoria Central, y se accede a ella en los
momentos en que se hace necesaria su actualizacin o
consulta.
Si su implementacin es esttica se podra desembocar en que
el espacio reservado para PCBs se termine.
Su ejecucin es dinmica y se puede implementar a la Tabla
PCB como un encadenamiento de PCBs en una estructura tipo
13
cola
P2
PROCESOS
Pn
PCB
Procesador
representa fsicamente
MQUINA VIRTUAL
Capaz de Ejecutar los Procesos del User
Mquina Virtual: El SO, a travs del Kernel, crea esa mquina virtual
que permite la ejecucin de los procesos sobre un procesador
14
(Hardware cableado para cada instruccin del programa en ejecucin)
haciendo una abstraccin de la complejidad del procesamiento.
Listo (Ready)
Ejecutando (Running)
Esperando (Blocked)
Terminado (Completed)
listo
initiate
create
S.O.
signal
Bloqued
esperando
16
DESTRUIR PROCESOS
TERMINAR
19
CREACION de PROCESOS
Cuando se crea un nuevo proceso existen dos alternativas:
El PADRE continua ejecutndose en forma concurrente con el HIJO. (Multitarea)
El PADRE espera hasta que alguno o todos sus HIJOS terminen.(no es
estrictamente obligatorio)
El shell lee las instrucciones que le da el usuario (a travs del teclado) e interpreta la
orden, y lo pasa al SO (kernel) para su ejecucin.
Mecanismo del shell para ejecutar la orden: crea un proceso HIJO a travs de system
call: fork(), exec(),..
Las ordenes internas del shell (cd, pwd, echo, etc.), cuando se ejecutan no se crean
procesos hijos, ya que estas ordenes son subrutinas dentro del interprete de comandos.
Cada proceso tiene un Identificador nico (PID) que corresponde a un nmero entero
Shell
Proceso Hijo
fork()
Exec()
Ejecucin de la
Orden
Proceso
Padre
Exit()
Wait()
20
Shell
i=fork()
Padre
i=25 Pid=13
21
p id P
p a d re
fo rk ()
p id H
h ijo
p id P
p id P
p id H
e x e c ()
p id P
p id H
h ijo
p id H
w a it ( )
e x it ( )
p id H
h ijo
p id P
p a d re
z o m b ie
p id P
te x to
d a to s
p ila
F i c h e r o s , t u b 22
e ra s , ...
Descendencia
y muerte de un proceso
Descendencia
de un proceso
Supongamos dos procesos (p y q) en que se dan las siguientes
relaciones:
q creado por p q D(p).
q D(p) D(q) D(p).
Se dice que q fue creado por p pertenece a la descendencia de p
y no existe otra forma de que un proceso pertenezca a D(p). Entonces
p es el padre y q el hijo.
Muerte de un proceso:
Un proceso muere cuando el proceso termina de ejecutar
(se completa) o por una falla o error. Puede ser por propia
iniciativa o por iniciativa del SO u de otro proceso.
Un proceso termina cuando ejecuta su ultima instruccin y pide al SO que lo
elimine
Cuando esto ocurre, todos sus recursos son devueltos al SO.
Cundo un proceso termina?
Se ejecut la ultima instruccin.
El proceso decide terminar.
Un proceso decide matar a otro.
Un proceso Padre puede matar a sus Hijos.
23
TERMINACION de PROCESOS
Un proceso puede terminar ejecutando el System Call
exit
El system call wait entrega el PID_Hijo que termina, de
esta forma el Padre se entera de cual Hijo termin.
Si el Padre termina, todos sus Hijos terminan
(Terminacin en cascada).
Ejemplo: Qu escribe?
main ( )
{ int hijo;
if ( (hijo = fork( ) ) == 0)
{ printf ( PID Hijo = %d \ n, getpid
( ) ) ; //ident.del proceso
pause ( ) ; // se suspende hasta seal
}
printf (PID Hijo = %d \ n, hijo) ;
exit (hijo) ;
}
24
Comienzo de la ejecucin.
Paso a estado listo o preparado
Paso a estado de ejecucin.
Paso a estado bloqueado.
Activacin.
Paso a estado suspendido -bloqueado
Paso a estado suspendido - listo.
27
Enter
Not Running
Running
Exit
Pause
Enter
Wait Queue
Dispach
Not Running
Pause
Procesador
(Running)
Exit
28
Modelo de 3 estados:
Los procesos van a estar en uno de
estos tres estados:
Ejecutando.
Listo para la ejecucin.
Bloqueados por alguna razn.
PID
A
EJECUTANDO
LISTO
BLOQUEADO
ESTADO
RUNNING
1ro en la
B
cola de
LISTOS C
READY
BLOCKED
D
E
READY
BLOCKED
PCBT
29
NUEVO
Admitido
TERMINADO
Interrumpido
Salida
Null
LISTO
EJECUTANDO
Planificador despacha
Evento o E/S
Completado
Evento o E/S
espera
BLOQUEADO
30
NEW
Admitido
Interrumpido por
time out
Activado
SUSPEND
Suspendido
Abandono
RUNNING
READY
Evento o E/S
Completado
EXIT
Planificador despacha
Evento o E/S
espera
BLOCKED
31
Modelo de 7 estados
Suspendido
NEW
Admitido
Admitido
Interrumpido por
time out
EXIT
Abandono
Activado
READY/
SUSPEND
READY
Suspendido
RUNNING
Planificador despacha
Evento o E/S
Completado
BLOCKED/
SUSPEND
Activado
Evento o E/S
espera
BLOCKED
Suspendido
32
ZOMBI
Admitido
Suficiente
Memoria
Interrumpido
por time out
Return
Swap in
Kernel
RUNNING
READY
Swap out
USER
RUNNING
Interrupcin
por System
Calls
Planificador despacha
Evento o E/S
Completado
BLOCKED/
SUSPEND
Abandono
Evento o E/S
espera
BLOCKED in
Memory
Suspendido
33
PROCESO A
E
J
E
C
U
C
I
I
N
A
C
T
I
V
O
E
J
E
C
U
C
I
Interrupcin
o Llamada al
sistema
PROCESO B
I
N
A
EJECUTA EL S.O.
C
T
GUARDA PCB del
PROCESO A
I
REPONE EL PCB
V del B en la CPU
O
Overhead
I
N
A
C
T
I
V
O
I
N
A
C
T
I
V
S.O.
O
Interrupcin
o Llamada al
sistema
EJECUTA EL
GUARDAR PCB del PROCESO B
REPONE EL PCB del A en la CPU
I
N
A
C
T
I
V
O
E
J
E
C
U
C
I
I
N
A
C
T
I
V
O
34
35
El control de un Proceso
Estructuras de control del SO:
Si el SO va administrar los procesos y los recursos mediante el
uso de tablas. Estas tablas se encadenan mediante
punteros.
Las tablas de memoria se utilizan para controlar los
espacios de direccionamiento de la memoria central y la
virtual. Estas tablas de memoria deben incluir la siguiente
informacin:
Control de Procesos
a) Modos de ejecucin: (Modo dual del procesador) .
b) Cambio de procesos sobre el procesador
c) Cambio de contexto
37
a) Modo de Ejecucin
Hace falta distinguir entre el modo de ejecucin del
procesador que se asocia con el SO y el modo
usuario que se asocia con los programas del usuario.
Ciertas instrucciones de mquina pueden
ejecutarse slo en modo privilegiado o Kernel.
Entre stas estn la lectura o modificacin de
registros de control, instrucciones primitivas de E/S
e instrucciones relativas a la gestin de memoria. Y
solamente se puede acceder a ciertas zonas de
memoria en el modo privilegiado.
El modo de menor privilegio se conoce como modo
usuario, y el de mayor privilegio como modo de
sistema, supervisor o ncleo.
38
a) Modo de Ejecucin
La razn por la que se usan dos modos:
Es necesario proteger al SO y a las estructuras de datos
importantes, tales como los PCBs, de las inferencias de los
programas de usuario.
En el modo ncleo o privilegiado, el software tiene control
completo del procesador y de todas las instrucciones, registros
y memoria.
Surgen dos preguntas:
Cmo conoce el procesador en qu modo va a ejecutar?,
Cmo se cambia de modo?
Respuestas: Hay un bit en la PSW ( palabra de estado del
procesador), que indica el modo de ejecucin. El bit se cambia
como respuesta a ciertos sucesos tales como una llamada al
sistema y, as, se cambia de modo.
39
42
EJECUCION DEL SO
Ncleo fuera de todo Proceso
Ejecucin dentro de los Procesos Usuarios
SO basado en procesos
EJECUCION DEL SO
Cada funcin del SO tambin ejecuta como procesos.
a) Ncleo fuera del proceso de usuario
Un enfoque bastante tradicional y habitual en SO mas antiguos.
El kernel del SO ejecuta fuera de cualquier proceso
El cdigo del SO se ejecuta como una entidad separada que opera
en modo privilegiado
P1
P2
..
Pn
NUCLEO
48
P1
Func.
SO
Pn
P2
Func.
SO
Func.
SO
....
Funciones de cambio de Proceso
La pila del ncleo se utiliza para gestionar las llamadas y los retornos, mientras que el
proceso est en el modo Kernel, el cdigo de los datos y del SO est en el espacio de
direcciones compartidas y son compartidas por todos los procesos de usuario.
Informa
cin del
Proceso
(PID)
Informac.
de
Estado
del
Procesador
PCB
Informac.
de Control
del
Proceso
Pila del
Usuario
Espacio de
direccionamiento
privado del usuario
(Programa + Datos)
Pila del
Ncleo
Espacio de
Direccionamiento
compartido
(Heap)
49
P1
P2 .. Pn
OS1
OS2 ..
OSk
Tipos de Procesos
Procesos disjuntos.
Procesos Concurrentes.
Tambin llamados procesos paralelos cuando pueden usar simultneamente un
recurso. Si el recurso es modificado entonces es crtico y se usa mutua
exclusin para sincronizar su uso.
Tambin se denominan procesos concurrentes cuando sus ejecuciones se
superponen en el tiempo.
Existen razones para la ejecucin concurrente, se debe a:
Informacin compartida.
Acelerar los clculos.
Modularidad
Comodidad
Para que todo esto se cumpla sin problemas se requiere que exista la
cooperacin entre procesos, y se necesita un mecanismo para la
sincronizacin y comunicacin
Otros:
Procesos reentrantes.
Procesos Interactuantes.
Procesos reutilizables.
Procesos pesados.
51
P r o c e s o s lig e r o s
P ro c e s o
P r o c e s o s lig e r o s
B lo q u e a d o p o r c o m u n ic a c i n
B lo q u e a d o p o r a c c e s o a d is c o
A c tiv o
53
54
......
T h re a d n
R e g is tr o s
P ila
55
Hilos y Procesos
56
Ventajas:
Simultneamente el Kernel puede planificar mltiples hilos del
mismo proceso en mltiples procesadores.
Si un hilo de un proceso se bloquea, el Kernel puede planificar otro
hilo del mismo proceso.
Las rutinas mismas del Kernel pueden ser multithreaded.
Desventaja:
La transferencia de control de un hilo a otro dentro del mismo
proceso le requiere al Kernel un cambio de modo.
60
Combinacin
de ULT/KLT
Ejemplo:
el SO SOLARIS
Sun.
Mltiples hilos dentro de una misma aplicacin pueden
correr en paralelo en mltiples procesadores y un System
Call bloqueante no necesariamente bloquea todo el proceso.
La tcnica llamada jacketing convierte un System Call
bloqueante en uno no bloqueante.
ULT
KLT
PLT
Null Fork
34
948
11.300
Signal Wait
37
441
1.840
62
Descripcin
Ejemplo
1:1
La mayora de las
implementaciones y
clones UNIX
Un proceso define su
espacio
y
recursos.
Mltiples hilos pueden
ser creados y ejecutados
dentro de un proceso.
WinNT,
Solaris,OS/2,
MACH
Ra, Emerald
1:M
M:M
Combina atributos de
M:1 y casos de 1:M
TRIX
M:1
63
Status
Pointers
Thread context
Estado de salida
Prioridad
Suspension count
64
TERMINAD
O - FINISH
LISTO SPAWN
BLOQUEADO
- BLOCKED
65
Hilos Trabajadores
dormidos
Hilo Trabajador
despertado
BUFFER o CACH
HILO SELECTOR
SERVIDOR
Caractersticas
Paralelismo, llamadas al sistema bloqueantes
Sin paralelismo, llamadas al sistema bloqueantes.
Paralelismo, llamadas al sistema no bloqueantes
67
Estructura en Equipo.
Job
Multihilos
Procesador
Estructura en Equipo
Job
73
75