Investigación de: Sincronización de Procesos Sistemas Operativos
Dexon123Resumen25 de Septiembre de 2016
3.792 Palabras (16 Páginas)371 Visitas
Investigación de: Sincronización de Procesos
Sistemas Operativos
Prof. Hernández Silva José
Integrantes: Jorge Eduardo Baños López, Josué De La Rosa Sánchez, Raúl Damián Valerio López
Link:
https://drive.google.com/file/d/0B66yFSroQ5JVMllySi1MNVJPalU/view?usp=sharing
Instituto Tecnológico de Veracruz
INDICE
Background……………………………………………3
Critical section problem……………………………..4
Solución de Peterson…………………………………5
Hardware de Sincronización……………………….7
Mutex locks…………………………………………..8
Requisitos para la exclusión mutua………………..9
Semáforos……………………………………………..10
Problemas Clásicos de la Sincronización……………14
La solución de búfer limitado…………………………………………….14
Problemas lectores y escritores……………………16
Problemas de los filósofos cenando…………….17
Monitores……………………………………………..18
Ejemplos de sincronización…………………………….18
Background
¿Qué es el Background?
También conocido como fondo o segundo plano se utiliza para nombrar a todos aquellos procesos o rutinas de ejecución que se realizan en segundo plano. En términos comunes esto significa, que los procesos ejecutados aquí se llevan a cabo con baja prioridad. Algunos puntos a repasar son:
- Los procesos en background pueden ser ejecutados concurrentemente, aunque estos puedan ser interrumpidos en cualquier momento,.
- El acceso concurrente para compartir información puede resultar un poco inconsistente.
- Mantener la consistencia de datos requiere mecanismos para garantizar la ejecución ordenada de procesos cooperativos
Una de las ventaja que tiene el background es que utiliza menos recursos y permite un aumento de la velocidad de procesado o la ejecución de más procesos simultáneamente; teniendo en cuenta que la CPU sólo atiende un proceso a la vez, pero se multiplexa en tiempo entre las diferentes rutinas para atenderlas a todas. Suele ser utilizado por sistemas operativos multitarea (scheduling con prioridad).
CRITICAL SECTION PROBLEM
¿Qué es? Se le conoce como Sección Critica la porción de código de un programa de ordenador en la que se accede a un recurso compartido (estructura de datos o dispositivo) que no debe ser accedido por más de un proceso o hilo en ejecución. La sección crítica por lo general termina en un tiempo determinado y el hilo, proceso o tarea sólo tendrá que esperar un período determinado de tiempo para entrar.
Se debe considerar:
- Los n procesos del sistema.
- Cada proceso tiene una sección critica segmentada por un código: Los procesos de estos pueden ir cambiando variables comunes, actualizando tablas, escribiendo archivos, etc. Cuando otro proceso está en la sección critica, ninguno otro puede estar al mismo tiempo en ésta sección.
- El problema de la sección crítica es un protocolo designado para resolver los problemas que puedan surgir.
- Cada proceso tiene que solicitar permisos para poder acceder a la sección critica en ‘’Entry Section’’, o la sección de entrada, , también debe seguir un camino de secciones hasta llegar a la sección de salida.[pic 1]
Estructura generalizada de un proceso P:
Algoritmo para un proceso P:[pic 2]
Solución a un problema de Sección Critica
Exclusión mutua: Si el proceso P, se está ejecutando en la sección crítica, entonces otro proceso no podrá ser ejecutado en dichas secciones críticas.
Progreso: Si ningún proceso se está ejecutando en la sección crítica, y existe un proceso que quiera o necesite entrar en dicha sección, entonces la selección de procesos que desean entrar a la sección critica, siguientemente, no podrán ser pospuestos.
Solución de Peterson:
- Buena descripción algorítmica para solucionar el problema.
- Dos procesos de solución
- Asume que las instrucciones de carga y almacenamiento de machine-language son atómicos, o sea que no pueden ser interrumpidos.
- Ambos procesos comparten dos variables:
int turn;
Boolean flag [2]
- La variable ‘’turn’’ indica cuyo cambio será el que entre en la sección critica
- El arreglo ‘’flag’’ se usa para indicar si un proceso está listo para entrar a la sección critica
- Probables tres Cs requeridos que son conocidos:
- Exclusiones mutuas:
Pi enters CS only if:
either flag[j] = false or turn = i
- Requerimientos del proceso satisfecho
- Requerimiento de la Espera del bounded
Algoritmo par un proceso P:[pic 3]
Hardware de sincronización
En general Podemos afirmar que cualquier solución al problema de la sección crítica requiere una herramienta muy simple un cerrojo. Las condiciones de carrera se evitan requiriendo que las regiones críticas se protejan mediante cerrojos.
El soporte hardware puede facilitar cualquier tarea de programación y mejorar la eficiencia del sistema. El problema de la sección crítica podría resolverse de forma simple en un entorno de un solo procesador si pudiéramos impedir que se produjeran interrupciones mientras se está modificando una variable compartida.
Ninguna otra instrucción se ejecutará, por lo que no se producirán modificaciones inesperadas de la variable compartida.
Desactivar las interrupciones en un sistema puede consumir mucho tiempo, ya que hay que pasar el mensaje a todos los procesadores.
Muchos sistemas proveen soporte hardware para resolver el problema de la exclusión mutua.
Una solución en máquinas con un solo procesador es deshabilitar las interrupciones.
Las máquinas actuales proveen instrucciones atómicas especiales.
Mutex locks
En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo (i.e. Round Robin) para dar apariencia de ejecución simultánea. Aunque no se consigue un procesador en paralelo real, y aunque se produce un sobrecargado en la cpu por el hecho de tener que cambiar de tarea constantemente, las ventajas de todo esto son muy elevadas. Ejemplo: avion-torre, chat's, etc.
Uno de los grandes problemas que nos podemos encontrar es que el hecho de compartir recursos está lleno de riesgos. Por ejemplo, si dos procesos hacen uso al mismo tiempo de una variable global y ambos llevan a cabo tanto operaciones de lectura como de escritura sobre dicha variable, el orden en que se ejecuten estas lecturas y escrituras es crítico, puesto que se verá afectado el valor de la variable.
Los algoritmos de exclusión mutua se usan en programación concurrente para evitar el uso simultáneo de recursos comunes, como variables globales, por fragmentos de código conocidos como secciones críticas.
Requisitos para la exclusión mutua
Sólo un proceso, de todos los que poseen secciones críticas por el mismo recurso compartido, debe tener permiso para entrar en ella en un momento dado.
Un proceso que se interrumpe en una sección no crítica debe hacerlo sin interferir con los otros procesos.
Un proceso no debe poder solicitar acceso a una sección crítica para después ser demorado indefinidamente, no puede permitirse el interbloqueo o la inanición.
Si ningún proceso está en su sección crítica, cualquier proceso que solicite entrar en la suya debe poder hacerlo sin demora.
No se debe suponer sobre la velocidad relativa de los procesos o el número de procesadores.
Un proceso permanece en su sección crítica por un tiempo finito.
Una manera de satisfacer los requisitos de exclusión mutua es dejar la responsabilidad a los procesos que deseen ejecutar concurrentemente. Tanto si son programas del sistema como de aplicación, los procesos deben coordinarse unos con otros para cumplir la exclusión mutua, sin ayuda del lenguaje de programación o del sistema operativo. Estos métodos se conocen como soluciones por software.
...