La salida parece ser una encapsulación de funciones solo para un comando de ensamblaje de la misma designación que se utiliza para comunicarse con periféricos mapeados portuarios, como la máquina de escribir en IBM PC Compatible Systems, que utilizan el rango de direcciones de E/S 0x60-0x6f. Dentro de este artículo, discutiremos el uso de la función outb () C mientras usa el Ubuntu 20.04 Sistema operativo Linux. Para comprender el funcionamiento de la función outb (), primero debe echar un vistazo a la E/S de la mapada."
¿Qué es la E/S mapada portuaria??
Las E/S mapeadas en la memoria y el portuaria son las dos formas comunes en que los chips de computadora se vinculan a dispositivos externos. Sin embargo, todos los enfoques parecen ser equivalentes cuando se trata de la periferia. Se puede acceder a las E/S mapeadas de puerto mediante un conjunto específico de comandos de CPU y un espacio de direcciones especializado y especializado. Los comandos de entrada y salida se pueden ver en procesadores de computadora Intel.
Para dar a los dispositivos de E/S un espacio de direcciones diferente del almacenamiento ordinario, se agregó un pin adicional de "E/S" al punto de acceso de la CPU, o se dejó de lado un bus completo para E/S. Es una técnica de comunicación periférica de CPU que se emplea cuando se requieren comandos únicos porque el procesador debe comunicarse con la RAM y los periféricos. Esto se conoce con frecuencia como E/S aislada, ya que la dirección para E/S está separada de la del almacenamiento primario. La forma alternativa y más popular actualmente son las E/S de memoria, en la que no se requieren comandos adicionales, ya que todo comparte el mismo espacio de direcciones. Se puede acceder a las E/S de memoria asignadas casi de la misma manera que la memoria del programa y/o la memoria de usuario, ya que se dibuja en el mismo espacio de direcciones.
Las operaciones de entrada y salida de puerto de bajo nivel son manejadas por este grupo de métodos POSIX. Los métodos B-Suffix son procedimientos de ancho de byte, los métodos W-Suffix son procedimientos de ancho de palabras y los métodos _P-Suffix se retrasan hasta que se termina la E/S. Las operaciones Out* realizan la salida del puerto, mientras que los procesos in* realizan la entrada del puerto. Aunque todavía se pueden usar en modo de usuario, generalmente están diseñados para el uso del núcleo interno.
#incluirNecesitamos usar O, O2 o un compilador equivalente. Debido a que los métodos se especifican como macros en línea, las referencias problemáticas del tiempo de conexión pueden resultar si la optimización no se activa. Para instruir al núcleo que permita que el programa en modo de usuario use los puertos de E/S en cuestión, puede usar el ioperm (2) o, opcionalmente, los comandos IOPL (2). Si no realiza esto, el programa recibirá una falla de segmentación. Funciones específicas de hardware como outb () y acompañantes en contraste con cómo funcionan la mayoría de los sistemas DOS, el parámetro de valor se proporciona primero y el parámetro de puerto sigue.
Ejemplo
Echemos un vistazo al uso de la función outb () en el programa C. Este programa será una pequeña demostración de cómo podemos usarlo dentro de cualquier código del programa C sin mirar su salida, i.mi., La mayoría de las veces, no generará la forma en que queramos. Por lo tanto, primero debemos crear un archivo C en nuestro sistema operativo Linux. Abra el terminal de la carcasa mediante el uso de "Ctrl+Alt+T".
Después de eso, utilice la instrucción táctil de Linux junto con el nombre de un archivo "outb.C "para ser creado con el".Extensión C "al final. Este archivo se puede encontrar en el directorio de trabajo actual de su sistema Linux, i.mi., "hogar". Abra el explorador de archivos y toque doble en el archivo para abrirlo.
El archivo vacío se abriría en su pantalla. Escriba el código C-Below C Shows de la función outb () en ella y presione el botón Guardar para guardarlo. Hemos comenzado este código C con el uso de algunos encabezados principales de C. En primer lugar, hemos agregado la "configuración.encabezado h ”para configurar el código C. El "sys/io.H ”es el encabezado principal requerido para el uso y ejecución de la función outb () en el programa C. Entonces, también lo hemos agregado. Después de eso, el sys/ioctl.H y Linux/Parport.El encabezado H se ha utilizado para el uso de información relacionada con el puerto. El stdio estándar.hy stdlib.Los encabezados H se utilizan para utilizar la entrada y salida estándar dentro del programa.
La inicialización de la variable ADDR ha iniciado la función Main (). La función ioperm () se usa para establecer los bits de permiso de acceso de puerto y pasar el resultado al resultado variable. La función outb () está aquí para realizar la salida del puerto. Puede ejecutar este programa en su sistema con el compilador GCC.
Conclusión
En cuanto a los beneficios y los inconvenientes, el intercambio de información y autobuses de direcciones puede hacer que el acceso a la memoria sea lento a medida que los dispositivos periféricos funcionan más lentamente que RAM. La flexibilidad de E/S ofrecida por las plataformas con mapas de memoria, por otro lado, reduce la cantidad de lógica interna que necesita el procesador, lo que permite la implementación de CPU más rápidas, menos costosas y eficientes. Paralelamente a los sistemas RISC, la justificación es disminuir la complejidad para obtener un sistema más enfocado y confiable, que es útil para dispositivos integrados, por ejemplo. Esta guía tiene uno de los ejemplos básicos para demostrar la idea de la función outb en el lenguaje C.