Administración de procesos

Anuncio
Administración de procesos
Contenido:
●
Concepto de proceso
●
Operaciones sobre procesos
●
Planificación de procesos
●
Hilos (Threads)
●
Planificación del procesador
Concepto de proceso
Programas y procesos:
●
Programas
●
●
●
Colección de instrucciones que el procesador
interpreta y ejecuta
Se almacena en sistemas no volátiles necesitando,
para poder ser ejecutados, ser cargados en
memoria principal
Se considera un ente estático
Concepto de proceso
Programas y Procesos:
●
Procesos
●
Programa en ejecución
●
El sistema operativo les asigna recursos
●
Se considera un ente dinámico
●
Componentes: código, datos, pila, registros, PC,
recursos del sistema
Concepto de proceso
Programas y Procesos:
Concepto de proceso:
●
●
●
Primeros sistemas solo permitían la ejecución de
un programa a la vez
Hoy, los sistemas operativos permiten cargar varios
programas en memoria y ejecutarlos
concurrentemente
Nuevo concepto
–
–
●
Programa en ejecución
Unidad de trabajo de un SO
Surge con MULTICS para solucionar el problema
de la gestión del reparto de la CPU
Concepto de proceso
Programas y procesos
●
Características:
●
●
●
●
Los servicios superiores del SO se estructuran en
base a procesos
Permite modularizar y aislar errores de programas
durante su ejecución
Soporta concurrencia de actividades
Los trabajos (jobs) en sistemas por lotes y tareas
en sistemas de tiempo compartido.
Concepto de proceso
Programas y procesos
●
Ejecución simultanea de varios procesos:
●
Hay varias tareas que se ejecutan de forma
concurrente
–
–
Paralelismo real: operaciones de E/S (dos tareas
concurrentes)
Pseudoparalelismo: un proceso en ejecución a la vez,
pero sensación de paralelismo
Concepto de proceso
Programas y procesos
●
Ejecución simultanea de varios procesos:
Concepto de proceso
Definición de proceso
●
●
Un proceso es un programa en ejecución, que
se ejecuta secuencialmente
El proceso es una abstración creada por el SO,
que se compone de:
●
●
●
Código de programa: sección texto
Contexto de Ejecución: PC, registros del
procesador y una pila para invocación de
procedimientos
Sección de datos: variables globales
Concepto de proceso
Definición de proceso
Estados de un proceso
●
●
●
●
El estado de un proceso es la disponibilidad
para ser ejecutado
Un proceso, a lo largo de su ejecución pasa por
varios estados
El cambio de un estado a otro es provocado
por la ocurrencia de un evento
A medida que se ejecuta un proceso, cambia
su estado
Estados de un proceso
●
Estados:
●
●
●
Ejecución: proceso ejecutando instrucciones
Listo: el proceso está listo para recibir el
procesador para iniciar o continuar su ejecución
Bloqueado: el proceso deja de competir por el
procesador, esperando un evento externo (p.e
terminación de una operación de E/S, etc.)
Estados de un proceso
●
Transiciones entre estados:
●
En ejecución → bloqueado:
●
En ejecución → listo:
●
Listo → en ejecución:
●
Bloqueado → listo
Estados de un proceso
Procesos suspendidos:
●
●
Los 3 estados principales (Listo, Ejecución,
Bloqueado) puede no ser suficientes
Justificación:
●
Procesos bloqueados
●
Memoria no disponible para nuevos procesos
●
Procesador estará desocupado
Estados de un proceso
Procesos suspendidos:
●
Solución:
●
Permitir la ejecución de más procesos
●
Ampliar la memoria principal
●
Intercambio de procesos entre memoria y disco
●
Nuevos estados de un proceso:
–
–
Listo suspendido
Bloqueado suspendido
Estados de un proceso
Procesos suspendidos:
●
Método (Intercambio o Swapping)
●
●
●
El SO puede poner en suspendido un proceso y
transferirlo a disco
El espacio liberado en la memoria principal es
usado para traer otro proceso
¿Qué proceso elegir para cargar en memoria?
–
–
Uno nuevo
Uno previamente suspendido
Estados de un proceso
Procesos suspendidos:
●
Nuevas transiciones entre estado
●
En ejecución → suspendido listo
●
Listo → suspendido listo
●
Bloqueado → suspendido bloqueado
●
Suspendido listo → listo
●
Suspendido bloqueado → bloqueado
●
Suspendido bloqueado → suspendido listo
Estados de un proceso
Procesos suspendidos:
●
Otras razones:
●
El sistema esta en riesgo de fallo
●
Un proceso sospechoso de mal funcionamiento
●
El planificador puede suspender los procesos de
baja prioridad en momento de carga excesiva del
sistema
Contexto de un proceso
Tabla de procesos y Bloque Control de Proceso
(PCB)
●
●
●
El SO gestiona los procesos a través de una
tabla que contiene para cada proceso existente
en el sistema su PCB
Cada proceso se representa mediante un PCB
Estructura de datos localizada en el núcleo del
sistema
Contexto de un proceso
Bloque Control de Proceso (PCB) incluye:
●
Información de identificación
●
Estado del procesador
●
Información de control de proceso
●
●
●
●
●
Información del planificación y estado
Descripción de los segmentos de memoria
asignados al proceso
Recursos asignados
Punteros para estructurar los procesos en cola o
anillos
Comunicación entre procesos
Contexto de un proceso
Bloque Control de Proceso (PCB)
Cambios de contexto
●
La acción de conmutar la CPU de un proceso a
otro se denomina cambio de contexto.
Cambios de contexto
Tipos de cambio de contexto
●
Cambio de contexto “voluntario”:
●
Proceso realiza llamada al sistema que implica
esperar por evento
●
Transición de en ejecución a bloqueado
●
Ejm: leer del terminal, fallo de página
●
Se realiza para dar mayor eficiencia en el uso
procesador
Cambios de contexto
Tipos de cambio de contexto
●
Cambio de contexto “involuntario”:
●
SO le quita la CPU al proceso
●
Transición de en ejecución a listo
●
Ejms: fin del tiempo de ejecución
●
El objetivo es el reparto del procesador
Caso de estudio
LINUX
Caso de estudio
Estados de un proceso en Linux
●
●
●
●
●
TASK_RUNNING: proceso listo o en ejecución
TASK_INTERRUPTIBLE: proceso “dormido” que puede
despertar por alguna señal o interrupción
TASK_UNINTERRUPTIBLE: Similar al anterior, pero no
puede ser despertado inmediatamente, espera a una
interrupción y no puede ser despertado por una señal
(el proceso está suspendido)
TASK_ZOMBIE: proceso-hijo terminado pero que no
ha sido liberado por su proceso padre
TASK_STOPPED: proceso detenido, generalmente por
una señal (SIGSTOP). Útil para la depuración.
Caso de estudio
Descriptor de proceso (process descriptor)
●
●
●
Estructura que mantiene el SO con información del
proceso (PCB)
Se conoce como task_struct implementada en el fichero
include/linux/sched.h (lenguaje C)
Es una estructura que mantienen, no sólo datos, sino
también muchos punteros a otras estructuras
Caso de estudio
Lista de procesos del sistema
●
●
Linux guarda una lista doblemente enlazada con cada
proceso (task_struct)
Proceso init_task: Es el proceso inicial de linux,
siempre está en ejecución y es el encargado de ir
creando otros procesos.
Proceso Nulo
●
●
●
●
●
Proceso que se ejecuta cuando no hay proceso
disponible para ejecutarse
El procesador debe ejecutar alguna cosa
No cuenta como tiempo útil ni como proceso de
usuario
En general no hace nada
Se puede utilizar para realizar tareas poco prioritarias
del kernel cuando el procesador está libre
Operaciones sobre procesos
Creación de procesos
●
Los pasos a seguir por el S.O
●
Asignarle un PCB
●
Establecer su contexto de memoria
●
Cargar la imagen (ejecutable) en memoria
●
Ajustar su contexto de CPU (registros)
●
Marcar la tarea como ejecutable
–
–
Saltar al punto de entrada, ó
Ponerlo en la cola de procesos preparados
Operaciones sobre procesos
Creación de procesos
●
Hay 4 sucesos principales que causan la
creación de procesos.
●
●
Inicialización del sistema
Ejecución de una llamada al sistema para crear
procesos por parte de un proceso en ejecución
●
Solicitud de un usuario para crear un proceso
●
Inicio de un trabajo por lotes
Operaciones sobre procesos
Creación de procesos
●
Dos posibilidades:
●
Formación de jerarquías de procesos (relación
padre-hijo) Linux
–
–
Procesos padres crean procesos hijos, los cuales, a su
vez crean otros procesos formando un árbol de procesos
En Linux se forma un árbol a partir de procesos INIT (pid
0) mediante la llamada al sistema: fork()
Operaciones sobre procesos
Creación de procesos
●
Dos posibilidades:
●
No se mantiene una jerarquía (windows 2000)
–
–
–
Todos los procesos son iguales
El padre recibe una “ficha” especial [identificador] para
controlar al hijo
Esta en libertad de transferir la ficha a otro proceso
Operaciones sobre procesos
Creación de procesos
●
●
Respecto a los recursos
●
Hijos pueden heredar los recursos (compartir), ó
●
Reciben nuevos recursos
Respecto a su ejecución, puede suceder:
●
●
Hijo se ejecuta concurrentemente con el padre
Padre espera que el hijo termine (llamada al
sistema wait())
–
La función wait() devuelve el código de finalización del
proceso
Operaciones sobre procesos
Destrucción de procesos
●
Supone liberar los recursos previamente asignados al
proceso. Esta terminación puede ser:
●
●
Terminación normal: El proceso invoca su propia
terminación. Ejemplo en UNIX: exit()
Terminación anormal: El proceso termina por iniciativa
del sistema operativo al detectar alguna condición de
error (violación de límites, errores aritméticos) o por
iniciativa de algún otro proceso. Ejemplo en UNIX: kill()
y señales
Operaciones sobre procesos
Destrucción de procesos
–
–
–
●
Normalmente lo hace un antepasado directo (p.e. el
proceso padre)
Términación de un proceso puede significar la terminación
de toda su “descendencia” (terminación en cascada)
Unix: shutdown o finalización de la shell de un usuario
Pasos que sigue el SO
●
Envío de datos del proceso finalizado al creador
●
El SO desasigna los recursos que tiene
Operaciones sobre procesos
Llamadas al sistema (APIs) de POSIX y Win32
Operación
POSIX
Win32
Crear
Fork()
exec()
CreateProcess()
Terminar
_exit()
ExistProcess()
waitpid()
GetExitCodeProcess
Obtener Tiempos
times
GetProcessTimes
Obtener Tiempos
times
GetProcessTimes
kill
TerminateProcess
Obtener código
finalización
Terminar otro proceso
Planificación de procesos
●
Objetivos de la Planificación de Procesos:
●
●
●
Multiprogramación: Tener siempre un proceso en
ejecución con el propósito mejorar utilización CPU y
otros recursos
Tiempo Compartido: Cambiar rápidamente la CPU
entre procesos para mantener buena interactividad
No pueden existir más procesos en ejecución
que el número de procesadores
●
Sistemas de multiprocesamiento permiten tener más
de un proceso en ejecución
Planificación de procesos
Colas de Planificación
●
●
Cola de trabajos: a medida que los procesos entran
en el sistema se le añade a esta cola
Aquellos procesos en memoria y esperando ejecutarse
se mantienen en una cola llamada cola de procesos
listos
●
Implementada como una Lista Elazada: El encabezado
contiene punteros al primero y último PCB y cada PCB
contiene un puntero al siguiente PCB de la lista de
procesos listos
Planificación de procesos
Colas de Planificación
●
●
●
Existen otras colas en el sistema
Para la gestión de dispositivos de E/S se implementa
una cola para evitar que varios procesos accedan a la
vez a un dispositivo. Se añaden a la cola y el proceso
debe esperar a que el dispositivo se le asigne.
Estas colas se conocen como Colas de Dispositivo
●
hay una cola por cada dispositivo
Planificación de procesos
Colas de Planificación
●
Modelo de colas
Planificación de procesos
Colas de Planificación
●
Diagrama de colas (ejecucion de un proceso)
Planificación de procesos
Planificadores
Planificación de procesos
Planificadores
●
Planificador de largo plazo
●
●
●
●
Actúa con poca frecuencia (normalmente cuando
termina un proceso), creando un proceso y cargándolo
en la memoria
Controla el grado de multiprogramación
Determina una buena mezcla de procesos de uso
intensivo de CPU y de E/S
Algunos sistemas no tienen este planificador (p.e.
Sistemas de tiempo compartido)
Planificación de procesos
Planificadores
●
Planificador de corto plazo o Planificador de la CPU
●
●
Decide a qué proceso asignarle la CPU, el cual es
seleccionado de la cola listo.
Se ejecuta con alta frecuencia, cada vez que ocurre un
suceso:
–
–
–
–
–
●
Interrupciones de reloj
Interrupciones de E/S
Llamadas al sistema operativo
Señales
por salida de un proceso (exit)
Asegura la interactividad en un sistema
Planificación de procesos
Planificadores
●
Planificador a medio plazo
●
●
●
Permite regular la carga reduciendo o aumentando el
grado de multiprogramación, usando técnica de
swapping
Un factor de decisión importante es la demanda por
memoria de los procesos
Se usa en sistemas de tiempo compartido
Planificación de procesos
Planificadores
●
Niveles de planificación
Planificación de procesos
Planificadores
●
Planificación de la CPU
●
●
El SO ha de determinar de alguna forma a que proceso
se le asigna la CPU si ésta queda libre
La administración de las colas de procesos se lleva a
cabo dependiendo de la política de planificación
(algoritmos de planificación)
Hilos (Thread)
Concepto de Hilo
●
●
Un hilo es una abstracción de un procesador (Program
counter, registros de trabajo y pila de ejecución) y el estado
del proceso
Un proceso tradicional es una tarea con un solo hilo
Proceso 1
Proceso 2 Proceso 3
Proceso
Espacio
de
Usuario
Thread
Espacio
del
Kernel
Kernel
Thread
Kernel
Hilos
Concepto de Hilo
●
Una tarea (o proceso) permite que los hilos compartan:
Código, datos y recursos del sistema operativo
Hilos
Hilos Vs Procesos
●
Ventajas de los hilos respecto de los procesos
●
Creación y finalización más rápida
●
Los hilos son más eficientes en el cambio de contexto
●
Conmutación entre hilos del mismo proceso más fácil
●
Mejor comunicación entre hilos de un mismo proceso
●
Varios hilos de un mismo proceso pueden ejecutarse en
paralelo (paralelismo real si hay más de un procesador)
Hilos
Hilos Vs Procesos
●
Objetivos de los hilos
●
El objetivo de los hilos es facilitar la escritura de
aplicaciones concurrentes cooperativas
Hilos - Aplicación
Un proceso servidor web Multihilo
Proceso de Servidor
Web
Thread
Dispatcher
Thread trabajador
Espacio
de
Usuario
Caché de la
página web
Espacio
del
Kernel
Kernel
Conexión de red
Hilos
Estados y contexto de un hilo
●
Cada thread tiene recursos propios:
●
●
●
Una pila, un estado y una copia del contenido de los
registros
Las colas de listos y bloqueados contienen threads
en vez de procesos
Un hilo no puede estar suspendido (se suspende el
proceso completo con todos sus hilos)
Hilos
Estados y contexto de un hilo
Hilos
●
Hilos a nivel de kernel
●
Hilos a nivel del usuario
Hilos a nivel de usuario
Espacio
de
Usuario
Espacio
del
Kernel
pthread_create
pthread_join
pthread_exit
pthread_self
pthread_yield
●
Kernel
Tabla de threads
Tabla de procesos
Run-time system
El manejo de los hilos lo hace una librería de hilos a nivel de usuario
Hilos a nivel de usuario
●
Ejemplos:
●
Hilos POSIX
●
Hilos de Solaris
●
Mach C-threads
Hilos a nivel de usuario
Nivel Usuario
Proceso de usuario gestiona y
planifica los múltiples hilos
Nivel Kernel
(Sistema
Operativo)
Planificador del SO
Hardware
Core
Core
Hilos a nivel de usuario
●
Ventajas
●
●
●
Se puede tener hilos en sistemas operativos que no
los soportan
El intercambio de hilos no requiere los privilegios
del modo núcleo
Cada proceso puede tener su propio algoritmo de
planificación hilos
Hilos a nivel de usuario
●
Desventajas
●
●
●
●
●
El planificador del sistema operativo solo ve un hilo
por proceso
No ve los hilos a nivel usuario
Usa un solo núcleo del procesador en un
procesador que tiene más de un núcleo
No puede distribuir los hilos a nivel del usuario en
los dos núcleo
Cuando un hilo realiza una llamada al sistema, se
bloquea el mismo y también el resto de los hilos del
procesos.
Hilos a nivel del Kernel
Proceso
Thread
Espacio
de
Usuario
Espacio
del
Kernel
Kernel
Tabla de procesos
●
Tabla de threads
Soportados por el kernel o núcleo del sistema operativo
Hilos a nivel del Kernel
●
Ejemplos:
●
Windows 95/98/NT
●
Solaris
●
Linux
●
Mac OS
Hilos a nivel del kernel (con una
CPU con un solo núcleo)
Nivel Usuario
Nivel Kernel
(Sistema
Operativo)
Planificador del SO
Hardware
Core
CPU
Hilos a nivel del kernel (con una
CPU de dos núcleos)
Nivel Usuario
Nivel Kernel
(Sistema
Operativo)
Planificador del SO
Hardware
Core
Core
CPU
Hilos a nivel del kernel
●
Ventajas
●
●
●
El bloqueo de un hilo no bloquea todos los hilos del
proceso que lo contiene.
El kernel puede planificar simultáneamente
múltiples hilos del mismo proceso en múltiples
procesadores.
Las propias funciones del kernel pueden ser
multihilo
Hilos a nivel del kernel
●
Desventajas
●
●
La creación/destrucción de hilos es más cara en el
kernel que en espacio de usuario.
El cambio de contexto de hilos también es más
caro
Modelos Multi-hilo
Mapeo de hilos de usuario a kernel:
●
Muchos a uno
●
Uno a uno
●
Muchos a muchos
Modelos Multi-hilo
Muchos a uno
●
●
Muchos hilos de usuario mapeados a un único hilo de
kernel
Ejemplos:
●
Solaris Green Threads
●
GNU Portable Threads
Modelos Multi-hilo
Uno a uno
●
●
Cada hilo de nivel de usuario se mapea a un hilo de
kernel
Ejemplos
●
Windows NT/XP/2000
●
Linux
●
Solaris 9 and later
Modelos Multi-hilo
Muchos a muchos
●
●
Permite mapear muchos hilos de usuario a muchos de
kernel
Permite al sistema operativo crear un número
adecuado de hilos
●
Solaris versión 9 y anteriores W
●
Windows NT/2000 con el paquete ThreadFiber
Modelos Multi-hilo
Muchos a muchos
Planificación del procesador
●
Conceptos básicos
●
Objetivos
●
Criterios
●
Medidas
●
Algoritmos de Planificación
Planificación del procesador
Conceptos básicos:
●
●
●
Obtener el máximo aprovechamiento de CPU con
multiprogramación
Ráfagas CPU–E/S – El proceso de ejecución consiste
de un ciclo de ejecución en CPU y espera de E/S
Distribución de uso de CPU
Planificación del procesador
Conceptos básicos:
Ráfaga de CPU larga
Ráfaga de CPU corta
Tiempo
Esperando a E/S
Planificación del procesador
Planificación del procesador
Objetivos:
●
Justicia
●
Máxima capacidad de ejecución
●
Máximo número de usuarios interactivos
●
Predecibilidad
●
Minimización de la sobrecarga
●
Equilibrio en el uso de los recursos
●
Seguridad de las prioridades
Planificación del procesador
Criterios
●
Tiempo de respuesta
●
Tiempo de servicio
●
Tiempo de ejecución
●
Tiempo de espera
●
Eficiencia
●
Rendimiento
Planificación del procesador
Medidas sobre los procesos
●
Tiempo de servicio: T = tf - ti
●
Tiempo de espera: E = T - t
●
Indice de servicio: permite evaluar la política de
planificación de los procesos
●
●
●
I = t / T es el tanto por uno en tiempo de ejecución
con respecto al tiempo de vida del proceso.
Si I tiende a la unidad, el proceso está limitado por
proceso.
Si I tiende a cero, el proceso esta limitado por E/S
Planificación del procesador
Algoritmos de planificación (1)
●
Planifican la asignación del procesador desde
la cola de listo, que a su vez se alimenta de:
●
●
●
●
Ejecución
Abandonar el estado de ejecución sin estar
bloqueado.
O deja de estar bloqueado
Un proceso cuando termina su ejecución, deja
de existir para el planificador.
Planificación del procesador
Algoritmos de planificación (2)
●
Las políticas de planificación pueden ser:
●
●
No Apropiativas: una vez que le damos el CPU a un
proceso dado, no puede quitárselo hasta que
complete su ráfaga de CPU (SO por lotes)
Apropiativa: permiten la interrupción en la ejecución
de un proceso para, normalmente, dar paso a otro.
(SO en tiempo compartido y real)
Planificación del procesador
Algoritmos de planificación (3)
●
FCFS – Primero llegar primero en salir
●
SJN – El de trabajo más corto
●
HRN – El de la tasa de respuesta más alta
●
SRT – El tiempo restante más corto
●
RR – Round Robin
●
Prioridad
●
Colas múltiples
●
Colas múltiples con realimentación
Planificación colas múltiples
●
●
●
●
Los procesos se pueden clasificar en grupos
para mayor flexibilidad:
●
Procesos de primer plano (Interactivos)
●
Procesos de segundo plano (en lotes o batch
Se divide la cola de listo en varias colas.
Los procesos se asignan a una u otra
dependiendo de sus necesidades y tipo.
Para conocer que cola suministrará el P al
procesador se utiliza un algoritmo apropiativo
de prioridad fija.
Planificación colas múltiples
●
Ventaja: requiere poco trabajo adicional de planificación
●
Desventaja: no es flexible
Colas múltiples con realimentación
●
●
●
●
Permite que un proceso se mueva entre colas
El objetivo es separar procesos con diferentes ráfagas
de CPU
Favorece a los procesos limitado por E/S y a los
procesos interactivos (cortos)
Parámetros:
●
No. de colas
●
Algoritmo de planificación por cada cola
●
Método para elevar un P a una cola mayor prioridad
●
Método para descender un P a una cola mayor prioridad
●
Método que determine a que cola entra un P al inicio
Colas múltiples con realimentación
●
Es apropiativa y adaptable (gestión de colas con RR y
FCFS)
Planificación de hilos
Posible planificación de hilos en espacio de usuario
●
Quantum por proceso de 50-msec
●
Cada threads ejecuta 5 msec/CPU
Planificación de hilos
Proceso A
1
3
Proceso B
2
Espacio
de
Usuario
Espacio
del
Kernel
1. El Kernel selecciona un thread
Posible:
También posible:
A1, A2, A3, A1, A2, A3
A1, B1, A2, B2, A3, B3
Posible planificación de hilos en espacio de kernel
●
Quantum por proceso de 50-msec
●
Cada threads ejecuta 5 msec/CPU
Descargar