Este documento presenta una introducción a los periféricos de entrada y salida. Explica brevemente la historia de los periféricos y ofrece dos perspectivas sobre el tema. Además, incluye un plan del curso con los temas que se abordarán como teclados, terminales, interfaz serie, impresoras y más.
El documento presenta un proyecto de análisis genómico a través de herramientas informáticas aplicadas a datos de secuenciación de nueva generación. El proyecto se divide en dos partes: la primera revisa el software usado para indexar genomas, buscar alineamientos y realizar análisis transcriptómicos cualitativos y cuantitativos; la segunda parte consiste en una serie de experimentos usando dichas herramientas y analizando los resultados obtenidos.
Este documento introduce los conceptos básicos de diseño digital de computadoras. Explica que las computadoras evolucionaron de ser grandes y caras máquinas reservadas solo para grandes organizaciones a ser más pequeñas y asequibles para un mayor número de personas. Describe los componentes básicos de una computadora digital como microprocesadores y memoria, y cubre temas como sistemas numéricos binarios, puertas lógicas, registros y ALU. El objetivo es proveer una comprensión general de cómo funcionan las computadoras a nivel básico.
Este documento introduce el lenguaje de programación C. Explica las herramientas y software necesarios para programar en C en GNU/Linux, como el compilador gcc, depuradores gdb y ddd, make, man y cvs. También describe la sintaxis básica de C, incluyendo tipos de datos, operadores, estructuras de control y funciones.
Este manual del usuario describe las características y funcionalidades del programa XLogo. Explica cómo usar la interfaz gráfica, incluyendo el editor de procedimientos y las opciones de menú. También proporciona una lista detallada de las primitivas de XLogo para movimientos, operaciones matemáticas, bucles, y más.
Este documento presenta una introducción al lenguaje de programación C. Explica conceptos básicos como la estructura típica de un programa en C, los tipos de datos escalares y literales, las declaraciones de variables, la entrada y salida por pantalla, expresiones, estructuras de control, vectores, cadenas, funciones, y pasos de parámetros. El documento está dividido en capítulos que cubren estos temas de manera gradual, incluyendo ejemplos de código.
Este documento proporciona instrucciones detalladas para administrar un foro usando PHP-Nuke. Explica cómo instalar y configurar PHP-Nuke, crear y moderar contenido de usuarios, y personalizar la apariencia y funcionalidad del sitio a través de temas y módulos. También cubre edición básica en HTML y SQL para principiantes. El objetivo general es enseñar a los lectores a construir y mantener un foro dinámico y participativo usando esta herramienta de código abierto.
Este documento presenta una introducción al uso del programa de cálculo simbólico Maxima. Explica que Maxima es un sucesor del programa Macsyma desarrollado originalmente en el MIT en los años 1970. Además, proporciona instrucciones básicas sobre la instalación de Maxima en Windows, Mac y Linux, y ofrece una primera sesión de ejemplo para familiarizarse con el programa. El documento también incluye un índice general de los diferentes temas que serán cubiertos.
Este documento presenta un índice detallado de las secciones y subsecciones de un manual de programación para un sistema telefónico LDK-100/300. La sección 1 introduce el propósito y estructura del manual. La sección 2 describe las funciones principales del sistema como recibir y realizar llamadas, reencaminamiento de llamadas, manejo de llamadas y funcionalidad de restricción. Cada subsección proporciona detalles sobre una función específica como asignación de timbre, DID, transferencia de llamadas, música de fondo, registro
El documento presenta un proyecto de análisis genómico a través de herramientas informáticas aplicadas a datos de secuenciación de nueva generación. El proyecto se divide en dos partes: la primera revisa el software usado para indexar genomas, buscar alineamientos y realizar análisis transcriptómicos cualitativos y cuantitativos; la segunda parte consiste en una serie de experimentos usando dichas herramientas y analizando los resultados obtenidos.
Este documento introduce los conceptos básicos de diseño digital de computadoras. Explica que las computadoras evolucionaron de ser grandes y caras máquinas reservadas solo para grandes organizaciones a ser más pequeñas y asequibles para un mayor número de personas. Describe los componentes básicos de una computadora digital como microprocesadores y memoria, y cubre temas como sistemas numéricos binarios, puertas lógicas, registros y ALU. El objetivo es proveer una comprensión general de cómo funcionan las computadoras a nivel básico.
Este documento introduce el lenguaje de programación C. Explica las herramientas y software necesarios para programar en C en GNU/Linux, como el compilador gcc, depuradores gdb y ddd, make, man y cvs. También describe la sintaxis básica de C, incluyendo tipos de datos, operadores, estructuras de control y funciones.
Este manual del usuario describe las características y funcionalidades del programa XLogo. Explica cómo usar la interfaz gráfica, incluyendo el editor de procedimientos y las opciones de menú. También proporciona una lista detallada de las primitivas de XLogo para movimientos, operaciones matemáticas, bucles, y más.
Este documento presenta una introducción al lenguaje de programación C. Explica conceptos básicos como la estructura típica de un programa en C, los tipos de datos escalares y literales, las declaraciones de variables, la entrada y salida por pantalla, expresiones, estructuras de control, vectores, cadenas, funciones, y pasos de parámetros. El documento está dividido en capítulos que cubren estos temas de manera gradual, incluyendo ejemplos de código.
Este documento proporciona instrucciones detalladas para administrar un foro usando PHP-Nuke. Explica cómo instalar y configurar PHP-Nuke, crear y moderar contenido de usuarios, y personalizar la apariencia y funcionalidad del sitio a través de temas y módulos. También cubre edición básica en HTML y SQL para principiantes. El objetivo general es enseñar a los lectores a construir y mantener un foro dinámico y participativo usando esta herramienta de código abierto.
Este documento presenta una introducción al uso del programa de cálculo simbólico Maxima. Explica que Maxima es un sucesor del programa Macsyma desarrollado originalmente en el MIT en los años 1970. Además, proporciona instrucciones básicas sobre la instalación de Maxima en Windows, Mac y Linux, y ofrece una primera sesión de ejemplo para familiarizarse con el programa. El documento también incluye un índice general de los diferentes temas que serán cubiertos.
Este documento presenta un índice detallado de las secciones y subsecciones de un manual de programación para un sistema telefónico LDK-100/300. La sección 1 introduce el propósito y estructura del manual. La sección 2 describe las funciones principales del sistema como recibir y realizar llamadas, reencaminamiento de llamadas, manejo de llamadas y funcionalidad de restricción. Cada subsección proporciona detalles sobre una función específica como asignación de timbre, DID, transferencia de llamadas, música de fondo, registro
Este documento presenta una memoria sobre geometría de superficies en R4 realizada por Gema R. Quintana Portilla bajo la dirección de Fernando Etayo Gordejuela. La memoria comienza con una introducción sobre la historia del estudio de superficies y variedades. Luego se describen conceptos básicos de geometría de superficies en R3 como formas fundamentales, geodésicas y curvatura. Finalmente, se estudian nociones de geometría intrínseca y extrínseca de superficies abstractas y su inmersión en R4,
Este documento proporciona una guía de usuario para Arduino. Explica qué es Arduino y por qué es útil, describe el hardware Arduino Diecimila, cómo instalar el software Arduino en diferentes sistemas operativos, cómo usar el entorno de desarrollo de Arduino e introduce conceptos básicos de programación como variables, tipos de datos, E/S digital y analógica. También incluye ejemplos de aplicaciones simples que pueden construirse con Arduino.
Este documento presenta un tutorial básico sobre el uso del compilador MPLAB C18 de Microchip para desarrollar programas en C para microcontroladores PIC. Explica conceptos como la instalación del entorno de programación, la creación de proyectos, el uso de operadores, estructuras de control y variables. También incluye cuatro ejemplos prácticos de código para el control de LEDs, displays y funciones.
El documento presenta un manual de usuario para un excitador de radio. Explica que el excitador puede configurarse sin computadora usando interruptores o con una computadora a través de un puerto serial. Detalla los pasos para seleccionar la frecuencia y potencia en ambos modos, así como comandos seriales para controlar el excitador y referencias de diagramas y código fuente.
Este documento proporciona una guía rápida de referencia sobre el editor de texto Vim. Explica conceptos básicos como los modos de edición, comandos de movimiento y modificación de texto, y cómo trabajar con ficheros y ventanas. También incluye secciones detalladas sobre temas como la manipulación de líneas, tabuladores y sangrado. La guía está destinada a usuarios tanto novatos como experimentados de Vim.
Este documento proporciona instrucciones para el uso seguro y efectivo de la copiadora QC 2235plus. Explica conceptos y símbolos básicos, convenciones del manual, especificaciones del equipo, precauciones de instalación y funcionamiento, operaciones de copia básicas, papel y documentos originales, conservación de la máquina, resolución de problemas y mensajes de error.
Este documento presenta una introducción a la programación visual basic (VBA) para Excel y elementos de análisis numérico. Explica cómo evaluar funciones, crear gráficas, programar macros, y usar elementos de programación como flujos secuenciales, condicionales y repetitivos. También cubre temas como la solución de ecuaciones, integración, y problemas de valor inicial para ecuaciones diferenciales ordinarias usando métodos numéricos. El objetivo es mostrar el gran potencial de Excel para ciencias e ingeniería, y su utilidad para la en
Este documento proporciona información sobre el lenguaje de programación BASIC para microcontroladores PIC. Explica las herramientas de diseño, el software MicroCode Studio y los conceptos básicos de programación en PIC BASIC. Luego presenta una serie de proyectos prácticos que ilustran el uso de diferentes instrucciones y periféricos como LCDs, teclados matriciales, memoria, interrupciones y comunicación serial. El objetivo es enseñar los fundamentos de la programación en PIC a través de ejemplos prácticos.
Este documento presenta un módulo de matemáticas básicas dividido en dos unidades didácticas. La primera unidad cubre temas de aritmética y álgebra como conjuntos, números, potenciación, radicación, logaritmos y números complejos. La segunda unidad trata sobre razón y proporción y geometría plana y espacial. El módulo contiene capítulos, introducciones, autoevaluaciones y ejercicios para cada tema, con el objetivo de mejorar las habilidades matemáticas de los estudiantes
Este documento presenta un módulo de matemáticas básicas dividido en dos unidades didácticas. La primera unidad cubre temas de aritmética y álgebra, incluyendo conjuntos, números, potenciación, radicación, logaritmos y números complejos. La segunda unidad trata sobre razonamientos y proporciones, porcentajes y geometría plana y espacial. El documento proporciona objetivos, metodología y evaluaciones para cada tema con el fin de mejorar la preparación matemática de los estudiantes universit
Este documento presenta un módulo de matemáticas básicas dividido en dos unidades didácticas. La primera unidad cubre temas de aritmética y álgebra como conjuntos, números, potenciación, radicación, logaritmos y números complejos. La segunda unidad trata sobre razonamientos, proporciones y geometría plana y espacial. El módulo contiene capítulos, introducciones, objetivos, autoevaluaciones y ejercicios para cada tema, con el fin de mejorar las habilidades matemáticas
Este documento presenta un trabajo de investigación sobre los fundamentos matemáticos de la visión por computador. En la introducción, describe brevemente el campo de la visión por computador y el objetivo del trabajo, que es estudiar los algoritmos para reconstruir objetos a partir de dos imágenes calibradas utilizando un enfoque matemático riguroso. A continuación, se divide en cinco capítulos donde se modela geométricamente el proceso de formación de imágenes, se explica la geometría epipolar para el emparejamiento de puntos entre imá
Microcontrolador pic16 f84, desarrollo de proyectos aohector8764
Este documento describe el microcontrolador PIC16F84 y su uso para el desarrollo de proyectos. El PIC16F84 es un microcontrolador popular fabricado por Microchip que contiene todos los componentes necesarios para controlar sistemas electrónicos, incluidos puertos de entrada/salida, oscilador, memoria de programa y datos, y más. El documento explica los conceptos básicos del PIC16F84 y proporciona ejemplos de proyectos prácticos que pueden desarrollarse utilizando este microcontrolador.
Este documento presenta una revisión teórica del control de procesos industriales continuos. Explica conceptos clave como modelos de procesos, realimentación, elementos de control, diseño de sistemas de control, clasificación de sistemas, respuesta temporal y de frecuencia, lugar de las raíces, funcionamiento y estabilidad de sistemas de control, y sistemas de tiempo discreto.
Este documento es una guía de programación en Linux que contiene información sobre el sistema operativo Linux, el núcleo Linux, las llamadas al sistema, la comunicación entre procesos, la programación de sonido y gráficos, puertos de E/S y la conversión de aplicaciones a Linux. Cubre temas como pipes, FIFOs, IPC, señales, E/S de terminal, control de procesos y más.
El documento describe la historia y características del bus PCI (Peripheral Component Interconnect). El PCI se desarrolló en 1990 para reemplazar otros buses de expansión. Proporciona una interfaz estándar para conectar dispositivos periféricos a la placa base y ofrece un ancho de banda elevado. El documento explica la estructura, órdenes, transferencia de datos y arbitraje del bus PCI.
Este documento explica que la velocidad de las ranuras PCIe varía dependiendo del tamaño, siendo la ranura PCIe x16 la más rápida y la x1 la más lenta. Las ranuras más grandes como x16 y x8 se usan para tarjetas gráficas y RAID, mientras que las ranuras más pequeñas como x1 y x4 se usan para dispositivos más lentos como tarjetas de red y sonido. Actualmente, las ranuras x1, x4 y x8 se están quedando obsoletas, y la ranura x16 pronto será
PCI Express es un nuevo estándar de bus de expansión que mejora la velocidad de transferencia de datos utilizando una conexión en serie en lugar de paralela como su predecesor PCI. Presenta varias versiones (x1, x4, x8, x16) que difieren en el número de líneas de datos y velocidad de transferencia soportada. PCI Express es compatible hacia atrás pero no necesariamente hacia adelante, y permite la conexión en caliente de dispositivos.
Este documento presenta una memoria sobre geometría de superficies en R4 realizada por Gema R. Quintana Portilla bajo la dirección de Fernando Etayo Gordejuela. La memoria comienza con una introducción sobre la historia del estudio de superficies y variedades. Luego se describen conceptos básicos de geometría de superficies en R3 como formas fundamentales, geodésicas y curvatura. Finalmente, se estudian nociones de geometría intrínseca y extrínseca de superficies abstractas y su inmersión en R4,
Este documento proporciona una guía de usuario para Arduino. Explica qué es Arduino y por qué es útil, describe el hardware Arduino Diecimila, cómo instalar el software Arduino en diferentes sistemas operativos, cómo usar el entorno de desarrollo de Arduino e introduce conceptos básicos de programación como variables, tipos de datos, E/S digital y analógica. También incluye ejemplos de aplicaciones simples que pueden construirse con Arduino.
Este documento presenta un tutorial básico sobre el uso del compilador MPLAB C18 de Microchip para desarrollar programas en C para microcontroladores PIC. Explica conceptos como la instalación del entorno de programación, la creación de proyectos, el uso de operadores, estructuras de control y variables. También incluye cuatro ejemplos prácticos de código para el control de LEDs, displays y funciones.
El documento presenta un manual de usuario para un excitador de radio. Explica que el excitador puede configurarse sin computadora usando interruptores o con una computadora a través de un puerto serial. Detalla los pasos para seleccionar la frecuencia y potencia en ambos modos, así como comandos seriales para controlar el excitador y referencias de diagramas y código fuente.
Este documento proporciona una guía rápida de referencia sobre el editor de texto Vim. Explica conceptos básicos como los modos de edición, comandos de movimiento y modificación de texto, y cómo trabajar con ficheros y ventanas. También incluye secciones detalladas sobre temas como la manipulación de líneas, tabuladores y sangrado. La guía está destinada a usuarios tanto novatos como experimentados de Vim.
Este documento proporciona instrucciones para el uso seguro y efectivo de la copiadora QC 2235plus. Explica conceptos y símbolos básicos, convenciones del manual, especificaciones del equipo, precauciones de instalación y funcionamiento, operaciones de copia básicas, papel y documentos originales, conservación de la máquina, resolución de problemas y mensajes de error.
Este documento presenta una introducción a la programación visual basic (VBA) para Excel y elementos de análisis numérico. Explica cómo evaluar funciones, crear gráficas, programar macros, y usar elementos de programación como flujos secuenciales, condicionales y repetitivos. También cubre temas como la solución de ecuaciones, integración, y problemas de valor inicial para ecuaciones diferenciales ordinarias usando métodos numéricos. El objetivo es mostrar el gran potencial de Excel para ciencias e ingeniería, y su utilidad para la en
Este documento proporciona información sobre el lenguaje de programación BASIC para microcontroladores PIC. Explica las herramientas de diseño, el software MicroCode Studio y los conceptos básicos de programación en PIC BASIC. Luego presenta una serie de proyectos prácticos que ilustran el uso de diferentes instrucciones y periféricos como LCDs, teclados matriciales, memoria, interrupciones y comunicación serial. El objetivo es enseñar los fundamentos de la programación en PIC a través de ejemplos prácticos.
Este documento presenta un módulo de matemáticas básicas dividido en dos unidades didácticas. La primera unidad cubre temas de aritmética y álgebra como conjuntos, números, potenciación, radicación, logaritmos y números complejos. La segunda unidad trata sobre razón y proporción y geometría plana y espacial. El módulo contiene capítulos, introducciones, autoevaluaciones y ejercicios para cada tema, con el objetivo de mejorar las habilidades matemáticas de los estudiantes
Este documento presenta un módulo de matemáticas básicas dividido en dos unidades didácticas. La primera unidad cubre temas de aritmética y álgebra, incluyendo conjuntos, números, potenciación, radicación, logaritmos y números complejos. La segunda unidad trata sobre razonamientos y proporciones, porcentajes y geometría plana y espacial. El documento proporciona objetivos, metodología y evaluaciones para cada tema con el fin de mejorar la preparación matemática de los estudiantes universit
Este documento presenta un módulo de matemáticas básicas dividido en dos unidades didácticas. La primera unidad cubre temas de aritmética y álgebra como conjuntos, números, potenciación, radicación, logaritmos y números complejos. La segunda unidad trata sobre razonamientos, proporciones y geometría plana y espacial. El módulo contiene capítulos, introducciones, objetivos, autoevaluaciones y ejercicios para cada tema, con el fin de mejorar las habilidades matemáticas
Este documento presenta un trabajo de investigación sobre los fundamentos matemáticos de la visión por computador. En la introducción, describe brevemente el campo de la visión por computador y el objetivo del trabajo, que es estudiar los algoritmos para reconstruir objetos a partir de dos imágenes calibradas utilizando un enfoque matemático riguroso. A continuación, se divide en cinco capítulos donde se modela geométricamente el proceso de formación de imágenes, se explica la geometría epipolar para el emparejamiento de puntos entre imá
Microcontrolador pic16 f84, desarrollo de proyectos aohector8764
Este documento describe el microcontrolador PIC16F84 y su uso para el desarrollo de proyectos. El PIC16F84 es un microcontrolador popular fabricado por Microchip que contiene todos los componentes necesarios para controlar sistemas electrónicos, incluidos puertos de entrada/salida, oscilador, memoria de programa y datos, y más. El documento explica los conceptos básicos del PIC16F84 y proporciona ejemplos de proyectos prácticos que pueden desarrollarse utilizando este microcontrolador.
Este documento presenta una revisión teórica del control de procesos industriales continuos. Explica conceptos clave como modelos de procesos, realimentación, elementos de control, diseño de sistemas de control, clasificación de sistemas, respuesta temporal y de frecuencia, lugar de las raíces, funcionamiento y estabilidad de sistemas de control, y sistemas de tiempo discreto.
Este documento es una guía de programación en Linux que contiene información sobre el sistema operativo Linux, el núcleo Linux, las llamadas al sistema, la comunicación entre procesos, la programación de sonido y gráficos, puertos de E/S y la conversión de aplicaciones a Linux. Cubre temas como pipes, FIFOs, IPC, señales, E/S de terminal, control de procesos y más.
El documento describe la historia y características del bus PCI (Peripheral Component Interconnect). El PCI se desarrolló en 1990 para reemplazar otros buses de expansión. Proporciona una interfaz estándar para conectar dispositivos periféricos a la placa base y ofrece un ancho de banda elevado. El documento explica la estructura, órdenes, transferencia de datos y arbitraje del bus PCI.
Este documento explica que la velocidad de las ranuras PCIe varía dependiendo del tamaño, siendo la ranura PCIe x16 la más rápida y la x1 la más lenta. Las ranuras más grandes como x16 y x8 se usan para tarjetas gráficas y RAID, mientras que las ranuras más pequeñas como x1 y x4 se usan para dispositivos más lentos como tarjetas de red y sonido. Actualmente, las ranuras x1, x4 y x8 se están quedando obsoletas, y la ranura x16 pronto será
PCI Express es un nuevo estándar de bus de expansión que mejora la velocidad de transferencia de datos utilizando una conexión en serie en lugar de paralela como su predecesor PCI. Presenta varias versiones (x1, x4, x8, x16) que difieren en el número de líneas de datos y velocidad de transferencia soportada. PCI Express es compatible hacia atrás pero no necesariamente hacia adelante, y permite la conexión en caliente de dispositivos.
Este documento presenta una revisión teórica sobre control de procesos industriales continuos. Explica conceptos clave como modelos de procesos, realimentación, elementos de control, diseño de sistemas de control, clasificación de sistemas, respuesta temporal y de frecuencia, lugar de las raíces, funcionamiento y estabilidad de sistemas de control, y sistemas de tiempo discreto.
Este documento presenta una breve introducción a C++. Explica la estructura básica de un programa en C++, incluyendo la definición de funciones, nombres de variables, tipos de variables, entrada y salida de datos, operadores aritméticos y relacionales. También cubre temas como control de flujo, funciones, matrices, clases, sobrecarga y herencia.
Este documento presenta una introducción al lenguaje de programación Java y su entorno de desarrollo Eclipse. Se explican conceptos básicos como clases, herencia, interfaces, excepciones y pruebas unitarias. También cubre temas como entrada y salida, colecciones genéricas, construcción de proyectos con Ant y desarrollo de interfaces gráficas con Swing.
Este documento presenta una introducción al lenguaje de programación Java y su entorno de desarrollo Eclipse. Se explican conceptos básicos como clases, herencia, interfaces, excepciones y pruebas unitarias. También incluye secciones sobre el control de versiones con Subversion, entrada y salida, genéricos, Ant y interfaces gráficas de usuario.
Este documento presenta una introducción al lenguaje de programación C. Explica conceptos básicos como la estructura típica de un programa en C, los tipos de datos escalares y literales, las declaraciones de variables, la entrada y salida por pantalla, expresiones, estructuras de control, vectores, cadenas, funciones, y pasos de parámetros. El documento está dividido en capítulos que cubren estos temas de manera gradual, incluyendo ejemplos de código.
Este documento presenta una introducción a la programación orientada a objetos con Java. Explica conceptos básicos como objetos, clases, herencia y polimorfismo. También introduce el lenguaje Java describiendo su sintaxis, estructura básica de programas, tipos de datos y estructuras de control. El documento está dirigido a estudiantes y desarrolladores interesados en aprender sobre programación orientada a objetos y el lenguaje Java.
Desarrollo proyectos-informaticos-con-javaFreddy Quina
Este documento proporciona una introducción al lenguaje de programación Java y su entorno de desarrollo Eclipse. Explica conceptos clave de Java como clases, herencia, interfaces y excepciones. También cubre temas como pruebas unitarias, entrada y salida, colecciones y construcción de proyectos.
Este documento presenta un libro de texto sobre algoritmos y programación estructurada en Pascal. Se divide en temas que cubren algoritmos e introducción a Pascal, elementos básicos del lenguaje Pascal, programación estructurada con instrucciones como if-then-else y bucles, y aspectos teóricos de la programación estructurada. Cada tema contiene capítulos que explican conceptos clave y proporcionan ejemplos de código.
Este documento proporciona una introducción al lenguaje de programación Java y su entorno de desarrollo Eclipse. Explica conceptos básicos como clases, herencia, interfaces, excepciones y pruebas unitarias. También cubre temas como entrada y salida, manejo de archivos, colecciones y construcción de proyectos con Ant. El documento está organizado en 11 capítulos que guían al lector a través de los fundamentos de Java.
Este documento presenta una introducción al lenguaje XHTML y las hojas de estilo en cascada (CSS), explicando sus características y ventajas para el desarrollo web. Se describe brevemente el XHTML como una versión modernizada de HTML que separa la estructura semántica del contenido de su presentación visual, la cual es controlada por CSS. También incluye un índice de los temas que serán cubiertos en el documento.
Este documento presenta una introducción al uso de programación visual basic (VBA) en Excel para propósitos de análisis numérico. Explica cómo evaluar funciones definidas por el usuario, incluyendo funciones predeterminadas de Excel. También describe elementos básicos de programación en VBA como flujos secuenciales, condicionales y repetitivos, y el manejo de rangos y matrices dinámicas. Finalmente, muestra ejemplos de cómo evaluar expresiones matemáticas escritas en lenguaje común y aplicar métodos numéricos como solución
Este documento presenta una introducción a la programación visual basic (VBA) para Excel y elementos de análisis numérico. Explica cómo evaluar funciones, crear gráficas, programar macros, y usar elementos de programación como flujos secuenciales, condicionales y repetitivos. También cubre temas como la solución de ecuaciones, integración, y problemas de valor inicial para ecuaciones diferenciales ordinarias usando métodos numéricos. El objetivo es mostrar el gran potencial de Excel para análisis científico y enseñanza de
Este documento presenta un proyecto de simulación de un péndulo invertido. El objetivo principal es diseñar un controlador óptimo para estabilizar el péndulo, incluso cuando está inicialmente en la posición vertical inestable. El proyecto incluye el modelado matemático del sistema, el diseño e implementación de controladores PID y LQR, y el desarrollo de una aplicación en Java para simular el péndulo invertido de forma interactiva.
Este documento describe el desarrollo de un cortafuegos basado en microcontrolador. El autor propone crear un dispositivo de cortafuegos portátil y de fácil configuración para proporcionar seguridad de red a usuarios individuales. El dispositivo usará un microcontrolador con interfaces de red Ethernet y RS-232. El autor también diseña un sistema operativo y pila TCP/IP personalizados para ejecutar en el microcontrolador.
Este documento presenta un curso taller sobre el uso del editor científico LaTeX. El curso cubrirá instrucciones básicas de LaTeX, la estructura de documentos, la edición de texto y matemáticas, figuras y tablas, listas, bibliografías y los tipos de documentos más comunes. El objetivo del curso es proporcionar las herramientas básicas para crear composiciones en LaTeX, un formato estándar a nivel internacional.
Este documento describe los fundamentos de hardware y software de las computadoras. Explica brevemente la historia de las computadoras y sus componentes clave como el microprocesador, la memoria y los periféricos. Luego entra en más detalle sobre cada uno de estos componentes hardware y los diferentes tipos existentes.
Este documento trata sobre varios temas relacionados con la compresión y encriptación de datos. Explica brevemente los formatos MP3, JPEG y MPEG-4 para compresión de audio, imágenes y video respectivamente, así como los formatos ZIP y RAR para compresión de archivos. También cubre temas como la criptografía musical, el criptoanálisis, la criptografía cuántica y las redes privadas virtuales.
Este documento presenta un índice general del libro "Pensar en C++" (Volumen 1) de Bruce Eckel, que introduce conceptos básicos de programación orientada a objetos en C++ como clases, herencia, polimorfismo, manejo de errores y diseño de software orientado a objetos.
Este documento presenta un resumen de tres oraciones sobre fibras ópticas:
El documento provee información sobre la historia, teoría y propiedades de las fibras ópticas. Explica los primeros experimentos con guiado de luz, los tipos de fibras, la atenuación y dispersión de la señal, y los modos de propagación en fibras de perfil de índice escalonado. Finalmente, detalla experimentos para medir parámetros geométricos y transmitir datos bidireccionalmente usando Ethernet sobre fibra.
Este documento presenta los apuntes de la asignatura "Circuitos y sistemas digitales" impartida en la Universidad Pontificia de Salamanca en Madrid. Los apuntes cubren temas como sistemas de representación, álgebra de Boole, circuitos combinacionales y circuitos MSI como multiplexores y demultiplexores. El autor, Juan González Gómez, publica los apuntes bajo licencia libre para permitir su copia, distribución y modificación con el fin de difundir libremente el conocimiento.
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)AbrahamCastillo42
Power point, diseñado por estudiantes de ciclo 1 arquitectura de plataformas, esta con la finalidad de dar a conocer el componente hardware llamado tarjeta de video..
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaAMADO SALVADOR
Descubre el catálogo general de la gama de productos de refrigeración del fabricante de electrodomésticos Miele, presentado por Amado Salvador distribuidor oficial Miele en Valencia. Como distribuidor oficial de electrodomésticos Miele, Amado Salvador ofrece una amplia selección de refrigeradores, congeladores y soluciones de refrigeración de alta calidad, resistencia y diseño superior de esta marca.
La gama de productos de Miele se caracteriza por su innovación tecnológica y eficiencia energética, garantizando que cada electrodoméstico no solo cumpla con las expectativas, sino que las supere. Los refrigeradores Miele están diseñados para ofrecer un rendimiento óptimo y una conservación perfecta de los alimentos, con características avanzadas como la tecnología de enfriamiento Dynamic Cooling, sistemas de almacenamiento flexible y acabados premium.
En este catálogo, encontrarás detalles sobre los distintos modelos de refrigeradores y congeladores Miele, incluyendo sus especificaciones técnicas, características destacadas y beneficios para el usuario. Amado Salvador, como distribuidor oficial de electrodomésticos Miele, garantiza que todos los productos cumplen con los más altos estándares de calidad y durabilidad.
Explora el catálogo completo y encuentra el refrigerador Miele perfecto para tu hogar con Amado Salvador, el distribuidor oficial de electrodomésticos Miele.
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
para programadores y desarrolladores de inteligencia artificial y machine learning, como se automatiza una cadena de valor o cadena de valor gracias a la teoría por Manuel Diaz @manuelmakemoney
SOPRA STERIA presenta una aplicació destinada a persones amb discapacitat intel·lectual que busca millorar la seva integració laboral i digital. Permet crear currículums de manera senzilla i intuitiva, facilitant així la seva participació en el mercat laboral i la seva independència econòmica. Aquesta iniciativa no només aborda la bretxa digital, sinó que també contribueix a reduir la desigualtat proporcionant eines accessibles i inclusives. A més, "inCV" està alineat amb els Objectius de Desenvolupament Sostenible de l'Agenda 2030, especialment els relacionats amb el treball decent i la reducció de desigualtats.
7. Cap´
ıtulo 1
Presentaci´n de la asignatura
o
1.1. Advertencia
La asignatura de Perif´ricos ha evolucionado mucho a lo largo de los ulti-
e ´
mos a˜ os, tratando siempre de buscar un dif´ compromiso entre teor´
n ıcil ıa
y pr´ctica, y tratando tambi´n de no adherirse a implementaciones parti-
a e
culares, sino de proporcionar conocimientos b´sicos generales, aplicables en
a
multitud de situaciones, as´ como descripciones f´
ı ısicas de las tecnolog´ im-
ıas
plicadas. Por estos motivos, y en primer lugar, deber´ quedar claro de lo
ıa
que no va a tratar esta asignatura: no vamos a aprender a montar ordenado-
res por piezas, a colocar tarjetas de ampliaci´n o a configurar controladores
o
software.
1.2. Un poco de historia
Aunque los perif´ricos como tales son un producto de la era inform´tica,
e a
nacidos a partir de unas necesidades concretas, tambi´n es cierto que algunos
e
de ellos tiene sus ancestros en las tecnolog´ que emergieron a ra´ de la
ıas ız
revoluci´n industrial.
o
Los perif´ricos pueden ser divididos seg´ n su uso en perif´ricos de entra-
e u e
da/salida y perif´ricos de almacenamiento. De entre los primeros, los m´s
e a
obvios son los teclados, provenientes directamente de las m´quinas de es-
a
cribir, de las cuales conservan la disposici´n de las teclas, y aunque en las
o
ultimas d´cadas se han a˜ adido algunas mejoras, este perif´rico sigue sien-
´ e n e
do esencialmente el mismo que defini´ IBM para sus estaciones de trabajo
o
en los a˜ os sesenta. No obstante, debemos destacar las m´quinas de oficina
n a
dise˜ adas por Honey-Well y la propia IBM, como sumadoras y artefactos
n
6
8. mec´nicos para la cumplimentaci´n de formularios, que pueden verse como
a o
implementaciones mec´nicas o electro-mec´nicas de un software a´ n muy
a a u
primitivo.
Pero, volviendo a los perif´ricos de entrada-salida, hay que decir que en los
e
primeros a˜ os de la era inform´tica estos consist´ casi siempre en desarro-
n a ıan
llos espec´
ıficos para los ordenadores y sistemas operativos fabricados por las
compa˜´ pioneras a partir de los a˜ os cincuenta. Por ejemplo, recu´rdense
nıas n e
las perforadoras y lectoras de tarjetas.
Directamente relacionados con los teclados encontramos desde los primeros
a˜ os del desarrollo de los ordenadores los dispositivos de impresi´n, derivados
n o
de las imprentas existentes desde el siglo XV pero que pueden asimismo verse
como un desarrollo inverso al del teclado, y conceptualmente muy pr´ximo. o
As´ mientras que en este ultimo una acci´n mec´nica provoca una se˜ al
ı, ´ o a n
el´ctrica, en el primero es la se˜ al el´ctrica la que provoca la acci´n mec´nica.
e n e o a
Pronto llegaron refinamientos para hacerlas m´s veloces y fiables, y para
a
incrementar la calidad del texto impreso. Las primeras impresoras matriciales
aumentaron el n´ mero de elementos de la matriz de impacto, y redujeron el
u
tama˜ o de las partes m´viles, con el fin de disminuir las inercias. Cuando esto
n o
no fu´ suficiente, se desarrollaron impresoras de l´
e ıneas, que multiplicaban por
uno o dos ´rdenes de magnitud la velocidad de impresi´n. El paso de una
o o
inform´tica profesional a una inform´tica personal, con la correspondien-
a a
te expansi´n a ambientes que hab´ permanecido ajenos hasta entonces,
o ıan
como las f´bricas y oficinas, cre´ dos necesidades fundamentales: silencio
a o
y velocidad. Estas necesidades fueron cubiertas mediante el desarrollo de
impresoras de inyecci´n de tinta e impresoras laser, que no han cesado de
o
mejorar desde entonces.
A finales de los a˜ os sesenta, la inform´tica estaba lo suficientemente ma-
n a
dura como para dar un paso cualitativo importante con un aumento de la
interactividad entre los operadores humanos y el software. Hasta entonces,
´sta se hab´ limitado a la emisi´n de mensajes a trav´s de una impresora en
e ıa o e
l´
ınea, pero en la ´poca a la que nos referimos ya era posible usar monitores,
e
con los que se consigui´ dar una imagen electr´nica del espacio de trabajo
o o
que el usuario hasta entonces hab´ usado como un modelo conceptual de su
ıa
relaci´n con la m´quina: ahora por fin era posible ver ese espacio. Durante
o a
aproximadamente una d´cada, la tecnolog´ no tuvo capacidad m´s que para
e ıa a
mostrar im´genes textuales, con una resoluci´n limitada. Podemos decir que
a o
del modelo abstracto en la mente del operador se hab´ pasado a un modelo
ıa
7
9. basado en palabras, cuya representaci´n f´
o ısica se manifestaba a trav´s de un
e
monitor.
Pero a finales de los a˜ os setenta, en los laboratorios de Xerox se dise˜ o una
n n
nueva forma de enfocar las relaciones entre usuarios y m´quinas. El nuevo
a
camino abierto sustitu´ la representaci´n textual por una representaci´n
ıa o o
simb´lica basada en iconos. Consecuentemente, hubo que sustituir el disposi-
o
tivo de entrada b´sico, el teclado, por un nuevo perif´rico que se adaptara de
a e
forma m´s natural a la concepci´n que acababa de nacer. De esta forma se
a o
dise˜ ´ el popular rat´n. Desgraciadamente, esta representaci´n pictogr´fica
no o o a
es conceptualmente inferior a la representaci´n textual, a la que ha sustituido
o
casi completamente, impidiendo de paso el que la primera se desarrolle hacia
una mejor usabilidad. El motivo es que la representaci´n textual puede usarse
o
como interfaz universal entre el usuario y los programas y entre programas
distintos, mientras que no existe una interfaz general que permite conectar
iconos.
El dise˜ o original del sistema operativo UNIX tuvo por lo que respecta
n
a esta exposici´n dos aspectos destacables. Por una parte, el dise˜ o con-
o n
templ´ desde un primer momento la interconexi´n de ordenadores, formando
o o
redes. Esto no s´lo implica una notable visi´n de futuro, a˜ o 1969, sino que
o o n
indica un estado tecnol´gico que permit´ producir puertos de comunicacio-
o ıa
nes y sistemas de modulaci´n-demodulaci´n. El segundo aspecto destacable
o o
es la concepci´n de los perif´ricos desde un nivel conceptual superior como
o e
archivos del sistema, donde era posible leer y escribir una corriente de octe-
tos. La informaci´n que fluye a y desde estos archivos carece para el sistema
o
operativo de todo significado: son los programas de aplicaci´n los que inter-
o
pretan los datos seg´ n sus necesidades.
u
Sin duda, son los sistemas de almacenamiento masivo los que han tenido
una influencia m´s determinante en el desarrollo de la inform´tica de las
a a
ultimas d´cadas. Los origenes los encontramos en el computador ABC (A-
´ e
thanasoff-Berry Computer) construido entre los a˜ os 1937-42. Aunque no
n
fu´ el primer computador digital, fue el primero en donde los elementos de
e
c´mputo estaban separados de los elementos de memoria. Estos se realizaban
o
mediante condensadores montados en grandes discos de baquelita. A este
antecedente temprano siguieron las memorias de n´ cleo de ferrita, y en ambos
u
casos eran precisos circuitos de refresco que evitaran la p´rdida de los datos.
e
8
10. Por eso tiene gran importancia el desarrollo por IBM en los a˜os cincuen-
n
ta de memorias permanentes realizadas sobre un material ferromagn´tico al
e
que se somete localmente a un campo magn´tico superior al campo coerciti-
e
vo del mismo. Este material ferromagn´tico se deposita sobre una superficie
e
no magn´tica, como el vidrio o la baquelita. Naci´ de esta forma el disco
e o
duro, y con ´l se multiplic´ por varios ´rdenes de magnitud la cantidad de
e o o
informaci´n que pod´ almacenarse de forma permanente. Durante dos d´ca-
o ıa e
das, este fu´ un perif´rico costoso con una utilidad limitada a aplicaciones
e e
concretas. Por este motivo, en el dise˜ o del ordenador personal no estaba
n
previsto un disco duro, aunque s´ una o dos unidades de discos flexibles, con
ı
capacidades de 160 kilobytes. Esta fu´ una estimaci´n excesivamente con-
e o
servadora, aunque este juicio es ahora f´cil de hacer. En realidad, no hab´
a ıa
raz´n para pensar que discos de ese tama˜ o no pod´ satisfacer las necesi-
o n ıan
dades de almacenamiento normales. Lo que sucedi´ fu´ que la posibilidad de
o e
almacenar y compartir informaci´n creo la necesidad de hacerlo, y con ella la
o
necesidad del software necesario para producirla y gestionarla, que a su vez
deb´ ser almacenado en alg´ n sitio. Pronto se a˜ adi´ un disco duro de 10
ıa u n o
Megaoctetos, que creci´ enseguida a 20 Megaoctetos. En los veinte ultimos
o ´
a˜ os, esta cantidad ha crecido en m´s de dos ´rdenes de magnitud, y no
n a o
parece que la tendencia remita. Para satisfacerla, se han desarrollado inter-
faces adecuadas para acceder a los discos r´ıgidos de forma r´pida, memorias
a
intermedias para acelerar a´ n m´s el proceso, unidades de disco flexible m´s
u a a
precisas, capaces de alcanzar los centenares de Megaoctetos de capacidad,
y, en fin, otros m´todos para almacenamiento masivo basados en fen´menos
e o
magneto-´pticos u ´pticos. Al mismo tiempo, se ha mejorado sustancialmen-
o o
te la velocidad de operaci´n de los medios de almacenamiento secuenciales
o
tradicionales, y se vislumbran ya capacidades superiores de almacenamiento,
y nuevos y prometedores m´todos, como las memorias hologr´ficas.
e a
Por otro lado, la potencia creciente de computaci´n asociada a cada nueva
o
generaci´n de procesadores ha permitido la exploraci´n pr´ctica del nuevo
o o a
mundo del reconocimiento del habla y la realidad virtual. La primera, puede
convertir en obsoletos los sistemas de entrada tradicionales. La comunicaci´n
o
mediante el habla permitir´ una interacci´n m´s f´cil y r´pida, pero a este
a o a a a
reto han de hacer frente a´ n las nuevas generaciones de sistemas operativos,
u
aunque OS/2 di´ el primer paso en esa direcci´n, al incorporar reconoci-
o o
miento del habla de forma nativa. Otros sistemas, como BeOS, han sido di-
se˜ ados espec´
n ıficamente pensando en las ingentes cantidades de informaci´n o
que habr´n de ser almacenadas y procesadas.
a
9
11. Esta potencia de c´lculo puede usarse asimismo para explorar una nueva
a
representaci´n del espacio conceptual que usa el ser humano para comuni-
o
carse con la m´quina, y representar las operaciones que hace sobre ella en
a
un espacio tridimensional virtual. Pero para que esto suceda, es preciso el
advenimiento de una nueva generaci´n de perif´ricos, como guantes t´ctiles
o e a
y cascos de visi´n estereosc´pica con sonido integrado.
o o
Los perif´ricos juegan de esta forma un papel determinante en el desa-
e
rrollo del software, y en concreto de los sistemas operativos. Tambi´n ene
el desarrollo de las nuevas generaciones de procesadores. Ya que, por una
parte, estimular´n el desarrollo de los primeros 1 , que a su vez, al acomodar
a
de forma natural nuevos perif´ricos traer´n consigo mejoras y refinamientos
e a
en estos ultimos. En cuanto a los procesadores, es obvio que habr´n de dar
´ a
respuesta a los nuevos retos, incrementando nuevamente su potencia. Y no
olvidemos que, a otro nivel, el de los programas de aplicaci´n, tambi´n se
o e
producir´ una revoluci´n en la forma de concebirlos 2 .
a o
1.3. Dos perspectivas
Antes de entrar en materia, conviene tomar cierta distancia, y reflexionar
sobre los perif´ricos en general. Una forma de hacerlo es indagando sobre
e
las relaciones entre tres elementos: La potencia de c´lculo disponible en los
a
sistemas inform´ticos, el dise˜ o de los Sistemas Operativos, y los Perif´ri-
a n e
cos. Pueden identificarse relaciones estrechas entre cualquier par de ellos.
Centr´monos para empezar en la pareja Sistema Operativo - Perif´ricos. El
e e
dise˜ o de los primeros est´ determinado por las caracter´
n a ısticas de los segun-
dos. En concreto, con su escasa velocidad en comparaci´n con la velocidad de
o
c´lculo y en el hecho de que los perif´ricos funcionan de forma asincr´nica con
a e o
el sistema. Es decir, el Sistema no puede prever que, un milisegundo despu´s, e
un perif´rico requerir´ su atenci´n. En los casos extremos, la necesidad de
e a o
atender a un perif´rico en un tiempo acotado y peque˜ o puede tener un im-
e n
pacto determinante en el dise˜ o de todo el Sistema Operativo. Por ejemplo,
n
en el Sistema Operativo Solaris el n´ cleo puede ser expropiado, garantizan-
u
do de esta forma que ciertos perif´ricos ser´n atendidos inmediatamente. En
e a
sentido inverso, la influencia es tambi´n determinante. Los perif´ricos tienen
e e
una parte f´ısica y sobre esa parte f´ısica se interacciona mediante unos proto-
colos convenidos. El Sistema Operativo debe por supuestos adaptarse a estos
1
v´ase por ejemplo el conjunto de instrucciones MMX que introdujo Intel
e
2
Siempre que se produzca un cambio igual de radical en la forma y las herramientas
para producir programas
10
12. protocolos, de forma que los programas de aplicaci´n puedan sacar provecho
o
en su relaci´n con los perif´ricos. Otras veces, el Sistema Operativo provee
o e
pautas para el dise˜ o de los perif´ricos. Por ejemplo, los perif´ricos Plug and
n e e
Play deben ser capaces de ofrecer al Sistema Operativo las informaciones que
´ste necesite.
e
Reflexionemos ahora sobre la pareja Potencia de c´lculo - Perif´ricos. Es
a e
usual que la potencia de c´lculo disponible no sea suficiente para acomodar
a
de forma adecuada ciertos perif´ricos. Entonces, se tiende a delegar en el
e
propio perif´rico parte de la potencia de c´lculo. Existen muchos ejemplos:
e a
desde la gesti´n del disco que realiza una controladora IDE, pasando por la
o
cierta inteligencia que se deposita en un subsistema SCSI hasta las tarjetas
gr´ficas sofisticadas con potencias de c´lculo totalmente equiparables a la de
a a
la propia UCP. En sentido inverso, tambi´n pueden encontrase relaciones.
e
Por ejemplo, el control del ordenador por voz no fu´ posible hasta disponer
e
de potencia de c´lculo suficiente.
a
Visto desde el punto de visto cronol´gico, podemos identificar cuatro fases
o
en el desarrollo de los perif´ricos. En la primera fase, no existe realmente
e
diferencia entre el perif´rico y el instrumento de c´mputo. Esta es la ´poca de
e o e
los artefactos mec´nicos y electromec´nicos hasta cierto punto programables.
a a
En una segunda fase, ya con el modelo de von Neumann implementado, se
produjo la separaci´n entre los perif´ricos y los dispositivos de c´lculo. En
o e a
esta fase, los perif´ricos son a´ n casi totalmente pasivos.
e u
En la tercera fase, la potencia de c´lculo comienza a distribuirse entre
a
los perif´ricos: controladores de disco inteligentes, gestores para los buses,
e
aceleradoras gr´ficas que gestionan decenas de Megabytes de RAM, por poner
a
unos ejemplos.
Finalmente, se alcanza la cuarta fase cuando, de nuevo, se produce una con-
vergencia entre los dispositivos de c´lculo y los perif´ricos. Nos encontramos
a e
ahora en los albores de esta fase, con el dise˜ o y primeras implementacio-
n
nes de los sistemas operativos distribuidos, el almacenamiento distribuido de
la informaci´n, la migraci´n transparente de procesos entre m´quinas y, en
o o a
general, con la compartici´n de recursos a trav´s de las redes y la gesti´n
o e o
distribuida de esos recursos.
11
13. 1.4. Plan del curso
Teniendo en mente la intenci´n de ofrecer conocimientos generales basados
o
en modelos o descripciones de la tecnolog´ y evitar en lo posible implemen-
ıa,
taciones particulares, el curso tendr´ cuatro bloques bien diferenciados.
a
En el primero de ellos, se estudiar´ el problema general de la entrada/salida,
a
las estrategias a las que recurren los sistemas operativos para dar respuesta
eficiente a las necesidades espec´ ıficas de los perif´ricos ( atenci´n as´
e o ıncrona y
lenta velocidad de proceso ) y una visi´n general de los interfaces de conexi´n.
o o
El segundo bloque se referir´ a la conexi´n con el mundo exterior a trav´s
a o e
de los puertos de comunicaciones e interfaces de red. Dentro de este bloque
tiene cabida una exposici´n de las tecnolog´ de impresi´n, con un cap´
o ıas o ıtulo
dedicado al lenguaje de descripci´n de p´ginas PostScript, as´ como una
o a ı
exposici´n de la base de datos termcap y la integraci´n de terminales en
o o
sistemas tipo *NIX.
El tercer bloque es el de mayor peso espec´ ıfico, y en ´l se abordar´ el
e a
problema del almacenamiento masivo y permanente de la informaci´n. Se o
describir´n los fundamentos f´
a ısicos, dise˜ o y gesti´n general de los disposi-
n o
tivos de almacenamiento magn´tico y se presentar´n otras variantes, como
e a
almacenamiento ´ptico, magneto-´ptico, hologr´fico y org´nico. As´
o o a a ımismo se
expondr´n algunos modelos sencillos que ayuden a comprender la gesti´n de
a o
estos medios por parte de los sistemas operativos.
En el cuarto bloque, se considerar´n los dispositivos de visualizaci´n, ha-
a o
ciendo un repaso de las tecnolog´ empleadas y exponiendo algunos proble-
ıas
mas de gesti´n espec´
o ıficos.
12
14. Cap´
ıtulo 2
Consideraciones generales sobre
la entrada/salida
2.1. El problema general de la entrada/salida
Existe una cantidad considerable de dispositivos asociados a los sistemas
inform´ticos, y cada uno tiene sus propias especificaciones f´
a ısicas y l´gicas,
o
y opera a una velocidad caracter´ıstica. Es por esto que los sistemas operati-
vos han de tener un subsistema de E/S encargado de atender a todos estos
dispositivos, ocultando a las capas superiores las particularidades de cada
uno.
Por otra parte, el hardware puede controlar de forma aut´noma muchas
o
de las operaciones de E/S, y es una tendencia creciente la incorporaci´n a los
o
sistemas inform´ticos de procesadores especializados para determinadas ope-
a
raciones, convirti´ndose en verdaderos sistemas multiprocesador. La mayor´
e ıa
de los dispositivos de E/S comparten dos caracter´ ısticas:
operaci´n as´
o ıncrona
diferencia de velocidad con la UCP
2.1.1. Operaci´n as´
o ıncrona
Cuando un programa se ejecuta, el procesador est´ realizando sucesiva-
a
mente comunicaci´n con la memoria principal y con los dispositivos de E/S.
o
Sin embargo, el acceso a memoria se produce en un tiempo casi constante, es
13
15. decir, la memoria est´ siempre dispuesta para entregar datos al procesador 1
a
. Como este tiempo es peque˜ o, el procesador no hace nada hasta que recibe
n
los datos solicitados.
Pero la comunicaci´n con el mundo exterior es distinta, pues no tiene
o
relaci´n alguna con el reloj del procesador: la llegada de datos es imprede-
o
cible. Esto se llama ‘operaci´n as´
o ıncrona’, y obliga al hardware de E/S a
implementar se˜ ales de control especiales que capacitan al procesador y a los
n
controladores de dispositivos para que se indiquen m´ tuamente sus estados,
u
intenciones y disponibilidad de datos. Cuando el procesador quiere acceder a
un dispositivo de E/S comprueba su estado. Si est´ disponible, se efect´ a la
a u
petici´n, si no, el S.O. puede esperar o puede dar el control a otro proceso.
o
2.1.2. Diferencia de velocidad
La velocidad del bus entre procesador y memoria es del orden de millones
de octetos por segundo, mientras que la velocidad de los dispositivos de E/S
var´ entre 1 octeto por segundo y varios millones de octetos por segundo.
ıan
Los primeros son impresoras matriciales y terminales lentos, mientras que
los segundos pueden ser discos de alta velocidad comunicados por enlaces
´pticos. Usualmente, estos ultimos tienen procesadores dedicados y suelen
o ´
operar mediante DMA.
V´anse por ejemplo las velocidades de transferencia de los perif´ricos del
e e
sistema Sun Enterprise 6000 (valores aproximados y relativos):
1
Esto era realmente as´ hasta principios de la d´cada de los 90. En alg´ n momento en
ı e u
esta ´poca se produce el cruce entre la curva que representa la velocidad de la memoria a
e
lo largo del tiempo y la curva que representa la velocidad del procesador. Desde entonces,
la velocidad del procesador ha crecido proporcionalmente mucho m´s. a
14
16. teclado 10−2
raton 5 ∗ 10−2
modem 100
impresora laser 500
ethernet 1000
disco duro 8000
ethernet rapida 10000
bus SCSI 40000
SBUS 100000
bus gigaplano 1000000
Consideremos un terminal a 2000 cps, lo que supone un car´cter cada
a
5 ∗ 10−4 segundos. Puesto que el procesador puede ejecutar una instrucci´n
o
en 0,1∗10 segundos, significa que, si estuviese dedicado a E/S, permanecer´
−6
ıa
inactivo m´s del 99 % del tiempo.
a
Una manera de mejorar la utilizaci´n del procesador es multiplexando entre
o
varios trabajos, lo que requiere asistencia hardware en forma de buffers de
datos, se˜ ales de di´logo y mecanismos de sincronizaci´n.
n a o
2.2. Interfaces de E/S
Los controladores hardware act´ an como intermediarios entre los dispositi-
u
vos E/S y el sistema. Estos interfaces tienen dos misiones principales: traducir
las se˜ ales gen´ricas del procesador a las se˜ ales espec´
n e n ıficas del dispositivo y
armonizar de alguna forma la diferencia de velocidad.
El hardware de E/S esta distribuido sobre una serie de interfaces, conec-
tadas a la placa base. A su vez, los conectores est´n conectados al bus del
a
sistema, que sirve como medio de comunicaci´n para intercambios de direc-
o
ciones, datos y se˜ ales de control.
n
Visto con algo m´s de detalle, la arquitectura PC basada en bus PCI consta
a
funcionalmente de los siguientes elementos:
El procesador: ´ste se comunica directamente con su cach´ interna, y
e e
con la memoria principal a trav´s de un controlador de memoria que a
e
su vez est´ conectado al bus PCI.
a
15
17. +-----------------+ +---------------+
| PROCESADOR | <---> | MEMORIA |
+-----------------+ +---------------+
^ ^
| |
v v
+-----------------------------------------+
| BUS DEL SISTEMA |
+-----------------------------------------+
^ ^ ^
| | |
v v v
+---------+ +---------+ +---------+
|INTERFAZ | |INTERFAZ | |INTERFAZ |
| SERIE | |PARALELO | | DMA |
+---------+ +---------+ +---------+
==============================================
TERMINAL IMPRESORA DISCO
El controlador de gr´ficos: por una parte, conectado al bus, y por otra
a
al monitor, a quien env´ la se˜ al que forma la imagen.
ıa n
Un posible controlador SCSI: est´ conectado con el bus PCI por un
a
lado y con un bus independiente SCSI, compartido por los distintos
dispositivos SCSI.
Un controlador de disco IDE: conectado con el bus del sistema y con
hasta 4 dispositivos IDE.
Un controlador de un bus de expansi´n, compartido por teclado y puer-
o
tos serie y paralelo.
Una tarjeta de interfaz est´ dise˜ ada para gestionar uno o m´s dispositivos
a n a
del mismo tipo. Los distintos dispositivos pueden conectarse a la tarjeta
mediante canales dedicados o en cascada. El primer m´todo suele usarse
e
en terminales, y el segundo en unidades de disco. Un controlador de E/S
est´ dividido en tres capas funcionales:
a
1. Interfaz del bus
2. Controlador gen´rico de dispositivo
e
16
18. 3. Interfaz del dispositivo
BUS
^
|
v
+------------------------+
| LOGICA DE DIRECCIONES |
| Y CONDUCTORES DEL BUS |
+------------------------+
| CONJUNTO DE REGISTROS |
| DE DATOS, ORDENES Y |
| ESTADO |
+------------------------+
| ACONDICIONAMIENTO DE |
| SE#ALES AL DISPOSITIVO |
+------------------------+
^
|
v
DISPOSITIVO
FISICO
En el extremo del bus, cada controlador debe aparecer como un m´duloo
estandard capaz de gestionar lecturas, escrituras, arbitrajes de prioridad,
interrupciones y ciclos DMA. En el extremo del dispositivo, el controlador
debe proporcionar las se˜ ales el´ctricas que necesita el dispositivo.
n e
Las dos capas extremas son de inter´s para los dise˜ adores hardware. La
e n
intermedia, para el dise˜ ador software, ya que proporciona a los programa-
n
dores de sistemas una abstracci´n uniforme de las operaciones de E/S. Nor-
o
malmente, cada dispositivo aparece como un conjunto de registros dedicados,
llamados puertos de E/S. Por ejemplo, tenemos puertos serie, paralelo, con-
troladores de discos flexibles y r´
ıgidos, controladores gr´ficos, temporizadores
a
y controladores de red. En general, los puertos son bidireccionales, y por con-
venio se suele adoptar el punto de vista del procesador cuando hablamos de
‘entrada’ y ‘salida’. Los puertos tienen registos de datos, registros de ´rdenes
o
y registros de estado.
17
19. Aunque a los puertos puede accederse a trav´s de un espacio propio de
e
direcciones, en otros casos el acceso se realiza a trav´s de posiciones espec´
e ıficas
de RAM. Cada m´todo tiene ventajas e inconvenientes.
e
La siguiente tabla muestra algunas de las direcciones de puerto en la ar-
quitectura PC:
000-00F controlador DMA
020-021 controlador de interrupciones
040-043 temporizador
200-20F controlador de juegos
2F8-2FF puerto serie secundario
320-32F controlador de disco duro
378-37F puerto paralelo
3D0-3DF controlador de gr´ficos
a
3F0-3F7 controlador de disco flexible
3F8-3FF puerto serie primario
2.3. E/S programada
Un dispositivo se prepara 2 en el momento del arranque, o bien con pos-
terioridad mediante el env´ de instrucciones espec´
ıo ıficas. Una vez superada
esta fase, la E/S controlada por programa se basa en el examen cont´ ınuo
por parte del procesador del estado del dispositivo, hasta que est´ preparado
a
para la siguiente transferencia.
Los inconvenientes de este m´todo son la baja utilizaci´n del procesador y
e o
la dificultad para manejar m´ ltiples dispositivos de E/S.
u
La E/S programada no tiene mucho inter´s pr´ctico, ya que s´lo puede
e a o
soportar un dispositivo, y la utilizaci´n del procesador es muy baja, pues
o
t´
ıpicamente consume el 99 % del tiempo en un bucle de espera. Una t´cnica
e
sencilla para mejorar algo la eficiencia es ampliar el bucle de manera que se
comprueben varios dispositivos por turno rotatorio, y bifurcar a la rutina que
corresponda al primer dispositivo que est´ preparado.
e
2
Est´ muy extendida la palabra inicializar, lo cual es una traducci´n incorrecta del
a o
ingl´s que deber´ ser rechazada. ¿O acaso decimos finalizalizar? Nosotros emplearemos
e ıa
preparar o iniciar.
18
20. comprobar 1 <--+ comprobar 1
comprobar 2 | comprobar 2 <--+
comprobar 3 | comprobar 3 <--|-+
---- | ---- <--|-|-+
comprobar n | comprobar n | | |
| | | |
atender 1 -----+ atender 1 -----+ | |
atender 2 -----+ atender 2 -------+ |
atender 3 -----+ atender 3 ---------+
----
*prioridades fijas* *prioridades circulares*
Los retornos de estas rutinas pueden ajustarse de modo que se reproduzca
un esquema de prioridades determinado. Por ejemplo, si todas vuelven al
principio de la encuesta, el primer dispositivo tiene mayores probabilidades
de ser atendido.
La noci´n de encuesta puede extenderse para proporcionar multitarea en
o
un sistema de prop´sito general sin recurrir a interrupciones. El rendimiento
o
puede mejorarse efectuando los test de E/S s´lo de vez en cuando. Pero de-
o
cidir cuanto es de vez en cuando es un tema dif´ sin una respuesta sencilla,
ıcil
pues es f´cil caer en alguno de los dos extremos: espera innecesaria o p´rdida
a e
de datos.
2.4. E/S guiada por interrupciones
Las interrupciones son un mecanismo asistido por hardware para sincro-
nizar el procesador con los sucesos as´
ıncronos. Despu´s de dar servicio a un
e
dispositivo ejecutando una rutina de servicio de interrupci´n (RSI en ade-
o
lante) el procesador reanuda la actividad en el punto en que se produjo la
interrupci´n. Pero una RSI es un programa que modificar´ registros del pro-
o a
cesador y posiciones de memoria. Por tanto, ser´ preciso presevar el contexto
a
del procesador en el momento de ser interrumpido, y recuperarlo justo des-
pu´s de que termine la RSI. Puesto que el programa interrumpido ignora
e
cuando ser´ interrumpido, es la RSI la encargada de salvar y restaurar el
a
contexto.
19
21. Se han empleado distintos enfoques: desde salvar ‘todo’ por hardware hasta
salvar s´lo lo necesario por software.
o
A la llegada de una interrupci´n por una l´
o ınea, el procesador no puede
saber qu´ dispositivo la caus´. Una opci´n es transferir el control siempre a
e o o
la misma posici´n de memoria, donde se encuentra una rutina de encuesta.
o
Pero entonces las probabilidades de ser atendidos no ser´ equitativas para
ıan
todos los dispositivos, por lo que se prefiere recurrir a la vectorizaci´n de in-
o
terrupciones. Esencialmente, la vectorizaci´n consiste en un enlace hardware
o
entre el dispositivo que causa la interrupci´n y la RSI que lo atiende.
o
Para conseguir esto, el dispositivo que causa la interrupci´n debe propor-
o
cionar un identificador propio. La vectorizaci´n, dada su complejidad, requie-
o
re hardware adicional, y en concreto, suele usarse un controlador programable
de interrupciones (CPI en adelante). La tendencia en los Sistemas Operativos
modernos es a tener una tabla de vectores de interrupci´n bastante grande, y
o
como a´ n as´ puede no ser suficiente para identificar un´
u ı ıvocamente la fuente
de una interrupci´n, puede combinarse este esquema con el de la encuesta.
o
Ahora bien, como pueden existir varias, o muchas, fuentes de interrupci´n,
o
pueden existir varias peticiones sin atender en un momento dado. Pero la vec-
torizaci´n elimina la encuesta, y por eso debe proporcionarse alg´ n m´todo
o u e
que permita asignar prioridades.
Citando textualmente la bibliograf´
ıa:
Un m´todo es asignar un nivel diferente de prioridad a cada fuente
e
unica que puede ser vectorizada, o a grupos de dispositivos si el
´
n´ mero de niveles distintos est´ m´s limitado. Esta ordenaci´n
u a a o
es conocida normalmente por ´rbitros de prioridad hardware, que
a
atienden a las peticiones en el orden de sus prioridades relativas
(...) De este modo los perif´ricos pueden recibir servicio ajustado
e
a sus exigencias y los dispositivos de altas prestaciones pueden
operar a las velocidades mejores posibles.
Existen en general tres m´todos de control de interrupciones:
e
1. Nivel general del sistema: las interrupciones pueden inhibirse/habilitarse
de forma general. Esta opci´n es com´ n a todos los sistemas inform´ti-
o u a
cos ( o casi todos ).
20
22. 2. Inhibici´n/habilitaci´n de ciertas interrupciones. Se llama ‘enmascara-
o o
miento’ a esta t´cnica y se logra mediante un registro especial llamado
e
‘m´scara’ cuyos bits indican qu´ interrupciones se encuentran habilita-
a e
das y cuales no. Se proporcionan medios para alterar los bits de esta
m´scara.
a
3. Nivel individual: manipulando registros espec´ıficos se puede deshabili-
tar la capacidad del dispositivo para interrumpir a la UCP.
2.5. Sobre la latencia de las interrupciones
Cuando se produce una interrupci´n, es preciso guardar el estado del pro-
o
cesador y posiblemente hacer algunas acciones administrativas adicionales
que dependen de la implementaci´n del sistema operativo. Por ejemplo, la
o
asignaci´n de valores a los sem´foros que controlan el acceso a zonas de me-
o a
moria compartidas entre el propio sistema operativo y las rutinas de servicio
de interrupci´n. De la misma forma, cuando termina de ejecutarse una inte-
o
rrupci´n son precisas las acciones necesarias para llevar al sistema al estado
o
previo a la interrupci´n. Todas estas operaciones consumen tiempo y limitan
o
el n´ mero de interrupciones por segundo que un sistema operativo puede
u
atender. En los sistemas operativos de prop´sito general, no est´ acotado
o a
el n´ mero de instrucciones que han de ejecutarse adicionalmente al propio
u
servicio de interrupci´n para las tareas administrativas citadas y por tan-
o
to no est´ garantizado que el sistema responda en un tiempo acotado. Esa
a
es la diferencia fundamental entre sistemas operativos de uso general, como
Windows o Linux, y sistemas operativo de tiempo real, como QNX. En estos
ultimos se garantiza que la respuesta a una interrupci´n se producir´ en un
´ o a
intervalo de tiempo fijo.
El hecho es que el tiempo invertido en acciones administrativas previas y
posteriores a la ejecuci´n de la rutina que atiende a la interrupci´n ha dis-
o o
minuido en proporci´n escasa comparada con el aumento de la velocidad de
o
los procesadores, las memorias y los perif´ricos, y eso justifica la adopci´n
e o
no s´lo de sistemas operativos espec´
o ıficos para operaciones de tiempo real
(frecuentes en procesos industriales o sistemas de control), sino incluso la
adopci´n de arquitecturas de procesador espec´
o ıficas para estas tareas. Estas
reflexiones son m´s evidentes cuando se aplican a sistemas empotrados. Aqu´
a ı,
es importante no s´lo que el tiempo de respuesta ante una interrupci´n sea
o o
peque˜ o, sino que adem´s ese tiempo est´ acotado. V´ase la importancia de
n a e e
la arquitectura cuando se comparan algunos valores para procesadores es-
21
23. pec´ıficos de este tipo de sistemas. Un procesador Philips LPC2106, con una
velocidad de reloj de 60MHz, sin cach´ pero con acelerador de memoria (a˜ o
e n
2003-2004) emplea 432ns y 27 ciclos de reloj para entrar en una interrupci´n
o
y 400ns y 25 ciclos de reloj para salir de ella. Pues bien, el procesador con
arquitectura de pila RTX2000 de 1988, operando a 10MHz emplea 400ns y
consume 0 instrucciones para entrar en una interrupci´n, y 200ns y una ins-
o
trucci´n para salir. A pesar de que en los ultimos 15 a˜ os la velocidad de
o ´ n
reloj de este tipo de procesadores se ha multiplicado por un factor que var´ıa
entre 6 y 40 veces, no se ha mejorado el tiempo de latencia para atender
interrupciones. Pero estos procesadores suelen tener arquitectura RISC. En
procesadores CISC la situaci´n es a´ n peor, pues pueden consumirse hasta
o u
400 ciclos en la entrada a una interrupci´n. En otros trabajos 3 se ha com-
o
probado la importancia de la arquitectura. Concretamente, al comparar un
procesador RTX 2000 con un Sun 4 y un Sun 3 M68020 se encontr´ que el o
primero requiere para atender una interrupci´n tan s´lo cuatro ciclos y 0.4µs,
o o
la m´quina Sun 4 con procesador SPARC entre 200 y 400 ciclos y 14µs en el
a
mejor de los casos y la m´quina Sun 3 entre 1150 y 1600 ciclos, con un mejor
a
caso de 81µs.
En cuanto al determinismo, los procesadores actuales emplean largos con-
ductos (pipes) y grandes caches para aumentar la velocidad, pero esto no
siempre es bueno porque tiene un impacto negativo sobre el determinismo.
Por ejemplo, en sistemas que han de muestrear se˜ ales con una frecuencia de-
n
terminada es importante que el muestreo se efect´ e con la mayor regularidad
u
posible.
Finalmente, otro factor a considerar es el comportamiento del sistema fren-
te a las bifurcaciones en los programas. El an´lisis del c´digo de un micro-
a o
controlador t´ıpico muestra que se produce control de flujo aproximadamente
en una instrucci´n de cada 5, un 20 % del tiempo. Un Pentium IV con con-
o
ductos de 20 etapas, caches y buffers de predicci´n de saltos puede perder 30
o
ciclos por cada fallo en la predicci´n de un salto. Un microcontrolador ARM
o
pierde cuatro ciclos en el peor de los casos, y de nuevo vuelve a sorprender
por su comportamiento totalmente determinista el procesador RTX2000 con
arquitectura de pila, que pierde dos ciclos en cualquier caso. Aunque las ci-
fras dadas para el Pentium IV dependen del chip-set y la memoria, se han
3
Real-time performance of the HARRIS RTX 2000 stack architecture versus the Sun
4 SPARC and the Sun 3 M68020 architectures with a proposed real-time performance
benchmark, William F. Keown, Philip Koopman y Aaron Collins. Performance evaluation
review, vol. 19 #3, mayo de 1992
22
24. notificado retrasos de hasta 385 ciclos 4 .
2.6. Consideraciones sobre el uso de buffers
Hemos dicho que una de las problem´ticas de la E/S es la notable dife-
a
rencia de velocidad entre la UCP y los dispostivos perif´ricos. Una de las
e
formas de minimizar esta diferencia es mediante el uso de buffers, o zonas
de almacenamiento temporal, donde la UCP coloca los datos en espera de
que puedan ser enviados a un perif´rico que en ese momento puede estar
e
ocupado. Evidentemente, la UCP puede llenar el buffer m´s r´pidamente de
a a
lo que el perif´rico puede vaciarlo. Pero normalmente la UCP env´ r´fagas de
e ıa a
datos, de manera que entre una r´faga y la siguiente el buffer puede haberse
a
vaciado, al menos parcialmente.
En general, estamos ante un problema que puede modelizarse bastante
bien mediante una cola. La UCP hace que aumente el tama˜ o de la cola, y
n
el perif´rico hace que disminuya. En un momento dado, el estado de la cola
e
es su longitud. Consideremos por simplicidad que la UCP env´ bloques de
ıa
caracteres de tama˜ o fijo, y que representamos el estado de la cola por el
n
n´ mero de bloques que contiene.
u
Por simplicidad, supongamos en primera instancia que el buffer puede alo-
jar un n´ mero infinito de bloques. Si llamamos l al n´ mero medio de bloques
u u
que llegan por unidad de tiempo, y m al n´ mero medio de bloques que el
u
perif´rico puede procesar por unidad de tiempo ( por ejemplo, imprimir ), el
e
n´ mero medio de transiciones entre un estado k y un estado k + 1 es lp(k),
u
donde p(k) es la probabilidad de que la cola contenga k bloques. De la misma
forma, el n´ mero medio de transiciones entre un estado k + 1 y un estado k
u
es mp(k).
En media, el n´ mero de transiciones en uno y otro sentido ha de ser
u
igual, pues de lo contrario la cola crecer´ sin l´
ıa ımite, o siempre estar´ vac´
ıa ıa.
Entonces:
lp(0) = mp(1) (2.1)
lp(1) = mp(2) (2.2)
lp(2) = mp(3) (2.3)
y as´ sucesivamente. Llamando r = l/m, de la primera:
ı
4
Datos tomados de Programming Forth, de Stephen Pelc, a˜ o 2005
n
23
25. lp(0) lp(1) lp(2) lp(3)
+-->--+ +-->--+ +-->--+ +-->--+
| | | | | | | |
{0} {1} {2} {3} {4} ...
| | | | | | | |
+--<--+ +--<--+ +--<--+ +--<--+
mp(1) mp(2) mp(3) mp(4)
p(1) = rp(0) (2.4)
de la segunda:
p(2) = rp(1) = r 2 p(0) (2.5)
y en general:
p(k) = r k p(0) (2.6)
Ahora bien, la suma para todo k, desde 0 hasta ∞, ha de ser la unidad,
de donde se sigue que:
p(0) = 1 − r (2.7)
y finalmente
p(k) = r k (1 − r) (2.8)
Entonces podemos calcular el n´ mero medio de bloques en la cola, N,
u
que es:
∞
r
N= kp(k) = (2.9)
k=0 1−r
Si el buffer es finito, y s´lo puede contener M bloques, entonces sigue
o
siendo p(k) = r k p(0), pero ahora p(0) se sigue de la condici´n:
o
M
kp(k) = 1 (2.10)
k=0
de donde:
24
26. 1−r
p(0) = (2.11)
1 − r M +1
Podemos usar la f´rmulas anteriores para calcular la probabilidad de que
o
la cola llegue a una longitud determinada, y por tanto podemos estimar el
tama˜ o necesario del buffer para que la probabilidad de perder datos sea
n
despreciable.
Ejemplo: Una impresora matricial en red d´ servicio a una peque˜ a empre-
a n
sa, con cinco puestos desde los que se emiten facturas. Una factura tiene un
tama˜ o de 2 bloques de 512 octetos. En media, durante una ma˜ana laboral
n n
de 6 horas se emiten 200 facturas, que son 400 bloques, o 400/6 bloques/hora.
Por su parte, la impresora puede imprimir un bloque cada 2 segundos, o 1800
bloques a la hora, lo que hace:
r=0.037
p(0)=0.963=96.3 %
p(1)=0.036= 3.6 %
p(2)=0.001= 0.1 %
es decir, con un buffer modesto, de 1 kb, la probabilidad de que se llene
es de s´lo el 0.1 %.
o
2.7. Otros modelos de colas
Supongamos el caso en que la UCP est´ enviando paquetes a varios pe-
a
rif´ricos. Cada perif´rico est´ asociado a una l´
e e a ınea de salida. La UCP env´ ıa
paquetes a un ritmo de l por segundo, y los perif´ricos se hacen cargo de los
e
mismos a un ritmo de m por segundo. Identificamos el estado del sistema por
el n´ mero total de paquetes en espera de tomar una l´
u ınea de salida. En ese
caso, la probabilidad del sistema de pasar de un estado k a un estado k + 1
viene dada por lpk , pero la probabilidad de pasar de un estado k + 1 a un
estado k es ahora (k + 1)mpk+1 . Las ecuaciones del equilibrio son ahora
lp0 = mp1 (2.12)
lp1 = 2mp2 (2.13)
lp2 = 3mp3 (2.14)
(2.15)
25
27. y as´ sucesivamente, de donde se sigue que
ı
k
1 l
pk = p0 (2.16)
k! m
y de la condici´n de normalizaci´n:
o o
−1
k
1 l
p0 = (2.17)
k k! m
En general, los distintos procesos de espera, de env´ y recepci´n de da-
ıo o
tos, tienen distintas prioridades. Por ejemplo, en una comunicaci´n por red
o
tiene mayor prioridad atender a la tarjeta de red que al teclado o la uni-
dad de disco. Estas situaciones tambi´n pueden modelarse. La idea es que
e
mientras que hasta ahora hemos modelado los distintos estados de una cola
como un conjunto de puntos sobre una recta, cuando existen varias colas el
proceso se visualiza mediante una malla en varias dimensiones. Por ejemplo,
supongamos que existen dos colas con distintas prioridades:
+----+----+----+----+----+----+
| | | | | | |
| | | | | | |
+----+----+----+----+----+----+
| | | | | | |
| | | | | | |
+--<-+--<-+--<-+--<-+(i,j)----+
| | | | | | |
v | | | | | |
+----+----+----+----+----+----+
| | | | | | |
v | | | | | |
+----+----+----+----+----+----+
Cuando el sistema se encuentra en un nodo de coordenadas (i, j) quiere de-
cirse que existen i paquetes o clientes en una cola y j en la otra. Supongamos
que la cola cuyos estados se corresponden con la coordenada horizontal tiene
mayor prioridad que la cola cuyos estados se corresponden con la coordenada
vertical. En ese caso, mientras i sea distinto de cero no podr´ disminuirse j.
a
S´lo despu´s de vaciarse la cola de mayor prioridad podr´ comenzar a va-
o e a
ciarse la cola de prioridad menor. Dicho de otra forma, desde el estado (i, j)
26
28. cs - 1 28 - vcc
wr - - a0
rd - - INTA
d7 - - ir7
d6 - - ir6
d5 - - ir5
d4 - - ir4
d3 - - ir3
d2 - - ir2
d1 - - ir1
d0 - - ir0
c0 - - INT
c1 - - sp/en
gnd - 14 15 - c2
la cola s´lo puede vaciarse siguiendo la trayectoria que se indica en la figura.
o
Ahora, el sistema de ecuaciones de equilibrio es m´s complejo, pues ha de
a
considerar los casos especiales (0, 0), (i, 0), (0, j) e (i, j), y tener en cuenta
dos probabilidades de entrada l1 y l2 y dos probabilidades de salida m1 y m2 .
La discusi´n de estos extremos nos llevar´ demasiado lejos, pues el sistema
o ıa
resultante es dif´ de resolver sin acudir a t´cnicas matem´ticas especiales.
ıcil e a
2.8. Gesti´n de interrupciones en el AT
o
2.8.1. Generalidades
El circuito integrado 8259 est´ dise˜ ado para controlar las interrupciones.
a n
Sus principales registros son el llamado IRR (Interrupt Request Register)
y el ISR (In Service Register). El IRR almacena todas las peticiones de
interrupci´n pendientes, y el ISR todas las que est´n siendo atendidas en un
o a
momento dado. El 8259 dispone de una l´gica para gestionar las prioridades
o
relativas de las interrupciones que se produzcan, y por tanto para determinar
qu´ interrupci´n ha de gestionarse primero.
e o
Arriba se muestra un esquema del encapsulado del 8259.
Las lineas ‘irx’ estan directamente unidas a los perif´ricos que provocan las
e
interrupciones. ‘dx’ constituyen un bus de datos, usado en la comunicaci´n o
entre el 8259 y la UCP, en los dos sentidos. ‘INT’ es una l´ ınea directamente
27
29. unida a la correspondiente patilla en la UCP. ‘INTA’, por su parte, es ne-
cesaria para implementar un protocolo de comunicaci´n entre el 8259 y el
o
procesador, mediante el cual el primero comunica al segundo la llegada de
una interrupci´n y el segundo acepta o rechaza atender a dicha interrupci´n.
o o
El 8259 puede funcionar en cascada, y mediante las lineas ‘cx’ pueden direc-
cionarse desde un 8259 primario o maestro hasta 8 chips supeditados. ‘rd’
es la patilla de lectura. Cuando se activa, la UCP puede leer de los registros
internos del chip. Analogamente, ‘wr’ es la patilla de escritura, y cuando
est´ activada la UCP puede escribir en dichos registros. Estos dos ultimos
a ´
registros funcionan en conjunci´n con la patilla nombrada como ‘cs’. Final-
o
mente, ‘sp/en’ tiene que ver con los distintos modos de funcionamiento del
8259, ya que este gestor de interrupciones puede usarse en sistemas con dis-
tinta arquitectura al PC. Por supuesto, ‘vcc’ y ‘gnd’ son la fuente de voltaje
(+5v) y el potencial de referencia.
En cuanto a los registros internos, tres son los fundamentales. Como se
ha dicho antes, en el IRR se guardan, activando el bit correspondiente, las
interrupciones que esperan ser atendidas. En el llamado ISR se guarda la
interrupci´n que est´ siendo atendida en un momento dado. Finalmente,
o a
existe un registro especial que permite enmascarar interrupciones, de forma
que ´stas se atiendan o se ignoren, aunque f´
e ısicamente se hayan producido.
En esencia, el 8259 funciona seg´ n la secuencia de acontecimientos siguien-
u
te:
1. Una o m´s l´
a ıneas IRQ son activadas por los perif´ricos, lo que pone a
e
1 el bit correspondiente del IRR
2. El 8259 eval´ a la prioridad de estas interrupciones y solicita la inte-
u
rrupci´n a la UCP
o
3. Cuando la UCP reconoce la interrupci´n, env´ la se˜ al ‘-INTA’ al 8259
o ıa n
4. Al recibir la se˜ al, el 8259 activa el bit correspondiente en el ISR y lo
n
borra del IRR
5. La UCP manda una segunda ‘-INTA’ y el 8259 deposita en el bus de
datos un valor de 8 bits que indica el vector de interrupci´n
o
6. En modo AEOI (Automatic End Of Interrupt), el bit del ISR es borrado
en cuanto acaba la segunda ‘INTA’. En modo EOI este bit ha de ser
borrado expl´
ıcitamente
28
30. Es interesante el punto 5. El 8259 s´lo precisa 3 bits para indicar cual de
o
las interrupciones se ha producido. Sin embargo, se env´ un valor de 8 bits.
ıa
Pues bien, los cinco bits m´s significativos indican el desplazamiento en la
a
tabla de vectores de interrupciones que corresponde a la interrupci´n que se
o
ha producido. Este valor es programable. Por ejemplo, durante el proceso de
arranque del PC, el valor asignado es 8, lo que significa que la interrupci´no
‘ir0’, conectada al reloj, es atendida por la rutina apuntada por el vector
de interrupci´n 8. La interrupci´n de teclado, conectada con el pin ‘ir1’, es
o o
atendida por la rutina apuntada por la entrada 9 de la tabla de vectores de
interrupci´n, etc.
o
2.8.2. Preparaci´n y control del 8259
o
El 8259 acepta dos tipos de ´rdenes generadas por la UCP: las ICW (Inicia-
o
lization Command Word) para preparaci´n y las OCW (Operation Command
o
Word) para programaci´n. o
escribir ICW1
|
v
escribir ICW2
|
v
8259 en cascada -----no--+
| |
v |
si |
| |
escribir ICW3 |
|<-----------------+
v
hace falta ICW4 -----no--+
| |
v |
si |
| |
v |
escribir ICW4 |
|<-----------------+
v
terminar preparacion
29
31. El formato de los dos primeros ICW es el siguiente:
=ICW1=
0 0 0 1 L 0 S I -- info adicional en ICW4
^ ^ | |
| +-- PIC en cascada
+------ flanco o nivel
bit valor significado
=== ===== ===========
1 0/1 ICW4 innecesaria/necesaria
2 0/1 cascada/simple
3 especifico del 8080/85
4 0/1 operacion por flancos/niveles
5 1
6 especifico del 8080/85
7 especifico del 8080/85
8 especifico del 8080/85
El bit 5 a 1 y el 8 a cero le indican al 8259 que se trata de la primera palabra
de preparaci´n. Por otra parte, si el bit 1 se encuentra a 0, no ser´ preciso
o a
enviar ICW3.
=ICW2=
x y z t u 0 0 0
---------
|
+--- offset en la tabla de vectores de interrupcion
bit valor significado
=== ===== ===========
0 especifico del 8080/85
1 especifico del 8080/85
2 especifico del 8080/85
3 0/1
4 0/1 |
5 0/1 -> cinco bits altos del vector
6 0/1 | de interrupcion a invocar
7 0/1 /
30
32. En cuanto a ICW3, es preciso distinguir entre primario y supeditado. Para
el PIC primario, cada bit a 0 indica que la l´ınea correspondiente est´ libre
a
o conectada a un perif´rico que puede generar una interrupci´n. Un bit a
e o
1 indica que esa l´
ınea est´ conectada con el PIC supeditado. En cuanto al
a
PIC secundario, ICW3 contiene en los 3 bits de menor orden el n´ mero de
u
identificaci´n de dicho PIC.
o
Finalmente, y para nuestros prop´sitos, de ICW4 s´lo nos interesa el bit
o o
1. Cuando este bit se encuentra a 1, indica AEOI (Automatic End of Inte-
rruption), lo que implica que el registro ISR es limpiado. Cuando este bit se
encuentra a 0, indica que el registro ISR ha de limpiarse expl´
ıcitamente.
Como ejemplo, consid´rese el siguiente fragmento de c´digo, que se ocupa
e o
de preparar los PIC primario y secundario en un PC. V´ase que al PIC
e
primario se accede a trav´s de los puertos 0x20 y 0x21, mientras que al
e
PIC secundario se accede a trav´s de los puertos 0xa0 y 0xa1. Adem´s, es
e a
necesario saber a qu´ puertos se env´ tanto los ICW como los OCW. Este
e ıan
detalle se recoge en la tabla inserta antes del c´digo:
o
0x20 0xa0 ICW1
OCW2
OCW3
0x21 0xa1 ICW2
ICW3
ICW4
OCW1
/* preparacion de los PIC en el PC */
outportb(0x20,0x11); flancos/cascada/ICW4
outportb(0x21,8); offset en Tabla Vectores Interrupcion
outportb(0xa1,0x70); offset TVI secundario
outportb(0x21,4); esclavo conectado a IRQ2
outportb(0xa1,2); identificacion del secundario como 2
outportb(0x21,1); ICW4, EOI
outportb(0xa1,1);
En cuanto a los OCW, este es el formato de OCW1 y OCW2:
=OCW1= Cada uno de los bits de esta orden indica si la
interrupcion asociada esta enmascarada (1) o no enmascarada
(0)
31
33. =OCW2=
bit valor significado
=== ===== ===========
0 0/1
1 0/1 -> IR sobre la que actuar
2 0/1 /
3 0
4 0
5 0/1
6 0/1 -> 001/011 EOI
7 0/1 /
OCW3 est´ dedicado a funciones espec´
a ıficas (ver bibliograf´ que alteran
ıa)
el esquema normal de prioridades. Los dos primeros bits son interesantes.
Cuando toman el valor 10 indican que se procede a leer el registro IRR.
Cuando toman el valor 11 indican que se procede a leer el ISR.
Como ejemplo, la siguiente l´
ınea de c´digo deshabilita la interrupci´n de
o o
reloj:
outportb(0x21,1);
y las dos l´
ıneas siguientes leen qu´ interrupciones est´n pendientes de ser
e a
procesadas:
outportb(0x20,0xa0); OCW3 al primario
IRR=inportb(0x20);
2.8.3. Implantaci´n
o
Como se ha dicho, en los AT y posteriores, existe un segundo 8259 conec-
tado en cascada al primero. Al primero se accede mediante los puertos 0x20
y 0x21, y al segundo mediante los puertos 0xa0 y 0xa1. Al arrancar, la BIOS
coloca la base de interrupciones del primer controlador a 8, con lo que IR0-7
quedan ligadas a los vectores 8-15. El segundo 8259 genera las interrupciones
0x70 a 0x77. La asignaci´n de los diversos IR es la siguiente:
o
IRQ0 temporizador
IRQ1 teclado
IRQ2 E/S en los XT
32