Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Copy of Gestión de procesos

No description
by

Karina Salvador Mayhua

on 15 October 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Copy of Gestión de procesos

Coordinación de envío de evidencias en la venta de TC
Implementación a nivel de SO
¿Para qué necesitamos los procesos?
¿Qué queremos conseguir?
(pensar en una situación o experiencia real)

Objetivos
Permitir la existencia de varios procesos simultáneamente
Aprovechar lo más posible el tiempo de CPU
Gestionar los procesos en función de las necesidades del sistema
Facilitar la comunicación y sincronización de procesos cooperantes
Partes de un proceso
¿De qué información se compone?
Estados de un proceso
Operaciones con procesos
¿Cómo manejamos los procesos?
¿Puede haber distintas necesidades en distintas situaciones?
Cuestiones iniciales
¿Qué es un proceso?
¿Cómo es un proceso?
¿De qué información se compone?
¿Qué partes tiene?
¿En qué situaciones puede encontrarse un proceso?
Estados de un proceso
¿Cómo manejamos los procesos?
Operaciones con procesos
Tipos de procesos

¿Puede haber distintas necesidades en distintas situaciones?

(pensar en situaciones reales)
Cómo se programa con procesos
Procesos
Llamadas al sistema para gestión de procesos
Threads
Sincronización de procesos
Problema de la condición de carrera.
Exclusión mutua
Herramientas de sincronización
Interbloqueos
Problemas tipo
Conceptos
¿Qué es un proceso?
¿De qué se debe encargar el SO para que los procesos sean útiles y eficientes?
Procesos
Llamadas al sistema para sincronización de procesos
Threads
¿Qué diferencia hay entre un proceso y un programa?
¿Qué diferencia hay entre la composición de un programa y de un proceso?
Servidor con diferentes usuarios conectados
Desarrollo de una aplicación concurrente
"Es un programa en ejecución"
Un programa es un conjunto de datos e instrucciones
Un proceso es la ejecución de dichas instrucciones sobre esos datos
¿Puede haber varios procesos ejecutando simultáneamente un mismo programa?
¿Qué valor tiene la variable X en un programa?
¿Qué valores tiene la tabla en el programa?
¿Qué valores tiene la tabla en un proceso que ejecuta este programa?
¿Qué valores tiene la tabla una vez terminado el proceso?
Crear un proceso nuevo
Terminar el proceso (uno mismo u otro)
Esperar a que termine otro proceso
Pedir información de un proceso
Asignar una prioridad a un proceso
Sincronizarse con otro proceso
Comunicar información con otro proceso
A cada proceso se le asigna un identificador al crearlo
Procesos que no comparten memoria
- Procesos de distintos usuarios
- Procesos de un mismo usuario que son independientes
Procesos que comparten memoria
- Solución concurrente a un problema. Procesos cooperantes
Idea general
¿Cómo se crea un proceso pesado?
¿Cómo se crea un thread?
Threads a nivel de kernel (SO)
Threads a nivel de usuario
¿Quién implementa y gestiona los thread?
El SO ofrece llamadas para crear y manejar los threads
El SO se encarga de gestionarlos
Una librería a nivel de usuario ofrece las operaciones para crear y manejar threads
El SO no conoce la existencia de dichos threads creados a nivel de usuario
¿Qué ventajas tiene cada opción?
Nivel Kernel
Nivel Usuario
Ventajas
Desventajas
El bloqueo de un thread no bloquea todos los threads del proceso que lo contiene.

La creación/destrucción de threads es más cara en el kernel que en espacio de usuario (reciclar threads).
El cambio de contexto de threads también es más caro

Se puede tener threads en sistemas operativos que no los soportan.
El cambio de contexto entre threads es mucho más rápido que si hay que comunicarlo al kernel.
Cada proceso puede tener su propio algoritmo de planificación threads.

