Apunte Final STR
Apunte Final STR
Unidad central de procesamiento. Control por supervisión del estado. Control por
interrupción. Programación a bajo nivel. Planificación y drivers de periféricos:
sincronización por interrupciones, Polling e interrupciones vectorizadas, controladores de
interrupción y transferencia de datos. DMA. Timers y servicios de tiempo. Circuitos de
Watch-dog. Entrada/Salida. Conversores A/D y D/A.
Unidad N° 3: Introducción a los RTOS:
Sistemas reactivos son aquellos que a partir de la ocurrencia de un evento que proviene
del medio exterior y con el cual interacciona, tiene la capacidad de “entender” ese
evento, generar una acción, calcular o cambiar su comportamiento ya sea sobre sí o sobre el
medio.
Sistemas estocástico (sistema previo o predictivo) saber qué podrá suceder antes del
evento según acciones pasadas.
Falla/ fracaso→ "Incapacidad del sistema para funcionar de acuerdo con las
especificaciones del sistema".
Un sistema fallido es un sistema que no puede satisfacer uno o más de los requisitos
estipulados en la especificación de requisitos del sistema.
2. Estricticidad// Estrictez
Estos tipos de sistemas se pueden distinguir de aquellos otros en los que un fallo al
responder puede ser considerado como una respuesta mala o incorrecta. Efectivamente,
para algunos este es el aspecto que distingue un STR de otros en los que el tiempo de
respuesta es importante pero no crucial.
Pueden perder el plazo ocasionalmente y una respuesta tardía no tiene valor. Es como una
mezcla entre hard y soft, hasta un tiempo funciona como hard pero luego de ese tiempo
existen pérdidas (la respuesta ya no tiene valor pero el sistema sigue funcionando bien)
Para que un STR funcione correctamente no basta con que sus salidas sean correctas, sino
que además las debe definir dentro de un tiempo especificado. En otras palabras, debe
garantizar una respuesta antes de que se cumpla un límite de tiempo o deadline.
La respuesta puede ocurrir hasta + Δt. Si se excede,debe definir la cantidad de veces que
lo hace ya que es ocasional.
● Un STR hard o duro es aquel en el que todas las acciones deben terminar dentro de
un plazo especificado de lo contrario no tendrán valor (ej.: sistema de navegación
de aviones).
● Un STR soft o suave es aquel en el que se puede extender el plazo de vez en cuando,
pero el valor de la respuesta disminuye con el tiempo (ej.: sistema de
comunicación).
Interactividad: no son de TR
● Sistemas Interactivos→ no se hace explícito o no se puede definir el requerimiento
de tiempo para obtener la respuesta.
● Sistemas no interactivos→ se define un tiempo límite para la respuesta óptima y/o
para la respuesta con “valor”.
Tiempo en las tareas:
● Tiempo real estricto (hard real time): todas las acciones deben terminar dentro del
plazo especificado.
● Tiempo real flexible (soft real•time): se pueden perder plazos de vez en cuando yel
valor de la respuesta decrece con el tiempo.
● Tiempo real firme (firm real•time): se pueden perder plazos ocasionalmente y una
respuesta tardía no tiene valor.
En un mismo sistema puede haber tareas con distintos tipos de requisitos temporales.
3. Profundidad
4. Componentes de un STR
Clasificación funcional de los elementos que intervienen en el sistema que se encarga de
resolver el STR→ cuando hablamos de STR se debe tener en cuenta si se refiere al proceso
● El sistema digital debe “reaccionar a tiempo” ante los cambios en el sistema quecontrola.
Una acción retrasada puede ser inútil o peligrosa
Tareas: Cada una de las actividades que ejecuta un STR. Pueden clasificarse como
(según propiedades):
● Tareas funcionales→ ¿qué hacen?
Activación
● Periódica: a intervalos regulares, con período T
● Aperiódica: cuando ocurre un evento determinado
Plazo de respuesta
Hay que garantizar la ejecución de cada tarea y que “termina” (se realice) dentro de plazo
Características:
▪ Grandes y complejos
Grandes: atienden a la variedad de eventos del mundo real.
Cuando afirmamos que un STR es “grande”, nos referimos a que atienden a la gran
variedad de eventos -necesidades, actividades o fenómenos- del mundo real y lo reflejan en
su programa.
Cuando afirmamos que un STR es “complejo”, nos referimos a que tiene en cuenta
de que como en el mundo real todo es cambiante o todo puede cambiar, estos programas
también deben hacerlo para seguir siendo útiles por ende precisan de mantenimientos y
mejoras constantes durante sus ciclos de vida.
Aunque los STR suelen ser “complejos”, los lenguajes y entornos de tiempo real
permiten que éstos puedan ser divididos en componentes más pequeños que podrían
gestionarse de manera más efectiva.
▪ Manipulación de reales:
Los datos que manipulan los algoritmos de control matemáticamente complejos, necesitan
un grado de precisión elevado.
▪ Fiable y seguro:
Cuando afirmamos que un STR es “fiable” y “seguro”, nos referimos a que cuando se
produce la interacción sistema-operador, el diseño de la interfaz debe minimizar la
posibilidad de error humano, es decir, tanto el software como el hardware deben soportar
ambientes hostiles, ser claros o estar bien definidos para que el operador no se confunda.
Es posible que el STR falle, pero éste solo puede fallar en forma controlada.
El lenguaje de programación debe tener funcionalidades para dar soporte directo para la
programación concurrente.
Es muy difícil diseñar e implementar sistemas que garanticen que la salida apropiada
sea generada en los tiempos adecuados bajo todas las condiciones posibles. Por esto, los
STR se construyen habitualmente utilizando procesadores con considerable capacidad
adicional, garantizando que el “comportamiento en el peor de los casos” no produzca
ningún retraso inoportuno durante los periodos críticos de operación del sistema.
-Especificar: los tiempos en los que deben ser realizadas las acciones y los tiempos en los
que las acciones deben ser completadas.
-Responder: a situaciones en las que no todos los requisitos temporales se pueden satisfacer
y a situaciones en las que los requisitos temporales cambian dinámicamente.
Con el fin de cumplir los tiempos de respuesta, es necesario que el comportamiento del
sistema sea predecible.
● Interacción con interfaces:
El control de la interacción con los devices, puede ser hecho por el kernel o por el
programador.
Se necesita un control a bajo nivel, pero sin perder calidad por lo que se evita la
programación Low Level.
Su control debe ser directo y no a través de una capa de funciones del S.O.
▪ Implementación eficiente
Debido a que los STR son críticos con respecto al tiempo, la eficiencia de la
implementación será más importante que en otros sistemas.
6. Determinismo
El interruptor temporizado se debe programar para que se cierre por un tiempo de 30:50
minutos. La R llega a T° de régimen a los 50seg
● Resultado: depende de T°
En un tiempo menor a los 50seg se debe alcanzar una temperatura de 150°C y mantener esa
temperatura por 30 minutos. (puede ser un sistema de horneado o calefacción).
● Objetivo de control: depende de la energía
Una vez cerrado el interruptor, el aporte de energía al sistema deberá permanecer constante
por 30min a una T° de 150°C luego de transcurrido 50seg.
La energía que le demos al sistema es tal que permita llegar a los 150°C en 50” y
mantenerla por 30’, por lo tanto, el objetivo de control es que esa energía se mantenga
constante.
● Entrada/control/salida:
E= 220v en realidad es la T° que queremos que tenga el recinto
Si tenemos un STR al cual le conocemos sus límites de sus salidas, vamos a diseñar un
controlador, también de TR, que podrá generar ciertas señales de control para intervenir en dicho
sistema y modificar la salida a partir de cierta entrada definida para que esa salida obtenga los
valores necesarios según laentrada que hemos requerido en este sistema.
Conceptos de SRLA y SRLC
Sistemas de control interconexión de componentes formando un sistema de configuración
que provee una respuesta deseada. A partir de una entrada que es una entrada de valor
deseado de salida, genera la salida deseada o algo lo más cercano posible.
▪ SRLA Sistema de control de lazo abierto
Mantiene una determinada relación entre salida y entrada de referencia, las compara y
usa la diferencia como medio de control, es un sistema de control realimentado.
“Resumen”
● Un STR debe reaccionar a los estímulos del objeto controlado (o el operador) dentro
de los intervalos de tiempo dictados por su entorno. El instante en el que el
resultado que debe producirse se llama deadline. Si un resultado tiene utilidad
incluso después de que el deadline pasó, se clasifica como soft, de lo contrario es
firm. Sí podría producirse una catástrofe si se incumple un deadline, se considera
hard.
● El sistema que debe cumplir al menos un deadline hard se denomina STR hard o
STR crítico para la seguridad. Si no es hard, es soft.
● En un STR hard debe garantizarse por diseño que cumplirá los plazos especificados
en todas las situaciones porque la utilidad de muchas aplicaciones en tiempo real
puede depender de un rendimiento predecible durante un escenario de carga
máxima.
● Un STR hard debe mantener la sincronía con el estado del entorno (el objeto
controlado y el operador humano) en todas las operaciones escenarios. Por lo tanto,
está regulado por los cambios de estado que ocurren en el medio ambiente.
● La base de datos en tiempo real debe actualizarse cada vez que una entidad RT
cambia su valor. Esta actualización se puede realizar periódicamente, provocada por
la progresión del reloj en tiempo real por un período fijo (observación activada por
tiempo), o inmediatamente después de un cambio de estado, un evento, ocurre en
la entidad RT (evento activado observación).
● El deadline de un lazo de control es el intervalo de tiempo entre la observación de la
entidad RT y el inicio de una reacción del objeto controlado como consecuencia de
una acción informática basada en esta observación.
● La confiabilidad R (t) de un sistema es la probabilidad de que un sistema
proporcione el servicio especificado hasta el momento t, dado que el sistema estaba
operativo en t = 0.
● La mantenibilidad es una medida del tiempo que lleva reparar un sistema después
de la última ha experimentado una falla benigna, y se mide por la probabilidad M
(d) de que el sistema se restaura dentro de un intervalo de tiempo d segundos
después de la falla.
● La disponibilidad es una medida de la correcta prestación del servicio con respecto a
la alternancia de servicio correcto e incorrecto, y se mide por la probabilidad A (t)
de que el sistema está listo para brindar el servicio en el momento t.
Unidad N° 2: Generalidad de la estructura:
Unidad central de procesamiento. Control por supervisión del estado. Control por
interrupción. Programación a bajo nivel. Planificación y drivers de periféricos:
sincronización por interrupciones, Polling e interrupciones vectorizadas, controladores de
interrupción y transferencia de datos. DMA. Timers y servicios de tiempo. Circuitos de
Watch-dog. Entrada/Salida. Conversores A/D y D/A.
Unidad 2: GENERALIDAD DE LA ESTRUCTURAUNIDAD CENTRAL DE
PROCESAMIENTO
La unidad central de procesamiento CPU es el hardware dentro de una computadora u otros
dispositivos programables.
Su trabajo es interpretar las instrucciones de un programa informático mediante la realización
de las operaciones básicas aritméticas, lógicas y externas (provenientes de la unidad de
entrada/salida).
Una computadora puede contener más de una CPU (multiprocesamiento). En la actualidad,
los microprocesadores están constituidos por un único circuito integrado (chip) aunqueexisten los
procesadores multinúcleo (varias CPU en un solo circuito integrado). Un circuito integrado que
contiene una CPU también puede contener los dispositivos periféricos, y otros componentes de un
sistema informático; similar a un microcontrolador (menos potente en RAM) se le denomina sistema
en un chip (SoC).
Los componentes de la CPU son:
● Unidad aritmética lógica (ALU): realiza operaciones aritméticas y lógicas.
● Unidad de control (CU): dirige el tráfico de información entre los registros de la CPU
y conecta con la ALU las instrucciones extraídas de la memoria.
● Registros internos: no accesibles (de instrucción, de bus de datos y bus de dirección) y
accesibles de uso específico (contador programa, puntero pila, acumulador, flags, etc.) o
de uso general.
Microcontrolador y microprocesador
Difrencias entre uP y uC
[Link]
microprocesador-3/
MICROCONTROLADOR
Un microcontrolador es una computadora en un chip que controla objetos, procesos o eventos.
Cualquier cosa que almacena, controla, calcula o muestra información probablemente tiene un
microcontrolador en ésta. A diferencia del microprocesador, que requiere otros componentes, como
la memoria, para trabajar, el microcontrolador es una computadora por sí mismo y se utiliza en
sistemas más pequeños.
En función del proyecto a desarrollar se debe seleccionar el uP de la familia y que mejor se adecue:
● Por ejemplo, el microcontrolador 12F675: es un PIC de 8 pines, con módulos: Timer y ADC.
● Un microcontrolador como el 16F877: es de 40 pines y tiene módulos Timer, ADC, USART,
I2C, PWM, entre otros.
Bloques de un microcontrolador:
MICROPROCESADOR
El microprocesador es el circuito central del sistema digital. Es el encargado de
ejecutar el programa desde un sistema operativo. Sólo ejecuta instrucciones en lenguaje
binario, realizando operaciones aritméticas y lógicas.
Arquitecturas de los microprocesadores
Ciclo de instrucción
Cuando un ordenador arranca entra en un bucle infinito en el cual se ejecutan
instrucciones una tras otra. El ciclo comienza con la búsqueda, donde se busca en la
memoria la instrucción que se quiere ejecutar. Luego se pasa a la fase de decodificación
en donde el procesador descubre que es lo que quiere hacer la instrucción. Luego viene
una fase de ejecución de la propia instrucción en donde se realiza lo que la instrucción
dice que se haga y por último una fase de finalización en donde se completa la
instrucción, posiblemente guardando en memoria algún resultado.
En los PIC se distinguen por lo general solo la fase de búsqueda (2 ciclos de ck) y
ejecución (2 ciclos de ck). Esto permite que mientras se está ejecutando una instrucción,
durante la segunda mitad de instrucción, estará buscando la siguiente instrucción. Esto
último se denomina Pipeline o paralelismo de ejecución de instrucciones.
Interrupciones
PILA o STACK
En la tabla no figuran los tres primeros bits, ya que estos determinan el divisor de frecuencia
o prescaler.
Prescaler.
Registro Status
Contiene el estado aritmético de la ALU, del RESET, banco de memoria
seleccionado, etc. Los bits pueden ser activados (set) o borrados (cleared).
Program Counter
Indica la dirección de memoria que se leerá a continuación para su ejecución y
especifica la dirección de la instrucción a traer para su ejecución. El contador de programa
es incrementado automáticamente en cada ciclo de instrucción de tal manera que las
instrucciones son leídas en secuencia desde la memoria.
Watchdog Timer
Es un registro que se debe borrar a intervalos con una instrucción (CLRWDT), si
transcurrido cierto tiempo el registro no se ha borrado el micro se resetea (Time-out mode).
Supervisa los programas del microcontrolador para ver si están fuera de control o han
dejado de funcionar. Hay otros modos de WD como el de preguntas y respuestas.
En un STR, se puede usar el temporizador de vigilancia WD para monitorear una
tarea de tiempo crítico para asegurarse de que se complete dentro del tiempo máximo
asignado y, si no lo hace, para terminar la tarea e informar la falla.
Registros PORTn
Registros de los puertos representados por n, en el que cada bit es una línea que se
puede hacer E/S del puerto.
Manejo de puerto
Cada uno de los pines a ser utilizados como entradas o salidas digitales tienen un
nombre relacionado con el puerto al que pertenecen y al número de orden del bit con el cual
se programara, por ejemplo, para el puerto B se tienen los pines RB0, RB1, RB2, RB3, RB4,
RB5, RB6 y RB7. Para la manipulación de los pines del microcontrolador, entonces, se
cuenta con dos registros de 8 bits cada uno, TRISx y los PORTx. TRIS configura los puertos
como entradas o salidas, mientras que POR se usa para habilitar una lectura o escribir, por
ejemplo, si queremos poner en 1 (HIGH) al puerto RB3 se le debe decir al PORTB 3.
El registro PORT funciona como un latch para los datos de salida. Cuando el registroPORT
se lee, el micro lee los niveles presentes en los pines de I/O (no en los latches).
Mapas de memoria
Es una tabla que indica cómo está distribuida la memoria. Contiene información sobre
el tamaño y las relaciones que existen entre direcciones lógicas y físicas. Es el mapa de la
memoria RAM y en PIC está dividida en registros especiales y registros de propósito general.
Los primeros ocupan las 11 primeras posiciones (0 - 0B). Existen hasta 4 bancos de registros
con 16 registros cada uno.
PROGRAMACIÓN A BAJO NIVEL
La palabra bajo no significa de menos calidad. Se refiere a que las pautas de actuación
están muy ligadas a las instrucciones del hardware. Es utilizado para tareas muyespecíficas.
Funciona gracias a un proceso de instrucciones muy elaboradas, logrando que se revise hasta
el más mínimo detalle. Pueden ser: Lenguaje en código binario, lenguaje máquina y lenguaje
ensamblador.
Las instrucciones se pueden clasificar en operaciones orientadas a registros,
operaciones orientadas a bits y operaciones con constantes y de control.
Instrucciones RISC
Instrucciones CISC
Los uP tienen un conjunto de instrucciones que se caracteriza por ser muy amplio
y permitir operaciones complejas entre operadores situados en la memoria o en los
registros internos, en contraposición a la arquitectura RISC.
TÉCNICA PIPELINE
Primero vamos a definir que la unidad de enteros será de 8 bits, el reloj será de 12
MHz para 3MIPs promedio (3 millones de instrucciones por segundo), las GPIOs serán 2
de 8 bits, 3 interrupciones externas con prioridad, 1 timer de 16 bit, 2 timer de 8 bit, módulo
de comunicación serie, módulo de CAD de 10 bits y tc = 30 useg, y registro de trabajo W.
La memoria del microprocesador ficticio será de 8Kx14 para programa, 8 niveles de
stack (instrucciones), 68 x 8 para datos eeprom.
Luego los timers de nuestro microprocesador ficticio: TMRn que puede ser leído y
escrito como cualquier registro. Incrementar su valor con una señal externa aplicada al pin
T0CKI o mediante el oscilador interno; PTMRn encargado de programar el modo de cada
timer:
Luego tenemos que establecer las pautas para el manejo de puertos: Cada pin de I/O
es digital; cada pin tiene el nombre del puerto al que pertenece con el número de orden; cada
puerto cuenta con dos registros: TRISx y PORTx; Tris es el registro para configurar si ese pin
será de entrada o salida y luego el Port será para escritura o lectura de un determinado pin.
Otro problema es que no podemos intervenir en el sistema para, por ejemplo, dar un
mensaje de error.
Capacidades:
• Pines GPIO que pueden ser configurados para ser entrada o [Link]: push
pull, open drain, analógico
• Entrada: flotante, pullup, pull down, analógica.
• Pines GPIO que pueden ser activados / desactivados.
• valores de entrada se pueden leer (por lo general alto = 1, bajo = 0)
• valores de salida de lectura / escritura seleccionable
• valores de entrada que a menudo se pueden utilizar como IRQ (típicamente
para los eventos de activación)
• El dispositivo puede utilizar DMA para mover grandes cantidades de datos
demanera eficiente dentro o fuera del dispositivo.
• Algunos pueden ser configurados como fuente de interrupción externa.
Arquitectura LOAD/STORE
La arquitectura de carga-almacenamiento o carga-guardado es una arquitectura de
conjunto de instrucciones que divide las instrucciones en dos categorías: acceso a la
memoria (carga y almacenamiento entre la memoria y los registros) y operaciones ALU
(que solo ocurren entre los registros).
Store→ lee el valor que tiene el pin cuando cambia. Lee lo que hay en un registro
(flip-flop) y lo guarda en memoria.
Load→ agarra lo que hay en la memoria y lo guarda en un registro.
• En STORE leemos datos del exterior, estos se almacenan en buffer y quedan a disposición.
IF→ busca en el programa la próxima instrucción en la memoria del programa EPROM pin
externo→ nos permite llevar a la máquina a un nuevo estado (interrupción)
int→ nuevo evento: interrupción: cada vez que el pin externo realice una determinada señal,el
nuevo estado influenciará en IF
vector de interrupciones→ almacena las direcciones de las primeras instrucciones de cadauna de
las rutinas que atienden a la interrupción.
Interior de un uC
• EPROM→programa
Ejecución de interrupciones
Cada un determinado tiempo (definido por el programador) se ejecuta la rutina de ese timer.
Dentro del esquema de las etapas de ejecución se agregan: etapa de interrupciones externas
(asíncronas) y una etapa de interrupciones internas (síncronas).
CIRCUITOS DE WATCHDOG
El watchdog es un temporizador interno de la unidad de control (UC), que dispone
de su propio oscilador RC interno, que provoca un reset del sistema en caso de que éste se
haya bloqueado. Es un mecanismo pensado para evitar que el UC se encuentre en un estado
indeterminado como consecuencia de un error de programación o de un fallo hardware
(alimentación, etc.). Por eso, su función es la de mantener la seguridad en el sistema para
evitar que entre en un estado descontrolado.
Su funcionamiento se basa en un temporizador interno que irá continuamente
decrementando de forma secuencial un contador con un tiempo prefijado, inicialmente con
un valor relativamente alto. El tiempo nominal de desbordamiento es dependiente de la
temperatura, la tensión de alimentación y varía con el chip.
Cuando este contador llegue a cero, se reiniciará el sistema, así que se debe diseñar
una subrutina en el programa de manera que refresque o reinicie al perro guardián antes de
que provoque el reset. Si el programa falla o se bloquea, al no actualizar el contador del
perro guardián a su valor de inicio, éste llegará a decrementarse hasta cero, se desbordará
y se reiniciará el sistema que volverá a un estado conocido y seguro. El desbordamiento del
perro guardián se puede dar en funcionamiento normal o en el estado de reposo.
A veces el circuito del perro guardián es un chip externo al procesador y a veces es la parte
integral como es el caso de muchos microcontroladores. A menudo, los watchdogs también lanzan
otras acciones preventivas aparte de reiniciar el procesador. Pueden desencadenar la actuación de
sistemas de control, por ejemplo, para apagar sistemas peligrosos como motores, circuitos de alta
potencia, generadores de calor, etc.
Al gráfico anterior de interrupciones TIMERS se lo complementa con otra
herramienta: WATCHDOG.
Es un timer al cual se lo debe actualizar durante todo el programa, de tal modo que
no se produzca.
Sería una interrupción que no queremos que se produzca→ esto es útil porque en el
momento en el que se produzca el watchdog pasaremos al estado HALT que es un estado
de parada/reset del uC. Si en algún momento ocurre la interrupción de watchdog, nuestro
controlador y programa se resetearán.
Programar un A/D
Necesita una tensión de referencia para poder trabajar adecuadamente Vref, además
de la cantidad de bits que presenta el conversor analógico digital. Luego se podrá calcular la
resolución:
Una señal cuyo muestreo se realice a 24 kHz, tendrá menos calidad y fidelidad que
otra realizada a 48 kHz. Sin embargo, mientras mayor sea el número de muestras tomadas,
menor será el tiempo disponible para procesarla.
El siguiente paso es la cuantización de cada muestra (valores numéricos decimales
discretos). Luego sigue la codificación en donde los valores de las tomas de voltajes se
representan numéricamente por medio de códigos y estándares previamente establecidos. Lo
más común es codificar la señal digital en código numérico binario.
Los valores binarios acorde a cada voltaje de entrada se verán como sigue:
CARACTERISTICAS DE LA SEÑAL
❖ Resolución
❖ Desviación máxima
La máxima desviación entre la gráfica real y la recta ideal se define como linealidad
integral y se expresa en porcentaje del valor de fondo de escala (%FSR-font scale range).
Como valor típico de linealidad integral es +/- 0,5 LSB, con lo que es necesario que el
conversor garantice para todas las condiciones de trabajo este valor.
❖ PARÁMETROS DINÁMICOS:
1. Tiempos de conversión: es el tiempo desde que se aplica la señal de convertir hasta que
la señal (analógica o digital) esté disponible a la salida.
Interruptor electrónico para tomar la muestra, un capacitor para retenerla y un seguidor de voltaje
en un amplificador operacional.
El interruptor se controla tal que la muestra se tome en el momento que lo dicte la entrada de
control, una vez que el interruptor se cierra, el voltaje de entrada se aplica en el capacitor y el voltaje
de salida se vuelve igual al voltaje de entrada, si el Vin cambia mientras el interruptor está cerrado,
el V en el capacitor y el Vout reflejarán el cambio. Cuando el interruptor se abre el capacitor retiene
su carga y el Vout sigue siendo igual al de Vin en el momento en el que se abrió el interruptor. el V
queda retenido hasta que el interruptor se vuelve a cerrar.
El tiempo necesario para que el capacitor se cargue hasta el valor analógico de entrada de una
nueva muestra se llama tiempo de adquisición y depende del valor de capacitancia resistencia del
circuito cuando el interruptor está conectado. Sus valores típicos son del orden de los 4us.
La relación entre la entrada muestreada y retenida y la salida de un CAD: salida restringida de 3 bits.
Existen 8 niveles de salida posibles, por lo tanto, dado que la salida de CAD, para representar
la entrada analógica sólo puede ser uno de estos 8 niveles posibles.
Existen un intervalo de entradas donde las salidas no cambian, estos 8 niveles adyacentes se
llaman intervalo de cuantización, en la figura es 1 voltio.
Dado la naturaleza tipo escalón de la relación la salida digital no siempre es proporcional ala
entrada analógica por lo que siempre habrá un error denominado error de cuantización. Cuando la
entrada está centrada en el intervalo, el error de cuantización es cero, el error máximo es igual a la
mitad del intervalo más menos medio bit.
La longitud posible de la palabra determinada: resolución del elemento: el cambio más pequeño en
la entrada que produce un cambio en la salida digital: un bit en la posición del bit menos
significativo de la palabra (bit en el extremo derecho) así, en una palabra con longitud de N bits de
entrada analógica escala total esta.
Los CAD muestrean señales analógicas en intervalos regulares y convierten estos valores en
palabras binarias→ tasa de muestreo→ teorema de Nyquist.
Tipos de CAD:
Es el más utilizado. El voltaje se genera mediante el temporizador que emite una
secuencia regular de impulsos que son contados de forma binaria y la palabra binaria
resultante se convierte a un voltaje analógico utilizando un CDA. Este voltaje aumenta en
escalón, si se compara con el V de entrada analógico del sensor, cuando el V generado por
el temporizador sobrepasa el V analógico de la entrada, los impulsos del temporizador se
detienen mediante el cierre de una compuerta. La salida que en ese momento produce el
contador es una representación analógica del V analógico.
Si la comparación puede realizarse iniciando el conteo en 1, el bit menos
significativo, y luego continuar bit tras bit de forma ascendente, el método más rápido es el
de las aproximaciones sucesivas. se elige del bit más significativo que sea menor que el
valor analógico y después se agregan bits sucesivos menores para los cuales el valor total
no excede el valor analógico.
Como cada uno de los bits de la palabra se prueba en secuencia, en una palabra, de
N bits, solo se requieren N pasos para hacer la comparación, por lo tanto, si la frecuencia
del reloj es Fe, el tiempo entre impulsos es 1/Fe, así el tiempo necesario de conversión es
N/Fe.
Rampa
Es más común que el de una sola rampa. El V analógico se aplica al integrador que
maneja el comparador, la salida del comparador aumenta en cuanto la salida del integrador
es mayor que unos cuantos mV. Cuando la salida del comparador es alta, una compuerta
AND pasa impulsos a un contador binario que los cuenta hasta que se produce un
desbordamiento; el contador vuelve al valor cero y envía una señal a un interruptor que
desconecta el V desconocido, conecta el V de referencia e inicia de nuevo el conteo.
La polaridad de V de referencia es opuesta a la del V de entrada, el V del integrador
entonces disminuye a una tasa proporcional al V de ref. Cuando la salida del integrador es
cero, el comparador produce un valor bajo, con lo cual la compuerta AND también tiene un
valor bajo y el temporizador se apaga. Entonces el conteo es una medida del V de entrada
analógico.
Estos CAD tienen un gran rechazo al ruido debido a que la acción integral promedia
las contribuciones aleatorias negativas y positivas a lo largo del periodo de muestreo. Sin
embargo, son muy lentos.
Es muy rápido. En un convertidor de N bits se utilizan en paralelo 2’ n-1
comparadores de V, y en cada uno de ellos el V de entrada analógico es una entrada.
Un V de ref se aplica a una escalera de resistencias de manera que el V aplicado
como entrada en cada comparador tenga un bit mayor que el V aplicado al comparador
anterior.
Por lo tanto, cuando al CAD se le aplica el V analógico, todos los comparadores
con V analógico mayor que el V de ref de un comparador producirán una salida alta
y en los que es menor, una salida baja. Las salidas obtenidas se alimentan en paralelo
a un sistema de compuertas lógicas que las traduce en una palabra digital.
Para saber cada cuánto (intervalo de tiempo) debo realizar el muestreo, aplico el
teorema de Nyquist. ↓
Límite de Nyquist {video STR 09}
Adecuación de los niveles: ¿cómo muestrear señales que son muy débiles/pequeñas como por
ejemplo, diferencias de presión que son pequeñas variaciones de tensión en un transductor? Es
necesario amplificarla antes de conectarlas al ADC. Se multiplica el voltaje por alguna
ganancia Av.
Tasa de muestreo fs
Efecto aliasing→ (o solapamiento) es el efecto que causa que señales continuas distintas se
tornen indistinguibles cuando se muestrea digitalmente. Cuando esto sucede, la señal original
no puede ser reconstruida de forma unívoca a partir de la señal digital.
Teorema de Nyquist→ la frecuencia a la que tenemos que muestrear debe ser al menos dos
veces mayor a la frecuencia máxima de la señal.
Los ADCON son los registros para configurar el clock que tendrá el A/D (esto
afecta a la conversión). La señal de reloj se genera por el oscilador interno. El ADCON
se habilita como registro para A/D en el registro INTCON.
Ancho de banda
Periodo de muestreo
CONVERSIÓN D/A
La entrada de un CDA es una palabra binaria, la salida es una señal analógica que representa
la suma ponderada de los bits que no son cero, representados por la palabra.
Por ejemplo: la entrada 0010 produce una salida analógica que es el doble de lo que se obtiene
con una entrada de 0001.
Esta figura ilustra la entrada de un CDA con resolución de 1 V para palabras binarias.
Tipos de CDA
Una retención es un dispositivo que retiene una salida hasta que una nueva la
reemplaza. Cuando un CDA la posee, se puede conectar directamente con el bus de
datos de un UC que lo considera como una dirección más para el envío de datos. Si no
tiene retención, se conecta a través de un adaptador de interfaz de periféricos. Para
proporcionar la retención se utiliza el zn 558
Limitación de velocidad
.
Unidad N° 3: Introducción a los RTOS:
La mayoría de los sistemas embebidos están limitados por restricciones de tiempo real. En los
controles de producción las maquinas deben recibir sus órdenes al tiempo justo para garantizar el buen
funcionamiento de la fábrica y para satisfacer las necesidades de los clientes. O en los vuelos, los
sistemas de control de vuelos contienen muchísimos artefactos cuyas operaciones dependen en exclusiva
del tiempo, como, por ejemplo, los controles de combustión de las turbinas, etc. “Tiempo Real”
significa que el sistema informático ya no controla su propio dominio de tiempo, ahora el progreso del
tiempo del ambiente es el que dicta como el tiempo progresa dentro del sistema.
En un SO de uso general los retardos que existen entre la ejecución de cada tarea son despreciables y lo
que es llamado el administrador de tareas o «scheduler» no funciona de una manera predecible, por lo
que el orden de ejecución de las tareas y el tiempo que se mantendrán funcionando no se puede saber.
Se puede afirmar que la misión de un sistema operativo es doble: por una parte, suministrar al
usuario una máquina virtual más fácil de manejar que el propio hardware y que oculte al usuario
los aspectos del diseño de éste. Por otra parte, debe ser gestor de una serie de recursos, hardware y
software, que son compartidos por los procesos y usuarios que estén trabajando simultáneamente
en el sistema. En todo lo que resta de capítulo se entenderá siempre que se trata con sistemas operativos
multiusario y multitarea a menos que se especifique lo contrario.
Tarea: Las tareas (también podrían llamarse procesos/hilos) son funciones independientes que se
ejecutan en bucles infinitos, normalmente cada una responsable de una función. Las tareas se ejecutan
de forma independiente en su propio tiempo (aislamiento temporal) y pila de memoria (aislamiento
espacial). El aislamiento espacial entre las tareas puede garantizarse con el uso de una unidad de
protección de memoria por hardware (MPU), que restringe la región de memoria accesible y
desencadena excepciones de fallo en caso de violación de acceso. Normalmente, los periféricos
internos están mapeados en la memoria, por lo que se puede utilizar una MPU para restringir el acceso
a los periféricos también.
El Kernel o núcleo, es una parte fundamental del sistema operativo que se encarga de
conceder el acceso al hardware de forma segura para todo el software que lo solicita, el Kernel es
una pequeña e invisible parte del sistema operativo, pero la más importante, ya que sin esta no
podría funcionar. Todos los sistemas operativos tienen un Kernel.
Este núcleo de los sistemas operativos se ejecuta en modo privilegiado con acceso
especial a los recursos del sistema para poder realizar las peticiones de acceso que le va pidiendo
el software que lo necesita, además como los recursos no son ilimitados, también hace de arbitro
a la hora de asignarlos, decidiendo el orden de las peticiones recibidas según la prioridad e
importancia de estas. Una gestión muy importante y fundamental que en la mayoría de las
ocasiones pasa desapercibida aun siendo un trabajo esencial para coordinar todo el hardware con
el software. Sirve para administrar los recursos de hardware solicitados por los diferentes
elementos de software y hacer de intermediario decidiendo a que y cuando se concede este
acceso evitando así sobrecarga del sistema, recursos innecesarios y acceso a software malicioso
al propio Kernel y llegar a poder controlar así todo el sistema.
Las tareas pueden estar en diferentes estados:
• Bloqueado: la tarea está esperando un evento (por ejemplo, tiempo de espera, disponibilidad de
datos/recursos)
• Listo: la tarea está lista para ejecutarse en la CPU, pero no se está ejecutando porque la CPU está
siendo utilizada por otra tarea
• En ejecución: la tarea está asignada para ser ejecutada en la CPU
Programador: Los programadores en el RTOS controlan qué tarea debe ejecutarse en la CPU y existen
diferentes algoritmos de programación. Normalmente lo son:
• Preventivo: la ejecución de la tarea puede ser interrumpida si otra tarea con mayor prioridad está
lista
• Cooperativo: el cambio de tarea solo se producirá si la tarea que se está ejecutando en ese
momento se rinde
La programación preventiva permite que las tareas de mayor prioridad interrumpan a las de menor
prioridad para cumplir con las restricciones de tiempo real, pero tiene el costo de una mayor sobrecarga
en el cambio de contexto.
Comunicación entre tareas (ITC): Normalmente, varias tareas tendrán que compartir información o
eventos entre sí. La forma más sencilla de compartir es leer/escribir directamente las variables globales
compartidas en la RAM, pero esto no es deseable debido al riesgo de corrupción de datos causado por
una condición de carrera. Una mejor manera es leer/escribir variables estáticas de archivo accesibles
por funciones setter y getter, y las condiciones de carrera pueden ser prevenidas deshabilitando las
interrupciones o usando un objeto de exclusión mutua (mutex) dentro de la función setter/getter. La
forma más limpia es utilizar objetos RTOS seguros para hilos, como la cola de mensajes, para pasar
información entre tareas.
Además de compartir información, los objetos RTOS también son capaces de sincronizar la ejecución de
tareas, ya que éstas pueden bloquearse para esperar la disponibilidad de los objetos RTOS.
Una de las necesidades fundamentales de un SO es asignar recursos del computador a las diversas
actividades que se deben realizar. En un SOTR este proceso es complicado debido al hecho de que algunas
actividades son temporalmente críticas y unas tienen mayor prioridad que otras. Debe haber algún medio
para asignar prioridades a las tareas para que el planificador (scheduler) disponga su ejecución de acuerdo
a un esquema de prioridades. Además, hay que añadir cuestiones como la gestión de la memoria entre las
distintas tareas y las características estándar para soportar un sistema de archivos, dispositivos de E/S y
programas de utilidad. El control de todo el sistema recae sobre el módulo gestor de tareas responsable
de la asignación de la CPU. Este módulo muchas veces se conoce como monitor o ejecutivo. Todas las
características mencionadas anteriormente son compartidas tanto por SOTR como por otros sistemas
multitarea y multiusuario en tiempo compartido como el ya conocido UNIX.
Un hecho verdaderamente diferencial entre los SOTR y los SO en tiempo compartido es el algoritmo
de planificación para la asignación de la CPU. En los SOTR la aplicación y el SO se encuentran
íntimamente acoplados, mucho más que en los sistemas en tiempo compartido. Un SOTR debe ser capaz
de responder a intervalos prefijados o ante eventos externos de una manera determinista, y esto sin
importar el impacto que pueda derivar sobre otras tareas o procesos. En un entorno en tiempo real,
las tareas críticas deben recibir los recursos del sistema que necesiten y cuando los necesiten, a pesar de
los efectos que puedan ocasionar a otras tareas. Este hecho también condiciona el comportamiento del
SO frente a otros aspectos como pueden ser el sistema de archivos y la gestión de dispositivos de E/S.
Características:
Programas Reentrantes:
Son aquellos programas que, si no se están ejecutando, dejan la memoria libre para otros
procesos. Estos procesos, cuando se liberan, se suelen almacenar temporalmente en el disco duro.
Son los procesos gestionados mediante la técnica de memoria virtual.
Programas Reubicables:
Son aquellos que, una vez cargados en RAM para ejecutarse, pueden variar de situación, ya
que la parte de RAM que ocupan puede ser necesaria para ubicar otro proceso. Estos procesos o
programas cambian de posición cuando se está realizando una operación sobre el ordenador. Esta
operación suele ser de configuración interna del propio ordenador.
Programas Residentes:
Son aquellos que, una vez cargados en memoria, permanecerán en ella hasta que se apague
el ordenador. No cambian su ubicación en ningún momento. Suelen ser programas de antivirus, de
análisis de sistema, de monitorización, etc. Los más comunes son los llamados centinelas, que
incorporan los antivirus para que analicen continuamente lo que se carga en memoria. De esta
forma, si se ejecuta un proceso, el programa residente lo analiza y, si detecta algo raro o extraño,
envía un mensaje de alerta.
La ubicación de estos programas en memoria dependerá, fundamentalmente, del sistema
operativo y de la propia aplicación que lance el programa residente. Suelen ubicarse en esos 64 KB
de memoria, aunque no necesariamente.
Programas Reutilizables:
Son programas que normalmente son utilizados por varios usuarios a la vez en memoria,
independientemente del número de usuarios que los vayan a utilizar. Con ello se consigue un mejor
aprovechamiento de la memoria.
➢ Soporte de E/S.
Las aplicaciones TR típicamente incluyen cierto número de interfaces de E/S. Un SOTR debe
proporcionar herramientas para incorporar fácilmente dispositivos de E/S específicos (incluso a medida).
Para los dispositivos estándar la librería estándar de E/S debería ser suficiente. Deben además soportar
E/S asíncrona, donde un proceso puede iniciar una operación de E/S, y luego continuar con su ejecución
mientras concurrentemente se está realizando la operación de E/S. En este aspecto cabe recordar la
existencia de procesadores específicos (canales de E/S, controladores de DMA etc.) dedicados a realizar
operaciones de E/S sin el concurso de la CPU.
Sistemas multitarea
Las aplicaciones de tiempo real deben interaccionar, generalmente, con dispositivos externos tales como
sensores y actuadores, además del correspondiente monitor, teclado y disco rígido. Estas interacciones
con dispositivos externos tienen la particularidad de que están sucediendo todas simultáneamente. La
misión de la aplicación es proveer una respuesta adecuada, a través de sus salidas, a cada una de las
entradas, todas al mismo tiempo.
Esquema MULTITAREA
Cada tarea se piensa independiente de las demás y son enviadas al sistema para que las administre
temporalmente. Los recursos de cada tarea, son designados por el sistema y controlados por él.
Por lo regular Sistema Operativo de tiempo real suele tener la misma arquitectura que un Sistema
Operativo convencional, pero su diferencia radica en que proporciona mayor prioridad a los
elementos de control y procesamiento que son utilizados para ejecutar los procesos o tareas.
• El SOTR debe ser multitarea y permisible
• Un SOTR debe poder asignar prioridades a las tareas
• El SOTR debe proporcionar medios de comunicación y sincronización entre tareas
• Un SOTR debe poder evitar el problema de inversión de prioridades
• El comportamiento temporal del SOTR debe ser conocido
¿Cómo debe entonces estructurarse la aplicación para cumplir con dichos requerimientos? Existen
unas pocas alternativas encabezadas por dos estructuras básicas: el gran loop o la
estructura multitareas.
La primera opción maneja todos los eventos secuencialmente, en un orden predeterminado, dentro de
una tarea única que se repite cíclicamente. Es la forma más simple de estructurar una aplicación, pero
puede complicarse su diseño cuando el número de eventos a manejar es muy elevado. En este caso, el
programa de aplicación debe encargarse de recorrer las múltiples tareas. Esto resulta en programas
complicados y difíciles de mantener.
La segunda opción tiene, en cambio, al sistema operativo como protagonista. éste se encarga de emular
un entorno de ejecución para diferentes tareas que se ejecutan independientemente una de la otra. Cada
tarea dispone de un cierto tiempo de acceso a los recursos, administrado por el sistema operativo. En este
tipo de sistemas, el programador escribe las tareas a realizar en programas diferentes, más simples. El
sistema operativo es el encargado de hacer que todos estos programas se ejecuten en un único
microprocesador. En este tipo de sistemas debe procederse cautelosamente al asignarse el número de
tareas, ya que la emulación a cargo del sistema operativo significa una sobrecarga para el sistema de
computadora.
En el campo del tiempo real, tanto los sistemas operativos de propósitos generales como los
embedded systems, deben proveer la capacidad de realizar múltiples tareas simultáneamente, sin
que esto signifique una complicación excesiva para el programador. Este tipo de sistemas
operativos se denomina, en forma general, sistemas operativos multitarea.
Analizando el problema de ejecutar varias tareas simultáneamente con un poco más de profundidad,
puede verse que un sistema operativo multitarea debe proveer al menos tres funciones específicas,
relativas a la administración de dichas tareas (además del manejo de memoria y control de dispositivos
de hardware, responsabilidad irrenunciable de todos los sistemas operativos, multitarea o no):
➢ Scheduler de tareas: es una tarea adicional, de mayor jerarquía que las demás, que se encarga de
determinar en qué orden se ejecutará el resto de las tareas presentes en el sistema.
➢ Dispatcher de tareas: toma los recaudos necesarios para comenzar una tarea. Esto significa
preservar el estado de los recursos que la tarea anterior estuviera utilizando en el momento de comenzar
una nueva.
➢ Comunicación: El sistema operativo debe proveer algún mecanismo de comunicación y
sincronización entre los diferentes procesos que se están ejecutando simultáneamente.
➢ El kernel o núcleo del sistema operativo es la porción más pequeña de sistema operativo que
provee esas tres funciones.
Cada una de estas tres funciones del kernel multitarea está asociada a un problema diferente. Y
dichos problemas tienen diferentes soluciones. Por ejemplo, si se dispone de tres procesos listos para ser
ejecutados, ¿en qué orden deben ser ejecutados? ¿Cómo se reparte el tiempo de CPU entre los tres? ¿Se
ejecuta primero el más urgente? Si se elige esta última opción ¿cuál es el más urgente? La toma de este
tipo de decisiones está a cargo del scheduler del sistema operativo y son muy diversas las estrategias que
pueden utilizarse. Más adelante se describen las más importantes.
Pero ese no es el único problema que debe afrontarse al diseñar un sistema operativo multitarea.
Si la misma CPU es utilizada por varios programas de usuario diferentes, y suponiendo que dichos
programas se ejecutan en el orden indicado por el scheduler, al interrumpirse uno de los programas para
ejecutar otro el kernel debe encargarse de guardar toda la información necesaria, tal que el programa
desplazado pueda ser retomado luego. Esta es la misión del dispatcher. Generalmente éstos se
implementan utilizando para cada tarea en ejecución una estructura de datos llamada TCB (Task Control
Block). Esta estructura contiene todos los datos asociados a una tarea, que son de relevancia para el
sistema operativo, como por ejemplo un número de identificación, el estado de los registros del
microprocesador en el momento de ser desplazada, un puntero a la última operación ejecutada del
programa, etc.
Por último, otro problema que debe resolverse en un sistema operativo multitarea, es la
sincronización y concurrencia. ¿Qué sucedería si dos programas de usuario que se ejecutan compartiendo
la CPU a intervalos de tiempo, decidieran acceder a un recurso único de hardware simultáneamente,
como por ejemplo una impresora? Para ello, un sistema operativo de este tipo debe proveer los
mecanismos necesarios para administrar los recursos compartidos de una forma ordenada. Este tipo de
mecanismos es utilizado también para sincronizar tareas entre sí, y se describen con profundidad más
adelante.
Por lo tanto, si bien los sistemas operativos multitarea son un poco más complicados de utilizar,
esto se debe a la gran cantidad de herramientas que presentan al programador. Y en el momento de
desarrollar una aplicación elaborada, resultan en definitiva más simples de operar.
A continuación, se profundizará en las técnicas scheduling por ser uno de los puntos clave de los
sistemas de tiempo real. Luego se mencionan los mecanismos de comunicación más comúnmente
utilizados en los sistemas operativos standard. Posteriormente se presentan otros aspectos de importancia
a tener en cuenta al analizar las propiedades de un sistema operativo de tiempo real, como relojes y
entrada/salida en tiempo real. Para finalizar se presenta un resumen de las técnicas utilizadas actualmente
para la asignación de prioridades entre las tareas.
3. ADMINISTRADOR DE TAREAS
➢ Kernel Monolítico
➢ Microkernel
Básicamente un kernel es el núcleo del sistema operativo y se ejecuta de modo privilegiado. Se encarga
de ejecutar los servicios a través de llamadas del sistema.
El KERNEL se activa y pone a disposición toda su gran cantidad de componentes, sea que se
utilicen o no en el dispositivo disponible.
Estados de un proceso:
3. Ejecución: el proceso está siendo ejecutado en este momento. Sus instrucciones están siendo pro
cesadas en algún procesador.
4. Terminado: El proceso terminó de ejecutarse; sus estructuras están a la espera de ser limpiadas p
or el sistema operativo.
5. Bloqueado: en espera de algún evento para poder continuar su ejecución (aun si hubiera un proc
esador disponible, no podría avanzar).
6. Espera: el proceso en ejecución manda a otro proceso a la espera de un cambio de estado de eso
s procesos (por software).
7. Zombie: existe para el SO pero no está en memoria. El padre no recibe return desde el proceso.
Gestión de proceso: Realización de tareas cuasi paralelo en un procesador utilizando procesos o hilos
(proceso ligero) por:
• Mantener estados de procesos, gestión de colas de proceso.
• Tareas preventivas (cambio de contexto rápido) y rápido manejo de interrupciones.
• Planificación de la CPU (garantizando plazos, minimizando proceso de los tiempos de espera, la
equidad en la concesión de recursos como potencia de cálculo).
• Proceso de sincronización (secciones críticas, semáforos, monitores, de exclusión mutua).
• Comunicación entre procesos (buffering). •Apoyo de un reloj de tiempo real como una referencia
de tiempo interna.
Ejecución de Tareas
El programador de procesos (scheduler) determina cuál será la siguiente tarea a ser ejecutada,
elaborando la lista de tareas a ejecutar Tal determinación obedece a una estrategia de programación
(scheduling strategy) preestablecida
Usualmente su accionar se repite a intervalos regulares establecidos por el reloj de tiempo real
(RTC)
El ejecutor (dispatcher) toma el primer proceso de la lista generada por el scheduler, le asigna
memoria y tiempo de procesador (se encarga del cambio de contexto) e inicia su ejecución (le transfiere
el control)
Estrategias de Scheduling
Algoritmos de Scheduling
• Round-Robin: Las tareas se ejecutan en secuencia (en ronda), pueden ejecutarse: Durante un
tiempo preestablecido (time slice) e igual para todos Con un tiempo asociado a cada tarea Una
tarea comienza cuando la anterior finaliza
• Crecimiento monolítico: Cada tarea tiene asociado un nivel de prioridad único y se ejecuta hasta
su finalización o bloqueo
• Menor tiempo de finalización 1°: Se ejecuta primero la tarea que requiere menos tiempo
estimado para su finalización
Roun Robin - QUANTUM
El Round Robin es uno de los algoritmos más antiguos, sencillos y equitativos en el reparto de la
CPU entre los procesos lo que significa que evita la monopolización de uso de la CPU, y es muy
válido para entornos de tiempo compartido.
El algoritmo consiste en definir una unidad de tiempo pequeña, llamada quantum o cuánto de tiempo,
la cual es asignada a cada proceso que está en estado listo. Si el proceso agota su quantum (Q) de
tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se bloquea o termina antes de
agotar su quantum también se alterna el uso de la CPU.
Es por ello que surge la necesidad de un reloj en el sistema. El reloj es un dispositivo que genera
periódicamente interrupciones. Esto es muy importante, pues garantiza que el sistema operativo (en
concreto la rutina de servicio de interrupción del reloj) coja el mando de la CPU periódicamente. El
quantum de un proceso equivale a un número fijo de pulsos o ciclos de reloj.
Al ocurrir una interrupción de reloj que coincide con el agotamiento del quantum se llama al
despachador, el cual le cede el control de la CPU al proceso seleccionado por el planificador.
• Queues (colas) Es una colección de estructuras de datos ordenada Las operaciones que se pueden
realizar son agregar a la estructura al final, sacar una estructura del inicio (Fist In – First Out),
sacar del final (Firt In – Last Out), información del estado de la cola y copias datos (sin modificar
la cola) Pueden usarse como buffers de datos si una tarea genera más información que la que otra
es capaz de procesar Las implementaciones más comunes son mediante buffers circulares y listas
enlazadas y su uso correcto es responsabilidad del desarrollador
• Mutex (exclusión mutual) Se utilizan para bloquear el acceso a recursos de hardware o software
que deben ser compartidos por distintas tareas El mutex actúa como un ticket (token) que debe
ser adquirido por la tarea que desea acceder al recurso compartido Una vez que una tarea
adquiere el mutex asociado a un recurso, ninguna otra tarea puede adquirirlo hasta que sea
liberado por la tarea que lo adquirió primero Su uso correcto es responsabilidad del desarrollador.
• Semaphores (semáforos) Se utilizan para sincronizar tareas Pueden ser binarios (tienen dos
estados) o contadores (llevan un conteo) Una tarea es propietaria del semáforo y fija su estado o
valor de conteo, otras tareas pueden leer el estado o el conteo y actuar en consecuencia Su uso
correcto es responsabilidad del desarrollador
• Sockets En general se utilizan para sincronizar tareas que se ejecutan en distintos dispositivos
conectados en red Suele utilizarse una arquitectura cliente-servidor en la que una tarea (servidor)
provee información o recursos a otras tareas (clientes) Cada tarea dispone de un socket y éstos se
conectan entre sí Cada socket puede aceptar conexiones de un número distintos de otros sockets
Son bidireccionales, secada tarea puede leer y escribir en ellos
• Shared Memory (memoria compartida) Es un área de memoria física compartida entre dos o
más tareas. Todas las tareas las ven como parte de su propia área de memoria Normalmente las
tareas acceden a ella mediante punteros. Es un método de comunicación de bajo nivel No hay
controles sobre el acceso a la memoria, los mismos deben implementarse mediante semáforos u
otras técnicas Su uso correcto es responsabilidad del desarrollador
En todos los casos presentados es de destacar que su uso correcto es responsabilidad del
desarrollador, habiendo algunos problemas de sincronización a evitar:
• Deadlocks (bloqueo mútuo): cuando dos o más tareas concurrentes se encuentran c/u esperando a
la otra para proseguir (lo que nunca ocurrirá)
• Starvation (inanición): cuando a una tarea se le niega el acceso a un recurso compartido.
• Inversión de prioridades: cuando dos tareas de distinta prioridad comparten un recurso y la de
menor prioridad bloquea el recurso antes que la de prioridad mayor, bloqueando esta última al
momento que precise el uso del recurso compartido
4. REQUISITOS TEMPORALES
Los SOTR se caracterizan por presentar requisitos especiales en cinco áreas generales
✓ Determinismo.
✓ Sensibilidad.
✓ Control del usuario
✓ Fiabilidad.
✓ Tolerancia a los fallos.
Determinismo:
Un sistema operativo es determinista si realiza las operaciones en instantes fijo s y
predeterminados o en intervalos de tiempo predeterminados. Cuando hay varios procesos compitiendo
por recursos, incluido el procesador, ningún sistema será por completo determinista. El punto hasta el
cual un sistema puede satisfacer las solicitudes de manera determinista depende, en primer lugar, de la
velocidad con que pueda responder a las interrupciones y, en segundo lugar, de si el sistema posee
suficiente capacidad para gestionar todas las peticiones en el tiempo requerido. Una medida útil de la
capacidad de un SO para operar de forma determinista es el retardo máximo que se produce desde la
llegada de una interrupción de alta prioridad hasta que comience el servicio de la rutina asociada. En un
SOTR este tiempo puede ir desde unos pocos microsegundos a 1 milisegundo, en los SO que no son de
tiempo real el retardo puede caer en un rango desde decenas a cientos de milisegundos. ´
Sensibilidad
Es una característica semejante a la anterior, hace referencia a cuánto tiempo consume un sistema
operativo en reconocer una interrupción, es el tiempo preciso para dar servicio a la interrupción después
de haberla reconocido. Depende de:
Es generalmente mucho mayor en un SOTR que en uno de tiempo compartido. En estos últimos
un usuario no puede otorgar prioridades a sus procesos, decidir sobre el algoritmo de planificación, qué
procesos deben estar siempre residentes en memoria etc.
Fiabilidad
Es normalmente mucho más importante en SOTR Un sistema en tiempo real controla sucesos que
están teniendo lugar en el entorno y en su propia escala de tiempos, las perdidas o degradaciones en el
sistema que los controla pueden tener consecuencias catastróficas.
Tolerancia de fallos
Un SOTR debe diseñarse para responder incluso ante varias formas de fallo, se pretende que se
pueda conservar la capacidad máxima y los máximos datos posibles en caso de fallo. Opciones como la
de volcar el contenido de la memoria a un archivo y abortar el programa ante la aparición de un fallo
están totalmente prohibidas. Un SOTR intentará corregir el problema o minimizar sus efectos antes de
proseguir con la ejecución.
Asociada a la tolerancia a fallos está la estabilidad. Un sistema será estable si en los casos es los
que es imposible cumplir todos los plazos de ejecución de las tareas se cumplen al menos los de las más
críticas y de mayor prioridad.
ESQUEMA CONCEPTUAL:
Ejecución de la tarea:
Atributos temporales de las tareas:
➢ Activación
➢ Plazo de respuesta
Importante: Se trata de garantizar que la ejecución de cada tarea termine dentro del plazo esperado
La memoria es uno de los recursos más valiosos que gestiona el sistema operativo. Uno de los
elementos principales que caracterizan un proceso es la memoria que utiliza. Ésta está lógicamente
separada de la de cualquier otro proceso del sistema (excepto los threads de un mismo proceso que
comparten normalmente la mayor parte de la memoria que tienen asignada). Un proceso no puede
acceder, al espacio de memoria asignado a otro proceso, lo cual es imprescindible para la seguridad y
estabilidad del sistema. El direccionamiento es una parte importante de la gestión de memoria, puesto
que influye mucho en la visión del mismo por parte de un proceso, como en el aprovechamiento del
hardware y el rendimiento del sistema. En Linux, además, un proceso tiene dos espacios de memoria: el
espacio de memoria del usuario, único para ese proceso, y el espacio de memoria del kernel, idéntico en
todos los procesos.
Intercambio
Zona de INTERCAMBIO:
La zona de intercambio es una zona de un disco duro utilizada para almacenar procesos que
actualmente no están en ejecución y así dejar memoria RAM libre para los procesos que sí lo están.
Para gestionar la memoria en sistemas operativos multitarea, esta se divide en particiones fijas.
Así, el sistema operativo dispone de una cola de los procesos que solicitan entrar en memoria. El
planificador tiene en cuenta los requerimientos de memoria de cada uno de los procesos y las particiones
de memoria disponibles. Estos requerimientos de uso de memoria se almacenan en el BCP.
La mayor dificultad de diseño de las particiones fijas es la adecuada selección de los
tamaños de las mismas, puesto que puede derivar en un desaprovechamiento o fragmentación de
la memoria. Esta fragmentación puede ser:
• Interna: cuando la parte de la memoria que no se está usando es interna a una partición asignada
a un proceso.
• Externa: cuando una partición disponible no se emplea porque es muy pequeña para
cualesquiera de los procesos que esperan.
Con un conjunto dinámico de procesos ejecutándose no es posible encontrar las particiones
de memoria adecuadas. La opción es disponer de particiones variables.
El problema que se plantea ahora es disponer de un registro con información de las particiones
libres y ocupadas, que sea eficiente tanto en el tiempo de asignación como en el aprovechamiento de la
memoria. No obstante, se siguen presentando problemas de fragmentación externa.
Una solución es permitir que los procesos puedan utilizar memoria no contigua, lo que se
consigue mediante técnicas de paginación. En esta situación hay un mecanismo de traducción de las
direcciones lógicas a las físicas mediante una tabla de páginas. La tabla de páginas presenta dos
cuestiones a tener en cuenta: el tamaño de la tabla (que puede ser demasiado grande) y el tiempo de
asignación (que debe ser de corta duración).
En contraposición a la visión de la memoria como un array o lista unidimensional, está la
concepción por parte del usuario de considerar la memoria como un conjunto de segmentos de
diferentes tamaños, sin ninguna ordenación entre ellos.
Este esquema corresponde a la segmentación. En este caso, el espacio de direcciones lógicas es
un conjunto de segmentos con diferentes nombres y tamaños. En el esquema de segmentación no se
produce fragmentación interna, pero sí externa, que ocurre cuando todos los bloques de memoria
libres son muy pequeños para acomodar un trozo o bloque de proceso.
Aunque la segmentación y la paginación son esquemas diferentes de gestión de la memoria,
se pueden considerar estrategias combinadas, ya que la única diferencia es que la paginación
utiliza bloques de memoria de tamaño fijo.
En todos estos esquemas, se supone que el proceso que se va a ejecutar está cargado totalmente
en memoria. La idea de permitir ejecutar procesos que no están cargados totalmente en memoria, e
incluso que sus tamaños superen al de la memoria física instalada, da lugar al concepto de
memoria virtual. En los sistemas operativos actuales se puede configurar el área de intercambio, de tal
forma que podemos indicar el tamaño en disco destinado a tal fin, e incluso se puede indicar en qué disco
se puede realizar el intercambio. El gran inconveniente de modificar «a la ligera» lo que el sistema
administra automáticamente, es que podemos provocar que el rendimiento del equipo sea menor.
Paginación, segmentación y swapping
Segmentación, paginación y swapping son técnicas de gestión de memoria, que en general
permiten ejecutar programas de un tamaño superior a la capacidad de la memoria RAM
utilizando el disco duro como una «ampliación» de la memoria principal del equipo.
La ventaja es que se puede ejecutar cualquier programa; el inconveniente es la pérdida de
rendimiento.
Paginación
La paginación es una técnica que consiste en dividir la memoria interna o RAM en zonas iguales
llamadas frames, y los programas en partes del mismo tamaño denominadas páginas. Para ubicar un
programa en memoria, el sistema operativo buscará en memoria física los frames que tenga libres. El
tamaño de estos frames se diseña mediante hardware. Si utilizamos un sistema de multiprogramación y
solo hay un trabajo, este tendrá asignados todos los frames necesarios para él. Esta asignación de frames
la realiza el sistema operativo.
Mediante la tabla de páginas, la UCP asigna las direcciones físicas de los frames a las páginas
en las que se ha dividido el programa. La asignación de los frames no tiene que ser necesariamente
consecutiva. Un proceso se puede ubicar en memoria interna en frames no contiguos, ya que estos
pueden estar ocupados por otros procesos. La técnica de paginación es similar a la de memoria
virtual. La gran diferencia es que aquí no existe disco duro para intercambiar parte de los
procesos.
Concretamente, el sistema operativo DOS utiliza una técnica parecida a la paginación. Como
ejemplo, veamos el sistema operativo DOS. Solo sirve de almacenamiento para parte del núcleo del
sistema operativo y para almacenar temporalmente parte de los procesos que tengan un tamaño superior
a 640 KB. DOS divide la memoria extendida (por encima del primer MB) en páginas de 64 KB para
realizar el intercambio de información con la memoria convencional. Un programa de 1 MB ocupará lo
que pueda de memoria convencional y el resto se almacenará temporalmente en memoria extendida. Este
programa se paginará a través del llamado marco de página. Se intercambian las páginas desde memoria
convencional a extendida y viceversa, dependiendo de la parte del proceso que se vaya a ejecutar. Esta
gestión de memoria se conoce como memoria expandida.
Segmentación
Es una técnica similar a la paginación que permite definir los bloques de memoria de tamaño
variable. Cada segmento puede variar desde 0 hasta un máximo permitido. Estos segmentos pueden tener
longitudes distintas. Además, la longitud de un segmento puede variar según las necesidades del
programa.
Supongamos que realizamos un programa y, para que se ejecute, necesita utilizar tablas
(estructuras de datos) en memoria. Si tenemos en cuenta que una tabla puede asignarse de forma estática
o dinámica según las necesidades del programa, habrá veces en que esta tabla necesitará un espacio
determinado en memoria, mientras que otras, este espacio será mayor o menor según la necesidad.
Gracias a la segmentación podemos ubicar en memoria estas estructuras de datos,
independientemente del tamaño que tengan.
El ordenador, a través del sistema operativo, puede organizar la memoria en bloques
concretos y tener partes de ella destinadas a almacenar las estructuras de datos, que pueden crecer
o menguar según las necesidades del usuario o del programa. Para ello se utilizarán las pilas de
memoria o stacks, en las que se gestionan las estructuras de datos necesarias.
La paginación difiere de la segmentación en que las páginas son de tamaño fijo y los segmentos
no. El uso de la técnica de paginación o segmentación dependerá del sistema operativo utilizado y de la
máquina en la que lo usemos, además de las necesidades del software.
Swapping
El swapping es una técnica similar a la de memoria virtual. Cuando varios usuarios están
ejecutando procesos en un mismo ordenador, este se ve obligado a cargarlos en RAM. Según el estado
en el que se encuentre el proceso de cada usuario, la memoria se irá liberando de su proceso y pasará a la
zona de swap mediante la técnica llamada swap-out. De esta forma, la memoria interna queda liberada
para que en ella se pueda almacenar otro proceso del mismo usuario o de otro.
Si el usuario vuelve a solicitar su proceso para seguir ejecutándolo, se produce el denominado
swap-in, que consiste en pasar el programa de la zona de swap a la memoria interna.
Esta zona de swap se suele utilizar en sistemas operativos como UNIX y Linux. Está formada
por un espacio físico del disco en el que tenemos el sistema operativo y las aplicaciones que se van a
ejecutar. Los fabricantes de estos sistemas operativos recomiendan que esta zona sea del 20 %
aproximadamente del espacio en disco o el doble de la capacidad de RAM del ordenador.
La diferencia entre la gestión de memoria virtual y el swapping es que, mediante la primera,
puede llegar a ocurrir que el disco esté tan lleno que la gestión sea difícil o imposible, ya que el espacio
destinado al intercambio suele ser espacio del disco duro en el que está instalado tanto el sistema
operativo como el software de aplicaciones y los datos del usuario. En el swapping no puede ocurrir esto,
ya que esta zona siempre estará reservada y disponible para el intercambio de programas con la memoria
principal. Normalmente, al estar esta zona en un dispositivo físico diferente, todo el espacio estará
disponible cada vez que encendamos el ordenador.
7. PROCESOS E HILOS.
PROCESO:
Un proceso es un conjunto de instrucciones correspondientes a un programa que son ejecutadas por
la CPU.
HEBRA O HILO:
Una hebra o hilo es un subproceso de un proceso que consume recursos propios pero que depende
del proceso padre que lo ha ejecutado.
Cuando se ejecuta más de un proceso de forma concurrente en un sistema, todos necesitan que el
propio sistema les suministre una serie de recursos. Para ello, el sistema operativo, gracias a la UCP
(Unidad Central de Proceso), se encarga de asignar estos recursos en un orden adecuado y atendiendo a
unas prioridades. También realiza funciones de sincronización de todos los procesos, para que se
ejecuten en el orden adecuado y según la prioridad decidida.
Cada vez que un programa se convierte en proceso, es decir, cada vez que se ejecuta un programa,
además de ubicar en memoria las instrucciones que lo componen y sus datos asociados, a dicho proceso
se le asocia una estructura de datos.
Esta estructura de datos, que es única para cada proceso, identifica el proceso respecto de los
demás y sirve para controlar su correcta ejecución. Es lo que se llama el bloque de control del proceso
o BCP, y contendrá para cada proceso la siguiente información: estado actual del proceso, identificador
del proceso, prioridad del proceso, ubicación en memoria y recursos utilizados.
Una hebra es un punto de ejecución de un proceso. Un proceso tendrá siempre una hebra, en la
que corre el propio programa, pero puede tener más hebras. Las hebras representan un método software
para mejorar el rendimiento y eficacia de los sistemas operativos. Las hebras de un mismo proceso
compartirán recursos, como memoria, archivos, recursos hardware, etc.
Un proceso clásico será aquel que solo posea una hebra. Pongamos un ejemplo. Si ejecutamos el
procesador de textos Word, con un solo documento abierto, el programa Word convertido en proceso
estará ejecutándose en un único espacio de memoria, tendrá acceso a determinados archivos (galerías de
imágenes, corrector ortográfico, etc.), tendrá acceso al hardware (impresora, disquetera), etc. En
definitiva, este proceso, de momento, solamente tiene una hebra.
Si en esta situación, sin cerrar Word, abrimos un nuevo documento, Word no se vuelve a cargar
como proceso. Simplemente el programa, convertido en proceso, tendrá a su disposición dos hebras o
hilos diferentes, de tal forma que el proceso sigue siendo el mismo (el original).
Word se está ejecutando una sola vez y el resto de documentos de texto que abramos en esta
misma sesión de trabajo no serán procesos propiamente dichos. Serán hilos o hebras del proceso
principal, que es el propio procesador de textos.
8. COMUNICACIÓN ENTRE PROCESOS.
• Sincronizar: Satisfacer las restricciones en el enlazado de las acciones de los distintos procesos.
Las comunicaciones entre procesos están soportadas de una manera precisa y estable, empleando
mecanismos como el uso de semáforos, el paso de mensajes y el uso de memoria compartida.
Cuando varios procesos se ejecutan concurrentemente en una tipica aplicación en TR, el SO debe
facilitar un mecanismo para la sincronización e intercambio de información entre los distintos procesos.
La IPC es clave en el diseño de una aplicación como un conjunto de tareas cooperantes, en la cual cada
proceso maneja una parte bien definida del todo. Son varios los mecanismos de IPC: semáforos,
monitores, colas de mensajes y memoria compartida. Diversos autores han demostrado como a partir
de semáforos y memoria compartida se pueden implementar colas de mensajes o monitores y viceversa
en lo que se conoce como equivalencia de primitivas. La mayoría de las tendencias apuntan al empleo
de las colas de mensajes como principal mecanismo de comunicación y sincronización. En efecto, éste
es el mecanismo empleado por A. Tanembaum en el desarrollo del SO Minix, el del QNX y también el
empleado por el ADA, que pese a no ser un SO implementa en el mismo lenguaje el concepto de proceso
(task) y la comunicación entre procesos mediante el mecanismo de cita. En el caso del QNX el paso de
mensajes se hace de manera transparente a través de todos los computadores conectados en la red. Hay
que recordar que los mensajes son simplemente conjuntos de bytes sin ningún significado especial
para el SO Son los procesos que los envían y reciben quienes les otorgan significado. Además, el
paso de mensajes es el mecanismo más eficaz para comunicar procesos a través de computadores
conectados en red.
La sincronización de los procesos también se puede lograr mediante el paso de mensajes, ya que
un proceso puede sufrir un cambio de estado cuando envía o se dispone a recibir un mensaje, pasando
por ejemplo a bloquearse hasta que el destinatario lo haya leído o el emisor lo envíe.
El mensaje de réplica es transferido al proceso A que se desbloquea y pasa al estado de listo para
ejecutarse. Ahora A y B están ambos listos y pueden por tanto competir por el uso de la CPU.
En caso de que el proceso B hubiera ejecutado la llamada a receive antes de que el proceso A
hubiese ejecutado el send, B se habría bloqueado (receive blocked) hasta la llegada del mensaje.
• Comunicación interprocesos.
• Planificación de procesos.
• Despachador de interrupciones.
• Variables compartidas: objetos a los que puede acceder más de un proceso. La comunicación se logra
accediendo a dichas variables cuando sea necesario. Sin embargo, esto puede traer problemas.
• Paso de mensajes: intercambio explícito de datos entre dos procesos mediante el paso de un mensaje
mediante alguna forma que brinda el SO o el propio lenguaje. Esto se realiza mediante algún
mecanismo.
VARIABLES COMPARTIDAS
Considere dos procesos que actualizan una variable compartida, X, mediante la sentencia: X:= X+1
– Carga el valor de X en algún registro.
– Incrementa el valor en el registro en 1.
– Almacena el valor del registro de nuevo en X.
Como ninguna de las tres operaciones es indivisible, dos procesos que actualicen la variable
simultáneamente generarían un entrelazamiento que podría producir un resultado incorrecto.
• Las partes de un proceso que tienen acceso a las variables compartidas han de ejecutarse
indivisiblemente unas respecto a las otras. Estas partes se denominan secciones críticas.
• La protección requerida se conoce como exclusión mutua.
Sección crítica
Es una secuencia de instrucciones que debe ejecutarse sin perder el control, y afecta variables
compartidas. Si un proceso está ejecutando código de su sección crítica, ningún otro proceso puede estar
ejecutando código de su sección crítica.
Exclusión mutua
Es el mecanismo que asegura que solo un proceso está haciendo algo en un instante determinado.
Sincronización para proteger una sección crítica. Es necesario si dos procesos comparten variables.
Se utilizan para bloquear el acceso a recursos de hardware o software que deben ser compartidos
por distintas tareas. El mutex actúa como un ticket (token) que debe ser adquirido por la tarea que desea
acceder al recurso compartido.
Una vez que una tarea adquiere el mutex asociado a un recurso, ninguna otra tarea puede
adquirirlo hasta que sea liberado por la tarea que lo adquirió primero.
Su uso correcto es responsabilidad del desarrollador.
Sincronización condicionada
Es necesaria cuando un proceso necesita realizar alguna acción, solo después que se haya
cumplido una condición.
Utilización de buferes: productor / consumidor
Son aquellos problemas en los que existe un conjunto de procesos que producen información que
otros procesos consumen, siendo diferentes las velocidades de producción y consumo de la información.
Este desajuste en las velocidades, hace necesario que se establezca una sincronización entre los procesos
de manera que la información no se pierda ni se duplique, consumiéndose en el orden en que es
producida.
SEMÁFOROS
Un semáforo es una estructura diseñada para sincronizar dos o más o procesos, de modo que su
ejecución se realice de forma ordenada y sin conflictos entre ellos. Permite resolver la mayoría de los
problemas de sincronización entre procesos y forma parte del diseño de muchos sistemas operativos y
de lenguajes de programación concurrentes.
Semáforos binarios:
Es un indicador de condición que registra si un recurso está disponible o no. Solo puede tomar dos
valores (semáforo binario):
1: recurso disponible
0: recurso no disponible
Para evitarlo, se idearon los semáforos. Un semáforo básico es una estructura formada por una
posición de memoria y dos instrucciones, una para reservarlo y otra para liberarlo. A esto se le puede
añadir una cola de threads para recordar el orden en que se hicieron las peticiones.
Cuando el S.O. ejecuta una llamada, comprueba el valor que hay en la posición de memoria del
semáforo, y si es distinta de cero, se limita a restarle 1 y devolver el control al programa; sin embargo,
si ya es cero, duerme al proceso que hizo la petición y lo mete en la cola de procesos, en espera de que
el semáforo se ponga a un valor distinto de cero.
En caso que exista un conjunto de recursos similares, se puede usar una versión más general de
semáforo que lleve la cuenta del número de recursos disponibles. En este caso el semáforo se inicializa
con el número 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.
Características
• las acciones que acceden y modifican dichas variables están diseminadas por los procesos.
• para poder decir algo del estado de las variables compartidas, es necesario mirar todo el código.
• la adición de un nuevo proceso puede requerir verificar que el uso de las variables compartidas es
el adecuado.
MONITORES
Características:
Es un TAD:
• nada se sabe del orden en que se van a invocar acciones del monitor.
*MONITOR: Es el monitor más simple de todos pues solo tiene tres estados y las funciones internas
son muy sencillas.
*MANAGER: es muy similar al monitor tipo monitor, la diferencia esencial es que un proceso que es
reiniciado debe abandonar el monitor
*MEDIADOR: Este monitor fue propuesto por C.A.R. Hoare, tiene la característica de compensar las
desventajas de los monitores tipo monitor y tipo manager
Funcionamiento
– aunque varios procesos pueden en ese momento ejecutar acciones que nada tengan que
ver con el monitor
La sincronización condicionada:
– cada proceso puede requerir una sincronización distinta, por lo que hay que programar
cada caso.
• se usan para hacer esperar a un proceso hasta que determinada condición sobre el
estado del monitor se “anuncie”
Existe necesidad de sincronización de condición. Se maneja con dos operadores que se llaman wait
y signal.
• Un wait siempre bloquea y se ubica en una cola asociada a esa variable de condición.
Ventajas:
La interfaz del monitor es un conjunto de funciones que representan las diferentes operaciones
que pueden hacerse con el recurso. La implementación del monitor garantiza la exclusión mutua
mediante semáforos o algún otro mecanismo.
TRANSFERENCIA DE MENSAJES
PASO DE MENSAJES
– Enviar (mensaje)
– Recibir (mensaje)
– Modelo de sincronización
Manda un mensaje que es recibido por otro proceso que suele esperar dicho mensaje
El paso de mensajes es imprescindible en sistemas distribuidos dado que en este caso no existen recursos
directamente compartidos para intercambiar información entre los procesos.
Características:
• Tipos de sincronización
• Prioridades
TIPOS DE SINCRONIZACIÓN
• Sincronización implícita: un proceso no puede recibir un mensaje antes que el emisor lo haya
emitido.
– Invocación remota: el emisor continúa sólo cuando se recibió una respuesta desde el
receptor
El paso de mensajes puede ser síncrono o asíncrono depende de lo que haga el remitente antes de seguir
procesando.
• el remitente puede esperar hasta que se haya ejecutado la recepción correspondiente al otro lado;
es el método de la comunicación síncrona
• el remitente puede esperar hasta que el receptor haya contestado al mensaje recibido; es el método
de la involucración remota
Se pueden distinguir varias posibilidades en cómo dos procesos envían y reciben sus mensajes
• Usan nombres únicos para identificar tanto el remitente como el receptor tienen que especificar
exactamente con que proceso quieren comunicarse
• A ninguna de las dos partes le interesa cual será el proceso al otro lado
PRIORIDADES:
Para el paso de mensajes su usa muchas veces el concepto de un canal entre el remitente y el receptor o
también entre los buzones de mensajes y sus lectore
"Los canales pueden ser capaces de distinguir entre mensajes de diferentes prioridades
• Optimistas: Consideran que lo más 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 las actualizaciones.
caso de conflicto, mantienen la integridad del sistema descartando
• Pesimistas: Bloquean todo aquello que pueda interferir, actualizan la variable, desbloquean lo
bloqueado al principio.
[Link]
En todos los casos presentados es de destacar que su uso correcto es responsabilidad del
desarrollador, habiendo algunos problemas de sincronización a evitar:
• Deadlocks (bloqueo mútuo): cuando dos o más tareas concurrentes se encuentran c/u esperando
a la otra para proseguir (lo que nunca ocurrirá).
• Starvation (inanición): cuando a una tarea se le niega el acceso a un recurso compartido.
• Inversión de prioridades: cuando dos tareas de distinta prioridad comparten un recurso y la de
menor prioridad bloquea el recurso antes que la de prioridad mayor, bloqueándose esta última al
momento que precise el uso del recurso compartido.
# ' ' )
* +,- & . * ' /
& * " , *
&
& 0 (1 "- *
* 2 ' * " 3
3 ( "
& 4
' /
5 0 ( '
5 ( '
5 # . 5( ' *
"
5 0 ( '
2 % ' ( * ( * '
' # * ("
* $
0 89 $ / " ('
" "
- *
52 /
:
1
( * " #
'
5 /
1 ;
0 3
0
52
5 * /
2 ;
< ' ( )
/
5 + " *
5 . 5(
$ ( ' % . 2( 5
! " #$
0 = 20& 6!0 '
+1 2&-2> ( " *
( " * +1 " 3 ( ? 0 (
1-6 @( !0? " < 2-6!< & +6 A < 2-6!<
* * * ! 0 +-6 B3 ( * ! 0 +-6
* ! 0 +-6 (
( C C DE4CC C( ' ) # " . F # 5
< # :C <
!! "
#$ % !! "
!! &
$ $ ! !! '( ) !
* $ +$
* $ , - .
* $ #$ % , - . #$ %
* $ , - .
* $ $ 0 / , - . $
$ 0 / +
, -
- $
#$ % - $ #$ %
- $
/ $ 0 - $ $ .
G
* $ 1*
, -
#$ % - #$ %
-
/ $ 0 - $ -2 ! .
* $ 343 , * - % - $ .
* $ 343 , * - $ % - .
* $ 353 , * - % - $ .
* $ 353 , * - % - . $
* $ 363 , * 7 % - . 8$$+
* $ 3623 , * 7 % - . 8$$+
* $ 393 , * 7 % - . 8$$+
* $ 3923 , * 7 % - . 8$$+
$ - : $
!!!
0
% &'
$ H 0 89 " '
0 ' I < 3 '
!!!
0 ! +
; - $
- $
< - $ -2 = ! = 5
/
/ ; - $ /
/ - $ /
/ > $ - $ /
/ < - $ /
- $ /
* $ +$
* $ 343 , * - % - / .
* $ 343 , * - / % - .
* $ 353 , * - % - / .
* $ 353 , * - % - . /
* $ 363 , * 7 % - . 8$$+
* $ 3623 , * 7 % - . 8$$+
* $ 393 , * 7 % - . 8$$+
* $ 3923 , * 7 % - . 8$$+
* $ 343 , * 7 % - / . /
* $ 353 , * 7 % - / . /
* $ 353 , % - / . /
4
* $ 3?3 , * - / % - . /
* $ 3?3 , * - % - / . /
* $ 3@3 , * 7 % - / .
* $ 3@3 , * - / % - . /
* $ 3 3 , % - / . /
* $ 363 , * 7 % - / . 8$$+
* $ 3623 , * 7 % - / . 8$$+
* $ 393 , * 7 % - / . 8$$+
* $ 3923 , * 7 % - / . 8$$+
* $ $ $ , / - / . $
* $ $ / , - $ . /
* $ $ $ 0 , / - . /
* $ # $ $ 0 ,</ - . /
* $ # ++ $ 0 ,#/ - . /
/ $ 0 $ A 5 B !! B
$ 0 / + , - / - $ / $ 0 $ / - $
/ .
* $ 1* ,/ - / $ 0 $ / - / .
!!!
0 0 ! +
(
& ' # '
( /
1C-2 1 D
+$$ 55 +$$
: A% , 1 D5 1C.9 !
0 +$$
* (0 "/
) ;
( ' 3 * * 3 3
( " 3 $
0 ' /
0 +
E 1- $ < 1 -2F!
+$$
1
0 + E 1
0 +$$
0
0 +
E 1- $ < 1 -2F!
9
/ G- #
/ G-2 1 D4 E 1
+$$
1
0 + / G5 1 D
/ G-2/ G4 E 1
0 +$$
0
< ' ) ("' 022+-6 * '
C( 9( : C
0 89 ( ( ' # '
/
) ; HH
& ) $ )* % +,(
' ' * ( ".H =5 #
(
$0
E 1- $ < 1 -2H!
+$$
1
0 + E 1
0 +$$
0
' 022+-6 * * 9 !
* ' * J9 (
/ G-2 1 D4 E 1
+$$
1
0 + + / G 55 0 '&7 + I 0 + ,/ G5 +$ .
/ G-2/ G4 E 1
0 +$$
0
- . * ,
M 3( ' < ( H ) *
$ (" ( '
E
< * C ) * '
( '
0 *
% / /
1 1 1
55 ++ 0 $ + E / /1 7 J +
55 +$ 0 + !
# , - #K < .
0 1 1 1
$0 1 1 1
!!! 55 0 + $
+$$
+
# , - #K < . 0$
< E #K-2
0 #
!!!
$
0 + !
!!! 55 $ $ + $ +L
0 +
!!!
0 +$$
0 1 1 1
" / /
2 3 " ( # ' *
* ( # * 3 * ( #
+$$
!! $ +$ 0 0 + $
+
1 1 1 ! # , .
$
0 + !H
++
0 +
0 +$$
& ) /
+
K! ,!!!. 55 K $ M $ $ 0$
$
0 + !H
0 +
M +$ + ! 0 + "! 0 $ $ + $ - 0
+ $ , + + . M + $
0$ 7 $ 0 0 $ $ $ 0$ !
% /
K
< # .0 2( ' '
3 5
+
55 ++ 0 7 $ 0 +
55 ,$ $ + . M 0
55 I * + I 0 + $
% $
55 $ 7 J N $ 0 + +
55 * + I J ++
0 +
+
0 + !
% $
O 55K 0$ 7 + O $ % 0$7 $ 0
0 +
< (
'
55 $ + $ 0 N+ +$
55!!!
+
0 + + $
% $
+$$
55 $ 0 * $ 0 + + 0$
0 +$$
0 +
0
< ( '
! " #
' 0
( I ( 3 (
' # '
& . 5
.* 3 5/
D
<
&
!1 N L :
$1 . O!5
"1 # . O&5
2 1& #
2 31 & 3$
& * ' / ( 3
# ( * ( #
& * 3 * # $ (
' & 3
( ' # * . ' * 3
JN ' 5 3
!
8
! %
'
? *
$0 K $0
K $0$- $ $ -2!!! 55 $ $ /
/ - -2 !!!
!!!
+$$
0 + + /
55 1 K 1
/ -2/ 4K $0$
0 +$$
0 K $0
/
$0 K $0
K $0$- $ $ -2!!! 55 $ $ /
$ - $ $ -2!!! 55 $ $ /
/ 7 - -2 !!!
1 - : $
!!!
+$$
0 + + /
-2 +$ 4 $
+
0 + +
C
1
% $
55 1 K 1
0 +
/ -2/ 4K $0$
0 +$$
: $
A% 1 29 !!!
0 K $0
' 4
& 3 * $ 3 ' ' *
' * & *
* ' 3 ' * * 3 " 3
'
$ 0 $
$ 0 / + 55 $ 0$ + $ L $ $
C
$ - $$+ -2 ; +
0 $
$ 0 $0 $
$ 0 / +
$ -2
0 / +
C A% $
$ -2; +
0 C
0 $
$0 $ 0
55 + I O
+$$
$!C
55 1 /K1
0 +$$
0 $ 0
M +$ + $ $0 ! 0 $0 "! 0 %
+ + J $ N0 0 0 + $ +!
+ I + N+ +$ 0 O + + + + I P
+$ 0 $ + $ $ 7 + $7 + 0$ +
+ O 0 + J + + + !
0
< 9 ("
( * ( ( :C
.0B2! ( 0B2 !( 0B!2 ( 0B! 2( 5 < (
( ( (
0 ' (
. 5( * <
# (' 3 *3 ' '
' '
0 /
0 ('
. ( 5
5 4 (' (
( " ( ( '
< (' '
4 . 5( 4 .
(" 5
6
* " (
3 3
# /
)
(
&
& *
3$
< ' 3 . 5
4 0 1
6 6)
2 3$
3$
3 ( 2 ON ! N < ' ON !
( # ) ) *
7
:
0 0
< . 5 3 "
( 3 ' "
" $ * ( 0 (
' ' ( 0
( (
' 0 0 * 8
,
3 0 )
3 3 3' 3
3 . '
3 ( # ( 5 ! ( )
' 2 ( ( /
. 5 . 5 .2 5
9C C :CP
: C : :CP
: : : : : :
0 0 * 68
,
0 3 / 3 *
. " 5 " /
' $ ( 1<0
3
' ( 0 /
" ( ' $
9 / / <
/
ON
( 1<0( 3
/
G
,
C .: 5
6 C
CCC
: C D:D
G C KK8
4 C K9E
& : N C E8G
! ' E8 GP 3
1<0
H 1
! !:
GC C G C GGG
: 4C C : C :9C
G 9C : C :4C
NC D:G
. J C KK85
C :C 4C EC
(
"' < ( * * (
# 3
4
H 1
! !:
E 4 G C :9C
: 4C 9 : C :9
G DC G: C 4CC
NC KK9
3 . O C KK85 !
H (1
! !:
:C 9 G C :9C
: 4C C : C :9C
G DC 4C C 9CC
N CCC
. J C KK85 < ( . 5
2
/ ( 3 <
(
0 4
3 ( 3$ * 3$
. N 25 3 3
( 3 3 / N 2 L +( +
3$ ' $ ' * Q( L 5 <
' * 3 C 2 "
' ! * QC( 5( ) * ' * * 3 $ /
"
. 5
. 5
& @ 3 * '
( ' 3 ' % *
/
. 5
. 5
H -1
!
K G G
: : G :
G :C 9
;(
:.C5 N G L G N E
:. 5 N E NJ ;
G.C5 N 9 L G L G N
G. 5 N 9 L :RG L RG N 4
2 ' G /
!
:C 9 G 9
: 4C C : 9
G DC 4C DC
?'
& 3 " . (
3 < ( 5
E
( 0 . *$$8
,
< 3 ( ' ' # .
5 3 $ " 2 ( * * *
* 3 ' '
' 3 # <
) 1<0( ' ( <
" '
( 4
$ E9 ' " 3 ( *
# * 3 *
:C * 3 3 * * :C ( * 3
' !N 3 (
* " ( * ' * ( ' .
3 5 ' !O
( 0 / *
= $6 ,
2 ! ' ( *
. " !( 5
3 *3
H '1
! $ *$6 , * 68 ,
:C G 9
: 9 G K
G C 4 C
4 :C G :C
H 1
< 0 *
4 4 M7 4
G G 77 :
: : :
MMMM
0 NC
: G 4 9 E K D 8 C : G 4 9 E K D
M . #$
7 . #$
B '
M $ * #$
:" G 2 G 3 (' (" :'
( G 7( $ * ( " :
- 4 ' 3 " G 4 )
3 4 M( ' 3
$ * ( < ' ' 3 ( "
G G ) 7( ' > S G
? : ' * 3 :
< 4 ' M" ' "
D
3 < M
(' 4( ' M( ' " 4
7 " " 2 4
' & .T U T 5
* :( E( D( " K
: G 4 9 E K D 8 C : G 4 9 E K D
3 ( ' "
# .+2 5( /
2 ( ) ) '
2 * .# 5 (' 3$ '
3 ' 3$ " * '
'
: G 4 9 E K D 8 C : G 4 9 E K D
8
M ! 4 3 4(
:" G* * ' 3 & 4 -
' M( * * ( '
4' " * 4 <(
.' 3 5 4 E
:( 4 " K
2 ( ' ( 3$ ( * * &
3$ ' 3/
& % ($
. 5( $ # . 5
.5 ' ( .5
( " 2 (= ' =
& 3 B/
&
. 5
* (
* ' * # !
> 0
$ "
1 1 1
$ , .
0 1 1 1
& " /
@* 3 ,A
! % * *
*
0 DG( * 3 ("
0 89( /
/ E 1 /,K 1 -/ !K $ .
55 + 0 + I 0$ + 0 * O 0
55 % 0 +
!!!
!!!
:C
$ ,K 1 .
0 / E 1 /
!!!
/ - / E 1 /,/ !K $ Q; / .
/"- / E 1 /,/ !K $ Q / .
< * "( * "
.<" ! T "5 2 ' ' * 3 '
$ ! #
# ! % &'(
)%* % # " %
! +
! , & - "
. / " 0 $ -
. ' # !
)%* % 2 ! 3
2
! ! 1 - $ - .
2 ! "
. " 4 $
> B
< "
/
< " ( 3
0 3 " <
" ' ( 3 $
-A 01T -
0 3 ( " /
! * / ' 3 *
! * / ' 3 (
" '
/ ' ( 3$ "
4
0 89 ( " =
0 !" T /
0 ! 0 * $
++ - $
* $ 323 , * 7 % - . 8$$+
:
* $ , - . /
* $
$ 0 $ , - $ .
* $ 0, - . 8$$+
* $ ++ + , - . 8$$+
!!! 55 $ * 0 % +
0 0 ! 0 * $
A % /
A % 0 ! * $ 0
K $0 !
$ 0 / K $ ,K $ - / ! K $ -
0 ! 0 * $ ! -2
0 ! 0 * $ ! .
* $ G K $ , - 0 ! 0 * $ ! -2
0 ! 0 * $ ! . / ! K $
0 0 ! K $
A T " * *
< T "
>
0 89 # "
- /
/ E 1
K 1 ,!!!.
0 / E 1
+2+-6( " 3 S+S- <
* * ( 3 +2+-6 (
' * S+S- < 0 /
K 1 / , 7 # 7 8 R .
/ E 1
K 1 ,K 1 /.,!!!.
0 / E 1
$0 / E 1
+$$
+
K 1 , .,!!!. 0$
!!!
0 K 1
$
A% K 1 , .Q 1< 2 29
::
K 1 ,# .,!!!. 0$
!!!
0 K 1
$
A% K 1 , .Q 1< 2 0 K 1 ,# .Q 1< 2 29
K 1 ,8 R .,!!!. 0$
!!!
0 K 1
0 +
0 +$$
0 / E 1
& // E 1 !K 1 , .,!!!.
0 2- 6 / ) ' 3
5 5 " 5 6 ( !
#
.
! . - " # -
! . . /#
0
>( 0
7 * ' ' " 3 "
) 0
" /
)
& ' * )
' ' " ' "
' 3 "
2 " *
* " ' (
' 3 ("' 3 ) 2
' 3 (
; ' ' 3 " " * #
' *
' " " * # " '
+C$ 7 C )* )C 0 ,A
# # 5. 7 1
.
:G
? !
2 ' "
( *
(
& ) < * (
* ( ' 3 . ( 5
< * . 5( ' (
*
7 3 "
' 3(
' ( # ( (
' ' ! 3
'
? 3 )0
B # * * (
/
& ' $
& ' # 3
& ' $ /
* '
'
* " ' '
& 3
" $ W# &
( ' '
( & * . #
# ' 5( '
$
* ' ) (
( $ 3 . * * 5 0
' 0 ' 3
?
#
2 & 3
* "
0 ) "
2
$ *
:4
?
@ S+S-( 0 #
" 3 3 * "
* ( * "
(
? (
2 * " '
( (
3 & 0 *
? - 4
*
3 # " (
' "
( * " 3 *
* 0 ( * (
' $ 3 *
( ' $
? '
@ # S+S-( # *
( 0
# 3 $
? # 5 )
" * . 5
' 3 * 2
# /
" # * . #$
A ' ' '
$
$ /$+ 0 !!# :
$ 0 $ , - $ $ 0 0 - $ /$+ 0.
$ 0 $ , - $ 0 0 - $ /$+ 0.
0 $
$0 $
$ 0 $ $+ 0$ $
/$+ , - $ $ 0 0 - $ /$+ 0.
$ 0 , - $ 0 0 - $ /$+ 0.
, - $ $ 0 0 - $ /$+ 0.
0$ - $ /$+ 0 -2 $ /$+ 0 S
:9
$ $ 0$ - 8$$+ -2 ; +
- + -2
0 $ $+ 0$ $
$ 0
$0 $ $+ 0$ $
/$+ , - $ $ 0 0 - $ /$+ 0.A%
0$ 9
* 0 0 62 0$ %
0$ -2 0$ 5 0 0 55
+
J
0 *
0 /$+
, - $ $ 0 0 - $ /$+ 0.A%
$ $ 0$
-2 5
* 2 %
$ $ 0$ -2 ; +
0 *
* 0 0 6 2 0$ %
0$ -2 0$ 5 0 0 55
+
J
0 *
0
$ 0 , - $ 0 0 - $ /$+ 0.
0$ -2 0$ 4 0 0 55 + $
* S $ 9 %
-2 B $
$ $ 0$ -2
0 *
0
0 $ $+ 0$ $
$ 0 $ , - $ $ 0 0- $ /$+ 0.
$ $+ 0$ $ !/$+ , 7 0 0.
0 $
$ 0 $ , - $ 0 0- $ /$+ 0.
$ $+ 0$ $ ! , 7 0 0.
0 $
0 $
& " 0
& # ( *
# . 5' . 5
' 3 . 5 < '
' ( # (
0 " & *
( '
< "* * & (
:E
* <
' 2
* 2 " 3 '
< " 3
" 3 ' "
& 8 4
& ( < M
M ) < X ( ?
* X * ' ? ' # X
& ' . * 5 3 (
) " (
3 0 < ( *
3 3 * 3
( 3 2
3 ' ( '
# * - '
0# 2 .0 25 3 ( (
*
7 1
.
< $ G 8
* . # 5
* ( ( ( * #
* ( ( ( # (
) ( ' * !
( * 3 * & * * '
* "
( * ( '
* * '
* ' ("'
' *
* ' "
& 3
< 0
& "
I " < *
(" * #
* (0
0 / (
( ("
:K
< $ 0
* ( / % (
*
/
*$ 1#8 Q 8< 1 TK / 1 / #K
8< 1- / > 7 / 1 G / >
<+Y / ) (
8 !!"HH
*$ 8 Q/ > '
& B? 3 D 3 B? (
" " '
( 3 6 " ( 6 F *
. 5 " . 5
< - 0A T<+Y & < - 0A T 6+ ( = <?< 1(
) 7 # /D. " 5
< 0
+ *
.) 5 * ( ' # 6 "
-<( 70&( ! " < 22
) (
0 * $
* ( ' 3
< * . ( 5'
# 3 /
1## ,U1# 7 / D7 / K7 CU 7 7 C .
:D
*$ 1## Q/ > ( 55
*$ 1## ,U1# 29 '= =7
/ D 29 '= )=7
/ K 29 '= (=7
CU 29 '= =7
29 '=H =7
C 29 '=F =.
2 (
< ! $
) ( 3
#
* I *
< * +,- /
1 C1 - $ -2 ( 55
C1 - $ -2" 55 V 0 0 0 0 + $
+
55 $ 0$ J / / #!/ 1 G < ' , .
K1 1 , 1 7 C 1 7 K1C ; 7 1 U .
;< 1 , 7 C 7 / D.
< !!F
G / 1
$ 0
1 - K1 1
8</ - 811
< - <
1 - 811
8 - 811
;< - ;< 1
8 - 811
0 $ 0
*$ G / 1Q8 1 0 $A 1 0 ;
55 $ 8 1 0 0 * 0$ + /
< ( 0
- $ 00 -2 $ 00 ,'= FFH((=.
/ - G / 1
*$ / Q //
(
( . ( =
=5 ( 3
2 /
B $C $@ $ H H 6$ 6$ 6$ F
9 4 K E 9 4 G : C
1! .1 5 G ( 4 / (V ( ( < =(
C( (:(4
"
GC
+ 8@8 6* &',
/
K + $ ,/ .
+ $ 50 * 05 $ 5
/ - $ -2 + $ 50 * 0
55 / 5 0 0 -
# - $ -2 $$ B;
# : - $ -2 $$ B
# : 8 #$0 + - $ -2 + $ 50 * 0
# : $ #$0 + - $ -2 + $ 50 * 0
# : 8 - $ -2 $$ +B
# : - $ -2 + $ 50 * 0
# : # - $ -2 + $ 50 * 0
; + - $ -2 + $ 50 * 0
- $ -2 + $ 50 * 0
55 / $ 5 + 0 + $ -
00 + $ 50 * 0
++ 00 - $ 00
/ $ < - $ -2 + $ 50 * 0
C$ 0 / I - $ -2 + $ 50 * 0 ? / $ <
# $ / I - $ -2 + $ 50 * 0
55 00 $ $ -
* $ 363 , * 7 % - 00 . 8$$+
* $ 3623, * 7 % - 00 . 8$$+
* $ 393 , * 7 % - 00 . 8$$+
* $ 3923, * 7 % - 00 . 8$$+
* $ 323 , * 7 % - 00 . 8$$+
55 * $ 3@23 , * 7 % - 00 . 8$$+
55 3@23 + + 0 * 0
$ $ , 7 363.
!!! 55 0 $ $ *$ ++ + 50 * 0 $ %
55 1 % / 5 0 + $ -
8 1 0 ,U % 1 0 ; 7 $A 1 0 ; .
* + 8 1 0 - $ 8 1 0
55 K $ 5 + 0 0 + $ , ! .-
K $ + $ 50 * 0
K $ K $ K $ B; !!
+ $ 50 * 0
K $ K $ K $ B 4 !!
K $ B
* + K $ - $ K $ -2 ,K $ B; 4
K $ B .@"
!!! 55 $ * 0 % +
0 /
G
8 !I F 8 " ! # $ 8* &',
/ !/ $ +
K + $ ,/ !/ $ + .
/ $ 1** + $ 50 * 0
/ $ $ / $ 1** !!/ $ 1** B
/ $ + $0 + $ 50 * 0
*$ / $ + B/ I / $ <
/ $ ,/ $ 1** 69. $* + 0
/ $ +
*$ / $ B $ $ / I / $ <
55 00 % -
* $ 343, * - 00 % - / $ 1** . 00
* $ 343, * - / $ 1** % - 00 . 00
* $ 353, * - 00 % - / $ 1** . 00
* $ 353, * 7 % - 00 . / $ 1**
* $ 3 $03, * - 00 % - / $ 1** .
/ $ 1**
55 $ $ $@* $ -
00 + $ 50 * 0
* $ $ 00 ,E + - 00 . 00
* $ $ ,E + - 00 . 00
$ $ , 7 343.
55 !!! 0 $ $ *$ ++ + 50 * 0 $ 0 + 0 %
55 !
0 / !/ $ +
1 M ,69. + 0
/ ! 00 $ $ $
K + $ , 00 $ $ $ .
1 M K$ ++ 1 M
* $ $ K$ ,E + - 00 . 1 M K$
* $ $ 00 ,E + - 1 M K$ . 00
$ $ , 7 $ K$ .
$ $ , 7 $ 00 .
0 / ! 00 $ $ $
A % / 7 : 17 / !/ $ +
A % / ! 00 $ $ $
/ 7 : 17 / !/ $ +
$ 0 K < K"
8 !!"HH
*$ 8 B I '
H !! H
*$ HB/ > )
G:
1G 1 ,;7 .
*$ 1G 1B/ >
*$ 1G 1 ,; 29 7 29 .
G / 1
$ 0
K 1 - H
17 G E17 171E ;- 1G 1
0 $ 0
*$ G / 1
$ 0
K 1 !!&
1 )!!)
G E1 H!!H
1 (!!(
1E ; F!!F
0 $ 0
1 A 1, . 1
8 1 A 1,8 . 8 1
1 A $ 1, 1G 1. 1
W 1 A 1, H. W 1
1 E A ! 00 $ $ $ ,8 .
1 E
T-8
- 00
E-1 M K$
G - G / 1
,3 $ 0 0 , !! H.3.
, G !K 1 .
A +
,3 1 ,;7 .3.
, G ! 1.
A +
,3 G E1 ,;7 .3.
, G ! G E1.
,3 1 ,;7 .3.
, G ! 1.
A +
,3 1E ; 1C ,;7 .3.
, G !1E ;.
A +
+ ,31E ;, F. 1, (. G, H. 1, ). K , 5
&.3.
,3 0 0 0 + $ , .-3.
$! , $ .
A +
,30 $ 0 + + T-3.
$! , 29 , $ ,:B 00 ..7A 0 %29 7 29 (.
A +
GG
,30 $ 0 G -3.
$! , , $ , G B 00 ..7 7 (.
A +
,3 $ 0 G -3.
$! , G B I .
A +
-2 G B 00
E-2 $ K$ , . 55 $ G
T-2E! ++ 55 T 2 $ 0$ 0 + J G
,3 $ 0$ 0 T 2 $ 0$ 0 + $ 2 3.
,T.
A +
,3 $ 2 3.
,T7 7".
A +
0 K < K"
0 /
0
2( T
* $ 18 , - .
* $ 18 , - .
#K1 , 7 18 7 X 0$ + Y.
18 , .
0 18
A % : 17 18
: 1
$ 0 R #K 1
1 A 1, . 1
,X + 0$ + 0 & X.
, 18 ,&..
A +
0 R #K 1
+1 - ' $ 2 &
2 3
0$ + , .
Z
4
[
' * ' + 0
" 2 < * ( # ' T " T = + 2
G4
G9
: ! ( <'
@V 2 0 .A G C95 /
' +-T0
. < 5 " ' * * # . 5
' ( ( +1 - '
" 2 Z Z Z Z( " (
*
2 2 (
' L L =( . * =
5
1 0
55 K W< K /1 K< 1/ UC K
!!"HH 55 G1 ' 8 /
$ 0 / , $-/ !< 0 !/%$ < 0
0 $- .
* $ 0 , $-/ !< 0 !/%$ < 0.
0 1 0
$0 1 0
/ 1 + $, $70 $.
0 /
* $ 0 , $-/ !< 0 !/%$ < 0.
$ , 7 1 + 7 3 $ 3. 55 # ;< 1
1 + , $.
0 0
0 1 0
2 !! "
3 !-4
: D:9G .D:945 3 * (
% ' ( 4: (
D ' *# " 2 *# * : "
* ( " ) * ( ' *
* ' * 2 )
GE
C 0 #( * 3
. 8G DC @ 5 * * * :
* : * * ( D "
E (" * * * C
0 * *
: ' 4 * * ( *
( " 0
*
G ! * *
< 0 89 ( 2 (
( H (
. H ( 5( " H$ " =
= 0VT+- "
' ( * ( 2( /
A % : 17 C 1
: 17 C 1
$ 0 K < 8
- %
,3 + 7 ! 3.
, . D
A% + @2B!B +$$
K< D , .
D , .
0 +$$
A +
+ ,3; 3.
0 K < 8
0VT+- $ 0!> ?( ' * * 3 ( " > ?
' 3 3 /
C 1
$ 0 D , U- $ % .
$ 0 K< D , U- % .
0 C 1
0VT+- 2 ( "
T " T = + 2 * 2"0 /
A % * ! * !
$0 C 1
$ 0 D , U- $ % .
* $ G U %
GK
#K1 , 7G U 73 % 3.
U-2 $ 0 ,G U .
0 D
$ 0 K< D , U- % .
$ 0 K< U , %- % .
#K1 , 7K< U 73 % 3.
K< U , $ , U..
0 K< D
0 C 1
@? * % $! ?@
= + 0 6 !%9
= + 0 6 !%9
= + 0 6 0 $!%9
0 * Z* + 7 [ $$+
% % ,.
$ 0 % , % %.
@? 0 0 ?@
% % ,.
Z
@? + 0 * $ + *+ % 0 + 0$
? K$ M +$7 + *+ % 0 % 0 + % , . B#B
? + *+ % IJ 0 0 + % , . BDB
? + $ 0 + + 0 +
?@
% % %
$$+ % 2 * + @? / 7 % % + 0$
?@
* , % . Z @? 0 + + + 0
?@
% 2* +
% %
[
2 ,. @? * $ * 0 0M K ?@
* , \ : . Z @? + 0 * $ $ *+ % ?@
% 2
% %2, % . , \ :;;.
, % .
[
, % . , \ :;;. @? +J $ + ?@
[
$ 0 % , % %.
Z
* , %7 0$ .
**+ %, 0$ .
[
B0 X /
52
H
H IT
GD
H
5
H$
5& =
=
2 ( (" *
* * ' ( )
0 * ( ( *
" /
7 ( (
+ / ( ( (
2
6
0 89( . 5 &
/
3 X <+-6 &
'
3 3
= " 3
) $ /
A % /
A % * ! !/ $
0 !
A
!! * ! !/ $ ! / G
K + U 0+ $ 0 $ 0
* $ 0 , - . 8$$+
* $ % 0 , - . 8$$+
* $ U 0+ , - .
K + U 0+
$ 0 % U 0+ , A U 0+ - K + U 0+
G8
- .
$ 0 : % U 0+ ,1+0 U 0+ - $ K + U 0+
A U 0+ - K + U 0+ - .
$ 0 % U 0+ , - .
* $ * , - . / ! 00
0 0 !
A % /
55 % + $ 50 * $
55 $ 0 RGKK "
55 < + *$ 0 ! 0
55 0 A % 355 ???3 % *$++$A $ 0 * $ !
0 ! !
/ G 8 - $ -2 "''
/ G;K - $ -2 "'
/ G - $ -2 "
/ G/ GE - $ -2 "
/ G # - $ -2 " "
/ G # - $ -2 " &
/ GU<K - $ -2 " )
/ G - $ -2 " H
/ GD - $ -2 " (
/ GK K - $ -2 " F
/ GW< - $ -2 " '
/ G</ - $ -2 "
/ G</ " - $ -2 &
/ G 1;K - $ -2 &
/ G K - $ -2 & "
/ G # - $ -2 & &
/ GK 1; - $ -2 & )
0 0 ! !
' /
# R 1 /
$ 0 # R 1
$ 0 /K< /
U 0+ , /K< / .
0 # R 1
!!!
0 # R 1 /
# $0
R 1 /
$ 0 $0 # R 1
$ 0 /K< /
!!!
A % 0 ! 7 0 ! ! 7 # R 1 /
0 ! 7 0 ! ! 7 # R 1 /
$ 0 R #K 1
!!!
!!!
% U 0+ ,# R 1 ! /K< / Q //7 1#8 .
!!!
( J J" F 9K
Q \ B (0(V (0;< "& ( G] ; 0 HV "
.:CCG5; ( :( G( 9
4C
Q:\ B (0(V (0;2 " 0 ; 2 * " . 8895; :(K( ( :
QG\ B H0 ( 1 ; 2 ! ; H@ . 88C5; E
QE\ 0 1 .0 15 . 8895
UNIDAD 4:Programación en RT
SUPER VIDEO:
[Link]
aEIE
Descripción general
Se define un programa en tiempo real como: “Un programa en el cual las
correctas operaciones dependen de los resultados lógicos computacionales y del
tiempo que se tarda en producir estos resultados."
Debido a los requerimientos especiales de rendimiento y fiabilidad
demandados por los sistemas en tiempo real, es importante la elección de un
lenguaje de programación.
Pueden utilizarse con eficacia muchos lenguajes de programación de propósito
general (C, Java, Pascal, Modula -2…) para aplicaciones de tiempo real.
Aunque existe una clase de lenguajes específicos para este tipo de
aplicaciones denominados lenguajes de tiempo real (Ada, Jovial, HAL/S, Chill y
otros).
Para que un lenguaje sea apropiado para tiempo real debe tener todas las
características ya mencionadas en la unidad 1 (características de un sistema en
tiempo real). Pero podemos destacar algunas:
● La capacidad de multitarea.
● Características modernas de programación que ayuden a asegurar la
corrección del programa (menos errores).
● Manejo de números reales (obligatorio).
● Manejo inteligente de las interrupciones (muy muy importante).
Polling
Es una técnica basada en un mecanismo de sondeo continuo, el cual consiste
en que el mismo microcontrolador se encarga de monitorear el estado o
información de un evento.
Tiene un inconveniente, los eventos no pueden ser monitoreados en forma
periódica, ya que el microcontrolador consume tiempo en ejecutar diversas
instrucciones que lo distrae de dicha actividad de sondeo, resulta una técnica
ineficiente.
La solución a esta problemática ha sido la incorporación de un dispositivo
controlador de interrupciones para atender cualquier tiempo de interrupción.
Sistema reactivo por clock
Este sistema tiene 2 variantes, con sincronismo uniforme y con sincronismo
no uniforme:
En estos últimos dos casos se dan tips de penalización: se penaliza con un Ti cuando
llega una irq (interrupción), se llama a una subrutina, por cada parámetro que se pasa
en la subrutina, o retorna al programa principal.
Existen también modos en que la interrupción irq es disparada:
● LOW: esta constante indica que se activa la interrupción cuando hay un
estado LOW (0V) en el pin asociado al tipo de interpretación.
● CHANGE: se dispara la interrupción cuando el pin cambia de valor de
voltaje o estado.
● RISING: flanco de subida: cuando hay una transición de bajo (LOW)
hacía alto (HIGH), se genera una solicitud de interrupción.
● FALLING: flanco de bajada: cuando existe una transición de alto (HIGH)
hacia bajo (LOW), entonces se activa la interrupción.
Sistema reactivo