Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Sistema Operativo de tiempo real QNX (página 2)




Enviado por latiniando



Partes: 1, 2

8. La Filosofía de QNX

Introducción

Las aplicaciones de tiempo real
dependen del sistema operativo
para manipular eventos
múltiples dentro de restricciones fijas de tiempo.

El sistema operativo
QNX es ideal para las aplicaciones de tiempo real. Proporciona
multitarea, planificación por prioridades con desalojo,
y rápido cambio de
contexto.

QNX también es notablemente flexible.
Desarrolladores pueden personalizar el sistema operativo
fácilmente para satisfacer las necesidades de su
aplicación. Desde la configuración del kernel en
unos módulos pequeños, a un sistema de
red amplia para
servir cientos de usuarios.

QNX logra su único grado de eficacia,
modularidad, y simplicidad a través de dos principios
fundamentales:

La arquitectura del
Microkernel de QNX

QNX consiste en un kernel pequeño a cargo de un
grupo de
procesos
cooperativos.

Un verdadero kernel

El Microkernel de QNX es muy pequeño y se dedica
a sólo dos funciones
esenciales:

  • Intercambio de mensajes: el Microkernel se ocupa de
    la asignación de ruta de todos los mensajes entre todos
    los procesos a lo largo de todo el sistema.
  • Planificación: el scheduler es una parte del
    Microkernel y se invoca siempre que un proceso
    cambie el estado
    como el resultado de un mensaje o una
    interrupción.

A diferencia de los procesos, el propio Microkernel
nunca se planifica para la ejecución o sea no participa en
el scheduling. En él se entra sólo como el
resultado directo de llamadas del kernel, ya sea de un proceso o de
una interrupción del hardware.

Los procesos del sistema

Todos los servicios de
QNX, excepto aquellos proporcionados por el Microkernel, se
manejan como procesos comunes. Una configuración de QNX
típica tiene los procesos de sistema
siguientes:

  • Administrador de procesos (Proc)
  • Administrador del sistema de archivos
    (Fsys)
  • Administrador de dispositivos (Dev)
  • Administrador de red (Net)

Drivers de dispositivos

Los drivers de dispositivos son procesos que protegen al
sistema operativo de tratar con todos los detalles requeridos
para soportar hardware
específico.

Agregar un nuevo driver a QNX no afecta al sistema
operativo. El único cambio que
usted necesita hacer a su ambiente de
QNX es iniciar el nuevo driver.

QNX como un sistema operativo de intercambio de mensajes
(IPC)

QNX fue el primer sistema operativo comercial de su tipo
para hacer uso del intercambio de mensajes como significados
verdaderos de IPC. QNX debe mucho de su poder,
simplicidad, y elegancia a la integración completa de éste
método
a lo largo de todo el sistema.

En QNX, un mensaje es un paquete de bytes que pasa de un
proceso a otro. QNX no le presta ningún significado al
contenido de un mensaje – los datos en un
mensaje tienen significado para el remitente del mensaje y para
su receptor, pero para nadie más.

IPC también proporciona medios para
sincronizar la ejecución de varios procesos. Sabiendo los
estados y prioridades de cada proceso, el Microkernel puede
realizar un scheduling sobre todos los procesos tan eficazmente
como sea posible para hacer el mayor la disponibilidad de
recursos de
CPU.

QNX como una red

Cualquier proceso en cualquier máquina en la red
puede hacer uso de cualquier recurso directamente en cualquier
otra máquina. De la perspectiva de la aplicación,
no hay ninguna diferencia entre un recurso local o remoto –
ningún medio especial necesita ser construido en las
aplicaciones para hacer uso de recursos remotos.
¡De hecho, un programa
necesitaría un código
especial para poder decir si
un recurso, como un archivo o el
dispositivo, estaba presente en la computadora
local o estaba en algún otro nodo en la red!

Los usuarios pueden acceder a los archivos en
cualquier parte en la red, aprovechar cualquier dispositivo
periférico, y ejecutar aplicaciones en cualquier
máquina en la red (siempre que ellos tengan la autoridad
apropiada). Los Procesos pueden comunicarse de la misma manera a
lo largo de la red entera.

SMP (Symmetric Multi-Processing)

SMP (Symmetric Multi-Processing) esta normalmente
asociado con sistemas
operativos como UNIX o NT. Estos
sistemas con
grandes kernels monolíticos tienden a ser bastante
complejos, el resultado de muchos años de desarrollo.
Puesto estos grandes kernels contienen la mayor parte de los
servicios del
sistema operativo, los cambios para soportar SMP son extensos,
generalmente introduciendo muchas modificaciones en el
código.

QNX por otro lado, contiene un microkernel muy
pequeño rodeado por procesos que actúan como
administradores de recursos, por ejemplo: sistemas de
archivos, I/O, red. Modificando solamente el microkernel
solamente, todos los demás servicios del sistema operativo
ganaran inmediatamente una ventaja de SMP sin necesidad de
cambios en el código. Si estos procesos son multihilo,
cada uno de sus hilos será distribuido en los procesadores
disponibles. Incluso en un servidor monohilo
puede verse beneficiado por SMP, debido a que su hilo será
ejecutado con mayor frecuencia.

Siguiendo la línea del microkernel de QNX, la
versión SMP solo añade unos kilobytes mas de
código. La versión actual permite bootear en un
sistema que conforme la especificación Intel para
multiprocesadores con hasta 8 procesadores
pentium.

9. El Microkernel

Introducción

El Microkernel de QNX es responsable de lo siguiente:

  • IPC – el Microkernel supervisa el ruteo de mensajes;
    también maneja otras dos formas de IPC: proxies y
    señales.
  • La comunicación de la red a bajo nivel – el
    Microkernel entrega todos los mensajes destinados a los
    procesos en otros nodos.
  • Scheduling de procesos – el scheduler del Microkernel
    decide qué proceso se ejecutará luego.
  • Manejo de interrupciones del primer nivel – todas las
    interrupciones de hardware y las fallas se rutean primero a
    través del Microkernel, luego se pasa al driver o al
    administrador del sistema.

La comunicación entre procesos

El QNX Microkernel apoya tres tipos esenciales de IPC:
mensajes, proxies y señales

  • Mensajes – la forma fundamental de IPC en QNX. Ellos
    proporcionan la
    comunicación síncrona entre procesos
    cooperativos dónde el proceso que envía el
    mensaje requiere acuse de recibo y potencialmente una
    contestación al mensaje.
  • Proxies – una forma especial de mensaje. Están
    especialmente preparados para notificación de eventos
    dónde el proceso que lo envía no necesita actuar
    recíprocamente con el destinatario.
  • Señales – una forma tradicional de IPC. Se
    utilizan para apoyar la
    comunicación entre procesos de forma
    asíncrona.

Proceso de sincronización

El intercambio de mensajes no solo permite a los
procesos pasarse datos entre
ellos, sino que también proporciona un medio de
sincronizar la ejecución de varios procesos que cooperan
mutuamente.

IPC por la red

Una aplicación de QNX puede hablar con un proceso
en otra computadora en
la red como si estuviera hablando con otro proceso en la misma
máquina. De la perspectiva de la aplicación, no hay
ninguna diferencia entre un recurso local y remoto.

Este grado notable de transparencia es posible por los
circuitos
virtuales (VC), qué son los caminos que el Administrador de
la Red proporciona para transmitir mensajes, proxies, y
señales por la red.

Scheduling de procesos

El scheduler del Microkernel toma las decisiones de
planificación cuando:

  • Un proceso se desbloquea.
  • El Quantum para el proceso corriente
    expira.
  • El proceso corriente se desaloja.

Prioridades de procesos

En QNX, a cada proceso se le asigna una prioridad. El
scheduler selecciona el próximo proceso para correr
mirando la prioridad asignada a cada proceso que está en
la cola de LISTOS (un proceso en la cola de LISTOS es uno capaz
de usar el CPU). El
proceso con la prioridad más alta se selecciona para
ejecutarse.

La cola de listos para seis procesos (A-F) qué
están LISTOS. Todos los otros procesos (G-Z) están
BLOQUEADOS. El proceso A está corriendo actualmente. Los
procesos A, B, y C están en la prioridad más
alta.

Las prioridades asignadas al rango de procesos son de 0
(el más bajo) a 31 (el más alto). Se hereda la
prioridad predefinida del padre a un proceso hijo.

