Sunteți pe pagina 1din 4

Programación de bajo nivel

En muchas ocasiones es necesario realizar programación bajo nivel para integrar los
sistemas. Casos de autómatas y diversos tipos de maquinaria y fabricantes requieren de
dicho software para extraer los datos necesarios y llevar a cabo aplicaciones concretas:
bombas inyectoras, mezcladoras, empaquetadoras, balanzas y pesadoras...
En el caso de la planta de producción, es necesario dicho interface bajo nivel para enlazar
los sensores y autómatas de la planta y poder así disponer de estos datos para
posteriormente tratarlos.
Un esquema de Cliente – Servidor puede lucir como el siguiente:
• Aplicación cliente por planta (cMIO) que recibirá una o varias conexiones de los
dispositivos de planta para procesar los mensajes (pesos, lecturas, alarmas,
presiones...).
• Aplicación servidor única (sMIO) que recibirá una o varias conexiones cliente (cMIO)
unificando, archivando y dando salida de todo el árbol de mensajes al sistema de
gestión de salida.
El sistema se propone de esta forma con el objetivo de realizar un buffer intermedio por
planta (cMIO) que permita mantener lecturas acumuladas ante posibles fallos en la
interconexión con el servidor central. A su vez, este sistema permite la movilidad del servidor
central realizando los mínimos cambios posibles en las plantas.
La estructura de 2 aplicaciones se encarga de temporizar los mensajes de los dispositivos
(tanto en el cliente o en el servidor, según convenga), de tal forma que exista independencia
de ellos y no sean capaces de saturar ningún punto del sistema.

Lenguaje de bajo nivel


Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción
del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a
lenguaje de máquina. La palabra "bajo" no implica que el lenguaje sea inferior a un lenguaje
de alto nivel; se refiere a la reducida abstracción entre el lenguaje y el hardware.1
Lenguajes de bajo nivel existentes

Lenguaje Descripción
Lenguaje de máquina Es el lenguaje que la computadora entiende, su
(Primera generación) estructura está totalmente adaptada a los circuitos de
la máquina y la programación es tediosa porque los
datos se representan por ceros y unos. Es de bajo
nivel. Es un conjunto de instrucciones codificadas en
binario que son capaces de relacionarse
directamente con los registros y circuitería del
microprocesador de la computadora y que resulta
directamente ejecutable por éste, sin necesidad de
otros programas intermediarios. Los datos se
referencian por medio de las direcciones de memoria
donde se encuentran y las instrucciones realizan
operaciones simples. Estos lenguajes están
íntimamente ligados a la CPU y por eso no son
transferibles. (Baja portabilidad).
Es otro lenguaje de programación de bajo nivel, pero
simbólico porque las instrucciones se construyen
usando códigos de tipo mnemotécnico, lo cual facilita
la escritura y depuración de los programas pero no
los acorta puesto que para cada acción se necesita
una instrucción. El programa ensamblador va
traduciendo línea a línea a la vez que comprueba la
existencia de errores. Si localiza alguno da un
mensaje de error. Algunas características que lo
Lenguaje ensamblador diferencian del lenguaje de máquina son que permite
(Segunda Generación) el uso de comentarios entre las líneas de
instrucciones; en lugar de direcciones binarias usa
identificadores como total, x, y, etc. Y los códigos de
operación se representan por mnemotécnica siempre
tienen la desventaja de repertorio reducido de
instrucciones, rígido formato para las instrucciones,
baja portabilidad y fuerte dependencia del hardware.
Tiene la ventaja del uso óptimo de los recursos
hardware, permitiendo la obtención de un código
muy eficiente.
En general se utiliza este tipo de lenguaje para programar controladores (drivers).
Un driver para un dispositivo es una interfaz entre el sistema operativo y el hardware de un
dispositivo. Los drivers forman parte del kernel y tienen acceso restringido a estructuras del
sistema operativo. El objetivo de un driver debe ser flexibilizar el uso de los dispositivos,
proporcionando un mecanismo de uso y no una política de uso (idea que proviene del diseño
de Unix):
 mecanismo: capacidades que debe proporcionar
 política: cómo utilizar las capacidades que proporciona

Control de dispositivos
Casi todas las operaciones del sistema se pueden mapear en un dispositivo físico , salvo el
procesador, la memoria, y algún otro elemento, las operaciones de control de los dispositivos
se realizan mediante drivers de dispositivos; así cada dispositivo presente en el sistema debe
tener su driver.

Linux tiene la capacidad de extender la funcionalidad del kernel en tiempo de ejecución


mediante lo que denomina módulo (module):
 objetos software con una interfaz bien definida, que se cargan dinámicamente en el
núcleo del sistema operativo
 el propio kernel ofrece servicios para su instalación y desinstalación
Los drivers se implementan mediante módulos del núcleo, son parte del mismo y tienen
acceso completo al hardware y acceso restringido a estructuras del sistema operativo .
El objetivo del driver es ofrecer un mecanismo de uso general, con operaciones como:
 abrir (open) y cerrar (close)
 leer (read)
 escribir (write)
 controlar (ioctl)
Ventajas:
• Mayor adaptación al equipo.
• Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.
Inconvenientes:
• Imposibilidad de escribir código independiente de la máquina.
• Mayor dificultad en la programación y en la comprensión de los programas.
• El programador debe conocer más de un centenar de instrucciones.
• Es necesario conocer en detalle la arquitectura de la máquina.

S-ar putea să vă placă și