El documento describe diferentes mecanismos para la comunicación entre procesos, incluyendo condiciones de competencia, secciones críticas, dormir y despertar, y semáforos. Explica cómo variables compartidas pueden causar inconsistencias si no se implementan correctamente mecanismos para exclusión mutua y sincronización, como algoritmos de Peterson o el uso de semáforos.
2.5 Razonamiento Monótono
Concepto
Que es la lógica?
Lógica Proposicional
Lógica Proposicional ejemplo
Deducción Lógica
Deducción Lógica ejemplo
Lógica de Primer Orden
Deducción Lógica ejemplo
Este documento describe las amenazas y vulnerabilidades más comunes a los sistemas de información. Explica que las amenazas incluyen factores humanos, hardware, software, redes y desastres naturales. Las vulnerabilidades más frecuentes son contraseñas predeterminadas, llaves compartidas predeterminadas, suplantación de IP, interceptación pasiva, vulnerabilidades de servicios y aplicaciones. También describe técnicas de cifrado como simétrico, asimétrico e híbrido, y explica que los mecanismos de protección controlan el
Diapositiva, Exposición de Ensamblador y Enlazador
Integrantes:
Ricky Zheng
José Díaz
Universidad Fermín Toro, Decanato de Ingeniería, Escuela de Computación.
El documento describe los protocolos de control de flujo en redes de comunicaciones. Explica que el control de flujo por acknowledgment consiste en que el transmisor envía paquetes de datos uno a uno y espera la confirmación del receptor antes de enviar el siguiente paquete. También describe el control de flujo por ventanas deslizantes, el cual permite el envío múltiple de paquetes antes de recibir confirmación. Por último, explica brevemente el control de flujo por software mediante el uso de caracteres XON/XOFF.
Este documento describe los conceptos fundamentales de los procesos y su administración por parte de los sistemas operativos. Explica que un proceso es una entidad activa que compite por los recursos del sistema, mientras que un programa es pasivo. También describe los diferentes estados por los que puede pasar un proceso, como nuevo, listo, en ejecución, bloqueado y terminado. Finalmente, explica las estructuras de control que usa el sistema operativo para administrar los procesos y recursos, como las tablas de memoria, E/S y procesos
Este documento describe diferentes tipos de máquinas de Turing, incluyendo máquinas con cinta infinita en ambos lados, máquinas con cinta multipista, máquinas multicinta y máquinas multidimensionales. También discute aplicaciones de las máquinas de Turing en teoría de la computación y máquinas oráculo.
El documento describe cinco tareas para construir máquinas de Turing que acepten diferentes entradas de 0 y 1, incluyendo: invertir 0 y 1, sumar 0 y 1, usar una condición if con 0 y 1, encontrar tres 1 consecutivos, y ordenar todos los 1 a la izquierda y los 0 a la derecha.
Tutorial algoritmo estructuras ciclicasMichele André
Este documento presenta un tutorial sobre estructuras algorítmicas de instrucciones cíclicas o repetitivas. Explica los objetivos del tutorial, introduce el concepto de instrucciones cíclicas, y define las tres estructuras básicas de ciclos: mientras-hacer, repetir-hasta y para. Luego, proporciona ejemplos detallados de cada una de estas estructuras cíclicas.
2.5 Razonamiento Monótono
Concepto
Que es la lógica?
Lógica Proposicional
Lógica Proposicional ejemplo
Deducción Lógica
Deducción Lógica ejemplo
Lógica de Primer Orden
Deducción Lógica ejemplo
Este documento describe las amenazas y vulnerabilidades más comunes a los sistemas de información. Explica que las amenazas incluyen factores humanos, hardware, software, redes y desastres naturales. Las vulnerabilidades más frecuentes son contraseñas predeterminadas, llaves compartidas predeterminadas, suplantación de IP, interceptación pasiva, vulnerabilidades de servicios y aplicaciones. También describe técnicas de cifrado como simétrico, asimétrico e híbrido, y explica que los mecanismos de protección controlan el
Diapositiva, Exposición de Ensamblador y Enlazador
Integrantes:
Ricky Zheng
José Díaz
Universidad Fermín Toro, Decanato de Ingeniería, Escuela de Computación.
El documento describe los protocolos de control de flujo en redes de comunicaciones. Explica que el control de flujo por acknowledgment consiste en que el transmisor envía paquetes de datos uno a uno y espera la confirmación del receptor antes de enviar el siguiente paquete. También describe el control de flujo por ventanas deslizantes, el cual permite el envío múltiple de paquetes antes de recibir confirmación. Por último, explica brevemente el control de flujo por software mediante el uso de caracteres XON/XOFF.
Este documento describe los conceptos fundamentales de los procesos y su administración por parte de los sistemas operativos. Explica que un proceso es una entidad activa que compite por los recursos del sistema, mientras que un programa es pasivo. También describe los diferentes estados por los que puede pasar un proceso, como nuevo, listo, en ejecución, bloqueado y terminado. Finalmente, explica las estructuras de control que usa el sistema operativo para administrar los procesos y recursos, como las tablas de memoria, E/S y procesos
Este documento describe diferentes tipos de máquinas de Turing, incluyendo máquinas con cinta infinita en ambos lados, máquinas con cinta multipista, máquinas multicinta y máquinas multidimensionales. También discute aplicaciones de las máquinas de Turing en teoría de la computación y máquinas oráculo.
El documento describe cinco tareas para construir máquinas de Turing que acepten diferentes entradas de 0 y 1, incluyendo: invertir 0 y 1, sumar 0 y 1, usar una condición if con 0 y 1, encontrar tres 1 consecutivos, y ordenar todos los 1 a la izquierda y los 0 a la derecha.
Tutorial algoritmo estructuras ciclicasMichele André
Este documento presenta un tutorial sobre estructuras algorítmicas de instrucciones cíclicas o repetitivas. Explica los objetivos del tutorial, introduce el concepto de instrucciones cíclicas, y define las tres estructuras básicas de ciclos: mientras-hacer, repetir-hasta y para. Luego, proporciona ejemplos detallados de cada una de estas estructuras cíclicas.
El documento describe diferentes tipos de razonamiento lógico, incluyendo el razonamiento deductivo, inductivo y monótono. Explica que la lógica monótona se basa en que el agregar nuevos conocimientos no reduce el conjunto de cosas conocidas, a diferencia de otros tipos de razonamiento como el razonamiento por defecto o la revisión de creencias. También cubre temas como la deducción lógica, la lógica proposicional y la lógica de primer orden.
Este documento describe los conceptos básicos de los procesos y la administración de procesos. Explica que un proceso es un programa en ejecución que incluye código, datos y pila. También describe los diferentes estados de un proceso como nuevo, en ejecución, espera, listo y terminado. Además, resume varios algoritmos de planificación como round-robin, por prioridad, colas múltiples y primer trabajo más corto.
El documento describe las fases de un compilador, incluyendo el análisis léxico, análisis sintáctico, análisis semántico y generación de código. Explica que un compilador toma un programa escrito en un lenguaje de alto nivel y lo traduce a un lenguaje de bajo nivel como lenguaje de máquina para que pueda ejecutarse. También define términos clave como tokens, gramáticas y tablas de símbolos que son importantes para el proceso de compilación.
Protección y Seguridad de los Sistemas OperativosRichard J. Nuñez
El documento compara la seguridad de los sistemas operativos Windows y Linux. Explica que Windows tiene más vulnerabilidades debido a su diseño cerrado, mientras que Linux es más seguro gracias a su código abierto y falta de usuarios comunes. También describe varios métodos de protección como usar cuentas de usuario con menos privilegios, mantener software actualizado y crear contraseñas seguras.
Este documento presenta el análisis semántico en Cup. Explica que Cup permite realizar un análisis sintáctico y semántico combinado mediante la inclusión de atributos y acciones semánticas en la gramática. Estas acciones permiten comprobar tipos, existencias y realizar otras validaciones semánticas durante el análisis.
Este documento presenta información sobre lenguajes de simulación. Introduce los lenguajes de simulación específicos y sus ventajas sobre los lenguajes de propósito general. Describe varios lenguajes de simulación específicos como GPSS, SIMAN y SIMSCRIPT y explica sus características. Finalmente, resume las ventajas de usar lenguajes de simulación como ahorrar tiempo y concentrarse en el problema en lugar de la programación.
El documento describe el analizador sintáctico, el cual se encarga de chequear el texto de entrada basado en una gramática dada y generar un árbol sintáctico si el programa es válido. Funciona obteniendo tokens del analizador léxico y verificando que la cadena pueda ser generada por la gramática del lenguaje. La gramática independiente de contexto permite generar automáticamente el analizador sintáctico y proporciona una estructura al lenguaje.
El documento presenta conceptos básicos de programación como programación modular y estructurada. Explica metodologías para resolver problemas mediante la creación de algoritmos, diagramas de flujo y pseudocódigo. Describe elementos clave de un programa como entrada, salida, variables, operadores, expresiones y estructuras de control como selección y repetición.
• Objetivos del diseño de salida de un sistema
• Identificación de las necesidades de salida de un sistema
• Presentación de la información
• Diseño de la salida impresa
• Diseño de la salida de pantalla
Este documento describe los lenguajes de simulación, incluyendo su desarrollo inicial en los años 1950 utilizando lenguajes de propósito general y lenguajes especializados diseñados posteriormente. También discute las características comunes requeridas para la simulación discreta y provee ejemplos de lenguajes específicos de simulación como MIDAS, DYSAC, GPSS y SIMULA.
1. El documento habla sobre la gestión de procesos por parte de los sistemas operativos, incluyendo la creación, terminación y estados de los procesos.
2. Los sistemas operativos administran los procesos y tareas del sistema para optimizar el uso de recursos como la CPU.
3. Los procesos pueden encontrarse en estados como nuevo, listo, en ejecución, espera y terminado; y el sistema operativo controla las transiciones entre estos estados.
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
Este documento presenta un portafolio de unidad sobre expresiones y lenguajes regulares. Explica expresiones regulares, lenguajes regulares y presenta ejemplos de ambos. También incluye ejercicios resueltos sobre expresiones y lenguajes regulares para reforzar la comprensión de estos conceptos.
Este documento analiza los tipos de archivos y directorios que se pueden encontrar en el sistema operativo Linux Ubuntu. Explica que los archivos tienen nombres y extensiones específicas, y que los directorios son conjuntos de archivos y subdirectorios que ayudan a organizar la información. También describe el camino o ruta de acceso a los archivos y directorios desde la raíz del sistema de archivos.
Los estilos principales de programación paralela son:
- Programación basada en paso de mensajes: La comunicación entre procesos se realiza mediante envío y recepción explícita de mensajes. Ejemplos: MPI, PVM.
- Programación basada en memoria compartida: Los procesos acceden y modifican variables en un espacio de memoria común. Se requieren mecanismos de sincronización. Ejemplo: OpenMP.
- Programación híbrida: Combina los enfoques anteriores para aprovechar ambos modelos cuando sea conveniente.
Alternativ
El documento describe la importancia del lenguaje ensamblador, incluyendo que requiere menos memoria y es más rápido que los lenguajes de alto nivel, permite un mayor control sobre el hardware, y una mejor comprensión de la arquitectura de la máquina. También cubre conceptos clave como registros, memoria, interrupciones y llamadas al sistema.
La maquina de Turing, sus tipos y aplicaciones.Emmanuel Colon
El documento describe la máquina de Turing, que es un modelo matemático de un dispositivo capaz de resolver problemas computacionales. Consiste en una cinta infinita, una cabeza lectora/escritora y un conjunto finito de estados. La máquina se mueve a lo largo de la cinta siguiendo instrucciones para leer, escribir y moverse. Esto permite modelar cualquier algoritmo y resolver problemas de cualquier complejidad computacional.
Los autómatas finitos no deterministas (AFND) permiten múltiples transiciones posibles ante una situación dada y transiciones sin símbolos de entrada. Un AFND se define como una tupla que incluye un conjunto de estados, una función de transición que mapea pares de estados y símbolos a subconjuntos de estados, un estado inicial y un conjunto de estados finales. El lenguaje aceptado por un AFND incluye todas las cadenas que pueden llevar al AFND a un estado final. Los AFND y autómatas finitos
El documento describe los conceptos fundamentales de los procesos y las interrupciones en los sistemas operativos. Explica que los procesos pueden estar en estados como listo, bloqueado o en ejecución, y que las interrupciones pueden ser generadas por hardware o software. También describe el bloque de control de proceso, que contiene información sobre cada proceso, y las funciones básicas del núcleo del sistema operativo relacionadas con la administración de procesos y el procesamiento de interrupciones.
Un proceso pasa por varios estados discretos como nuevo, listo, en ejecución, bloqueado y terminado. Cuando un proceso es admitido se crea y se coloca en la cola de listos, y pasa a estado listo cuando se le asigna la CPU. Un proceso cambia a estado en ejecución al ser despachado, pero puede volver a listo si se le agota su tiempo de CPU o si inicia una operación de E/S para bloquearse. Al terminar la E/S, vuelve a listo, y sale a terminado una vez completada su ej
Este documento presenta una introducción a la teoría de lenguajes formales. Define conceptos básicos como alfabeto, cadena y lenguaje. Explica los tipos de lenguajes incluyendo lenguajes de bajo, alto y medio nivel. También describe herramientas computacionales relacionadas con lenguajes como editores, impresoras estéticas, verificadores estáticos e intérpretes. Finalmente, resume la estructura básica de un traductor.
Este documento trata sobre los conceptos de procesos y threads en sistemas operativos. Explica la diferencia entre un proceso y un programa, y describe los estados por los que pasa un proceso. También cubre temas como la planificación de procesos, sincronización, problemas de concurrencia y soluciones para la exclusión mutua.
Este documento describe varios conceptos clave de la programación concurrente, incluyendo procesos, hilos, multitareas, multiprogramación y concurrencia. Explica soluciones para problemas de sincronización como la exclusión mutua, utilizando algoritmos como Dekker y Peterson, así como estructuras como semáforos, monitores y comunicación por mensajes.
El documento describe diferentes tipos de razonamiento lógico, incluyendo el razonamiento deductivo, inductivo y monótono. Explica que la lógica monótona se basa en que el agregar nuevos conocimientos no reduce el conjunto de cosas conocidas, a diferencia de otros tipos de razonamiento como el razonamiento por defecto o la revisión de creencias. También cubre temas como la deducción lógica, la lógica proposicional y la lógica de primer orden.
Este documento describe los conceptos básicos de los procesos y la administración de procesos. Explica que un proceso es un programa en ejecución que incluye código, datos y pila. También describe los diferentes estados de un proceso como nuevo, en ejecución, espera, listo y terminado. Además, resume varios algoritmos de planificación como round-robin, por prioridad, colas múltiples y primer trabajo más corto.
El documento describe las fases de un compilador, incluyendo el análisis léxico, análisis sintáctico, análisis semántico y generación de código. Explica que un compilador toma un programa escrito en un lenguaje de alto nivel y lo traduce a un lenguaje de bajo nivel como lenguaje de máquina para que pueda ejecutarse. También define términos clave como tokens, gramáticas y tablas de símbolos que son importantes para el proceso de compilación.
Protección y Seguridad de los Sistemas OperativosRichard J. Nuñez
El documento compara la seguridad de los sistemas operativos Windows y Linux. Explica que Windows tiene más vulnerabilidades debido a su diseño cerrado, mientras que Linux es más seguro gracias a su código abierto y falta de usuarios comunes. También describe varios métodos de protección como usar cuentas de usuario con menos privilegios, mantener software actualizado y crear contraseñas seguras.
Este documento presenta el análisis semántico en Cup. Explica que Cup permite realizar un análisis sintáctico y semántico combinado mediante la inclusión de atributos y acciones semánticas en la gramática. Estas acciones permiten comprobar tipos, existencias y realizar otras validaciones semánticas durante el análisis.
Este documento presenta información sobre lenguajes de simulación. Introduce los lenguajes de simulación específicos y sus ventajas sobre los lenguajes de propósito general. Describe varios lenguajes de simulación específicos como GPSS, SIMAN y SIMSCRIPT y explica sus características. Finalmente, resume las ventajas de usar lenguajes de simulación como ahorrar tiempo y concentrarse en el problema en lugar de la programación.
El documento describe el analizador sintáctico, el cual se encarga de chequear el texto de entrada basado en una gramática dada y generar un árbol sintáctico si el programa es válido. Funciona obteniendo tokens del analizador léxico y verificando que la cadena pueda ser generada por la gramática del lenguaje. La gramática independiente de contexto permite generar automáticamente el analizador sintáctico y proporciona una estructura al lenguaje.
El documento presenta conceptos básicos de programación como programación modular y estructurada. Explica metodologías para resolver problemas mediante la creación de algoritmos, diagramas de flujo y pseudocódigo. Describe elementos clave de un programa como entrada, salida, variables, operadores, expresiones y estructuras de control como selección y repetición.
• Objetivos del diseño de salida de un sistema
• Identificación de las necesidades de salida de un sistema
• Presentación de la información
• Diseño de la salida impresa
• Diseño de la salida de pantalla
Este documento describe los lenguajes de simulación, incluyendo su desarrollo inicial en los años 1950 utilizando lenguajes de propósito general y lenguajes especializados diseñados posteriormente. También discute las características comunes requeridas para la simulación discreta y provee ejemplos de lenguajes específicos de simulación como MIDAS, DYSAC, GPSS y SIMULA.
1. El documento habla sobre la gestión de procesos por parte de los sistemas operativos, incluyendo la creación, terminación y estados de los procesos.
2. Los sistemas operativos administran los procesos y tareas del sistema para optimizar el uso de recursos como la CPU.
3. Los procesos pueden encontrarse en estados como nuevo, listo, en ejecución, espera y terminado; y el sistema operativo controla las transiciones entre estos estados.
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
Este documento presenta un portafolio de unidad sobre expresiones y lenguajes regulares. Explica expresiones regulares, lenguajes regulares y presenta ejemplos de ambos. También incluye ejercicios resueltos sobre expresiones y lenguajes regulares para reforzar la comprensión de estos conceptos.
Este documento analiza los tipos de archivos y directorios que se pueden encontrar en el sistema operativo Linux Ubuntu. Explica que los archivos tienen nombres y extensiones específicas, y que los directorios son conjuntos de archivos y subdirectorios que ayudan a organizar la información. También describe el camino o ruta de acceso a los archivos y directorios desde la raíz del sistema de archivos.
Los estilos principales de programación paralela son:
- Programación basada en paso de mensajes: La comunicación entre procesos se realiza mediante envío y recepción explícita de mensajes. Ejemplos: MPI, PVM.
- Programación basada en memoria compartida: Los procesos acceden y modifican variables en un espacio de memoria común. Se requieren mecanismos de sincronización. Ejemplo: OpenMP.
- Programación híbrida: Combina los enfoques anteriores para aprovechar ambos modelos cuando sea conveniente.
Alternativ
El documento describe la importancia del lenguaje ensamblador, incluyendo que requiere menos memoria y es más rápido que los lenguajes de alto nivel, permite un mayor control sobre el hardware, y una mejor comprensión de la arquitectura de la máquina. También cubre conceptos clave como registros, memoria, interrupciones y llamadas al sistema.
La maquina de Turing, sus tipos y aplicaciones.Emmanuel Colon
El documento describe la máquina de Turing, que es un modelo matemático de un dispositivo capaz de resolver problemas computacionales. Consiste en una cinta infinita, una cabeza lectora/escritora y un conjunto finito de estados. La máquina se mueve a lo largo de la cinta siguiendo instrucciones para leer, escribir y moverse. Esto permite modelar cualquier algoritmo y resolver problemas de cualquier complejidad computacional.
Los autómatas finitos no deterministas (AFND) permiten múltiples transiciones posibles ante una situación dada y transiciones sin símbolos de entrada. Un AFND se define como una tupla que incluye un conjunto de estados, una función de transición que mapea pares de estados y símbolos a subconjuntos de estados, un estado inicial y un conjunto de estados finales. El lenguaje aceptado por un AFND incluye todas las cadenas que pueden llevar al AFND a un estado final. Los AFND y autómatas finitos
El documento describe los conceptos fundamentales de los procesos y las interrupciones en los sistemas operativos. Explica que los procesos pueden estar en estados como listo, bloqueado o en ejecución, y que las interrupciones pueden ser generadas por hardware o software. También describe el bloque de control de proceso, que contiene información sobre cada proceso, y las funciones básicas del núcleo del sistema operativo relacionadas con la administración de procesos y el procesamiento de interrupciones.
Un proceso pasa por varios estados discretos como nuevo, listo, en ejecución, bloqueado y terminado. Cuando un proceso es admitido se crea y se coloca en la cola de listos, y pasa a estado listo cuando se le asigna la CPU. Un proceso cambia a estado en ejecución al ser despachado, pero puede volver a listo si se le agota su tiempo de CPU o si inicia una operación de E/S para bloquearse. Al terminar la E/S, vuelve a listo, y sale a terminado una vez completada su ej
Este documento presenta una introducción a la teoría de lenguajes formales. Define conceptos básicos como alfabeto, cadena y lenguaje. Explica los tipos de lenguajes incluyendo lenguajes de bajo, alto y medio nivel. También describe herramientas computacionales relacionadas con lenguajes como editores, impresoras estéticas, verificadores estáticos e intérpretes. Finalmente, resume la estructura básica de un traductor.
Este documento trata sobre los conceptos de procesos y threads en sistemas operativos. Explica la diferencia entre un proceso y un programa, y describe los estados por los que pasa un proceso. También cubre temas como la planificación de procesos, sincronización, problemas de concurrencia y soluciones para la exclusión mutua.
Este documento describe varios conceptos clave de la programación concurrente, incluyendo procesos, hilos, multitareas, multiprogramación y concurrencia. Explica soluciones para problemas de sincronización como la exclusión mutua, utilizando algoritmos como Dekker y Peterson, así como estructuras como semáforos, monitores y comunicación por mensajes.
El documento habla sobre la concurrencia en sistemas operativos. Explica que los sistemas operativos modernos usan procesamiento concurrente donde múltiples procesos pueden ejecutarse al mismo tiempo. Esto crea problemas como procesos que quieren acceder a datos compartidos y se debe proveer mecanismos para sincronización y comunicación entre procesos. También presenta ejemplos como productor-consumidor y describe soluciones como inhabilitar interrupciones y usar variables de candado o alternancia estricta para evitar condiciones de competencia.
El documento describe los conceptos de procesos concurrentes, sincronización de procesos, secciones críticas, semáforos y monitores. Explica cómo se pueden usar semáforos y monitores para garantizar la exclusión mutua y el progreso de los procesos concurrentes al acceder recursos compartidos. También cubre temas como comunicación entre procesos a través de memoria compartida y sistemas de mensajes.
Este documento resume los conceptos fundamentales de la administración de procesos y procesadores en sistemas operativos. Explica que un proceso es una instancia de ejecución de un programa que está siendo ejecutado. Los procesos pueden encontrarse en diferentes estados como en ejecución, listo o bloqueado. También introduce los conceptos de procesos ligeros o hilos, concurrencia, exclusión mutua, sincronización y mecanismos de semáforos para la coordinación de procesos concurrentes.
Este documento discute la sincronización de procesos, incluyendo el problema de la sección crítica, hardware y semáforos de sincronización, problemas clásicos como productor-consumidor, lectores-escritores y filósofos comensales, monitores y sincronización en Java.
El documento describe el problema del productor-consumidor y cómo se puede resolver mediante el uso de semáforos. El problema consiste en que un productor genera productos y los almacena en un buffer compartido, mientras que un consumidor los extrae del buffer, por lo que se requiere sincronización para evitar situaciones como que el productor llene el buffer o el consumidor intente extraer cuando está vacío. Mediante el uso de semáforos, el productor y consumidor pueden bloquearse y desbloquearse dependiendo del estado del buffer, resolviendo así el problema de forma concurrente y
Este documento describe las funciones básicas de los sistemas operativos, incluyendo la comunicación con usuarios, la ejecución de múltiples programas y el manejo de recursos compartidos. También explica diferentes modos de explotación como procesos por lotes y en tiempo real. Finalmente, discute conceptos como la seguridad, la compartimentación de memoria, la exclusión mutua y el uso de semáforos para coordinar el acceso a los recursos compartidos entre procesos concurrentes.
Este documento contiene información sobre procesos, programas y procesadores. Define estos términos y describe sus diferencias y semejanzas. También explica el diagrama de estados de un proceso, las transiciones entre estados, el concepto de semaforo, y los objetivos y niveles de planificación del procesador.
Este documento resume los conceptos básicos de los sistemas operativos, incluyendo los estados de los procesos, las transiciones entre estados, las operaciones sobre procesos, las interrupciones, la información almacenada en el bloque de control de procesos, y el cambio de contexto. Explica conceptos como listo, en ejecución, bloqueado, así como las razones para la terminación de un proceso.
Este documento resume los conceptos básicos de los sistemas operativos, incluyendo los estados de los procesos, las transiciones entre estados, las operaciones sobre procesos, las interrupciones, la información almacenada en el bloque de control de procesos, y el cambio de contexto. Explica conceptos como listo, en ejecución, bloqueado, suspendido, y las razones para iniciar y terminar un proceso.
El documento describe varios algoritmos para resolver el problema de la sección crítica en sistemas concurrentes. Introduce el problema de la carrera y presenta soluciones de software como los algoritmos de Peterson y Bakery que garantizan exclusión mutua y progreso para dos y más procesos respectivamente. También cubre soluciones de hardware como desactivar interrupciones y usar instrucciones de prueba y establecimiento atómico.
El documento describe tres temas principales: 1) Estados de procesos en los sistemas operativos, incluyendo estados como activo, preparado y bloqueado. 2) Procesamiento de interrupciones, las cuales pueden ser causadas por eventos de hardware o software. 3) Planificación de procesos, donde el sistema operativo decide qué proceso usará la CPU basado en políticas de planificación.
El documento define procesos y estructuras de control utilizadas por los sistemas operativos para administrar procesos, memoria, archivos y dispositivos de E/S. Explica que un proceso es un programa en ejecución representado por su código, datos y bloque de control de proceso. Los monitores se desarrollaron para evitar bloqueos al ejecutar procesos concurrentes mediante exclusión mutua y variables de condición.
Este documento trata sobre los sistemas operativos. Explica que un sistema operativo controla y coordina el uso de los recursos del hardware entre los diferentes programas y usuarios. También describe varios problemas de concurrencia que pueden ocurrir cuando varios procesos compiten por los recursos, como las condiciones de carrera, espera indefinida y deadlock. Finalmente, discute la planificación del procesador y cómo los sistemas operativos deciden qué proceso recibe tiempo de CPU.
Este documento trata sobre los conceptos básicos de los procesos y la multiprogramación en sistemas operativos. Explica que conceptualmente cada proceso tiene su propia CPU, pero en realidad la CPU conmuta entre procesos. También describe los diferentes estados que puede tener un proceso, como listo, en ejecución y bloqueado, así como las transiciones entre estados. Por último, introduce los conceptos de planificación de procesos y algoritmos comunes como FCFS y Round Robin.
Sistema Operativos PNFI IUTM (2º Capitulo Procesos y Administracion del Proc...ruben ferrer
El documento describe los conceptos fundamentales de procesos y administración del procesador en sistemas operativos. Explica que un proceso es una abstracción de un programa en ejecución y los diferentes estados que puede tener un proceso (en ejecución, listo, bloqueado). También describe las interrupciones que pueden ocurrir y cómo el núcleo del sistema operativo administra la planificación y cambio de procesos en la CPU.
El documento describe los conceptos fundamentales de procesos y administración del procesador en sistemas operativos. Explica que un proceso es una abstracción de un programa en ejecución y que los sistemas operativos usan múltiples procesos para lograr multiprogramación. También describe los estados por los que pasa un proceso, como ejecución, listo y bloqueado, y cómo se procesan las interrupciones para alternar entre procesos.
Comunicación y Sincronizacion de ProcesosLorena Ramos
Los procesos concurrentes pueden competir por recursos o cooperar compartiendo información. La sección crítica es la región del código donde un proceso accede a un recurso compartido. Se deben evitar las condiciones de competencia mediante la exclusión mutua en la sección crítica. Existen soluciones basadas en variables de cerradura, alternancia estricta, semáforos, monitores y paso de mensajes para garantizar la exclusión mutua.
Buscador de Eventos y Fiestas en España - Buscafiestaholabuscafiesta
Buscafiesta.es es el buscador líder en España para fiestas y eventos, diseñado para satisfacer las necesidades tanto de organizadores como de asistentes. Este innovador software ofrece una plataforma integral que permite a los organizadores de eventos añadir, gestionar y promocionar sus actividades de manera totalmente autónoma, facilitando la visibilidad y escalabilidad de sus eventos.
Buscafiesta.es no solo conecta a los organizadores con su público objetivo, sino que también ofrece herramientas de marketing y análisis que ayudan a maximizar el impacto de cada evento. Ya sea para una fiesta local, un concierto multitudinario o un evento corporativo, Buscafiesta.es es la solución definitiva para hacer de cada evento un éxito rotundo.
1. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
CAPITULO 6:
COMUNICACIÓN ENTRE
PROCESOS
2. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
ANTECEDENTES
• Los procesos cooperativos pueden afectar o verse
afectados por los demás procesos que se están
ejecutando en el sistema ya que pueden compartir
directamente un espacio lógico de direcciones
(código y datos) mediante el empleo de hilos.
• El acceso concurrente a datos compartidos pueden
dar lugar a inconsistencias en los datos
Mecanismo para que los procesos se comuniquen
para sincronizar sus acciones.
• Los problemas de comunicación entre procesos o
IPC tienen que ver:
– Como asegurarse de que 2 o más procesos no
se estorben al efectuar actividades críticas.
– La secuencia correcta cuando existen
dependencias
3. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• Supongamos que se quiere ofrecer una
solución al problema de productor
consumidor.
• Variable entera count, para realizar un
seguimiento del número de buffers llenos. Se
inicializa en 0. Se incrementa por el productor
después de que produce un nuevo buffer y
se disminuye por el consumidor después de
que consume un búfer.
4. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
Productor
while (true) {
/* produce an item and put in
nextProduced */
while (count == BUFFER_SIZE)
; // ninguna operacion
++count;
buffer [in] = item;
in = (in + 1) % BUFFER_SIZE;
}
5. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
Consumidor
while (true) {
while (count == 0)
; // ninguna operacion
--count;
item= buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
6. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
6.1. Condiciones de competencia
• La rutina del productor y del consumidor son correctas
en forma separada, pero tal vez no cuando se ejecuten
de manera concurrente. La razón es que los hilos o
procesos comparten la variable count.
• ++ count puede implementarse
register1 = count
register1 = register1 + 1
count = register1
• --count puede implementarse
register2 = count
register2 = register2 - 1
count = register2
8. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
Otro ejemplo: Condiciones de
competencia
• Situación en donde varios hilos acceden y
manipulan los mismos datos de manera
concurrente y donde el resultado de la
ejecución depende del orden particular en
el que tiene lugar el acceso.
• Ejemplo: spooler de impresión. En el
directorio de spooler se almacena el nombre
del archivo que desea imprimir un proceso. El
demonio o servidor de impresión revisa
periódicamente el directorio para ver si hay
9. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
archivos por imprimir, imprimirlos y
luego borrar sus nombres.
a. El directorio tiene una serie de
entradas numeradas (0,1,2,..) para
guardar el nombre del archivo.
b. Hay 2 variables compartidas: “out”,
apunta al sgte archivo por imprimir
e “in”, apunta a la sgte entrada libre.
c. Suponiendo que las entradas del 0
al 6 están vacías y las entradas del
del 7 al 9 están llenas.
10. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
d. Casi simultáneamente, los procesos A y B
deciden colocar un archivo en la cola de
impresión.
e. El proceso A lee “in” y almacena el valor
10, en una variable local llamada
sgte_ranura_libre. En ese momento
ocurre una interrupción de reloj y la CPU
conmuta al proceso B. Este proceso
también lee “in” y obtiene 10,
almacenando el nombre de su archivo en
esa entrada, actualizando “in” en 11.
11. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
f. Más tarde, el proceso A se ejecuta,
examina sgte_ranura_libre que tiene
el valor 10 y escribe el nombre del
archivo sobre esa entrada, borrando
el anterior.
g. Luego A calcula sgte_ranura_libre:
11, asignándolo a “in”.
h. Finalmente el proceso B nunca
obtendrá sus salida.
A esto se le denomina condiciones de
competencia
12. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
6.2. Secciones críticas
• ¿Cómo evitar las condiciones de
competencia?
• Prohibir que más de un proceso lea y
escriba datos compartidos al mismo tiempo:
EXCLUSION MUTUA.
• Parte del programa en la que se accede a la
memoria compartida: REGION O SECCION
CRITICA.
• Se debe cumplir con lo sgte para evitar las
condiciones de competencia
– Exclusión mutua: Dos procesos o hilos
nunca pueden estar simultáneamente
dentro de sus regiones críticas
13. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
b. Progreso: Ningún proceso o hilo que
se ejecute fuera de su región crítica
puede bloquear a otros procesos.
c. Espera indefinida: Ningún proceso o
hilo deberá tener que esperar
indefinidamente para entrar en su
región crítica.
• No pueden suponerse nada acerca de
las velocidades o el número de las
CPU.
14. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
A. Inhabilitación de interrupciones:
• Cada proceso debe inhabilitar las inte-
rrupciones justo después de ingresar a su
región crítica y volver a habilitarlas justo
antes de salir de ella.
• Este enfoque no es el adecuado ya que
confiere al usuario la facultad de desac-
tivar las interrupciones. Podría ser que el
usuario olvide de activarlas.
6.3. Exclusión mutua con espera
activa
15. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
B. Variables de candado:
• Se emplea una variable de candado
(vc) compartida inicializada en
cero(0).
• Cuando un proceso quiere entrar en
su R.C. debe probar el candado.
Si (vc=0) entonces
vc=1
entrar R.C.
sino
esperar hasta vc=0
16. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
0: ningún proceso está en su R.C.
1: algún proceso está en su R.C.
• Presenta la misma desventaja del
directorio de spooler: un proceso lee vc =
0, antes de que asigne el valor de 1 , se
planifica otro proceso, el cual también ve
a vc=0 y le asigna 1. Luego viene el
primer proceso asignando también 1 a vc.
Por lo tanto: 2 procesos estarán en su
R.C. al mismo tiempo.
17. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
C. Alternancia estricta:
• La variable turno=0 inicialmente,
indica a quien le toca entrar en la
R.C.
• El proceso 0 observa que turno=0
y entra en su R.C.
while(True) {
while(turno!=0) /*esperar*/
region_critica();
turno=1;
region_nocritica();
}
18. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
while(True) {
while(turno!=1) /*esperar*/
region_critica();
turno=0;
region_nocritica();
}
• El proceso 1 ve que turno = 0 y se
mantiene probando para detectar que
cambie a 1(turno): Espera Activa.
19. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• Cuando el proceso 0 sale de su
R.C. asigna 1 a turno para que el
proceso 1 entre en su R.C.
• Esta técnica no es buena cuando
un proceso es mucho más lento
que el otro: no cumple la condición
(b), un proceso es bloqueado por
otro que no está en su R.C.
20. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
D. Solución de Peterson:
• El Algoritmo de Peterson consiste en 2
procedimientos escritos en Ansi C.
• Antes de usar las variables
compartidas, cada proceso invoca a
entrar_region, con su número de
proceso, 0 o 1, como parámetro,
debiendo esperar si es necesario.
• Después de haber terminado, el
proceso invoca a salir_region, para
indicar que ya terminó.
21. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
#define FALSE 0
#define TRUE 1
#define N 2
int turno;
int interesado(N);
void entrar_region(int proceso)
{ int otro;
otro = 1- proceso;
interesado(proceso)=TRUE;
turno = proceso;
while(turno==proceso&& interesado(otro)==FALSE)
}
22. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
void salir_region(int proceso)
{
interesado(proceso)=FALSE;
}
E. La Instrucción TSL:
• Para computadoras diseñadas para
soportar multiprocesadores.
• Instrucción: Test and Set Lock o TSL
• TSL lee el contenido de la palabra de
memoria, lo coloca en un registro y luego
almacena un valor distinto de 0 en esa dir.
23. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• Las operaciones de leer la palabra y
guardar el valor en ella son indivisibles.
• La CPU que ejecuta TSL pone un
candado en el bus de memoria para que
ninguna otra pueda acceder a la memoria
hasta que termine.
• Se emplea la variable compartida: lock.
Cuando es 0, cualquier proceso puede
asignarle 1 usando TSL y luego leer o
escribir la mem. compartida. Cuando el
proceso termina, asigna otra vez 0 a lock.
24. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• Subrutina en lenguaje ensamblador:
entrar_region:
tsl register, lock
cmp register, #0
jne entrar_region
ret
salir_region:
move, lock,#0
ret
• El proceso debe invocar a entrar_region y
salir_region en los momentos correctos
para que el método funcione.
25. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• La solución de Peterson y la instruc. TSL
son correctas, pero tienen el defecto de
requerir espera activa, provocando
desperdicio de tiempo de CPU y efectos
inesperados como el problema de
inversión de prioridad.
• Algunas de las sentencias básicas de
comunicación que evitan la espera activa,
son: SLEEP y WAKEUP.
• Sleep: llamada al sistema que hace que el
6.4. Dormir y despertar
26. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
invocador se bloquee o suspenda hasta
que otro proceso lo despierte.
• Wakeup: llamada que tiene como
parámetro al proceso que se debe
despertar.
El problema del productor-consumidor
• Conocido también como buffer limitado.
• Dos procesos comparten un mismo
buffer de tamaño fijo: el productor coloca
información en el buffer y el consumidor,
la saca.
27. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• Cuando el productor quiere colocar un
nuevo elemento en el buffer y este está
lleno, debe dormirse hasta ser
despertado por el consumidor cuando
haya retirado uno o más elementos.
• Si el consumidor desea sacar un
elemento del buffer y ve que está vacío,
se duerme hasta que el productor pone
algo en el buffer y lo despierta.
• Este enfoque trae los mismos problemas
de condiciones de competencia del caso
del directorio de spooler.
28. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• Se requiere de una variable cuenta, para ver
el número de elementos en el buffer. Si N es
el máximo de elementos que puede contener
el buffer, entonces el código del consumidor
debe verificar si cuenta = N, si es así tendrá
que dormirse, sino agregar el elemento y
aumentar cuenta. De manera similar ocurre
con el consumidor.
• Cada uno de los procesos debe verificar si
el otro está durmiendo para despertarlo.
• El algoritmo en C es:
29. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
#define N 100
int cuenta=0;
void productor(void)
{
while(True) {
produce_item();
if (cuenta==N) sleep();
ingresa_item();
cuenta=cuenta+1;
if (cuenta==1) wakeup(consumidor);
}
}
30. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
void consumidor(void)
{
while(True) {
if (cuenta==0) sleep();
remueve_item();
cuenta=cuenta-1;
if (cuenta==N-1) wakeup(productor);
consume_item()
}
}
31. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• La condición de competencia se da cuan-
do el buffer está vacío y el consumidor
acaba de leer cuenta, y se comienza a
ejecutar el productor, colocando un
elemento en el buffer aumentando cuenta
a 1, por lo que el productor invoca un
wakeup al consumidor, pero como este no
estaba dormido se pierde la señal. El
consumidor decide dormirse porque había
leído cuenta = 0 antes. Más tarde
problablemente, el productor llenará el
buffer y se dormirá.
32. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• Para solucionar este problema, se
debería agregar un bit de espera de
despertar, si este está encendido, se
apagará pero el proceso estará
despierto.
33. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
6.5. Semáforos
• Dijkstra propuso usar una variable llamada
semáforo : 0 - no hay señales de despertar y
algún valor positivo – 1ó + señales.
• Dos operaciones: DOWN ó P y UP.ó V
• Down aplicada a un Semáforo verifica si el el
valor es mayor que 0, si es así decrementa el
valor (gasta una señal) y continúa. Si es 0, el
proceso se duerme sin completar la operac.
Down.
34. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• La verificación del valor, su
modificación y la acción de dormirse,
se realizan como una acción atómica
indivisible.
• Up incrementa el valor del Semáforo,
si uno o más procesos están
durmiendo en espera se le permite
cumplir su operación Down. La
operación de incrementar el semáforo
y despertar un proceso es indivisible.
35. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
Resolución del problema del P-C
usando semáforos
• Las operaciones UP y DOWN se
imple-mentan como llamadas al
sistema para que el S.O. inhabilite las
interrupcio-nes mientras prueba el
semáforo, lo actualiza y pone el
proceso a dormir, si es necesario.
• Tres semáforos: full (0), para contar el
número de entradas llenas, empty(N),
36. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
número de ranuras vacías y mutex(1), para
que el productor y el consumidor no accedan
al buffer al mismo tiempo.
• Los semáforos que son usados por uno o
más procesos para asegurar que sólo uno de
ellos pueda entrar en su R.C: Semáforos
binarios(mutex).
• Los semáforos: full y empty se necesitan
para garantizar que ciertas secuencias suce-
sos ocurran o no ocurran: sincronización.
• El algoritmo es:
37. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
#define N 100
typedef int semaforo;
semaforo mutex=1;
semaforo empty = N;
Semaforo full=0;
void productor()
{
int item;
while(True) {
produce-item(&item);
down(&empty);
down(&mutex);
ingresa-item(item);
up(&mutex);
39. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• Si el orden de los Down del productor se
invirtiera, se podría producir una situación de
bloqueo mutuo.
• Hoare y Hansen propusieron una primitiva de
sincronización de nivel más alto llamado
monitor.
• Monitor: colección de procedimientos,
variables y estructuras de datos agrupados
en un módulo especial, que puede ser
invocados por los procesos, pero estos no
6.6. Monitores
40. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
pueden acceder directamente a las estructu-
ras internas del monitor.
• Sólo un proceso puede estar activo en un
monitor en un momento dado.
• El compilador debe implementar la exclu-
sión mutua en las entrada a monitores,
usando un semáforo binario, por ejemplo.
• Para evitar que los procesos se bloqueen
mutuamente se introdujo las variables de
condición y 2 operaciones, WAIT y SIGNAL.
41. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• Cuando un procedimiento de monitor des-
cubre que no puede continuar, el buffer está
lleno, ejecuta WAIT con alguna variable de
condición (full), haciendo que el proceso
invocador se bloquee y el otro proceso
(consumidor) entre el monitor. Este último,
puede despertar a su compañero, ejecutando
Signal con la variable de condición que su
compañero está esperando. Para evitar la
presencia de 2 procesos activos en el
monitor, un Signal sólo puede aparecer co-
42. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
mo última instrucción de un procedimiento
de monitor.
• Las variables de condición no son
contadores.
• El programa es:
monitor ProductorConsumidor
condition full, empty;
integer count;
procedure entrar;
begin
if count=N then wait(full)
ingresar_item;
43. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
cuenta:=cuenta + 1;
if count=1 then signal(empty)
end;
procedure remover;
begin
if count=0 then wait(empty)
remover_item;
cuenta:=cuenta - 1;
if count=N-1 then signal(full)
end;
cuenta:=0;
end monitor;
44. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
procedure productor;
begin
while true do
begin
produce_item;
ProductorConsumidor.entrar
end
end;
procedure consumidor;
begin
while true do
45. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
begin
ProductorConsumidor.remover;
consume_item
end
end;
• Las desventajas es que los monitores son
un concepto de lenguajes de programación
y casi todos los compiladores carecen de
estos y además sólo se diseñaron con la
intención de resolver el problema de
exclusión mutua en una o más CPU con
una memoria común.
46. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
6.7. Transferencias de mensaje
• Emplea 2 sentencias básicas: SEND y
RECEIVE (llamadas al sistema).
• send(destino, &mensaje); envía un mensaje
a un destino dado.
• receive(origen,&mensaje); recibe un mensaje
de un origen dado.
• Si no hay une mensaje disponible, el receptor
podría bloquearse hasta que uno llegue.
47. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
Aspectos de diseño
• Para protegerse contra la pérdida de
mensajes, el emisor y receptor puede
convenir, que el receptor envíe de regreso
un acuse de recibo o confirmación. Si el
emisor no recibe el acuse en un intervalo
de tiempo, se retransmitirá el mensaje.
• La verificación de autenticidad es otro
problema.
• El copiado de mensajes de un proceso a
otro es más lento que efectuar una
operación de semáforo: rendimiento.
48. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
Problema del productor- consumidor
• Todos los mensajes tienen el mismo
tamaño y el S.O. coloca en buffers los
mensajes enviados pero aún no recibidos.
• El consumidor inicia enviando N mensajes
vacíos al productor, cada vez que el
productor tiene un elemento que entregar
al consumidor, toma un mensaje vacío y lo
devuelve lleno, permaneciendo el número
de mensajes constante.
• Si el producto trabaja más rápido, todos
49. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
los mensajes quedarían llenos, esperando
al consumidor y bloqueándose el
productor, esperando un mensaje vacío.
#define N 100
void productor(void)
{
int item;
message m;
while(True) {
produce_item(&item);
receive(consumidor,&m);
build_message(&m, item);
50. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
send(consumidor, &m);
}
}
void consumidor(void)
{
int item;
message m;
for(i=0;i<N;i++) send(productor,&m);
while(True) {
receive(productor,&m);
extract_item(&m, item);
send(productor, &m);
consume_item(item);
}
}
51. Ing. Sandra Rodríguez Avila SISTEMAS OPERATIVOS
• La transferencia de mensajes puede
tener muchas variantes en como se
dirigen los mensajes. A) Asignar a
cada proceso una dirección única y
hacer que los mensajes se dirijan a
los procesos. B) Emplear un buzón,
lugar de almacén temporal de
mensajes.