Métodos de Scheduling

Para satisfacer las necesidades de varias aplicaciones,
QNX proporciona tres métodos de
planificación:

  • FIFO.
  • Round-robin.
  • Adaptativa.

Cada proceso en el sistema puede correr usando
cualquiera de estos métodos.

Recuerde que estos métodos de scheduling
sólo se aplican cuando dos o más procesos que
comparten la misma prioridad están LISTOS (es decir los
procesos están compitiendo directamente entre sí).
Si un proceso de prioridad superior se pone en LISTO, desaloja
todos los procesos de baja-prioridad inmediatamente.

Planificación FIFO

En FIFO, un proceso seleccionado para correr
continúa ejecutándose hasta que:

  • Voluntariamente abandona el control (por
    ejemplo hace cualquier llamada al kernel).
  • Es desalojado por un proceso de prioridad
    superior.

Dos procesos que corren a la misma prioridad pueden usar
FIFO para asegurar la exclusión mutua a un recurso
compartido. Ningún proceso será desalojado por el
otro mientras se está ejecutando.

Planificación Round-robin

En Round-robin un proceso seleccionado para correr
continúa ejecutando hasta que:

  • Voluntariamente abandona el control.
  • Es desalojado por un proceso de prioridad
    superior.
  • Consume su quantum.

Un quantum es la unidad de tiempo asignada a cada
proceso. Una vez que consume su quantum, un proceso se desaloja y
el próximo proceso LISTO al mismo nivel de prioridad se le
da el control. Un quantum es de 50 milliseconds.

Planificación adaptativa

En la planificación adaptativa, un proceso se
comporta como sigue:

  • Si el proceso consume su quantum (es decir no
    bloquea), su prioridad está reducida por 1. Esto se
    conoce como el decaimiento de prioridad. Notar que un el
    proceso "descendente" no continuará disminuyendo, aun
    cuando consume otro quantum sin bloquear; dejará caer la
    prioridad sólo un nivel por debajo de su prioridad
    original.
  • Si el proceso bloquea, revierte inmediatamente a su
    prioridad original.

Usted puede usar la planificación adaptativa en
ambientes dónde los procesos son del tipo background en su
mayoría y están compartiendo la computadora
con los usuarios interactivos.

La planificación adaptativa es el método de
planificación predefinido para programas creados
por la SHELL.

Latencia de interrupciones

La latencia de la interrupción es el tiempo de la
recepción de una interrupción del hardware hasta
que se ejecuta la primera instrucción de un manipulador de
interrupción de software. QNX deja las
interrupciones habilitadas casi todo el tiempo, para que la
latencia de interrupción sea insignificante. Pero ciertas
secciones críticas de código requieren que se
desactive temporalmente las mismas. El máximo tiempo de
desactivación de las interrupciones define la latencia de
interrupción del peor caso, en QNX es muy
pequeño.

La latencia de interrupción del peor caso
será el tiempo más largo en que QNX desactiva las
interrupciones de CPU.

La tabla siguiente muestra la
latencia de interrupción típica cronometrada (Til)
para un rango de procesadores:

Latencia de interrupciones

Procesador:

3.3 microsec

166 Pentium de MHz

4.4 microsec

100 Pentium de MHz

5.6 microsec

100 MHz 486DX4

22.5 microsec

33 MHz 386EX

Latencia del scheduling

Es el tiempo entre la terminación del manipulador
de interrupción y la ejecución de la primera
instrucción de un proceso del driver. Esto significa el
tiempo que toma cambiar el contexto del proceso actualmente
ejecutando y restaurar el contexto del proceso del driver
requerido. Aunque es más grande que la latencia de la
interrupción, este tiempo también es pequeño
en un sistema de QNX.

Latencia de scheduling

Procesador:

4.7 microsec

166 Pentium de MHz

6.7 microsec

100 Pentium de MHz

11.1 microsec

100 MHz 486DX4

74.2 microsec

33 MHz 386EX

10. El
Administrador del Procesos

Responsabilidades del Administrador de
procesos

El Administrador de Procesos trabaja estrechamente con
el Microkernel para proporcionar los servicios del sistema
operativo esenciales. Aunque comparte el mismo espacio de
dirección con el Microkernel, el
Administrador de Procesos corre como un verdadero proceso, por lo
que también el Microkernel realiza scheluding sobre
él.

El Administrador del Procesos es responsable de crear
nuevos procesos en el sistema y manejar los recursos más
fundamentales asociados con un proceso. Estos servicios son todos
proporcionados vía mensajes. Por ejemplo, si un proceso
corriente quiere crear un nuevo proceso, envía un mensaje
que contiene los detalles del nuevo proceso a ser creado. Note
que desde que los mensajes pueden enviarse a través de la
red, usted puede crear un proceso fácilmente en otro nodo
enviando el mensaje de creación de proceso al
Administrador del Procesos en ese nodo.

Primitivas de creación de procesos

QNX apoya tres primitivas:

  • Fork ()
  • Exec ()
  • Spawn ()

Fork () y exec () se definen por POSIX, mientras que la
implementación de spawn() es única a
QNX.

  • Fork () crea un nuevo proceso que es una imagen exacta
    del proceso que la invocó. El nuevo proceso comparte
    el mismo código que el proceso que invocó la
    primitiva y hereda una copia de los datos del
    mismo.
  • Exec () reemplaza la imagen del
    proceso que la invoca con una nueva imagen del
    mismo.
  • Spawn() crea un nuevo proceso como un hijo del
    proceso invocante. Puede evitar la necesidad de fork () y
    exec (), produciendo un medio más rápido y
    más eficaz para crear nuevos procesos. La primitiva
    spawn() puede crear procesos en cualquier nodo en la
    red.

El ciclo de vida
de un proceso

Un proceso pasa por cuatro fases:

  • Creación
  • Carga
  • Ejecución
  • Terminación

Creación

Crear un proceso consiste en asignar un PID para el
nuevo proceso y preparar la información que define el ambiente del
nuevo proceso. La mayoría de esta información se hereda del padre del nuevo
proceso.

Carga

La carga de imágenes
del proceso se hace por un hilo del LOADER. El código del
LOADER reside en el Administrador del Procesos, pero el hilo
corre bajo el PID del nuevo proceso. Esto permite al
Administrador de Procesos atender otras demandas mientras los
programas se
cargan.

Ejecución

Una vez que el código del programa se ha
cargado, el proceso está listo para la ejecución;
empieza a competir con otros procesos por los recursos de CPU.
Nótese que todos los procesos se ejecutan concurrentemente
con sus padres. Además, la muerte de
un proceso padre no causa la muerte de sus
procesos hijos automáticamente.

Terminación

Un proceso se termina de dos maneras:

  • Por una señal cuya acción cause la
    terminación deliberada del proceso.
  • El proceso invoca exit (), explícitamente o
    por defecto la acción al volver al principal
    ()

La terminación involucra dos fases:

  1. Un hilo de terminación en el Administrador del
    Procesos se ejecuta. Este código está en el
    Administrador del Procesos pero el hilo corre con el PID del
    proceso a terminar. Este hilo cierra todos los descriptores de
    archivo
    abiertos y libera lo siguiente:
  • Cualquier circuito virtual sostenido por el
    proceso.
  • Toda la memoria
    asignada al proceso.
  • Cualquier nombre simbólico.
  • Cualquier número de dispositivo
    (Administrador de I/O).
  • Cualquier manipulador de
    interrupciones.
  • Cualquier proxie.
  • Cualquier cronómetro.

Después de que el hilo de terminación se
corre, la notificación de terminación del proceso
se envía al proceso padre (esta fase corre dentro del
Administrador del Procesos).

Si un proceso se termina por la entrega de una
señal de terminación y la utilidad del
dumper está corriendo, se genera un vuelco de memoria.

Estados del proceso

