mecanismo de sincronización de procesos
TRANSCRIPT
Universidad de Carabobo
Facultad de Ciencia de la Educación
Departamento de Informática
Mecanismo de Sincronización de
Procesos
Participante:
Izaguirre julio
C.I: 16.579.280
Sección 90
Bárbula, 05 junio de 2016
Proceso de un S.O:
Un proceso es una abstracción que hace referencia a cada caso de ejecución de un programa. Un
proceso no tiene por qué estar siempre en ejecución y la vida de un proceso pasa por varias fases, incluyendo la ejecución.
Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de lo siguiente:
• Crear y destruir procesos
• Parar y reanudar procesos
• Ofrecer mecanismos para que los procesos puedan comunicarse y se sincronicen
TIPOS DE PROCESOS POR UN S.O
Existen dos tipos de procesos:
modo kernel.
modo usuario.
Los primeros son más lentos por las llamadas al sistema que realizan, sin embargo, son más seguros.
Cuando hablamos de los procesos de usuario, podemos decir que el sistema operativo podría no ser
multiproceso, ya que se vale de librerías (como pthread) para hacer un multiplexado y dar la apariencia de trabajar como multiproceso.
Podría pensarse en otra clasificación, como son:
los procesos en primer plano.
Procesos en segundo plano.
Los primeros interactúan con el usuario, es decir, el usuario proporciona los datos que el proceso
utilizará.
Los segundos, son creados para tareas bien definidas y no necesitan la intervención del usuario, por ejemplo, se puede tener un proceso en segundo plano para revisar la temperatura del disco duro
constantemente, éstos también son conocidos como demonios
Tipos de procesos
Podemos clasificarlos en función de distintos criterios.
Según su diseño:
Reutilizables: se cargan en memoria cada vez que se usan. Los programas de usuario suelen ser de este tipo.
Reentrantes: se carga una sola copia del código en memoria. Cada vez que se usan se crea un nuevo
proceso con su zona de datos propia, pero compartiendo el código.
Según su acceso a CPU y recursos:
Apropiativos: acceden a los recursos y sólo los abandonan de forma voluntaria (mediante instrucción CPU).
No Apropiativos: permiten a otros procesos apropiarse de los recursos que ahora poseen.
Según su permanencia en memoria:
Residentes: tienen que permanecer en memoria durante toda su evolución (desde creación hasta
terminación).
Intercambiables (swappable): es lo más normal. El SO puede decidir llevarlos a disco a lo largo de su
evolución.
Según su nivel de privilegio (no en todos los SO):
Privilegiados: se ejecutan en modo supervisor.
No privilegiados: los que normalmente ejecuta el usuario.
Según su propietario:
Procesos de usuario: son los diseñados por los usuarios. Se ejecutan en modo no
Procesos del sistema: son los que forman parte del SO (de E/S, de planificación de otros procesos,
etc.).
Los dispositivos de e/s permiten a la CPU relacionarse con el mundo exterior: teclados, pantallas,
impresoras, discos.
Sistema de comunicaciones
El SO ofrece mecanismos básicos de comunicación, que permiten transferir cadenas de bytes. Deben ser los procesos que se comunican quienes interpreten el significado de las cadenas transferidas para su labor coordinada.
Los mecanismos de comunicación y sincronización son dinámicos. Es decir, cuando se necesita un mecanismo de este estilo, se crea, usa y destruye, de forma que no se establezca de forma definitiva
ningún mecanismo de comunicación, ya que ellos podrían producir efectos indeseados. Es decir, la comunicación es algo puntual.
Los servicios básicos de comunicación son:
a. crear: el proceso solicita la creación del mecanismo
b. enviar o escribir: el proceso emisor envía información al proceso receptor c. recibir o leer: el proceso receptor recibe información d. destruir: el proceso solicita la destrucción del mecanismo de comunicación
La comunicación puede ser síncrona y asíncrona:
a. síncrona: los dos procesos han de ejecutar servicios de forma simultánea. El emisor ha de ejecutar
el servicio enviar mientras el receptor ejecuta recibir.
b. asíncrona: el emisor hace el envío y prosigue su ejecución. El SO ofrece un almacenamiento intermedio para guardar la información enviada, hasta que el receptor la
solicite.
Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envío y recepción de información a través de las interfaces de red para realizar una misma tarea. Es decir, hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información, y
crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente.
Información del estado de E/S: Esta información incluye, solicitudes pendientes de E/S, dispositivos
de E/S asignados al proceso, etc.
Órdenes de E/S: Proporciona servicios de lectura, escritura y modificación del estado de los
periféricos.
Los programas de usuario se comunican con el sistema operativo y le solicitan el servicio mediante las llamadas al sistema. A cada una de estas llamadas le corresponde un procedimiento de la biblioteca que pueden llamar los programas del usuario.
Este procedimiento pone los parámetros de la llamada al sistema en un lugar específico como pueden
ser los registros de la máquina, para después ejecutar una función llamada TRAP para iniciar el sistema operativo. Cuando el sistema operativo recupera el control después del TRAP, examina los parámetros para ver si son válidos, en ese caso, desarrolla el trabajo solicitado. Al terminar, el sistema operativo
coloca un código de estado en un registro, para indicar si tuvo éxito o fracaso.
Unidades de entrada: dispositivos que sirven para introducir en el computador los datos e
instrucciones. Transforman las informaciones de entrada en señales binarias de naturaleza eléctrica. Ejemplos: un teclado, un digitalizador, INTERNET, una lectora de tarjetas de crédito, etc.
Unidades de salida: son dispositivos a través de los cuales se obtienen los resultados de los programas ejecutados por el computador. Transforman las señales eléctricas binarias en caracteres escritos o gráficos que son visualizados. Ejemplos: un monitor de video, una impresora, INTERNET, etc.
Buses:
El bus del sistema es un conjunto de líneas eléctricas (cable o pista en el circuito impreso) que conectan la información al CPU con los diferentes elementos o periféricos. Estos puedes ser de 8-16-32-64-128 bits.
Bus son las pistas conectan al CPU con la memoria RAM y oros circuitos de control, el bus de teclado y mouse y una parte de ese bus sale al exterior de la placa madrea través del circuito correspondiente
por ejemplo bus IDE de los discos duros y unidades de CD o DVD, otro bus es el serial ATA o ATA2
conecta a los discos a una velocidad mayor, otro bus es el USB
Tipos de Buses por su Tecnología:
Bus Interno
Mueve los datos entre los componentes del micro procesador.
Bus Externo
Este se usa para comunicar el micro procesador y otras partes, como periféricos y memoria.
Tipos de buses por uso:
Bus de Datos Este bus es bidireccional ya que fluyen hacia o desde el CPU. Pueden ser de E/S
Bus de Dirección:
Estos son unidireccional ya que la información fluye en una sola dirección al CPU este a los elemento de E/S.
Bus de Control: Este conjunto de señales se usa para sincronizar las actividades de transiciones con los sistemas
periféricos del sistema. R/W, INT, RESET, Bus RQ. La señal más importante en el bus de
control son las del cronometro, que generan los intervalos de tiempo durante el cual se realizan las operaciones y están depende del microprocesador.
Significado de siglas de los Buses
Bus ISA (INDUSTRY ESTÁNDAR ARQUITECTURE) Bus PSI (PERIPHERICAL COMPONENT INTERCONECT) Bus AGP (PUERTO AVANZADO DE GRAFICOS)
Bus SATA (ACCESORIO SERIAL TECNOLOGIA AVANZADA) Bus USB (BUS UNIVERSAL EN SERIE)
Qué es Sincronización de Procesos
Sincronización es el funcionamiento coordinado en la resolución de una tarea encomendada.
Es la coordinación y cooperación de un conjunto de procesos para asegurar la comparación de recursos
de cómputo. Es necesaria para prevenir y corregir errores de sincronización debido al acceso concurrente a recursos compartidos, como las estructuras de datos o dispositivos de E/S de procesos.
La sincronización entre procesos permite intercambiar señales de tiempo (arranque /parada) Para que los procesos puedan sincronizarse es necesario disponer de servicios que permitan bloquear o suspender bajos determinadas circunstancia la ejecución de un proceso
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
Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente. Un hilo modifica un dato en la memoria, los otros hilos acceden e ese dato modificado inmediatamente.
Tipos de sincronización del S.O
Señales
Tuberías
Semáforos
Mutex y variables condicionales
Pasos de mensajes
Que es una Sección Crítica Es una programación concurrente a 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.
El problema de la sección crítica
Éste es uno de los problemas que con mayor frecuencia aparece cuando se ejecutan procesos
concurrentes. Si son cooperantes como independientes. Considérese un sistema compuesto por n procesos {P1, P2,..., PN} en el que cada uno tiene un fragmento de código, que se denomina sección
crítica. Dentro de la sección crítica, los procesos pueden estar accediendo y modificando variables comunes, registros de una base de datos, un archivo, en general cualquier recurso compartido. La característica más importante de este sistema es que cuando un proceso se encuentra ejecutando
código de la sección crítica, ningún otro proceso puede ejecutar en su sección.
Para resolver el problema de la sección crítica es necesario utilizar algún mecanismo desincronización que permita a los procesos cooperar entre ellos sin problemas. Este mecanismo debe proteger el código de la sección crítica y su funcionamiento básico es el siguiente:
Comunicación y sincronización de procesos. Cada proceso debe solicitar permiso para entrar en la sección crítica mediante algún fragmento de código, que se denomina de forma genérica entrada en la sección crítica.
Cuando un proceso sale de la sección crítica debe indicarlo mediante otro fragmento de código, que se denomina salida de la sección crítica. Este fragmento permitirá que otros
procesos entren a ejecutar el código de la sección crítica. La estructura general, por tanto, de cualquier mecanismo que pretenda resolver el problema de la sección crítica es la siguiente:
Entrada en la sección crítica
Código de la sección crítica
Salida de la sección crítica
Cualquier solución que se utilice para resolver este problema debe cumplir los tres requisitos
siguientes:
Exclusión mutua: si un proceso está ejecutando código de la sección crítica, ningún otro proceso lo podrá hacer. Progreso: si ningún proceso está ejecutando dentro de la sección crítica, la decisión de qué
proceso entra en la sección se hará sobre los procesos que desean entrar. Los procesos que no quieren entrar no pueden formar parte de esta decisión. Además, esta decisión debe
realizarse en tiempo finito.
Espera acotada: debe haber un límite en el número de veces que se permite que los demás procesos entren a ejecutar código de la sección crítica después de que un proceso haya efectuado una solicitud de entrada y antes de que se conceda la suya.
¿Qué es 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.
Un proceso esta interbloqueado si está esperando por un evento determinado que nunca va a ocurrir. 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.
El bloqueo es permanente hasta que el sistema realice una operación extraordinaria, como puede ser matar a uno o más procesos u obligar a uno o más procesos a retrasar su ejecución. El interbloqueo
puede involucrar a recursos tanto consumibles como reutilizables. Un recurso consumible es aquel que se destruye al ser adquirido por un proceso; por ejemplo los mensajes, la información de los buffers de e/s. Un recurso reutilizable es aquel que no se destruyó o se desgasto con el uso como ser un canal de
e/s o zona de memoria.
Condiciones para que se cumpla (Interbloqueo):
Deben darse tres condiciones para que pueda producirse un ínter bloqueo:
1. Exclusión Mutua: Solo un proceso puede usar un recurso cada vez. 2. Retención y Esperar: Un proceso puede retener unos recursos asignados mientras espera que se
le asignen otros. 3. No Apropiación: Ningún proceso puede ser forzado a abandonar un recurso que retenga. En la mayoría de los casos, estas condiciones son bastantes necesarias. Por ejemplo, la exclusión mutua
hace falta asegurar la consistencia de resultados y la integridad de la base de datos. La apropiación no se puede aplicar arbitrariamente, y cuando se encuentran involucrados recursos de datos debe estar
acompañada de un mecanismo de recuperación y reanudación, que devuelva un proceso y sus recursos a un estado previo adecuado, desde el que el proceso pueda finalmente repetir sus acciones.
4. Círculo Vicioso de Espera: existe una cadena cerrada de procesos, cada uno de los cuales retiene, al menos, un recurso que necesita el siguiente proceso de la cadena.
Las tres primeras condiciones son necesarias, pero no suficientes, para que exista ínter bloqueo. La cuarta condición es, una consecuencia potencial de las tres primeras. Dado que se producen las tres primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en un círculo vicioso de
espera irresoluble. Un circulo de espera irresoluble es, la definición de ínter bloqueo. En resumen, las cuatro condiciones en conjunto constituyen una condición necesaria y suficiente para
el ínter bloqueo.