¿Cómo se implementan las llamadas al sistema bloqueantes?
Un thread provoca una falta de página: bloquea al proceso
Los threads tienden a monopolizar la CPU
Ejemplos de aplicación con threads
Un editor de textos
Un servidor de páginas web
Procesos pesados vs procesos ligeros (threads)
Tipos de procesos
¿En que estado está p1 en t=15?
¿y en t=30? ¿y en t=50?
¿En que estado está p2 en t=15?
¿y en t=30? ¿y en t=50?
¿Por qué estados pasa p1? ¿y p2?
Cuestiones
Cuestiones
Algoritmos de planificación
EDs y rutinas del SO
Algoritmos para
sistemas por lotes (Batch)
Algoritmos para
sistemas interactivos
Planteamiento del problema
Tenemos N procesos en la cola de "preparados"
La CPU queda libre
(Batch). Ejecuto preferentemente trabajos pequeños
Alto rendimiento, pero mal tiempo de retorno (turnaround) para trabajos grandes.
(Batch + interactivos) preferencia a los interactivos; los batch "de noche"
Maximiza el rendimiento
Para los interactivos buen tiempo de respuesta
Para los batch mal tiempo de retorno (turnaround)
Si la ocupación de la cpu (eficiencia) se aproxima al 100%,
el tiempo medio de espera se aproxima a infinito
En ocasiones, es mejor la varianza que la media
Procesos con dos perfiles diferentes
Hay que planificar conjuntamente procesos con perfil de alto consumo de CPU con procesos de E/S
Para Sistemas Interactivos
Tiempo de respuesta (response time)
Tiempo entre que se da un comando y se obtiene la respuesta
Proporcionalidad
Cumplir con las expectativas de los usuarios
Sistemas por lotes (Batch)
Sistemas interactivos
Sistemas de tiempo real
Diferentes tipos de sistemas, diferentes propósitos
Balanceos
¿Qué es lo más importante en cada uno de estos tipos de sistemas?
Algoritmos para
sistemas de tiempo real
Planificación de threads
Criterios
OBJETIVO DE LA PLANIFICACIÓN
¿Qué proceso se selecciona para ejecutar?
¿Con qué criterio lo elegimos?
Para todos los sistemas
Justicia
- dar a cada un proceso una parte justa de CPU
- a trabajos parecidos, asignación parecida de CPU
Asegurar la política
- comprobar que se sigue la política establecida
Equilibrio
- vigilar que todas las partes del sistema están ocupadas
Tiempo de espera
- tiempo que un proceso pasa e la cola de "procesos listos"
Para Sistemas Batch
Rendimiento
(throughput)
Número de trabajos completados por unidad de tiempo
Tiempo de retorno
(turnaround)
Tiempo medio desde que entra un trabajo hasta que sale
Utilización de CPU
Mantener la CPU ocupada todo el tiempo
Tiempo de espera
Tiempo en ejecutarse todos los trabajos delante suyo
Para Sistemas de Tiempo Real
Cumplir plazos - evitar pérdidas de datos
Comportamiento predecible
Caso de WindowsXP
Caso de linux
Bloque de Control de Procesos
Colas (o listas) de procesos
Proceso_en_ejecución =
Cola_procesos_preparados ->
Cola_procesos_bloqueados_motivo1 ->
Cola_procesos_bloqueados_motivo2 ->
...
Cola_procesos_bloqueados_motivoN ->
¿Qué operaciones tiene que hacer el SO en las EDs para atender a las siguientes llamadas?

- Crear-proceso
- Terminar_proceso
- Esperar_por_proceso
- Pedir_id_de_proceso
etc.
El SO también hay que intervenir en las EDs para implementar:

- Wait (semáforo)
- Signal (semáforo)
- Enviar_Mensaje_a_proceso
etc
- Dormir_proceso
- Rutina_de_interr_reloj
- Planificador
Selecciona el siguiente proceso que va a ser ejecutado por la CPU

Se ejecuta cada vez que la CPU queda libre

