Está en la página 1de 20

Administración de Procesos

Arquitectura de Computadoras
y Sistemas Operativos 1

Ing. Jorge Gutiérrez Gutiérrez


¿ Qué es un proceso ?
Datos y operaciones son los componentes primitivos de un calculo.
Calculo es un conjunto finito de operaciones aplicado a un conjunto
finito de datos para resolver un problema

R1 R1
Proceso:
X1 R2 X1
Un programa
R=lect. en ejecucion
P1 R3 X2 P1
X=Ejec.
P=Impr. R2 R4 X3 P2
X2 R5 X4 P3
Secuencial Concurrente
Programa vs proceso

Diferencia sutil, pero crucial

Cientifico culinario, que cocina una receta;


Receta = Programa
Cientifico = CPU
Ingrediente = Datos de entrada
Proceso = Actividad cientifico lee la receta,
busca ingredientes y cocina el pastel

Tipos Procesos
Procesos Sistema: No asignados a ningun terminal; creados en la
inicialización del Sistema
Procesos Usuarios: Lanzados por un usuario desde un terminal.
Procesos Reentrantes: Varios usuarios utilizan el mismo programa;
una sola copia del programa es pasada a memoria principal
Estados de un proceso

Exit
Admitido Terminado
Nuevo
Interrupción

Listo Ejecución
Planificador
Despacha
I/O o termino I/O o un evento
de un evento Espera de espera

Cuando un proceso se ejecuta, este cambia de estado.


Nuevo: El proceso es iniciado su creación.
Ejecución: Instrucciones son ejecutadas
Espera: El proceso esta esperando por algun evento ocurra
Listo: El proceso esta esperando la asignación del procesador
Terminado: El proceso ha finalizado su ejecución.
Estado de un Proceso
El PCB: bloque control procesos

 Entre otros almacena el contexto del proceso


 El estado actual del proceso
 Idenficador único del proceso
 Un apuntador al padre del proceso, (el que lo creó)
 Apuntadores a sus procesos hijos, (los que el creó)
 La prioridad del proceso
 Apuntadores a la localidad de memoria utilizada por el
proceso
 Apuntadores a los recursos asignados
 Un área de registro
 El proceso que esta actualmente ejecutandose, (en un
sistema que soporta multiprocesamiento)
Posibles operaciones procesos

 Creación procesos, lo cual involucra:


nombre procesos
insertarlo en la lista de procesos
determinar prioridad inicial proceso
crear su PCB
asignarle sus recursos iniciales
Procesos padres crean procesos hijos, y estos a su
vezcrean otros procesos, formando un arbol de
procesos, compartiendo recursos y ejecucion.
 Destrucción procesos, los recursos de los procesos son
devueltos al SO.
 Suspención de procesos, Reanudación procesos
 Cambio de prioridad, Bloquear un proceso
 Despertar a un proceso, Dispatch un proceso
 Permitir que un proceso se pueda comunicar con otro
Las suspenciones y reanudaciones

 Puede ser iniciada por el propio proceso o por otros


 Aplicaciones
 Sistema muy sobrecargado
 Sistema funciona mal y es probable que falle, se pueden
suspender procesos activos para reanudarlos una vez que se
corrigió el problema
 Un usuario desconfía de los resultados parciales de un proceso
 Necesidad de recuperar la terminal de conrtrol
 Uso principal: balanceo carga del sistema
 Modificación diagrama estados, nuevas transiciones:
 suspend(procname): listo-> listo_susp
 resume(procname): listo_sup -> listo
 suspend(procname): bloqueado -> bloqueado_susp
 resume(procname): bloqueado_sup -> bloqueado
Estado de
Procesos y
En ejecución Suspenciones

T2
T1
T3

Bloqueado Listo

T4

suspender reanudar reanudar


(suspend) suspender (resume)
(resume)
(suspend)

Bloqueado_suspendido Listo_suspendido
Colas de los Procesos

Ingresa CPU
Colas listos Fin
Cola de
Jobs Cola(s)
IO Espera I/O

Cola de jobs: Contiene todos los procesos en el


sistema.
Cola de Listos: Contiene todos los procesos residentes
en memoria principal, listos y esperando ejecutarse.
Colas de dispositivos. Contiene todo los procesos
esperando por dispositivo I/O.
Un proceso migra entre las distintas colas.
Schedulers

Colas listos CPU


Cola de
Jobs Cola(s)
IO Espera I/O
Scheduler “long-term” (Job scheduler). Selecciona que
procesos seran puestos en la cola de listos.
Scheduler “short-term” (Cpu Scheduler). Selecciona que
Procesos sera el siguiente en ejecutarse, asignado la CPU.
El Cpu scheduler es requerido muy frecuentemente (en miliseg.)
Debe ser rapido.
El Job scheduler es requerido con poca frecuencia (en seg)...
Puede ser lento. Este controla el grado de multiprogramación.
Diagrama Estados y Transiciones de un proceso en Unix
User Running

