Está en la página 1de 10

Administración de Procesos

Monitores
Sistemas Operativos en Tiempo Real
(RTOS, Real-Time Operating Systems)

Otoño 2022 TecNM - IT Chihuahua 1


Misión a Marte
• Learn About the Rover - NASA Mars

Otoño 2022 TecNM - IT Chihuahua 2


Monitores
• Se espera que los lenguajes de programación
proporcionen mejores interfaces a los
desarrolladores para soportar sus sistema.
• El nombre común que se suele dar a las diversas
implementaciones de alto nivel es el de
MONITORES.
• Los monitores fueron propuestos por Brinch
Hansen (1939-2007), como una estructura base
o primitiva en los lenguajes de programación, que
consta de una colección de procedimientos,
variables y estructuras de datos agrupadas en un
módulo o paquete especial.
Otoño 2022 TecNM - IT Chihuahua 3
Implementaciones de Monitores
POSIX C++, Variables de condición (Condition
Variable Atributes)
– Son objetos que se pueden usar para bloquear
THREADS hasta el momento en que una condición
particular sea verdadera.
– Siempre se usan en conjunto con mutex que protegen
el uso de la variable de condiciones de competencia.
– Así, con una variable de condición, un thread se puede
bloquear hasta que se cumpla una condición.
– La condición se evalúa en una RC propia, protegida
por un mutex.
Otoño 2022 TecNM - IT Chihuahua 4
Comunicación entre Procesos
Señales
• Son mecanismos que se usan para comunicar
entre si a los procesos, interrumpiendo el flujo
normal de la ejecución del proceso que recibe
la señal que dirige la forma en que el proceso
debe atender dicha interrupción.

Otoño 2022 TecNM - IT Chihuahua 5


Comunicación entre Procesos
Alarmas
• Mecanismos análogos a las señales.
• Demoran la señal por un periodo de tiempo, el
cual se especifica al enviarla, y envían un solo
tipo de señal (en POSIX es SIGALRM).
• Básicamente son tiempos de espera de todo tipo
de eventos.
• Un hilo de ejecución se puede bloquear sin
requerir de otro que lo reactive, ya que el mismo
puede programar la alarma.
Otoño 2022 TecNM - IT Chihuahua 6
Alarmas

https://linuxhint.com/sigalarm_alarm_c_language/

Otoño 2022 TecNM - IT Chihuahua 7


Alarmas (ejemplo)
#include<stdio.h>
#include<unistd.h>
#include<signal.h>

void sig_handler(int signum) {


printf("Inside handler function\n");
}

int main(){
signal(SIGALRM,sig_handler); // Register signal handler
alarm(2); // Scheduled alarm after 2 seconds
for(int i=1;;i++){
printf("%d : Inside main function\n",i);
sleep(1); // Delay for 1 second
}
return 0;
} Otoño 2022 TecNM - IT Chihuahua 8
Pipes (Tuberías)
• En la programación de computadoras especialmente en los
sistemas operativos UNIX, una pipe es una técnica para pasar
información de un proceso de programa a otro. A diferencia de
otras formas de comunicación entreprocesos (IPC), una pipe solo es
de comunicación unidireccional.
• Básicamente, una pipe pasa un parámetro como la salida de un
proceso a otro proceso que lo acepta como entrada. El sistema
retiene temporalmente la información canalizada hasta que el
proceso de recepción la lee.
• Con un shell de UNIX (la interfaz de comando interactiva de UNIX),
se especifica una pipe en una línea de comando como una barra
vertical simple (|) entre dos secuencias de comando. La salida o el
resultado de la primera secuencia de comandos se utiliza como
entrada para la segunda secuencia de comandos. La llamada al
sistema de pipes se utiliza de forma similar dentro de un programa.

Otoño 2022 TecNM - IT Chihuahua 9


Pipes (Tuberías)
• Para la comunicación bidireccional entre
procesos, se pueden configurar dos pipes, una
para cada dirección. Una limitación de las pipes
para la comunicación entre procesos es que los
procesos que utilizan pipes deben tener un
proceso principal común (es decir, compartir un
proceso de inicio o apertura común y existir como
resultado de una llamada fork al sistema desde
un proceso principal).
• Una pipe es fija en tamaño y usualmente de al
menos 4,096 bytes.

Otoño 2022 TecNM - IT Chihuahua 10

También podría gustarte