Ejecuta el algoritmo de planificación
- Dispatcher
Carga en los registros de la CPU los valores correspondientes al proceso seleccionado por el planificador
El planificador ejecuta
el algoritmo de planificación en los cambios de contexto
Se ejecuta cada vez que llega una interrupción de reloj
Las interrupciones llegan con una frecuencia constante
¿qué acciones realiza cada una de estas rutinas sobre las EDs?
¿Cuándo ocurren?
Implementación de un c. de contexto
Llamadas para gestión de procesos
Llamadas para sincronización
Llamada al sistema bloqueante
Llega un proceso de > prioridad
Termina el proceso en ejecución
Situación inicial:
P1 en ejecución, P2 preparado
La pila activa es la de P1
P2 tiene su estado salvado
P1 realiza una llamada bloqueante
Se apilan RE y CP de P1
Salta a la rutina del SO
El SO termina de salvar en la pila el estado de P1
El planificador elige a P2
El dispatcher cambia el PP
El RTS del dispatcher hace volver a P2
Cambios de contexto
Fin de rodaja de tiempo
Info del descriptor de un proceso
ED (tabla o lista) que contiene un descriptor de cada uno de los procesos existentes en el sistema
Algoritmos expulsores: evitan la monopolización de la CPU
Round-Robin
Prioridades
Múltiples colas
SPN (Shortest Process Next -envejecimiento)

No expulsores o expulsores con un quantum grande
Reducen cambios de contexto y mejoran el rendimiento
FCFS (First-Come First Served)
SJF (Shortest Job First)
SRTN (Shorter Remaining Time Next)
Planificación por niveles
- Un usuario lanza varias aplicaciones: navegador, lector de correo, programa de búsqueda de archivos, programa de cómputo científico etc.


- Un usuario programa una aplicación concurrente en la que existen varios procesos cooperantes para resolver un problema


- Un sistema atiende simultáneamente a varios usuarios, cada uno de ellos lanza uno o varios procesos


- El sistema operativo necesita que se ejecuten procesos internos además de los procesos de usuarios (demonios, control de utilización de recursos, etc.)
Threads implementados a nivel de kernel (SO)
Threads implementados a nivel de librería de usuario
fork
exit
exec (familia)
getpid
wait
waitpid
CreateProcess
ExitProcess
TerminateProcess
WaitForsingleObject
WatForMultipleobject
CreateThread
ExitThread
TerminateThread
SuspendThread
ResumeThread
OpenThread
pthread_create
pthread_join
pthread_exit
pthread_attr_init
Ejercicio planificación linux (pag. 10)


La decisión de planificar (elegir un nuevo proceso para cargar en la CPU) ocurre en diferentes situaciones:
Cuando un proceso cambia de estado de "ejecución" a "bloqueado", por ejemplo en una solicitud de E/S o una llamada al sitema para esperar por otro proceso.
Cuando un proceso pasa de estado de "ejecución" a estado de "preparado", por ejemplo por fin de rodaja de tiempo.
Cuando un proceos pasa de estado de "bloqueado" a "preparado", por ejemplo al finalizar la operación de E/S que estaba esperando o conseguirse la sincronización del proceso poe el que estaba esperando
Cuando termina el proceso que está en ejecución
El objetivo es que todos los procesos cumplan sus plazos (procesos periódicos y aperiódicos)
El sistema debe ser predecible
Monótono en frecuencia (RMS)
Deadline más próximo el siguiente
#define switch_to (prev,next,last) do {
unsigned long esi,edi;
asm volatile("pushl %%ebp\n\t"
"movl %%esp,%0\n\t" /* save ESP */
"movl %5,%%esp\n\t" /* restore ESP */
"movl $1f,%1\n\t" /* save EIP */
"pushl %6\n\t" /* restore EIP */
"jmp __switch_to\n"
"1:\t"
"popl %%ebp\n\t"
:"=m" (prev->thread.esp),"=m" (prev->thread.eip),
"=a" (last),"=S" (esi),"=D" (edi)
:"m" (next->thread.esp),"m" (next->thread.eip),
"2" (prev), "d" (next));
} while (0)
Cambio de contexto hardware para una arquitectura Pentium en Linux
Sistemas Operativos. una visión aplicada. Jesús Carretero. Mc Graw Hill
Cuestiones
Full transcript