Un proceso siempre está en uno de los estados
siguientes:

  • LISTO: el proceso es capaz de usar el CPU (es decir
    no está esperando por cualquier evento a
    ocurrir).
  • BLOQUEADO: el proceso está en uno de los
    siguientes estados bloqueados:
    • Enviar-bloqueado.
    • Recibir-bloqueado
    • Contestación-bloqueado
    • Señal-bloqueado
    • Semáforo-bloqueado
  • RETENIDO: el proceso ha recibido una señal de
    SIGSTOP. Hasta que se remueva del estado
    RETENIDO, al proceso no se le permite usar el CPU; la
    única manera de quitarlo del estado
    RETENIDO es enviarle una señal de SIGCONT o terminar el
    proceso vía una señal.
  • ESPERA –bloqueado: el proceso ha emitido una
    llamada WAIT () o WAITPID () para esperar por el estado de
    uno o más de sus procesos hijos.
  • MUERTO – el proceso ha terminado pero es incapaz de
    enviar su estado de salida a su padre porque el padre no ha
    emitido un WAIT () o WAITPID (). UN proceso MUERTO tiene un
    estado, pero la memoria
    que ocupó una vez se ha liberado. Un proceso MUERTO
    también es conocido como un proceso zombi.

Nombres simbólicos para procesos

En QNX, la solución es permitir a los procesos
darse un nombre simbólico. En el contexto de un solo nodo,
los procesos pueden registrar este nombre con el Administrador
del Procesos en el nodo dónde ellos se están
ejecutando. Otros procesos pueden pedirle el PID asociado a ese
nombre entonces al Administrador del Procesos.

Timers

Administración de timers

En QNX, la administración de tiempo se basa en un
cronómetro del sistema mantenido por el sistema operativo.
El cronómetro contiene Coordenadas de Tiempo Universal
(UTC) relativo a 0 horas, 0 minutos, 0 segundos, el 1 de enero de
1970.

Facilidades avanzadas

Un proceso también puede crear timers, puede
armarlos con un intervalo de tiempo, y puede quitar los mismos.
Los medios de
cronometrado avanzados son basados en POSIX Std
1003.1b.

La precisión del cronómetro

Usted puede setear la precisión de los
cronómetros usando la utilidad del
ticksize o la función
qnx_ticksize (). Usted puede ajustar la precisión de 500
microseconds a 50 milliseconds.

Manipuladores de interrupciones

Ellos reaccionan a las interrupciones del hardware y
manejan el traslado de bajo nivel de datos entre la computadora y
los dispositivos externos.

Son empaquetados físicamente como la parte de un
proceso QNX normal (por ejemplo un Driver), pero ellos siempre
corren asincrónicamente con el proceso asociados con
ellos.

Un manipulador de interrupciones:

  • Se entra con una Far Call, no directamente por la
    propia interrupción (esto puede escribirse en C, en
    lugar de assembler).
  • Se ejecuta incluido en el contexto del proceso, por
    lo que tiene acceso a todas las variables
    globales del proceso.
  • Corre con las interrupciones habilitadas, pero solo
    se desaloja si una interrupción de prioridad superior
    ocurre.
  • No debería hablar directamente con la
    interrupción de hardware 8259 (el sistema operativo se
    encarga de esto).
  • Debe ser tan corto como sea posible.

Varios procesos se pueden atar a la misma
interrupción (si es soportado por el hardware). Cuando una
interrupción física ocurre, se le
dará el mando a cada manipulador de interrupción de
a uno a la vez.

11. I/O
Namespace

El espacio de nombres de I/O

Los recursos de I/O no están construidos en el
Microkernel de QNX. Los servicios de I/O son proporcionados por
procesos que pueden ejecutarse dinámicamente mientras el
sistema está corriendo. El filesystem de QNX es optativo,
el espacio del pathname no se construye en el filesystem como en
la mayoría de los sistemas monolíticos.

Los prefijos y regiones de autoridad

Con QNX, el espacio del pathname es dividido en regiones
de autoridad. Cualquier proceso que desea proporcionar los
servicios de I/O orientado a archivos registrará un
prefijo con el Administrador del Procesos que define la
porción del espacio de nombres que él desea
administrar (es decir su región de autoridad). Estos
prefijos constituyen un árbol de prefijos que se mantiene
en la memoria en cada
computadora que corre QNX.

Administrador prefijos I/O

Cuando un proceso abre un archivo, el pathname del
archivo es aplicado contra el árbol de prefijos para
direccionar el OPEN () al Administrador recursos I/O apropiado.
Por ejemplo, el Administrador de Dispositivos de carácter
(Dev) normalmente registra el prefijo /dev. Si un proceso llama
OPEN () con /dev/xxx, una concurrencia con el prefijo de /dev
ocurrirá y OPEN () se redireccionará a Dev (su
dueño).

Network root

QNX apoya el concepto de
súper o network root que te permiten aplicar un pathname
contra el árbol de prefijos de un nodo específico.
Esto también permite fácilmente que acceder a los
archivos y dispositivos que no están en el espacio de
nombres de su nodo. Por ejemplo, en una red de QNX típica
los caminos siguientes se trazarían:

  • /dev/ser1 el puerto de serie local
  • / /10/dev/ser1 el puerto de serie en nodo
    10
  • / /0/dev/ser1 el puerto de serie local
  • / /20/usr/dtdodge/test se
    archiva en nodo 20

Note que / /0 siempre se refieren al nodo
local.

Alias

Una segunda forma de prefijo, es conocida como un alias,
es una simple substitución de un string para un prefijo.
Un alias es de la forma:

Prefijo =string reemplazante

Por ejemplo, asuma usted está corriendo en una
máquina que no tiene un filesystem local (no hay
ningún proceso que para administrar" /"). Sin embargo hay
un filesystem, en otro nodo (diga 10) que usted desea acceder
como" /". Usted logra esto usando el prefijo del seudónimo
siguiente:

/ = / /10 /

Creando nombres del dispositivo especiales

Usted también puede usar alias para crear nombres
de dispositivos especiales. Por ejemplo, si un spooler de
impresión estuviera corriendo en el nodo 20, usted puede
poner un pathname de la copiadora local como un alias a este de
la siguiente forma:

/dev/printer=//20/dev/spool. Cualquier demanda para
abrir /dev/printer se dirigirá por la red al spooler
real.

Espacio de nombres del descriptor de archivos

Una vez que un recurso de I/O se ha abierto, un espacio
de nombres diferente entra en acción. OPEN () retorna un
entero llamado descriptor del archivo (FD) qué se usa para
dirigir todas las demandas de I/O a ese Administrador.

El espacio de nombres de descriptor de archivos es
completamente local a cada proceso. El Administrador usa una
combinación de un PID y FD para identificar la estructura de
control asociada con él la llamada OPEN () anterior. Esta
estructura se
llama Open Control Block (OCB) y se contiene dentro del
Administrador de I/O.

El diagrama
siguiente muestra a un
Administrador de I/O que toma algún PID, FD
mapeándolos y trazándolos a OCB.

El PID y FD trazan a un OCB de un
Administrador de I/O.

Open Control Blocks (OCB)

El OCB contiene la información activa sobre el
recurso abierto. Por ejemplo, el filesystem guarda el corriente
punto de seek dentro del archivo dentro de esta estructura. Cada
open () crea un nuevo OCB. Por consiguiente, si un proceso abre
el mismo archivo dos veces, cualquier llamada al lseek () usando
un FD no afectarán el punto seek del otro FD.

Lo mismo es válido para la apertura del mismo
archivo por diferentes procesos.

El diagrama
siguiente muestra dos procesos, en cuál un proceso abre el
mismo archivo dos veces, y el otro lo abre una vez. No hay
ningún FD compartido.

Muchos FD en uno o más procesos pueden referirse
al mismo OCB. Esto es cumplido por dos medios:

  • Un proceso puede usar dup (), dup2 (), o fcntl ()
    funciones
    para crear un descriptor de archivo duplicado que se refiere al
    mismo OCB.
  • Cuando un nuevo proceso se crea vía fork (),
    spawn (), o exec (), todos los descriptores de archivo abiertos
    se heredan por defecto por el nuevo proceso; estos descriptores
    heredados se refieren al mismo OCB como el descriptor de
    archivo correspondiente en el proceso padre.

Cuando varios FD se refieren al mismo OCB, entonces
cualquier cambio en el estado del OCB se ve inmediatamente por
todos los procesos que tienen el descriptor de archivo unido al
mismo OCB.

El diagrama siguiente muestra dos procesos en
cuál uno abre un archivo dos veces, entonces hace un dup
() para conseguir un tercero. El proceso crea a un hijo que
hereda todos los archivos abiertos.

Usted puede prevenir que un descriptor de archivo pueda
heredarse cuando usted llama a un SPAWN () o exec () llamando a
la función fcntl ()y seteando la bandera de
FD_CLOEXEC.

