3. 2.1.- DESCRIPCIÓN Y CONTROL DE PROCESOS
Proceso
Es un programa en ejecución.
Los procesos son gestionados por el sistema operativo,
De este modo, al comienzo de la ejecución del programa principal de un usuario
se inicia la ejecución de un proceso.
¿Cuál es la manifestación de un proceso?
El proceso consta de memoria suficiente para resguardar los programas y los
datos del proceso, además se lleva una cuenta de las llamadas a
procedimientos y de todos los parámetros que pasan de procedimiento a
procedimiento.
El S. O utiliza una estructura de datos llamada bloque de control la cual es la
estructura de datos central y más importante de un S. O.
4. El conjunto de todos los PCB’s se guarda en una estructura del sistema
operativo llamada tabla de procesos.
El bloque de control se divide en 3:
Identificación del proceso.
Información del proceso.
Información del control del proceso.
Operaciones con procesos
Crear y destruir un proceso
Suspender y reanudar un proceso
Cambiar la prioridad de un proceso
Bloquear y "desbloquear" un proceso
Planificar un proceso (asignarle la CPU)
5. 2.2.- DEFINICIÓN DE PROCESOS
Cada proceso tiene asociado un espacio de direcciones , una lista de posiciones
de memoria desde algún mínimo (usualmente 0) hasta algún máximo, que
el proceso puede leer y escribir.
A cada proceso también asocia un conjunto de registros, que incluyen el
contador del programa, el apuntador de la pila y otros registros, que incluyen
el contador del programa, el apuntador de la pila y otros registros de
hardware. Así como toda la demás información necesaria para ejecutar el
programa.
Implantación de los procesos
La implementación del modelo de procesos se logra debido a que el sistema
operativo almacena en una tabla denominada tabla de control de procesos
información relativa a cada proceso que se esta ejecutando en el procesador.
Cada línea de esta tabla representa a un proceso.
6. La información que se almacena es la siguiente:
Identificación del proceso.
Identificación del proceso padre.
Información sobre el usuario y grupo.
Estado del procesador.
Información de control de proceso
Información del planificador.
Segmentos de memoria asignados.
Recursos asignados.
Comunicación entre procesos
7. 2.3.- ESTADOS DE LOS PROCESOS
Durante su existencia, un proceso transita por varios estados. Los más
importantes son:
Listo, en Ejecución y Bloqueado. Un proceso Listo es aquél que no está
ejecutándose en un momento dado, pero que está preparado para ejecutar
tan pronto como el S. O lo decida. Un proceso en Ejecución es aquél que
esta ejecutándose en el procesador. En un sistema procesador puede haber
más de un proceso en este estado. Un proceso bloqueado es el que está
esperando a que termine algún suceso (como una operación de E/S).
8. 2.4.- CONTROL DE PROCESOS
La mayoría de los procesadores dan soporte para dos tipos de ejecución por lo
menos. Ciertas instrucciones pueden ejecutarse solo n modo privilegiado.
Entre éstas están la lectura o modificación de registros de control (como la
palabra de estado del programa), instrucciones primitivas de E/S e
instrucciones relativas a la gestión de memoria. Además, se puede acceder a
ciertas regiones de memoria.
El modo menos privilegiado a menudo se conoce como modo de usuario, ya que
los programas de usuario ejecutan normalmente en este modo.
9. 2.5.- PROCESOS E HILOS
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.
10. 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.
11.
12.
13. 2.6.- CONCURRENCIA, EXCLUSIÓN MUTUA Y
SINCRONIZACIÓN
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:
14. 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.
15. Soluciones por Software
Para los procesos concurrentes que ejecuten en máquinas monoprocesador
o multiprocesador con una memoria principal compartida.
Soluciones por hardware
Inhabilitación de interrupciones
En una maquina monoprocesador, la ejecución de procesos concurrentes no
puede superponerse, los procesos sólo pueden intercalarse, es mas un
proceso continuara ejecutando hasta que solicite un servicio del sistema
operativo o hasta que sea interrumpido.
16. 2.7.- PRINCIPIOS GENERALES DE
CONCURRENCIA
En un sistema multiprogramado con un único procesador, los procesos se
intercalan en el tiempo para dar la apariencia de ejecución simultánea.
Aunque no se consigue un procesamiento paralelo real y aunque se produce
una cierta sobrecarga en los intercambios de procesos de un sitio a otro, la
ejecución intercalada produce beneficios importantes en la eficiencia del
procesamiento y en la estructura de los programas. En un sistema
multiprocesador no solo es posible intercalar procesos, sino también
superponerlos.
En el caso de un sistema monoprocesador, los problemas son consecuencia de
una característica básica de los sistemas multiprogramadores: la velocidad
relativa de ejecución de los procesos no puede predecirse y depende de las
actividades de otros procesos, de la forma en que el sistema operativo trata
las interrupciones y las políticas de planificación del sistema operativo. De
aquí surgen las siguientes dificultades:
17. Compartir recursos globales está lleno de riesgos.
Para el sistema operativo resulta difícil gestionar la asignación óptima de
recursos.
Resulta difícil localizar un error de programación porque los resultaos no
son, normalmente reproducibles.
Interacción entre procesos
Enumera tres niveles de conocimiento y las consecuencias de cada uno de
ellos:
Los procesos no tienen conocimiento de los demás: Estos son procesos
independientes que no están pensados para operar juntos.
Los procesos tienen un conocimiento indirecto de los otros: Los procesos no
conocen necesariamente a los otros por sus identificadores de proceso, pero
comparten el acceso a algunos objetos, como un buffer de E/S.
Los procesos tienen un conocimiento directo de los otros: Los procesos son
capaces de comunicarse con los demás por el identificador de proceso y
están diseñados para trabajar conjuntamente en alguna actividad.
18. Competencia entre procesos por los recursos
Los procesos concurrentes entran en conflicto cuando compiten por el uso del
mismo recurso. Es posible describir esta situación como sigue: dos o mas
procesos necesitan acceder a un recurso durante el curso de su ejecución:
ningún proceso es consciente de la existencia de los otros y no se ve
afectado por su ejecución.
Cooperación entre procesos por comportamiento
El caso de cooperación por comportamiento comprende los procesos que
interactúan con otros sin tener conocimiento explicito de ellos. Por
ejemplo, varios procesos pueden tener acceso a variables.
Cooperación entre procesos por comunicación
Las interacciones entre los procesos son indirectas. En caso de competencia, los
procesos están compartiendo recursos sin tener conocimiento de la
existencia de otros procesos.
19.
20. Exclusión mutua
Consiste en que un solo proceso excluye
temporalmente a todos los demás para
usar un recurso compartido de forma
que garantice la integridad del sistema.
21. Exclusión mutua
CONDICIONES DE LA EXCLUSIÓN MUTUA
Hay que garantizar la exclusión mutua entre los diferentes
procesos a la hora de acceder al recurso compartido. No
puede haber en ningún momento dos procesos dentro de
sus respectivas secciones críticas.
No se deben hacer suposiciones en cuanto a la velocidad
relativa de los procesos en conflicto.
Ningún proceso que esté fuera de su sección crítica debe
interrumpir a otro para el acceso a la sección crítica.
Cuando más de un proceso desee entrar en su sección
crítica, se le debe conceder la entrada en un tiempo finito, es
decir, que nunca se le tendrá esperando en un bucle que no
tenga final.
22. Exclusión mutua
TIPOS DE SOLUCIONES DE EXCLUSIÓN MUTUA
Soluciones software.
Soluciones hardware.
Soluciones aportadas por el Sistema
Operativo.
23. Exclusión mutua
Soluciones hardware.
Las soluciones hardware se dividen en dos
tipos:
Optimistas.
Consideran que lo mas probable es que no haya
conflictos, y si los hay sea en número reducido, por lo que
permiten cualquier acceso a la variable compartida. En
caso de conflicto, mantienen la integridad del sistema
descartando las actualizaciones.
Pesimistas.
Bloquean todo aquello que pueda interferir.
Actualizan la variable.
26. Semáforos es un algoritmo de control de
procesos
Que a su vez tiene varios tipos de
semáforos los cuales se dividen en:
27. 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.
28. EJEMPLO:
wait (variable)
begin
while (variable)>=0 do {esperar}
variable=variable-1
end
signal (variable)
begin
variable=variable+1
end
29. 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
30.
31. MONITORES
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.
32. MONITORES
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
33. MONITORES
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.
34. MONITORES
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.
35.
36. MENSAJES
Son una solución del sistema operativo
que nos permitirán la sincronización de
procesos y la comunicación entre
ambos.
Es una cadena de texto transmitida de un
proceso que envía el mensaje a un
receptor
37. MENSAJES
Un mensaje puede tener código, texto, datos etc.
Suelen tener dos partes:
- Cabecera (obligatoria):
IdProcesoEmisor, IdProcesoReceptor, Tipo, Longitud
- Cuerpo (optativo): Información adicional
Tenemos dos tipos de órdenes para gestionar mensajes
(para enviar y recibir):
- Enviar: send (destino, mensaje)
- Recibir: receive (origen, mensaje)
38. MENSAJES
Propiedad de los buzones
Tenemos dos casos:
El proceso es el propietario. El buzón existe
mientras existe el proceso y sólo el
propietario puede leer datos del buzón
El propietario del buzón es el SO. La
propiedad del buzón puede transmitirse
entre procesos, lo que permite que varios
procesos puedan leer.
39. MENSAJES
Casos habituales:
Envío bloqueante - Recepción bloqueante.
Se usa cuando la sincronización ha de ser
muy estricta.
Envío no bloqueante - Recepción bloqueante.
Se usa para cuando el proceso emisor no
necesita que el receptor haya recibido el
mensaje para continuar. Ej: Servidor de correo
Envío no bloqueante - Recepción no bloqueante
41. PRINCIPIOS DE INTERBLOQUEO
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.
42. PRINCIPIOS DE INTERBLOQUEO
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
45. Acciones a Realizar en Interbloqueo
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.
46. 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.
47. 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.