Professional Documents
Culture Documents
Contenido:
Concepto de proceso Operaciones sobre procesos Planificacin de procesos Hilos (Threads) Planificacin del procesador
Concepto de proceso
Programas y procesos:
Programas
Coleccin de instrucciones que el procesador interpreta y ejecuta Se almacena en sistemas no voltiles necesitando, para poder ser ejecutados, ser cargados en memoria principal Se considera un ente esttico
Concepto de proceso
Programas y Procesos:
Procesos
Programa en ejecucin El sistema operativo les asigna recursos Se considera un ente dinmico Componentes: cdigo, datos, pila, registros, PC, recursos del sistema
Concepto de proceso
Programas y Procesos: Concepto de proceso:
Primeros sistemas solo permitan la ejecucin de un programa a la vez Hoy, los sistemas operativos permiten cargar varios programas en memoria y ejecutarlos concurrentemente Nuevo concepto
Surge con MULTICS para solucionar el problema de la gestin del reparto de la CPU
Concepto de proceso
Programas y procesos
Caractersticas:
Los servicios superiores del SO se estructuran en base a procesos Permite modularizar y aislar errores de programas durante su ejecucin Soporta concurrencia de actividades Los trabajos (jobs) en sistemas por lotes y tareas en sistemas de tiempo compartido.
Concepto de proceso
Programas y procesos
Paralelismo real: operaciones de E/S (dos tareas concurrentes) Pseudoparalelismo: un proceso en ejecucin a la vez, pero sensacin de paralelismo
Concepto de proceso
Programas y procesos
Concepto de proceso
Definicin de proceso
Un proceso es un programa en ejecucin, que se ejecuta secuencialmente El proceso es una abstracin creada por el SO, que se compone de:
Cdigo de programa: seccin texto Contexto de Ejecucin: PC, registros del procesador y una pila para invocacin de procedimientos Seccin de datos: variables globales
Concepto de proceso
Definicin de proceso
Estados de un proceso
El estado de un proceso es la disponibilidad para ser ejecutado Un proceso, a lo largo de su ejecucin 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:
Ejecucin: proceso ejecutando instrucciones Listo: el proceso est listo para recibir el procesador para iniciar o continuar su ejecucin Bloqueado: el proceso deja de competir por el procesador, esperando un evento externo (p.e terminacin de una operacin de E/S, etc.)
Estados de un proceso
Estados de un proceso
Procesos suspendidos:
Los 3 estados principales (Listo, Ejecucin, Bloqueado) puede no ser suficientes Justificacin:
Procesos bloqueados Memoria no disponible para nuevos procesos Procesador estar desocupado
Estados de un proceso
Procesos suspendidos:
Solucin:
Permitir la ejecucin de ms procesos Ampliar la memoria principal Intercambio de procesos entre memoria y disco Nuevos estados de un proceso:
Estados de un proceso
Procesos suspendidos:
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?
Estados de un proceso
Procesos suspendidos:
En ejecucin 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 travs 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 ncleo del sistema
Contexto de un proceso
Bloque Control de Proceso (PCB) incluye:
Informacin del planificacin y estado Descripcin de los segmentos de memoria asignados al proceso Recursos asignados Punteros para estructurar los procesos en cola o anillos Comunicacin entre procesos
Contexto de un proceso
Bloque Control de Proceso (PCB)
Cambios de contexto
Cambios de contexto
Tipos de cambio de contexto
Proceso realiza llamada al sistema que implica esperar por evento Transicin de en ejecucin a bloqueado Ejm: leer del terminal, fallo de pgina Se realiza para dar mayor eficiencia en el uso procesador
Cambios de contexto
Tipos de cambio de contexto
SO le quita la CPU al proceso Transicin de en ejecucin a listo Ejms: fin del tiempo de ejecucin 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 ejecucin TASK_INTERRUPTIBLE: proceso dormido que puede despertar por alguna seal o interrupcin TASK_UNINTERRUPTIBLE: Similar al anterior, pero no puede ser despertado inmediatamente, espera a una interrupcin y no puede ser despertado por una seal (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 seal (SIGSTOP). til para la depuracin.
Caso de estudio
Descriptor de proceso (process descriptor)
Estructura que mantiene el SO con informacin del proceso (PCB) Se conoce como task_struct implementada en el fichero include/linux/sched.h (lenguaje C) Es una estructura que mantienen, no slo datos, sino tambin 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 ejecucin 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
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
Inicializacin del sistema Ejecucin de una llamada al sistema para crear procesos por parte de un proceso en ejecucin Solicitud de un usuario para crear un proceso Inicio de un trabajo por lotes
Dos posibilidades:
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()
Dos posibilidades:
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
Hijos pueden heredar los recursos (compartir), Reciben nuevos recursos Hijo se ejecuta concurrentemente con el padre Padre espera que el hijo termine (llamada al sistema wait())
Supone liberar los recursos previamente asignados al proceso. Esta terminacin puede ser:
Terminacin normal: El proceso invoca su propia terminacin. Ejemplo en UNIX: exit() Terminacin anormal: El proceso termina por iniciativa del sistema operativo al detectar alguna condicin de error (violacin de lmites, errores aritmticos) o por iniciativa de algn otro proceso. Ejemplo en UNIX: kill() y seales
Normalmente lo hace un antepasado directo (p.e. el proceso padre) Trminacin de un proceso puede significar la terminacin de toda su descendencia (terminacin en cascada) Unix: shutdown o finalizacin de la shell de un usuario
Envo de datos del proceso finalizado al creador El SO desasigna los recursos que tiene
Planificacin de procesos
Multiprogramacin: Tener siempre un proceso en ejecucin con el propsito mejorar utilizacin CPU y otros recursos Tiempo Compartido: Cambiar rpidamente la CPU entre procesos para mantener buena interactividad
Planificacin de procesos
Colas de Planificacin
Cola de trabajos: a medida que los procesos entran en el sistema se le aade 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
Planificacin de procesos
Colas de Planificacin
Existen otras colas en el sistema Para la gestin de dispositivos de E/S se implementa una cola para evitar que varios procesos accedan a la vez a un dispositivo. Se aaden a la cola y el proceso debe esperar a que el dispositivo se le asigne. Estas colas se conocen como Colas de Dispositivo
Planificacin de procesos
Colas de Planificacin
Modelo de colas
Planificacin de procesos
Colas de Planificacin
Planificacin de procesos
Planificadores
Planificacin de procesos
Planificadores
Acta con poca frecuencia (normalmente cuando termina un proceso), creando un proceso y cargndolo en la memoria Controla el grado de multiprogramacin 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)
Planificacin de procesos
Planificadores
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 Seales por salida de un proceso (exit)
Planificacin de procesos
Planificadores
Permite regular la carga reduciendo o aumentando el grado de multiprogramacin, usando tcnica de swapping Un factor de decisin importante es la demanda por memoria de los procesos Se usa en sistemas de tiempo compartido
Planificacin de procesos
Planificadores
Niveles de planificacin
Planificacin de procesos
Planificadores
Planificacin de la CPU
El SO ha de determinar de alguna forma a que proceso se le asigna la CPU si sta queda libre La administracin de las colas de procesos se lleva a cabo dependiendo de la poltica de planificacin (algoritmos de planificacin)
Hilos (Thread)
Concepto de Hilo
Un hilo es una abstraccin de un procesador (Program counter, registros de trabajo y pila de ejecucin) 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
Thread Kernel
Kernel
Hilos
Concepto de Hilo
Una tarea (o proceso) permite que los hilos compartan: Cdigo, datos y recursos del sistema operativo
Hilos
Hilos Vs Procesos
Creacin y finalizacin ms rpida Los hilos son ms eficientes en el cambio de contexto Conmutacin entre hilos del mismo proceso ms fcil Mejor comunicacin entre hilos de un mismo proceso Varios hilos de un mismo proceso pueden ejecutarse en paralelo (paralelismo real si hay ms de un procesador)
Hilos
Hilos Vs Procesos
Hilos - Aplicacin
Un proceso servidor web Multihilo
Proceso de Servidor Web
Thread Dispatcher Thread trabajador
Espacio de Usuario
Kernel
Hilos
Estados y contexto de un hilo
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
Espacio de Usuario
Ejemplos:
Planificador del SO
Hardware
Core Core
Ventajas
Se puede tener hilos en sistemas operativos que no los soportan El intercambio de hilos no requiere los privilegios del modo ncleo Cada proceso puede tener su propio algoritmo de planificacin hilos
Desventajas
El planificador del sistema operativo solo ve un hilo por proceso No ve los hilos a nivel usuario Usa un solo ncleo del procesador en un procesador que tiene ms de un ncleo No puede distribuir los hilos a nivel del usuario en los dos ncleo Cuando un hilo realiza una llamada al sistema, se bloquea el mismo y tambin el resto de los hilos del procesos.
Espacio de Usuario
Ejemplos:
Hilos a nivel del kernel (con una CPU con un solo ncleo)
Hardware
Core
CPU
Hardware
Core Core
CPU
Ventajas
El bloqueo de un hilo no bloquea todos los hilos del proceso que lo contiene. El kernel puede planificar simultneamente mltiples hilos del mismo proceso en mltiples procesadores. Las propias funciones del kernel pueden ser multihilo
Desventajas
La creacin/destruccin de hilos es ms cara en el kernel que en espacio de usuario. El cambio de contexto de hilos tambin es ms caro
Modelos Multi-hilo
Mapeo de hilos de usuario a kernel:
Modelos Multi-hilo
Muchos a uno
Modelos Multi-hilo
Uno a uno
Modelos Multi-hilo
Muchos a muchos
Permite mapear muchos hilos de usuario a muchos de kernel Permite al sistema operativo crear un nmero adecuado de hilos Solaris versin 9 y anteriores W Windows NT/2000 con el paquete ThreadFiber
Modelos Multi-hilo
Muchos a muchos
Obtener el mximo aprovechamiento de CPU con multiprogramacin Rfagas CPUE/S El proceso de ejecucin consiste de un ciclo de ejecucin en CPU y espera de E/S Distribucin de uso de CPU
Tiempo
Justicia Mxima capacidad de ejecucin Mximo nmero de usuarios interactivos Predecibilidad Minimizacin de la sobrecarga Equilibrio en el uso de los recursos Seguridad de las prioridades
Tiempo de respuesta Tiempo de servicio Tiempo de ejecucin Tiempo de espera Eficiencia Rendimiento
Tiempo de servicio: T = tf - ti Tiempo de espera: E = T - t Indice de servicio: permite evaluar la poltica de planificacin de los procesos
I = t / T es el tanto por uno en tiempo de ejecucin 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
Planifican la asignacin del procesador desde la cola de listo, que a su vez se alimenta de:
Ejecucin Abandonar el estado de ejecucin sin estar bloqueado. O deja de estar bloqueado
No Apropiativas: una vez que le damos el CPU a un proceso dado, no puede quitrselo hasta que complete su rfaga de CPU (SO por lotes) Apropiativa: permiten la interrupcin en la ejecucin de un proceso para, normalmente, dar paso a otro. (SO en tiempo compartido y real)
FCFS Primero llegar primero en salir SJN El de trabajo ms corto HRN El de la tasa de respuesta ms alta SRT El tiempo restante ms corto RR Round Robin Prioridad Colas mltiples Colas mltiples con realimentacin
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.
Permite que un proceso se mueva entre colas El objetivo es separar procesos con diferentes rfagas de CPU Favorece a los procesos limitado por E/S y a los procesos interactivos (cortos) Parmetros:
No. de colas Algoritmo de planificacin por cada cola Mtodo para elevar un P a una cola mayor prioridad Mtodo para descender un P a una cola mayor prioridad Mtodo que determine a que cola entra un P al inicio
Planificacin de hilos
Planificacin de hilos
Proceso A Proceso B 1
Espacio de Usuario
A1, A2, A3, A1, A2, A3 A1, B1, A2, B2, A3, B3