12. El Administrador del
Filesystem

Introducción

El Administrador de Filesystem (Fsys) proporciona un
método estándar de guardar y acceder a los datos en
los subsistemas de discos. Fsys es responsable de ocuparse de
todas las demandas para abrir, cerrar, leer, y escribir los
archivos.

¿Qué es un archivo?

En QNX, un archivo es un objeto que puede escribirse,
leerse, o ambos. QNX implementa seis tipos de archivos; de los
cuales cinco de éstos son manejados por Fsys:

  • Archivos regulares – consisten en secuencia de bytes
    que pueden ser accedidas de forma aleatoria y no tiene ninguna
    otra estructura predefinida.
  • Los directorios – contienen la información
    necesaria para localizar los archivos regulares; también
    contienen información del estado y los atributos para
    cada archivo regular.
  • Simbolic links (accesos directos) – contienen un
    pathname a un archivo o directorio que será accedido en
    lugar del archivo simbolic link. Estos archivos se usan a
    menudo para proporcionar múltiples caminos a un solo
    archivo.
  • Pipes y FIFOs – sirven como canales I/O entre
    procesos que cooperan.
  • Archivos de bloques especiales – refiere a los
    dispositivos, como las unidades de disco, cintas, y particiones
    de la unidad de disco. Estos archivos normalmente se acceden de
    una manera que esconde las características del hardware del
    dispositivo de las aplicaciones.

El sexto tipo de archivo, el archivo especial de
carácter, se maneja por el Administrador de
Dispositivos.

Fecha y time stamps

Fsys mantiene cuatro tiempos diferentes por cada
archivo:

  • la fecha de último acceso (lea)
  • La fecha de la última escritura.
  • la fecha de última
    modificación
  • la fecha de creación (único a
    QNX)

Acceso a archivos

El acceso a los archivos regulares y los directorios son
controlados por bits de modo guardados en el inode del archivo..
Hay tres calificadores de acceso:

  • Usuario únicamente.
  • Grupo únicamente.
  • Otros.

Un proceso también puede correr con el user ID o
el group ID de un archivo en lugar de aquellos de su proceso
padre. El mecanismo que permite esto está llamando el
setuid ( setea el user ID en tiempo de ejecución)) y
setgid (el Group ID).

Archivos regulares y directorios

Archivos regulares

QNX ve un archivo regular como una secuencia accesible
de bytes en forma aleatoria que no tienen una estructura interior
predefinida. Los programas de aplicación son responsables
para entender la estructura y contenido de cualquier archivo
regular.

Los directorios

Un directorio es un archivo que contiene entradas de
directorio. Cada entrada de directorio asocia un nombre de
archivo con un archivo. Un nombre de archivo es el nombre
simbólico que permite identificar y acceder a un archivo.
Un archivo puede identificarse por más de un nombre de
archivo.

Los funcionamientos del directorio

El Administrador del Filesystem impone algunas
restricciones en las operaciones que
usted puede realizar en un directorio. Específicamente,
usted no puede abrir un directorio para escribir en
él.

Operaciones sobre directorios

Para leer las entradas del directorio, usted usa un
juego de
funciones POSIX definidas que proporcionan el acceso a las
entradas del directorio en una forma independiente al SO. Estas
funciones incluyen:

  • opendir ()
  • readdir ()
  • rewinddir ()
  • closedir ()

Extends

En QNX, se guardan archivos regulares y archivos del
directorio como una sucesión de extends. Un extend es un
conjunto de bloques consecutivos en el disco.

Donde se guardan los extends

Archivos que tienen sólo un extend almacenan la
información del mismo en la entrada del directorio. Pero
si más de un extend se necesita para almacenar el archivo,
la información de éste se guarda en uno o
más bloques extends anidados. Cada bloque extend puede
sostener información de localización para 60
extends.

Un archivo que consiste en múltiples regiones
consecutivas en un disco – llamadas extends en
qnx.

Extendiendo archivos

Cuando el Administrador de Filesystem necesita extender
un archivo cuyo último extend está completo,
intenta primero extender el último extend, aun cuando sea
sólo por un bloque. Pero si éste no puede
extenderse, una nuevo extend es agregado.

