Anda di halaman 1dari 87

Administracin de procesos

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

Programa en ejecucin Unidad de trabajo de un SO

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

Ejecucin 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 ejecucin a la vez, pero sensacin de paralelismo

Concepto de proceso
Programas y procesos

Ejecucin simultanea de varios 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

Transiciones entre estados:


En ejecucin bloqueado: En ejecucin listo: Listo en ejecucin: Bloqueado listo

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:

Listo suspendido Bloqueado suspendido

Estados de un proceso
Procesos suspendidos:

Mtodo (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 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 de identificacin Estado del procesador Informacin de control de proceso


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

La accin 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 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

Cambio de contexto involuntario:


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

Operaciones sobre procesos


Creacin 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


Creacin de procesos

Hay 4 sucesos principales que causan la creacin de procesos.


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

Operaciones sobre procesos


Creacin de procesos

Dos posibilidades:

Formacin de jerarquas de procesos (relacin 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


Creacin de procesos

Dos posibilidades:

No se mantiene una jerarqua (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


Creacin de procesos

Respecto a los recursos


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())

Respecto a su ejecucin, puede suceder:


La funcin wait() devuelve el cdigo de finalizacin del proceso

Operaciones sobre procesos


Destruccin de procesos

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

Operaciones sobre procesos


Destruccin de procesos

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

Pasos que sigue el SO


Envo 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
Operacin Crear Terminar Obtener cdigo finalizacin Obtener Tiempos Obtener Tiempos Terminar otro proceso POSIX Fork() exec() _exit() waitpid() times times kill Win32 CreateProcess() ExistProcess() GetExitCodeProcess GetProcessTimes GetProcessTimes TerminateProcess

Planificacin de procesos

Objetivos de la 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

No pueden existir ms procesos en ejecucin que el nmero de procesadores

Sistemas de multiprocesamiento permiten tener ms de un proceso en ejecucin

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

hay una cola por cada dispositivo

Planificacin de procesos
Colas de Planificacin

Modelo de colas

Planificacin de procesos
Colas de Planificacin

Diagrama de colas (ejecucion de un proceso)

Planificacin de procesos
Planificadores

Planificacin de procesos
Planificadores

Planificador de largo plazo

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

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 Seales por salida de un proceso (exit)

Asegura la interactividad en un sistema

Planificacin de procesos
Planificadores

Planificador a medio plazo

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

Ventajas de los hilos respecto de los 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

Objetivos de los hilos

El objetivo de los hilos es facilitar la escritura de aplicaciones concurrentes cooperativas

Hilos - Aplicacin
Un proceso servidor web Multihilo
Proceso de Servidor Web
Thread Dispatcher Thread trabajador
Espacio de Usuario

Cach de la pgina web

Espacio del Kernel Conexin de red

Kernel

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 procesos

Tabla de threads Run-time system

El manejo de los hilos lo hace una librera 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 Nivel Kernel (Sistema Operativo)

Proceso de usuario gestiona y planifica los mltiples hilos

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 ncleo Cada proceso puede tener su propio algoritmo de planificacin 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 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.

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 ncleo 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 ncleo)

Nivel Usuario Nivel Kernel (Sistema Operativo)


Planificador del SO

Hardware
Core

CPU

Hilos a nivel del kernel (con una CPU de dos ncleos)

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 simultneamente mltiples hilos del mismo proceso en mltiples procesadores. Las propias funciones del kernel pueden ser multihilo

Hilos a nivel del kernel

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:

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 nmero adecuado de hilos Solaris versin 9 y anteriores W Windows NT/2000 con el paquete ThreadFiber

Modelos Multi-hilo
Muchos a muchos

Planificacin del procesador


Conceptos bsicos Objetivos Criterios Medidas Algoritmos de Planificacin

Planificacin del procesador


Conceptos bsicos:

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

Planificacin del procesador


Conceptos bsicos:

Rfaga de CPU larga Rfaga de CPU corta Esperando a E/S

Tiempo

Planificacin del procesador

Planificacin del procesador


Objetivos:

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

Planificacin del procesador


Criterios

Tiempo de respuesta Tiempo de servicio Tiempo de ejecucin Tiempo de espera Eficiencia Rendimiento

Planificacin del procesador


Medidas sobre los procesos

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

Planificacin del procesador


Algoritmos de planificacin (1)

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

Un proceso cuando termina su ejecucin, deja de existir para el planificador.

Planificacin del procesador


Algoritmos de planificacin (2)

Las polticas de planificacin pueden ser:

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)

Planificacin del procesador


Algoritmos de planificacin (3)

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

Planificacin colas mltiples

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.

Planificacin colas mltiples

Ventaja: requiere poco trabajo adicional de planificacin Desventaja: no es flexible

Colas mltiples con realimentacin

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

Colas mltiples con realimentacin

Es apropiativa y adaptable (gestin de colas con RR y FCFS)

Planificacin de hilos

Posible planificacin de hilos en espacio de usuario

Quantum por proceso de 50-msec Cada threads ejecuta 5 msec/CPU

Planificacin de hilos
Proceso A Proceso B 1
Espacio de Usuario

Espacio del Kernel

1. El Kernel selecciona un thread

Posible: Tambin posible:

A1, A2, A3, A1, A2, A3 A1, B1, A2, B2, A3, B3

Posible planificacin de hilos en espacio de kernel

Quantum por proceso de 50-msec Cada threads ejecuta 5 msec/CPU

Anda mungkin juga menyukai