3.1 EIA theoretical perspectives
3.1.6 The EIA process component
Los programas de aplicación leen, de manera rutinaria, la entrada que se recibe del teclado y de los archivos en disco, y escriben la salida en la pantalla y en archivos. Las operaciones de E/S no se realizan mediante el
acceso directo al hardware, sino que podemos llamar a las funciones que proporciona el sistema operativo. Hay operaciones de E/S disponibles en distintos niveles de acceso, de manera similar al concepto de máquina virtual que vimos en el capítulo 1. Existen tres niveles principales:
• Funciones de lenguaje de alto nivel (HLL): un lenguaje de programación de alto nivel, como C++ o Java, contiene funciones para realizar operaciones de entrada-salida. Estas funciones son portables, ya que traba- jan en una variedad de sistemas computacionales distintos, y no dependen de ningún sistema operativo. • Sistema operativo: los programadores pueden hacer llamadas a las funciones del sistema operativo, desde
una biblioteca conocida como API (interfaz de programación de aplicaciones). El sistema operativo propor- ciona operaciones de alto nivel, como la escritura de cadenas en archivos, la lectura de cadenas del teclado, y la asignación de bloques de memoria.
• BIOS: el Sistema básico de entrada-salida es una colección de subrutinas de bajo nivel, que se comunican en forma directa con los dispositivos de hardware. El fabricante de la computadora instala el BIOS, el cual se adapta para ajustarse al hardware de la computadora. Por lo general, los sistemas operativos se comunican con el BIOS.
Controladores de dispositivos ¿Qué ocurre si se instala un nuevo dispositivo en la computadora, que el BIOS desconozca? Cuando se inicia el sistema operativo, carga un programa controlador de dispositivos que contiene funciones para comunicarse con el dispositivo. Un controlador de dispositivos funciona de forma muy parecida al BIOS, pues proporciona funciones de entrada-salida adaptadas a un dispositivo específi co, o familia de dispositivos. Un ejemplo de ello es CDROM.SYS, que permite a MS-DOS leer unidades de CD-ROM.
Podemos poner a la jerarquía de E/S en perspectiva, mostrando lo que ocurre cuando un programa de apli- cación muestra una cadena de caracteres en la pantalla (fi gura 2-15). Se llevan a cabo los siguientes pasos: 1. Una instrucción en el programa de aplicación llama a una función de la biblioteca HLL, la cual escribe la
cadena en la salida estándar.
2. La función de biblioteca (Nivel 3) llama a una función del sistema operativo, y le pasa un apuntador de cadena. 3. La función del sistema operativo (Nivel 2) utiliza un ciclo para llamar a una subrutina del BIOS, pasarle
el código ASCII y el color de cada carácter. El sistema operativo llama a otra subrutina del BIOS para desplazar el cursor a la siguiente posición en la pantalla.
4. La subrutina del BIOS (Nivel 1) recibe un carácter, lo asigna a una fuente específi ca del sistema y envía el carácter a un puerto de hardware, conectado a la tarjeta controladora de video.
5. La tarjeta controladora de video (Nivel 0) genera señales de hardware sincronizadas para la pantalla de video. Estas señales controlan el barrido de trama y la visualización de los píxeles.
Figura 2–15 Niveles de acceso para las operaciones de entrada-salida.
Programa de aplicación
Función del OS
Función del BIOS
Hardware Nivel 0 Nivel 1 Nivel 2 Nivel 3 2.5 Sistema de entrada/salida 47
www.elsolucionario.net
Programación en varios niveles Los programas en lenguaje ensamblador tienen poder y fl exibilidad en el área de la programación de las operaciones de entrada-salida. Pueden elegir uno de los siguientes niveles de acceso (fi gura 2-16):
• Nivel 3: llamar a las funciones de biblioteca para realizar las operaciones de E/S de texto genérico, y de E/S basada en archivos.
• Nivel 2: llamar a las funciones del sistema operativo para realizar las operaciones de E/S de texto genérico y de E/S basada en archivos. Si el OS utiliza una interfaz gráfi ca de usuario, tiene funciones para visuali- zar los gráfi cos de una manera independiente del dispositivo.
• Nivel 1: llamar a las funciones del BIOS para controlar las características específi cas de cada dispositivo, como el color, los gráfi cos, el sonido, la entrada del teclado y la E/S de disco de bajo nivel.
• Nivel 0: enviar y recibir datos desde puntos de hardware, teniendo un control absoluto sobre cada dis- positivo.
Figura 2–16 Niveles de acceso del lenguaje ensamblador.
Programa ASM
Nivel 0 Nivel 1 Nivel 2 Función del OS
Función del BIOS
Hardware
Biblioteca Nivel 3
¿Cuáles son las concesiones? La principal es la del control sobre la portabilidad. El nivel 2 (OS) funciona en cualquier computadora que ejecute el mismo sistema operativo. Si un dispositivo de E/S carece de ciertas capacidades, el OS hará su mejor esfuerzo por aproximarse al resultado esperado. El nivel 2 no es en especial rápido, debido a que cada llamada de E/S debe pasar a través de varias capas antes de poder ejecutarse.
El nivel 1 (BIOS) funciona en todos los sistemas que tienen un BIOS estándar, pero no produce el mismo resultado en todos los sistemas. Por ejemplo, dos computadoras pueden tener pantallas de video con dis- tintas capacidades de resolución. Un programador en el Nivel 1 tendría que escribir código para detectar la confi guración de hardware del usuario, y ajustar el formato de salida de manera acorde. El Nivel 1 se ejecuta mucho más rápido que el Nivel 2, ya que sólo está a un nivel por encima del hardware.
El nivel 0 (hardware) funciona con los dispositivos genéricos como los puertos seriales, y con dispositivos de E/S específi cos que producen los fabricantes reconocidos. Los programas que utilizan este nivel deben extender su lógica de codifi cación para manejar las variaciones en los dispositivos de E/S. Los programas de juegos en modo real son vivos ejemplos, ya que, por lo general, toman el control de la computadora. Los programas en este nivel se ejecutan con la velocidad que les permita el hardware.
Por ejemplo, suponga que desea reproducir un archivo WAV mediante un dispositivo controlador de audio. En el nivel del OS, no tendría que saber qué tipo de dispositivo está instalado, por lo que no habría que preocu- parse por las características no estándar que pudiera tener la tarjeta. En el nivel del BIOS, sondearía la tarjeta de sonido (usando su software controlador de dispositivo instalado) para averiguar si pertenece a cierta clase de tarjetas de sonido que tengan características conocidas. En el nivel del hardware, tendría que optimizar el pro- grama para ciertas marcas de tarjetas de audio, aprovechando las características especiales de cada tarjeta.
Por último, no todos los sistemas operativos permiten que los programas de los usuarios accedan directo al hardware del sistema. Dicho acceso está reservado para el mismo sistema operativo y los programas controla- dores de dispositivos especializados. Éste es el caso con Windows NT, 2000 y XP, en donde los recursos vitales del sistema están aislados de los programas de aplicación. Por otro lado, MS-DOS no tiene dichas restricciones.
2.5.2 Repaso de sección
1. De los tres niveles de entrada/salida en un sistema computacional, ¿cuál es el más universal y portable? 2. ¿Qué características distinguen a las operaciones de entrada/salida a nivel del BIOS?
3. ¿Por qué son necesarios los controladores de dispositivos, dado que el BIOS ya cuenta con código que se comunica con el hardware de la computadora?
4. En el ejemplo relacionado con la visualización de una cadena de caracteres, ¿qué nivel existe entre el sistema operativo y la tarjeta controladora de video?
5. ¿En qué nivel(es) un programa en lenguaje ensamblador puede manipular las operaciones de entrada/salida? 6. ¿Por qué los programas de juegos envían a menudo su salida de sonido directo a los puertos de hardware de
la tarjeta de sonido?
7. Reto: ¿es probable que el BIOS para una computadora que ejecuta MS-Windows sea distinto al de una compu- tadora que ejecuta Linux?
2.6
Resumen del capítulo
La unidad central de procesamiento (CPU) es en donde se realizan los cálculos y el procesamiento lógico. Contiene un número limitado de ubicaciones de almacenamiento llamadas registros, un reloj de alta fre- cuencia para sincronizar sus operaciones, una unidad de control, y la unidad aritmética-lógica. La unidad de almacenamiento de memoria es en donde se guardan las instrucciones y los datos, mientras se ejecuta un programa de computadora. Un bus es una serie de alambres paralelos que transmiten datos entre las diversas partes de la computadora.
La ejecución de una sola instrucción de máquina puede dividirse en una secuencia de operaciones indivi- duales, conocidas como ciclo de ejecución de instrucciones. Las tres operaciones primarias son: búsqueda, decodifi cación y ejecución. Cada paso en el ciclo de instrucciones ocupa cuando menos un pulso del reloj del sistema, conocido como ciclo de reloj. La secuencia cargar y ejecutar describe la manera en que el sistema operativo ubica a un programa, lo carga en memoria y lo ejecuta.
La ejecución canalizada mejora de forma considerable el desempeño de varias instrucciones en una CPU, al permitir la ejecución traslapada de instrucciones de varias etapas. Un procesador superescalar es un pro- cesador canalizado con varias canalizaciones de ejecución. Dicho procesador es muy útil cuando una de las etapas de ejecución requiere varios ciclos de reloj.
Un sistema operativo multitareas puede ejecutar varias tareas al mismo tiempo. Se ejecuta en un proce- sador que soporta la conmutación de tareas, la habilidad de guardar el estado de la tarea actual y transferir el control a una tarea distinta.
Los procesadores IA-32 tienen tres modos básicos de operación: modo protegido, modo de direcciona-
miento real y modo de administración del sistema. Además, el modo 8086 virtual es un caso especial del
modo protegido.
Los registros son ubicaciones con nombre dentro de la CPU, a las que se puede acceder con mucha mayor ra- pidez que la memoria convencional. A continuación se muestran descripciones breves de los tipos de registros: • Los registros de propósito general se utilizan principalmente para las operaciones aritméticas, de movimiento
de datos y lógicas.
• Los registros de segmento se utilizan como ubicaciones base para áreas preasignadas de memoria llama- das segmentos.
• El registro EIP (apuntador de instrucciones) contiene la dirección de la siguiente instrucción a ejecutar. • El registro EFLAGS (de banderas extendido) consiste en bits binarios individuales que controlan la ope-
ración de la CPU y refl ejan el resultado de las operaciones de la ALU.
La familia IA-32 tiene una unidad de punto fl otante (FPU) que se utiliza específi camente para ejecutar instrucciones de punto fl otante y alta velocidad.
El procesador Intel 8086 marcó el principio de la familia de la arquitectura moderna de Intel. El procesa- dor Intel386, el primero de la familia IA-32, contiene registros de 32 bits, además de un bus de direcciones y
2.6 Resumen del capítulo 49
una ruta de datos externa de 32 bits. La familia de procesadores P6 (del Pentium Pro en adelante) se basa en un nuevo diseño de microarquitectura, en el que se mejora la velocidad de ejecución.
Los primeros procesadores Intel para la computadora personal IBM se basaban en el enfoque del conjunto
complejo de instrucciones (CISC). El conjunto de instrucciones Intel incluye poderosas formas de direccionar
datos e instrucciones, que son relativamente operaciones complejas de alto nivel. Un enfoque completamen- te distinto para el diseño de microprocesadores es el conjunto reducido de instrucciones (RISC). Un lenguaje máquina RISC consiste en un número muy pequeño de instrucciones cortas y simples, que el procesador pueda ejecutar con rapidez.
En el modo de direccionamiento real sólo puede direccionarse 1MB de memoria, usando las direcciones hexadecimales de 00000 a FFFFF. En el modo protegido, el procesador puede ejecutar varios programas al mismo tiempo. A cada proceso (programa en ejecución) le asigna un total de 4GB de memoria virtual. En el modo 8086 virtual, la computadora se ejecuta en modo protegido y crea una máquina 8086 virtual, con su propio espacio de direcciones de 1MB que simula a una computadora 80 ⫻ 86 ejecutándose en modo de direccionamiento real.
En el modelo de segmentación plano, todos los segmentos se asignan al espacio completo de direcciones físicas de la computadora. En el modelo de varios segmentos, cada tarea recibe su propia tabla de descriptores de segmento, conocida como tabla de descriptores locales (LDT). Los procesadores IA-32 soportan una caracterís- tica llamada paginación, la cual permite dividir un segmento en bloques de memoria de 4096 bytes, conocidos como páginas. La paginación permite que el total de memoria utilizada por todos los programas que se ejecutan al mismo tiempo sea mucho mayor que la memoria actual (física) de la computadora.
El corazón de cualquier microcomputadora es su tarjeta madre, ya que aloja a su CPU, los procesadores de soporte, la memoria principal, los conectores de entrada-salida, los conectores de la fuente de alimen- tación y las ranuras de expansión. El bus PCI (Interconexión de componentes periféricos) ofrece una ruta de actualización conveniente para los procesadores Pentium. La mayoría de las tarjetas madre contienen un conjunto integrado de varios microprocesadores y controladores, al cual se le conoce como juego de chips. El juego de chips determina en gran parte las capacidades de la computadora.
El adaptador de video controla la visualización de texto y gráfi cos en las computadoras IBM compatibles. Tiene dos componentes: el controlador de video y la memoria de visualización de video.
En las PCs se utilizan varios tipos básicos de memoria: ROM, EPROM, RAM dinámica (DRAM), RAM estática (SRAM), RAM de video (VRAM) y RAM de CMOS.
El puerto del Bus serial universal (USB) proporciona una conexión inteligente de alta velocidad entre la computadora y los dispositivos con soporte USB. Un puerto paralelo transmite 8 o 16 bits de datos en forma simultánea, de un dispositivo a otro. Un puerto serial RS-232 envía bits binarios, uno a la vez, a velocidades más lentas que las de los puertos paralelo y USB.
Las operaciones de entrada-salida se realizan a través de distintos niveles de acceso, de manera similar al concepto de máquina virtual. El sistema operativo se encuentra en el nivel más alto. El BIOS (Sistema básico de entrada-salida) es una colección de funciones que se comunican directamente con los dispositivos de hardware. Los programas también pueden acceder en forma directa a los dispositivos de entrada-salida.
Nota fi nal
1. Para obtener más información, consulte el artículo An Introduction to USB Development, Embedded Systems Programming de Jack G. Ganssle, disponible en el sitio www.embedded.com/2000/0003/0003ia2.htm.