Para asignar nuevos extends, el Administrador del
Filesystem usa la política " First
Fit". Una tabla especial en el Administrador del Filesystem
contiene una entrada para cada bloque representado en el archivo
"/. bitmap" (este archivo se describe en la sección. Cada
entrada define el extend libre inmediato más grande en el
área definida por su bloque correspondiente. El
Administrador del Filesystem escoge la primera entrada en esta
tabla, lo bastante grande para satisfacer la demanda para
un nuevo extend.

Links e Inodes

En QNX, los archivos de datos pueden ser los
referenciados por más de un nombre. A cada nombre de
archivo se lo llama link. (Hay dos tipos de links: links duros a
los que nosotros simplemente nos referimos como "links" y los
simbolic links).

Para soportar links para cada archivo, el nombre de
archivo está separado de la información que
describe al archivo. La información que no pertenece al
nombre de archivo se guarda en una tabla de almacenamiento
llamada inode ( "nodo de información").

Si un archivo tiene sólo un link (es decir un
nombre de archivo), la información del inode se guarda en
la entrada del directorio para el archivo. Si el archivo tiene
más de un link, el inode se guarda como un registro en un
archivo especial nombrado / .inodes, y la entrada del directorio
del archivo que apunta al registro del
inode.

Usted sólo puede crear un link a un archivo si el
archivo y el link están en el mismo filesystem.

El mismo archivo es el referenciado por
dos links llamados "more" y "less."

Hay otras dos situaciones en que un archivo puede tener
una entrada en el archivo de /.inodes:

  • Si el filename de un archivo es más largo que
    16 caracteres, la información del inode se guarda en el
    archivo / .inodes, haciendo lugar para un filename de 48
    caracteres en la entrada del directorio.
  • Si un archivo tiene más de un link y todos los
    links menos uno han sido quitados, el archivo continúa
    teniendo un archivo separado / .inodes en la entrada del
    mismo.

Removiendo links

Cuando se crea un archivo se le da una cuenta de links
igual a uno. A medida que se agregan links al archivo, esta
cuenta de links se incrementa; cuando se remueven links la cuenta
se decrementa. El espacio que ocupa en disco el archivo no puede
ser liberado a menos que la cuenta de links sea igual a cero y
que todos los programas que usan el archivo lo hayan cerrado.
Esto permite que un archivo abierto pueda seguir siendo utilizado
aun cuando se hayan removido todos los links.

Simbolic Links

Es un archivo especial que tiene un pathname como dato.
Cuando se nombra en una demanda de I/O – por Open(), por ejemplo
– la parte del pathname del link se reemplaza por los "datos" del
simbolic link y el path se reevalúa. Los simbolic links
son medios flexibles de indirección del pathname y se usan
a menudo para proporcionar caminos múltiples a un solo
archivo. Al contrario que los links duros, estos pueden cruzar
filesystems y también pueden crear links a
directorios.

/ /1/usr/eric/src/test.c–> /
/1/usr/src/game.c

El PID y FD trazan a un OCB de un
Administrador de I/O.

Recuerde que quitando un link simbólico
actúa sobre el link, no sobre el target.

Ya que los simbolics links pueden apuntar a directorios,
las configuraciones incorrectas pueden producir problemas como
links de directorios circulares. Para recuperarse de las
referencias circulares, el sistema impone un límite en el
número de saltos

Pipes

Un pipe es un archivo anónimo que sirve como un
canal de I/O entre dos o más procesos que cooperan – un
proceso escribe en el pipe y el otro lee del mismo. El
Administrador del Filesystem cuida el buffering de los
datos.

Normalmente se usan pipes cuando dos procesos quieren
correr en paralelo, con datos que se mueven de un proceso al otro
en una sola dirección. (Si la comunicación es
bidireccional deben usarse mensajes)

Performance del Administrador de Filesystem

El Administrador de Filesystem tiene varias características que contribuyen a que el
acceso al disco sea de alto rendimiento:

  • Método de búsqueda del ascensor para el
    seek
  • Cache de buffer
  • multi-threading
  • Prioridad que maneja el usuario
  • Archivos temporales
  • Ramdisks

Método de búsqueda del
ascensor.

Minimiza el tiempo global de seek para leer o escribir
los datos de o al disco. Las demandas de I/O son ordenadas de tal
forma que todas puedan ser atendidas con una sola barrida del
cabezal del disco, de la dirección más baja del
disco a la más alta.

Cache de buffer

Es un buffer inteligente entre el Administrador del
Filesystem y el driver del disco. El caché de buffer
intenta guardar bloques del filesystem para minimizar el
número de veces que el Administrador del Filesystem tiene
que acceder el disco. Por defecto, el tamaño del
caché es determinado por la memoria total del sistema,
pero usted puede especificar un tamaño diferente
vía una opción a Fsys.

Las operaciones de
lectura son
síncronas. Las escrituras, por otro lado, son normalmente
asíncronas. Cuando los datos entran en el caché, el
Administrador del Filesystem avisa al cliente que los
datos fueron escritos. Los datos se escriben lo más pronto
posible al disco, típicamente en menos de cinco
segundos.

Las aplicaciones pueden modificar la conducta de las
escrituras en un comportamiento
de archivo-por-archivo. Por ejemplo, una aplicación de
base de datos
puede causar que todas las escrituras para un archivo dado deban
ser realizadas sincrónicamente. Esto aseguraría un
nivel alto de integridad del archivo ante problemas
potenciales de hardware o suministro de energía que
podrían dejar una base de datos en
un estado incoherente.

Multi-threading

El Administrador del Filesystem es un proceso
multi-hilo. Es decir, puede manejar varios pedidos de I/O
simultáneamente. Esto le permite al Administrador del
Filesystem totalmente aprovecharse del potencial del paralelismo
de la siguiente forma:

  • Acceso varios dispositivos en paralelo.
  • Satisfacer demandas de I/O desde el caché de
    buffer mientras otras peticiones que acceden al disco son
    atendidas.

La prioridad del usuario

El Administrador del Filesystem puede tener su prioridad
manejada por la prioridad de los procesos que le envían
mensajes. Cuando el Administrador del Filesystem recibe un
mensaje, se le asigna la prioridad del proceso que realizó
la petición.

Ramdisks

El Administrador de Filesystem tiene una capacidad de
ramdisk integrada que permite que 8M de memoria puedan ser usados
como un disco simulado

El Administrador del Filesystem puede desviase del
caché porque el ramdisk esta incorporado a él y no
necesita un driver.

La robustez de Filesystem

El filesystem de QNX logra un throughput alto sin
sacrificar la fiabilidad. Esto se cumple de varias
maneras.

Mientras la mayoría de los datos se almacena en
el caché y son escritos después de un retraso
corto, los datos críticos del filesystem se escriben
inmediatamente. Las actualizaciones de los directorios, inodes,
los bloques extends, y los bitmap se envían forzosamente
al disco para asegurar que la estructura del filesystem en el
disco nunca sea incoherente.

La recuperación de Filesystem

Para que usted pueda recuperar tantos archivos como sea
posible, únicas "firmas" han sido escritas en el disco
para ayudar en la identificación automática y
recuperación de los pedazos del filesystem
críticos. Los archivos inodes (/ .inodes), así como
cada directorio y extends blocks, contienen únicos
modelos de
datos que la utilidad del chkfsys puede usar para volver a montar
un filesystem dañados.

Los discos y subsistemas del disco

QNX considera cada disco físico en una
computadora como un bloque el archivo especial. Un disco se ve
por el filesystem de QNX como un conjunto secuencial de bloques,
de 512 bytes en el tamaño cada uno, sin tener en cuenta el
tamaño y capacidad del disco. Se numeran los bloques,
empezando con el primer bloque en el disco (bloque 1).

Una computadora QNX corriente puede tener uno o
más subsistemas del disco. Cada subsistema del disco
consiste en controlador y uno o más discos. Usted inicia
el driver del dispositivo para cada subsistema del disco que
será manejado por el Administrador de
Filesystem.

Particiones de SO

QNX cumple con el estándar de la industria que
permite tener distintos sistemas
operativos sobre el mismo disco. De acuerdo con esto se puede
definir una tabla de partición de hasta cuatro particiones
primarias sobre el disco. La tabla se almacena en el primer
bloque del disco. QNX trata a cada partición en un disco
como un bloque el archivo especial.

Cada partición debe tener un tipo reconocido por
el SO. Aquí se muestran los tipos de particiones que se
usan generalmente:

Type

Filesystem

1

DOS (12-bit FAT)

4

DOS (16-bit FAT; partitions <32M)

5

DOS Extended Partition

6

DOS 4.0 (16-bit FAT; partitions
>=32M)

7

OS/2 HPFS

7

Previous QNX version 2 (pre-1988)

8

QNX 1.x and 2.x ("qny")

9

QNX 1.x and 2.x ("qnz")

11

DOS 32-bit FAT; partitions up to
2047G

12

Same as Type 11, but uses Logical Block Address
Int 13h extensions

14

Same as Type 6, but uses Logical Block Address
Int 13h extensions

15

Same as Type 5, but uses Logical Block Address
Int 13h extensions

77

QNX POSIX partition

78

QNX POSIX partition (secondary)

79

QNX POSIX partition (secondary)

99

UNÍS

Los componentes importantes de una partición de
QNX

Los componentes importantes se encuentran juntos al
principio de cada partición QNX:

  • el bloque loader
  • el bloque root
  • el bitmap
  • el directorio del root

Estas estructuras se
crean cuando usted inicializa el filesystem con la utilidad del
dinit.

La estructura de un filesystem de QNX dentro de una
partición del disco.

El bloque loader

Éste es el primer bloque físico de una
partición del disco. Este bloque contiene el código
que se carga y se ejecuta por el BIOS de la
computadora para cargar un sistema operativo de la
partición. Si un disco no se ha dividido (por ejemplo como
en un floppy), este bloque es el primer bloque físico en
el disco.

El bloque root

El bloque de la raíz se estructura como un
directorio normal. Contiene la información del inode para
estos cuatro archivos especiales:

  • el directorio de la raíz del filesystem
    (/)
  • / .inodes
  • / .boot
  • / .altboot

Normalmente, el loader de QNX carga la imagen de OS
guardada en el archivo /.boot. Pero si el archivo de /.altboot no
está vacío, se dará la opción para
cargar la imagen guardada en el archivo de /.altboot.

Bitmap

Para asignar el espacio en un disco, QNX usa un bitmap
guardado en el archivo /.bitmap. Este archivo contiene un mapa de
todos los bloques en el disco, indicando qué bloques
están usados. Cada bloque se representa por un bit. Si el
valor del bit
es 1, su bloque correspondiente en el disco está
usándose.

Borrado de archivos

Cuando un directorio o el archivo se borra, la estructura de
datos que lo representa es marcada como borrada, pero no se
remueve la misma. Esto evita borrar continuamente y volver a
escribir el medio.

Eventualmente, el medio se quedará sin espacio
libre y el Administrador del filesystem realizará el
reclamo de espacio (o "Garbage Collector"). Durante este proceso,
Efsys. * recupera el espacio ocupado por los archivos anulados y
directorios.

NFS FILESYSTEM

Originalmente desarrollado por el Sun Microsystems, el
Sistema de Archivo de Red (NFS) es una aplicación de
TCP/IP que se ha
llevado a cabo subsecuentemente en DOS y sistemas de Unix.

QNX soporta este tipo de fileSystems. Usted necesita
sólo usar NFS si está accediendo a filesystems que
no son QNX NFS, o si usted quiere permitir a los clientes de NFS
acceder al espacio de nombres de QNX.

NFS le permite unir filesystems remotos – o porciones de
ellos – hacia su espacio de nombres local. Los directorios en los
sistemas remotos aparecen como parte de su filesystem local y
todas las utilidades que usted usa para listar y manejar los
archivos (por ejemplo el ls, el cp, el mv) operan exactamente
igual en los archivos remotos como lo hacen en sus archivos
locales.

13. El
Administrador del Dispositivo

Introducción

El QNX Administrador de Dispositivos (Dev) es la
interfase entre los procesos y los dispositivos terminales. Estos
dispositivos terminales se localizan en el namespace de I/O con
nombres que comienzan con /dev. por ejemplo, un dispositivo de la
consola en QNX tendría un nombre como:

Los servicios de dispositivos

Un dispositivo terminal se presenta a un proceso de QNX
como un flujo bidireccional de bytes que pueden leerse o pueden
escribirse por el proceso.

El Administrador del Dispositivos regula el flujo de
datos entre una aplicación y el dispositivo. Algo del
procesamiento de los datos es realizado por Dev según los
parámetros en una estructura de control terminal (llamada
el termios) que existe para cada dispositivo.

Los parámetros del termios controlan la
funcionalidad de bajo nivel como:

  • la disciplina
    de línea de mando (incluso la proporción del
    baudio, paridad, los bits de stop y los bits de
    datos)
  • Eco de caracteres
  • Edición de la línea de
    entrada
  • Reconocimiento y solución sobre pausas y
    cortes
  • Control de flujo por hardware y software
  • la traducción de caracteres salida

Driver de Dispositivos

La ilustración siguiente muestra un subsistema
típico de un dispositivo en QNX.

El proceso de Administrador de Dispositivos (Dev) maneja
el flujo de datos a y de los procesos de aplicación QNX.
La interfase del hardware se maneja por procesos de drivers
individuales. El dato fluye entre Dev y sus drivers a
través de un conjunto de colas de memoria compartida para
cada dispositivo terminal.

Ya que se usan colas de memoria compartida, es necesario
que Dev y todos sus drivers residan en el mismo CPU
físico. La ventaja es que se incrementa la
Performance.

Se usan tres colas para cada dispositivo. Cada cola se
implementa usando FIFO. Una estructura de control también
es asociada con cada cola.

Los datos recibidos se ponen en la cola de entrada por
el driver y sólo se consume por Dev cuando la
aplicación procesa los datos de la demanda.

Los tamaños de todas estas colas son
configurables por el administrador del sistema; la única
restricción es que el total de la suma de las tres colas
no puede exceder 64K. Los valores
por defecto normalmente son más que adecuados para manejar
la mayoría de las configuraciones del hardware.

Control de Dispositivos

Los drivers de dispositivos agregan los datos recibidos
simplemente a la cola de la entrada o consumen y transmiten los
datos de la cola de salida. Dev decide cuando (y si) la
transmisión de salida será suspendida,
etc.

Para asegurar una buena respuesta interactiva a eventos
de entrada, Dev debe correr a una prioridad bastante
alta.

Los drivers son procesos como cualquier otro proceso en
QNX; ellos pueden ejecutarse a prioridades diferentes
según la naturaleza del
hardware a los que ellos están sirviendo

La consola de QNX

Las consolas del sistema son manejadas por el driver
procesos "Dev.con". El adaptador de la placa de video y la
pantalla, más el teclado del
sistema, están conjuntamente llamado la
consola.

QNX permite correr las sesiones múltiples
concurrentemente en las consolas por medio de las consolas
virtuales. El proceso del driver de la consola "Dev.con"
típicamente maneja más de un conjunto de colas de
I/O a Dev que son disponibles para los procesos del usuario como
un conjunto de dispositivos terminales con los nombres como
/dev/con1, /dev/con2, etc.

Por supuesto que hay sólo una pantalla física y solo un
teclado,
entonces solo una de estas consolas virtuales realmente se
despliega en cualquier único instante de tiempo. El
teclado se asigna a la consola virtual que esta visible en ese
instante.

El driver de las consolas QNX corre como un proceso
normal QNX. Los caracteres de entrada por teclado son trazados
por el manipulador de interrupciones del teclado y los coloca
directamente en la cola de la entrada. Los datos de salida se
consumen y despliegan por Dev.con.

14. Administración de memoria

¿QNX Soporta un archivo Swap?

No. hay algunos planes para llevar a cabo esto en
algún momento en el futuro. Hay

otros rasgos que se agregarán a QNX antes de que
un archivo Swap sea agregado. La razón principal de esto
es que requerir tiempos de respuesta y performance en tiempo real
tiene conflictos a
la hora de implementar un archivo swap.

El requerimiento para swaping en la mayoría de
las aplicaciones de QNX es bastante bajo.

La eficacia del OS y
el copilador de Watcom proporcionan relativamente pequeños
procesos en término de requisitos de memoria. Cuando esto
se combina con

la habilidad de compartir el código entre las
invocaciones de proceso múltiples y

las bibliotecas
compartidas, las demandas de memoria en QNX son bastante
moderadas.

¿ QNX soporta memoria
virtual?

Sí. No confunda esto con un archivo swap. La
memoria
virtual sólo se refiere realmente al mapeo de memoria
física a través de un MMU. QNX opera en modo
protegido en los procesadores de Intel, y hace el uso de LDT y
GDT para proveer un mapeo de memoria en la memoria física.
El uso de memoria virtual permite que QNX provea tanto memoria
compartida en una base por proceso como protección de
memoria entre procesos aún entre los procesos que
constituyen el mismo SO.

Protección de memoria

Mientras muchos de los kernels de tiempo real proveen
soporte para la protección de memoria en tiempo de
desarrollo,
pocos los hacen para el momento de ejecución, con la
performance como principal razón. Pero desde que la
protección de memoria se esta haciendo común en
muchos procesadores embebidos, la performance decae muy poco.
La ventaja clave ganada por añadir memoria protegida,
especialmente para sistemas de misión
critica, es la robustez.
Con protección de memoria, si uno de los procesos
ejecutándose en un ambiente multitarea intenta acceder a
memoria que no ha sido explícitamente declarada o alocada,
el hardware MMU puede notificar al sistema operativo, que puede
luego abortar el hilo.

Memory Management Units (MMUs)

Un típico MMU opera dividiendo la memoria
física en un paginas de 4K. El hardware del procesador luego
hace uso de un conjunto de tablas almacenadas en la memoria del
sistema que definen el mapeo de direcciones virtuales a las
direcciones emitida por el CPU para acceder memoria
física.
Mientras el hilo se ejecuta, direcciona la memoria como si lo
hiciera en un sistema sin MMU, excepto que las tablas de paginas
administradas por el sistema operativo controla como estas
direcciones se mapean en la memoria física.

Para espacios de direcciones muy grandes con muchos
procesos e hilos, el numero de entradas en la tabla de paginas
puede ser significativo – mas de lo que puede almacenar el
procesador. Para
mantener la performance el procesador cachea frecuentemente las
porciones usadas de las paginas de tablas en un TLB (translation
look-aside buffer).

Los servicios de fallos en el caché TLB es parte
de la sobrecarga impuesta por el uso de MMU. QNX usa varios
arreglos inteligentes para minimizar esta sobrecarga.

Asociados a estas tablas de paginas hay bits que definen
los atributos de cada pagina de memoria. Las paginas puede ser
marcadas como solo lectura,
lectura-escritura,
etc…

Cuando QNX ejecuta un context switch, manipula
la MMU para usar potencialmente un conjunto nuevo de paginas para
el nuevo hilo. Si se esta cambiando entre hilos de un mismo
proceso, no se requieren manipulaciones del MMU.

Tipo de protección de memoria

El costo de
performance por protección de memoria es insignificante en
la mayoría de los sistemas. Quizás más
importante es el incremento de costo de memoria
para soportar las tablas de paginas MMU para implementar mayor
nivel de protección.

El administrador de procesos ofrece la posibilidad de
ninguna protección o protección total.

Sin protección

En este modelo, todos
los procesos (kernel y usuarios) corren en el mismo espacio de
memoria compartida.

Protección total VM

En este modelo, cada
proceso tiene su espacio privado de memoria virtual, que comienza
en 0 y se expande a 2 o 3.5 Gigabytes (dependiendo del CPU). Esto
es logrado a través del MMU del procesador.

15. El Administrador de la
Red (Qnet)

Introducción

Comunicándose directamente con el Microkernel, el
Administrador de la Red mejora el intercambio de mensajes (IPC)
propagando los mensajes eficazmente a las máquinas
remotas. Además, el Administrador de la Red ofrece tres
rasgos avanzados:

  • Incrementa el throughput vía el equilibrio
    de carga
  • la tolerancia a
    fallos vía conectividad redundante
  • Puentes entre las redes de QNX

En pocas palabras, Qnet es una red basada en el envío
de mensajes que le brinda acceso transparente a cualquier recurso
del sistema. Qnet le permite construir aplicaciones eficientes y
tolerantes a fallos que pueden ser escaladas
fácilmente.

Qnet esta integrada en el corazón de
las primitivas de manejo de procesos y envió de mensajes
de QNX, haciendo que la intercomunicación de procesos
local y a través de una red sea lo mismo. Usando Qnet, una
red de nodos individuales se convierte en una supercomputadora
virtual, donde cada nodo tiene acceso a todos los recursos del
sistema.

El diseño
único de Qnet le hace posible crear redes altamente escalables y
tolerantes a fallo con soporte para balancear la carga.

Con Qnet, cualquier dispositivo en el sistema puede acceder
cualquier recurso en forma transparente. Qnet extiende el
mecanismo de envió de mensajes que forma el núcleo
de la plataforma QNX. Utilizando Qnet, los mensajes son enviados
de forma transparente de un nodo a otro, lo que hace posible
acceder y utilizar recursos como por ejemplo sistemas de
archivos, I/O, recursos de hardware, administradores de procesos
y mas.

Un módulo independiente

El Administrador de la Red no tiene que ser construido en la
imagen del sistema operativo. Puede ejecutarse y puede detenerse
cuando quiera para proporcionar o quitar las capacidades de
mensajería de red.

Cuando el Administrador de la Red empieza, se registra con el
Administrador del Procesos y el Microkernel. Esto activa el
código existente dentro de los dos que hace de interfase
con el Administrador de la Red. Esto significa que
mensajería de la red y la creación de procesos
remotos no es sólo una capa agregada al sistema
operativo.

Esta integración profunda al nivel más
bajo le da transparencia a la red lo califica como un sistema
operativo totalmente distribuido. Ya que las todas las
aplicaciones acceden a los servicios vía mensajes, y que
el Administrador de la Red permite a los mensajes fluir
transparentemente en la red, los nodos de QNX trabajan juntos
como una sola supercomputadora lógica.

Drivers de la red

Como el Administrador de Filesystem y el Administrador del
Dispositivos, el Administrador de la Red no contiene
ningún código hardware-específico. Esta
funcionalidad es proporcionada por los Drivers de tarjeta de red.
El Administrador de la Red puede soportar múltiples
drivers de placas de red a la misma vez. Cada Driver soporta una
sola tarjeta de
red.

Las colas de memoria compartida proporcionan la interfase
entre el Administrador de la Red y los drivers. El driver
determina el protocolo
apropiado para los medios de
comunicación de la red.

El Driver es responsable de la packetización, la
secuencia y retransmisión si la transmisión de
datos garantizada y fiable es pedida por un nodo físico
remoto. Este plan le permite a
QNX soportar fácilmente nuevo hardware de red y protocolos,
escribiendo o modificando solamente los Drivers red.

Equilibrio de carga y tolerancia a
fallos

El throughput de la red es determinado por una
combinación de la velocidad de
la computadora y la velocidad de
la red. Si su computadora puede proporcionar los datos más
rápido que la red puede aceptarlo, entonces la red
limitará su throughput.

El Administrador de la Red equilibrará
automáticamente la carga escogiendo un driver de red
apropiado.

Cuando nodos son conectados de a dos o más en la red,
existe más de un camino a usar para la
comunicación. Si una tarjeta en una red falla el
Administrador de la Red re-dirigirá todos los datos
automáticamente a través de otra red. Esto pasa
automáticamente sin ningún tipo de
intervención por parte del software de la
aplicación, y resultados en la tolerancia a fallas de la
red es totalmente transparente. Si se colocan cables para redes
diferentes, usando rutas separadas, usted también se
protegerá contra un corte de cable accidental.

Usted también puede construir sistemas en
tándem, en que dos máquinas son conectadas por una
red rápida para el funcionamiento normal y por una red
más barata y más lenta que queda en espera. Si la
primera red falla, la comunicación continuará,
aunque se reduciría naturalmente el throughput.

Qnet permite alto rendimiento y tolerancia a fallos a
través del soporte para múltiples enlaces entre
nodos. Dependiendo en las necesidades de su sistema, usted puede
elegir entre tres clases de servicios:

Balanceo de carga – El modulo administrador de red de
Qnet decide que enlaces usar para el envío de paquetes
dependiendo en la carga actual. Un paquete es encolado en el
enlace que puede enviarlo mas rápidamente a través
de la red. El resultado de esto es un mayor ancho de banda entre
nodos y una menor degradación del servicio
cuando el enlace falla. Cuando un enlace falla, paquetes
periódicos de mantenimiento
son enviados a ese enlace para detectar la
recuperación.

Secuencial – el primer enlace es usado hasta que falla,
luego el segundo link, y así sucesivamente. El usuario
puede indicar el orden preferente de los enlaces.

Redundante – los paquetes son enviados a todos los links
disponibles simultáneamente.

Arquitectura escalable

Con Qnet, es fácil crear redes altamente escalables. La
misma aplicación puede correr en un procesador
único o ser distribuida a través de
múltiples procesadores. No se requiere recodificar. Y, ya
que las aplicaciones no requieren código especifico para
manejar la red, nuevas redes (Ethernet, serial,
backplane) pueden ser introducidas, nuevamente, sin
recodificar.

Puentes entre LANs

El Administrador de la Red permite a cualquier nodo actuar
como un puente entre dos redes IEEE 802.

Ya que QNX usa el mismo formato de paquete y protocolo en
todas las redes IEEE 802, usted puede crear los puentes entre
Ethernet,
Token Ring, y redes de FDDI. No pueden puentearse las redes de
Arcnet.

Se soportan protocolos ARP,
IP, ICMP, UDP,
y protocolos de TCP también.

Redes TCP/IP

QNX implementa su protocolo propietario de red que está
optimizado para proporcionar una rápida, e idéntica
interfase entre computadoras
basadas en QNX. Pero para comunicarse con sistemas que no
utilizan QNX, utiliza el conjunto estándar de protocolos
de red conocidos como TCP/IP.

Administrador de TCP/IP

El Administrador se deriva de la pila Berkeley BSD 4.3 que es
la pila TCP/IP más común en Internet y se ha usado como
la base para muchos sistemas.

NFS

El FileSystem de Red (NFS) es una aplicación TCP/IP que
se ha implementado en sistemas DOS y Unix en su mayoría.
NFS permite unir filesystems remotos (o porciones de ellos) en un
espacio de nombres local. Los archivos en los sistemas remotos
aparecen como la parte del filesystem local de QNX.

SMB

QNX también soporta los Bloques de Mensajes de Servidor (SMB)
protocolo para compartir archivos, que son usados por varios
servidores
diferentes como Windows NT
Windows 95,
Windows para
Workgroups, LAN Manager, y
Samba. El filesystem de SMBfsys permite a un cliente de QNX
acceder a los archivos remotos que residen en tales servidores
transparentemente.

Internet
Navegador Voyager

Con el navegador Voyager, la interfase y el motor son dos
programas separadas. Esto crea una arquitectura cliente/servidor
donde la interfase (cliente) dialoga con el motor del
navegador (servidor) a través de la interfaz llamada
PtWebClient.

Con una arquitectura como esta es muy fácil la
personalización. Para modificar la interfaz del navegador,
simplemente se modifica el PtWebClient.

Si usted necesita un navegador WEB para su
sistema embebido y no desea desperdiciar tiempo y dinero en
construir uno, el navegador Voyager es para usted. Esta
completamente equipado y es altamente modular, puedo correr en
modo completo o compacto. Puede escalarlo desde un navegador
básico con un manejo de memoria optimizado hasta incluir
soporte para múltiples idiomas, un discador, etc…

Servidor WEB

Controle remotamente su fotocopiadora, reciba estadísticas de virtualmente cualquier
dispositivo desde su navegador con el servidor WEB.
Suficientemente pequeño para una impresora
láser,
y robusto para un robot de fabrica, este servidor le permite
incluso a sistemas embebidos sin disco generar paginas
dinámicas en tiempo real.

FLEETTM – la Gestión
de redes Alto rendimiento para QNX

FLEET es una característica única de QNX que
crea un solo conjunto homogéneo de recursos que se pueden
acceder en forma transparente, desde cualquier lugar de la red.
FLEET es un protocolo de red ultra liviano y de alta velocidad.
Hace que todas las computadoras
conectadas se vean como una sola supercomputadora lógica.
Porque FLEET se construye sobre la arquitectura del pasaje de
mensaje del QNX OS, ofrece lo último en flexibilidad.
FLEET ofrece:

  • Trabajo en red con total tolerancia a fallos
  • Carga balanceada del trabajo
  • Performance eficiente
  • Arquitectura extensible
  • Procesamiento distribuido transparente

Trabajo en red con total tolerancia a fallos

Si un cable o tarjeta de red en una red falla, FLEET
automáticamente rutea los datos a través de otra
red. Esto pasa en la red, sin involucrar software de
aplicación, dándole automática
tolerancia a falla de la red.

Carga balanceada del trabajo

El throughput de la red está normalmente limitado por
la velocidad de su computadora y hardware de la red. Con FLEET,
pueden transmitirse datos simultáneamente sobre
múltiples redes, permitiéndole doblar, triplicar, o
incluso cuadruplicar el ancho de banda de la red y throughput
poniendo múltiples tarjetas de red
en cada computadora y conectándolas con cables separados.
Usted puede mezclar tipos diferentes de tarjetas de red
incluso (ej. Ethernet, FDDI) en la misma máquina.

Performance eficiente

Drivers de red FLEET son construidos para hacer la
mayoría del hardware de gestión
de redes. Por ejemplo, al enviar bloques grandes de datos en una
red de Ethernet de un proceso a otro, usted obtendrá:

Tipo de red No. de procesos del cliente Throughput

10 Mbit Ethernet 1 1.1 Mbytes/sec

100 Mbit Ethernet 1 7.5 Mbytes/sec

Arquitectura extensible

Gracias a FLEET, una red de QNX le da excelente flexibilidad.
Los procesos de una red de computadoras son
arquitectónicamente distintos para el OS,
permitiéndole empezar y detener un nodo conectado en
cualquier momento. Esto significa que usted puede agregar nodos a
su red o puede quitarlos dinámicamente sin reconfigurar su
sistema. Y, gracias al puenteo automático de red, usted
puede agregar redes físicas diferentes también a su
LAN.

Procesamiento distribuido transparente

Los procesos de red de FLEET están integrados en el
corazón
del pasaje de mensajes y primitives de administración de
procesos, haciendo el ancho de red IPC y local uno y el mismo.
Puesto que IPC es transparente, una red de PCs individual aparece
como una sola. ¿El resultado? Usted nunca necesita
modificar sus aplicaciones para comunicar a tavés de la
red.

16. Photon MicroGUI

Introducción

Muchas sistemas embebidos requieren una interfaz de usuario
para interactuar con las aplicaciones. Para simplificar las
complejas interfaces de usuario, un sistemas gráficos de ventana es una elección
natural. Sin embargo, los sistemas de ventanas en las PC de
escritorio simplemente requieren demasiados recursos para ser
practicas en un sistema embebido que tiene limitaciones de
memoria y costo. A continuación se detalla la arquitectura
única de Photon microGUI, un sistema de ventana escalable
que corre con menos de 500K de memoria y sin embargo entrega toda
la funcionalidad esperada de un sistema de ventanas e
introduciendo muchas opciones de conectividad.

Photon microGUI ha sido diseñado para entregar un
sistema grafico de ventanas a ambientes con restricciones de
recursos. A través de su única arquitectura,
también provee:

Opciones de escalabilidad – Photon puede ser escalado
en un sistema grafico completo para escritorio. Photon puede ser
integrado con sistemas de ventanas heterogéneos.

Tolerancia a fallos – si una parte del sistema de
ventanas falla, ese componente puede ser reiniciado "en el vuelo"
sin colgar el sistema entero.

Un microkernel grafico
Siguiendo la arquitectura del microkernel de QNX, y teniendo este
una intercomunicación de proceso muy eficiente, el
microkernel grafico se estructura como un proceso con un equipo
de procesos adicionales cooperando con este, comunicándose
vía IPC.

El microkernel de photon corre como un pequeño proceso
(45K de código), implementando solo unas primitivas
fundamentales que procesos externos usan para construir
funcionalidades de mas alto nivel. Irónicamente, para el
microkernel la palabra "ventana" no existe como así
tampoco puede dibujar nada ni administrar mouse,
teclado, etc.

En primero momento esto puede parecer similar a construir un
sistema grafico alrededor del paradigma
cliente/servidor ya utilizado en X Window. La arquitectura de
Photon se diferencia restringiendo la funcionalidad implementada
en el microkernel grafico ( o servidor ) y distribuyendo la mayor
parte de la funcionalidad del GUI entre los procesos
cooperadores.

Estos procesos, como por ejemplo el administrador de recursos
del GUI y el administrador de ventanas pueden ser agregados
dinámicamente al sistema corriendo sin tener que
reiniciar.

(Para ver el gráfico faltante haga click en el
menú superior "Bajar Trabajo")

Photon de adapta a cualquier ambiente:
Internet.
Electrónica.
Telefonía.
Instrumentación medica.
Automatización industrial.
PDAs .
Puntos de venta.
Y mas!

El espacio de evento de Photon

El "espacio de eventos" administrado por Photon puede ser
visualizados como un espacio vacío con una región
base al fondo. El usuario final puede ser imaginado como mirando
a través de este espacio de eventos. Las aplicaciones
colocan regiones en el espacio tridimensional entre la
región base y el usuario final. Usan esas regiones para
generar y aceptar varios tipos de eventos entre este espacio.

Los procesos que proveen servicios de driver colocan regiones
adelante del espacio de eventos.

(Para ver el gráfico faltante haga click en el
menú superior "Bajar Trabajo")

Se puede pensar que estos eventos viajen a través de
este espacio como fotones.

La interacción entre eventos y regiones es la base de
las entradas y salidas en Photon. Los eventos de mouse y
teclado viajan desde el usuario hacia la región base. Los
eventos de dibujo
originados por regiones viajen hacia el usuario.

Drivers gráficos

Los drivers gráficos son implementados como procesos
que están en el frente del espacio de eventos. Una
región grafica es sensible a los eventos de dibujo
provenientes del espacio de eventos. Cuando los eventos de dibujo
intersectan la región, estos son recibidos por el proceso
de driver grafico. De hecho, esta región puede ser
imaginada como cubierta por fósforo, el cual es iluminado
por el impacto de los fotones.

Múltiples drivers gráficos

Puesto que los drivers gráficos simplemente colocan una
región en el espacio de eventos, y ya que esta
región es un rectángulo que será
interceptado por eventos de dibujo, naturalmente se puede
utilizar drivers gráficos múltiples para
múltiples controladoras graficas,
todas con su región de dibujo presente es el mismo espacio
de eventos.

Estas múltiples regiones puede ser puestas adyacentes
una de la otra o solapadas de diversas maneras. Ya que photon
hereda la transparencia de red de QNX, las aplicaciones o drivers
pueden corren en cualquier nodo de la red, permitiendo drivers
gráficos adicionales extender el espacio grafico de Photon
al espacio físico de varios computadoras en red. Al tener
este esquema, los eventos gráficos pueden ser replicados
en múltiples pantallas.

Muchas aplicaciones interesantes se hacen posibles con esta
capacidad. Por ejemplo, un operador de una fabrica con una
computadora inalámbrica de mano puede caminar hacia una
estación de trabajo y arrastrar una ventana de la planta
de control en su computadora de mano y luego interactuar con el
sistema de control.

Control remoto
Con photon, la conectividad esta incluida. Realmente no hay
diferencia en que sus clientes
estén en la misma ciudad o en el otro lado del mundo.
Usted puede monitorear y brindarles soporte fácilmente. De
hecho, usted puede ver e interactuar con cualquier
aplicación Photon en cualquier momento y en cualquier
lugar, usando Internet, TCP/IP o módems.

JumpGate Connectivity
Con JumpGate no necesita escribir una pregunta acerca de una
aplicación y enviársela por mail a un colega. Con
Photon, se puede enviar la interfaz de la aplicación
entera y además, su colega puede interactuar con la
aplicación y enviársela nuevamente.

Palabras clave: Sistema Operativo de tiempo real, Tiempo real,
sistema operativo, sistemas embebidos, Microkernel, INVAP, SAC-C,
Kernel, Multitarea, SCHEDULER, Round Robin, FIFO, QNX

Categoría: Sistemas
operativos

Resumen: Aquí un aporte desde Argentina, para
la categoría sistemas
operativos, se trata de el SO QNX 4.25, que es perfecto para
sistemas de tiempo real y para sistemas embebidos, es un trabajo
de 88 página bastante completito

Trabajo enviado y realizado por:
Mauro Strione

25 Años
Argentino – Soltero
Analista Universitario de sistemas
Estudiante de ingeniería en informática.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter