1. U2: ADMINISTRACION DE PROCESOS Y
DEL PROCESADOR
TEMAS: 2.3, 2.4, 2.5
Gonzalo Murga Sotelo
09560633
2. Procesos
Su estado de ejecución en un momento dado, esto es, los valores de los registros
de la unidad central de procesamiento para dicho programa.
Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
Los procesos son creados y destruidos por el sistema operativo, así como también
este se debe hacer cargo de la comunicación entre procesos,
Hilos
Es la unidad de procesamiento más pequeña que puede ser planificada por un
sistema operativo.
Un hilo es una característica que permite a una aplicación realizar varias tareas a la
vez (concurrentemente). Los distintos hilos de ejecución comparten una serie de
recursos tales como el espacio de memoria, los archivos abiertos, situación de
autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que
debe llevar a cabo distintas funciones simultáneamente.
Es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea.
CARACTERISTICAS:
La memoria y los recursos son asignados a los procesos.
Todos los hilos de un proceso comparten la memoria y los recursos asignados a ese
proceso.
Sin embargo, cada hilo tiene un contexto diferente.
El procesador es el único recurso que no se comparte entre los hilos.
Cada hilo tiene una pila diferente
Un proceso puede ser formado por uno o más hilos
3. Concurrencia
Es el punto clave de la gestión de procesos y fundamental para el diseño de
sistemas operativos. Comprende un gran numero de cuestiones de diseño,
incluyendo la comunicación entre procesos, compartición y competencia por los
recursos, sincronización de la ejecución de varios procesos.
Gestión de procesos
Multiprogramación
Multiproceso
Proceso Distribuido
Puede presentarse en 3 contextos diferentes que son:
Varias aplicaciones: La multiprogramación se creo para permitir que el tiempo de
procesador de las maquinas fuese compartido dinámicamente entre varios
trabajos o aplicaciones activas.
Aplicaciones estructuradas: Estas pueden implementarse eficazmente como un
conjunto de procesos concurrentes.
Estructura del sistema operativo: Son aplicables a los programadores de sistemas
y se ha comprobado que algunos sistemas operativos están implementados como
un conjunto de procesos.
Exclusión mutua
El uso adecuado de la concurrencia entre procesos exige la capacidad de definir
secciones criticas y hacer cumplir la exclusión mutua.
Una manera es dejar la responsabilidad a los procesos que deseen ejecutar
concurrentemente, así pues tanto si son programas del sistema, como de
aplicación, los procesos deben coordinarse unos con otros para ser cumplida la
exclusión mutua, sin ayuda por parte del lenguaje de programación o del sistema
operativo.
4. El método mas sencillo de comunicación entre los procesos de un programa concurrente
es el uso común de unas variables de datos. Esta forma tan sencilla de comunicación
puede llevar, no obstante, a errores en el programa ya que el acceso concurrente puede
hacer que la acción de un proceso interfiera en las acciones de otro de una forma no
adecuada. Aunque nos vamos a fijar en variables de datos, todo lo que sigue seria valido
con cualquier otro recurso del sistema que solo pueda ser utilizado por un proceso a la
vez.
Por ejemplo una variable x compartida entre dos procesos A y B que pueden incrementar
o decrementar la variable dependiendo de un determinado suceso. Esta situación se
plantea, por ejemplo, en un problema típico de la programación concurrente conocido
como el Problema de los Jardines. En este problema se supone que se desea controlar el
número de visitantes a unos jardines. La entrada y la salida a los jardines se pueden
realizar por dos puntos que disponen de puertas giratorias. Se desea poder conocer en
cualquier momento el número de visitantes a los jardines, por lo que se dispone de un
computador con conexión en cada uno de los dos puntos de entrada que le informan cada
vez que se produce una entrada o una salida.
Asociamos el proceso P1 a un punto de entrada y el proceso P2 al otro punto de entrada.
Ambos procesos se ejecutan de forma concurrente y utilizan una única variable x para
llevar la cuenta del número de visitantes.
El incremento o decremento de la variable se produce cada vez que un visitante entra o
sale por una de las puertas. Así, la entrada de un visitante por una de las puertas hace que
se ejecute la instrucción
x:=x+1 mientras que la salida de un visitante hace que se ejecute la instrucción
x:=x-1
5. En muchos casos, los procesos se reúnen para realizar tareas en conjunto, a este tipo de
relación se le llama procesos cooperativos. Para lograr la comunicación, los procesos
deben sincronizarse, de no ser así pueden ocurrir problemas no deseados. La
sincronización es la transmisión y recepción de señales que tiene por objeto llevar a cabo
el trabajo de un grupo de procesos cooperativos.
Es la coordinación y cooperación de un conjunto de procesos para asegurar la
comparación de recursos de cómputo. La sincronización entre procesos es necesaria para
prevenir y/o corregir errores de sincronización debidos al acceso concurrente a recursos
compartidos, tales como estructuras de datos o dispositivos de E/S, de procesos
contendientes. La sincronización entre procesos también permite intercambiar señales de
tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones
específicas de precedencia impuestas por el problema que se resuelve.
Sin una sincronización adecuada entre procesos, la actualización de variables compartidas
puede inducir a errores de tiempo relacionados con la concurrencia que son con
frecuencia difíciles de depurar. Una de las causas principales de este problema es que
procesos concurrentes puedan observar valores temporalmente inconsistentes de una
variable compartida mientras se actualizan. Una aproximación para resolver este
problema es realizar actualizaciones de variables compartidas de manera mutuamente
exclusiva. Se pueden mejorar permitiendo que a lo más un proceso entre a la vez en la
sección crítica de código en la que se actualiza una variable compartida o estructura de
datos en particular.
Para que los procesos puedan sincronizarse es necesario disponer de servicios que
permitan bloquear o suspender bajo determinadas circunstancias la ejecución de un
proceso. Los principales mecanismos de sincronización que ofrecen los sistemas
operativos son:
Señales
Tuberías
Semáforos
Mutex y variables condicionales
Paso de mensajes
6. Semáforos es un algoritmo de control de procesos
Que a su vez tiene varios tipos de semáforos los cuales se dividen en:
Semáforo binario:
Un semáforo binario es un indicador de condición (S) que registra si un recurso está
disponible o no. Un semáforo binario sólo puede tomar dos valores: O y 1.
Semáforo robusto:
Es el que se encarga de liberar los procesos que llevan mas tiempo bloqueados.
EJEMPLO
wait (variable)
begin
while (variable)>=0 do {esperar}
variable=variable-1
end
signal (variable)
begin
variable=variable+1
end
El semáforo se inicializa con el numero total de recursos disponibles (n) y las operaciones
de espera y señal se diseñan de modo que se impida el acceso al recurso protegido por el
semáforo cuando el valor de éste es menor o igual que cero
7. Los monitores son una herramienta de sincronización
Posee una estructura propia, es una colección de procedimientos, variables y estructuras
de datos que se agrupan en un módulo especial.
Los procesos pueden llamar a los procedimientos de un monitor siempre que lo requieran,
pero no pueden acceder directamente las estructuras de datos internas del monitor.
Implementan un nivel aún más alto de abstracción facilitando el acceso a recursos
compartidos.
Componentes
Inicialización: contiene el código a ser ejecutado cuando el monitor es creado
Datos privados: contiene los procedimientos privados, que sólo pueden ser usados desde
dentro del monitor y no son visibles desde fuera
Procedimientos del monitor: son los procedimientos que pueden ser llamados desde
fuera del monitor.
Cola de entrada: contiene a los threads que han llamado a algún procedimiento del
monitor pero no han podido adquirir permiso para ejecutarlos aún.
La sincronización se usan dos instrucciones:
wait (c): suspende la ejecución del proceso que llama bajo la condición c. El monitor está
ahora disponible para ser usado por otros procesos.
signal(c): reanuda la ejecución de algún proceso suspendido después de un cwait bajo la
misma condición. Si hay varios procesos, se elige uno de ellos; si no hay ninguno, no hace
nada.
8. El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos
que compiten por los recursos del sistema o bien se comunican unos con otros. A
diferencia de otros problemas de la gestión concurrente de procesos, no existe una
solución eficiente para el caso general.
Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de
dos o más procesos.
Ejemplo :
Interbloqueo de tráfico
Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro
caminos. Los cuatro cuadrantes de la intersección son los recursos compartidos sobre los
que se demanda control; por tanto, si los coches desean atravesar el cruce, las
necesidades de recursos son las siguientes:
- El coche que va hacia el norte necesita los cuadrantes 1 y 2.
- El coche que va hacia el oeste necesita los cuadrantes 2 y 3.
- El coche que va hacia el sur necesita los cuadrantes 3 y 4.
- El coche que va hacia el este necesita los cuadrantes 4 y 1.
9. Condiciones para producir un interbloqueo
1- Condición de exclusión mutua: Cada recurso esta asignado a un único proceso o esta
disponible.
2- Condición de posesión y espera: Los procesos que tienen, en un momento dado,
recursos asignados con anterioridad, pueden solicitar nuevos recursos.
3- Condición de no apropiación: Los recursos otorgados con anterioridad no pueden ser
forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explicita.
Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca
interbloqueo, se necesita una cuarta condición:
4- Condición de espera circular (o circulo vicioso de espera): Debe existir una cadena
circular de dos o mas procesos, cada uno de los cuales espera un recurso poseído por el
siguiente miembro de la cadena.
Prevención de interbloqueo
- Los métodos indirectos que consisten en impedir la aparición de alguna de las tres
condiciones necesarias para que se de el interbloqueo.
- Los métodos directos que consisten en evitar la aparición del circulo vicioso de espera.
10. NIVELES DE PLANIFICACIÓN Se consideran tres niveles importantes de planificación, los
que se detallan a continuación:
• Planificación de alto nivel: Se encarga de llevar procesos de disco a memoria y viceversa.
Seleccionando los trabajos que deben admitirse en el sistema.
o También se denomina Planificación de trabajos.
o Determina a qué trabajos se les va a permitir competir activamente por los
recursos del sistema, lo cual se denomina Planificación de admisión.
o Administrar todos los recursos del sistema excepto el CPU.
o Mantiene las colas de procesos bloqueados y suspendidos.
o Controla la creación de procesos.
o Maneja el nivel de multiprogramación.
• Planificación de nivel intermedio: En algunos casos, en especial cuando el sistema está
sobrecargado, el planificador de nivel medio encuentra ventajoso retirar trabajos activos
de la memoria para reducir el grado de multiprogramación, y por lo tanto, permitir que los
trabajos se completen más aprisa. Este subadministrador controla los trabajos que se
intercambian hacia fuera y de regreso.
o Determina a qué procesos se les puede permitir competir por la CPU.
o Efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos.
o Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.
o Equilibrar la administración de trabajos en el sistema con la asignación del CPU a
dichos procesos.
o Nivelar la carga del sistema (procesos activos y pasivos).
11. • Planificación de bajo nivel: Se encarga de pasar de un proceso a otro en memoria
principal. Determinando a cuál proceso listo se le asignará el CPU cuando éste se
encuentra disponible.
o Determina a qué proceso listo se le asigna la CPU cuando esta queda disponible y
asigna la CPU al mismo, es decir que “despacha” la CPU al proceso.
OBJETIVOS DE PLANIFICACIÓN
Los objetivos de la planificación del procesador son los siguientes e involucran a los
conceptos detallados seguidamente:
•Ser justa:
o Todos los procesos son tratados de igual manera.
o Ningún proceso es postergado indefinidamente.
•Maximizar la capacidad de ejecución:
o Maximizar el número de procesos servidos por unidad de tiempo.
o Maximizar el número de usuarios interactivos que reciban unos tiempos de
respuesta aceptables: En un máximo de unos segundos.
•Ser predecible:
o Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad de
tiempo independientemente de la carga del sistema.
•Minimizar la sobrecarga:
No suele considerarse un objetivo muy importante.
•Equilibrar el uso de recursos:
o Favorecer a los procesos que utilizarán recursos infrautilizados.
•Equilibrar respuesta y utilización:
o La mejor manera de garantizar buenos tiempos de respuesta es disponer de los
recursos suficientes cuando se necesitan, pero la utilización total de recursos podrá ser
pobre.
12. •Evitar la postergación indefinida:
o Se utiliza la estrategia del “envejecimiento”. o Mientras un proceso espera por un
recurso su prioridad debe aumentar, así la prioridad llegará a ser tan alta que el proceso
recibirá el recurso esperado.
•Asegurar la prioridad:
o Los mecanismos de planificación deben favorecer a los procesos con prioridades
más altas.
•Dar preferencia a los procesos que mantienen recursos claves:
o Un proceso de baja prioridad podría mantener un recurso clave, que puede ser
requerido por un proceso de más alta prioridad. O si el recurso es no apropiativo, el
mecanismo de planificación debe otorgar al proceso un tratamiento mejor del que le
correspondería normalmente, puesto que es necesario liberar rápidamente el recurso
clave.
•Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”:
o Un ejemplo de comportamiento deseable es una tasa baja de paginación.
•Degradarse suavemente con cargas pesadas:
o Un mecanismo de planificación no debe colapsar con el peso de una exigente carga
del sistema.
o Se debe evitar una carga excesiva mediante las siguientes acciones: No
permitiendo que se creen nuevos procesos cuando la carga ya es pesada. Dando servicio a
la carga más pesada al proporcionar un nivel moderadamente reducido de servicio a todos
los procesos.
CRITERIOS DE PLANIFICACIÓN
Equidad Garantizar que cada proceso obtiene su proporción justa de la CPU.
Eficacia Mantener ocupada la CPU el ciento por ciento del tiempo.
Tiempo de respuesta Minimizar el tiempo de respuesta para los usuarios
interactivos.
Tiempo de regreso Minimizar el tiempo que deben esperar los usuarios por lotes
(batch) para obtener sus resultados.
Rendimiento Maximizar el número de tareas procesadas por hora.