sys. call
interrupt, interrupt return to user
interrupt return
return

Kernel Running
9 2 7
exit
Zombie Preempted
reschedule
sleep process

Ready to Run
4 3 in Memory
wake up
Asleep in
Memory enough memory

swap out swap swap fork


in out 8

not enough memory


(swappingsystem only)
6 5
wake up
Sleep, Swapped Ready to Run, Swapped
Las interrupciones
 Altera secuencia procesador ejecuta las instrucciones
 Interrupción generada por el hardware del sistema
 Operaciones efectuadas durante una interrupción
 S.O. toma el control
 S.O. guarda el contexto del proceso interrumpido
 S.O. analiza interrupción y transfiere control a la rutina apropiada
 rutina procesa la interrupción
 se reestablece el contexto del proceso interrumpido
 se ejecuta el proceso interrumpido, (o el que sigue)
 Tipos interrupciones
 Interrupciones SVC (SuperVisor Call)
 Interrupciones Entrada/Salida
 Interrupciones Externas
 Interrupciones de Reinicio
 Interrupciones de verificación programa
 Interrupciones de verificación máquina
Programa # 2 Modo
User
Programa # 1
Llamada al Supervisor
Memoria 4
Principal
3 Modo
1 Tabla de
Despacho
Kernel
Rutina
de
2 Servicio

Llamadas al Sistema o Supervisor (SVC)


Los threads

 Un thread es una secuencia de pasos de ejecución de un programa, cuenta con su


contador de programas (PC) así como un stack para llevar control de variables
locales y direcciones de regreso
 Ejecución código. un path de ejecución es trazado (thread de control)
 Varios threads pueden ejecutarse concurrentemente, proporcionando
concurrencia dentro de un proceso:
 si un thread cambia de directorio, todos cambian de directorio
 si un thread cierra un arhivo, este se cierra para todos
 Alguna veces llamados procesos ligeros, (lightweigth procs)
 la creación/destrucción de procesos provoca una sobrecarga
 nuevos procesos Unix: no provocar sobrecarga creación/destrucción
 ideas simple: crear un conjunto mínimo de localidades para los segmentos
esenciales, pero no “atar” dichos segmentos a un proceso a menos que sea
necesario
 Desventajas threads:
 Idea de combinar concurrencia con recursos compartidos es nueva y puede
provocar errores en su uso
 Problemas al extender semantica de algunas operaciones de Unix a un
ambiente multithread, (ejemplo: a quien entregar una señal recien llegada)
Los threads y los procesos ligeros
proceso 1 proceso 2 proceso 3

Threads
(usuario) Espacio
usuario

Procesos
ligeros (kernel)
(Lightweitht
Processes)

Espacio
kernel

CPU CPU CPU CPU


Context switch
* Cuando el CPU cambia a otro proceso, el sistema debe salvar el estado del
proceso viejo y cargar el el estado salvado del nuevo proceso.
* El tiempo del “context switch” es una sobrecarga, el sistema usualmente no
puede trabajar mientras ejecuta el intercambio.
* El tiempo depende del hardware disponible.

PSW = Controla el orden de ejecucion de las instrucciones y contiene la informacion


del estado del proceso: Hay 03 tipos:
PSW-Current ...... Contiene la siguiente instrucción a ejecutarse
PSW-new
PSW-Old

SVC SVC
I/O I/O
Psw-Current
Exter. Exter.
P.Chk P.Chk
M.Chk M.Chk
PSW-NEW PSW-OLD
Procesamiento Paralelo
Ventajas:“Rapidez” de ejecución de programas
Desventajas:
Difíciles de depurar
Interacciones complejas
Demostración/prueba más difícil
Construcciones lenguajes para indicar paralelismo

Secuencial a Paralelo Paralelo a Secuencial


Ejemplo: cálculo raíz cuadrática

x:= (- b + (b ^ 2 - 4 * a * c) ^ 0.5) / ( 2 * a )
(1) parbegin
(1) b^2 t1 := -b
(2) 4*a t2 := b ^2
(3) (4 * a) * c t3 := 4 * a
(4) (b ^ 2) - ( 4 * a * c) t4 := 2 * a
(5) (b ^ 2) - ( 4 * a * c) ^ 0.5 parend
(6) -b (2) t5 := t3 * c
(7) (- b) + (b ^ 2) - ( 4 * a * c) ^ 0.5 (3) t5 := t2 - t5
(8) 2*a (4) t5 := t5 ^ 0.5
(9) ((- b) + (b ^ 2) - ( 4 * a * c) ^ 0.5 ) / (2 * a) (5) t5 := t1 + t5
(6) r := t5 / t4

t2:= b^2 t3:=4 * a

Grafo de t1:= -b
precedencia
t5 := t3 * c
t4:=2*a
t5 := t2 - t5

t5 := t1 + t5
t5 := t5 ^0.5
r := t5 / t4

También podría gustarte