facebook

mi facebook

domingo, 28 de agosto de 2011

Introducción a interconectividad



jueves, 25 de agosto de 2011

Intelgencia Artificial


dedicada al desarrollo de agentes racionales no vivos.
es la disciplina que se encarga de construir procesos que al ser ejecutados sobre una arquitectura física producen acciones o resultados que maximizan una medida de rendimiento determinada, basándose en la secuencia de entradas percibidas y en el conocimiento almacenado en tal arquitectura.
Existen distintos tipos de conocimiento y medios de representación del conocimiento, el cual puede ser cargado en el agente por su diseñador o puede ser aprendido por el mismo agente utilizando técnicas de aprendizaje.

También se distinguen varios tipos de procesos válidos para obtener resultados racionales, que determinan el tipo de agente inteligente. De más simples a más complejos, los cinco principales tipos de procesos son:

  • Ejecución de una respuesta predeterminada por cada entrada (análogas a actos reflejos en seres vivos).
  • Búsqueda del estado requerido en el conjunto de los estados producidos por las acciones posibles.
  • Algoritmos genéticos (análogo al proceso de evolución de las cadenas de ADN).
  • Redes neuronales artificiales (análogo al funcionamiento físico del cerebro de animales y humanos).
  • Razonamiento mediante una lógica formal (análogo al pensamiento abstracto humano).

También existen distintos tipos de percepciones y acciones, pueden ser obtenidas y producidas, respectivamente por sensores físicos y sensores mecánicos en máquinas, pulsos eléctricos u ópticos en computadoras, tanto como por entradas y salidas de bits de un software y su entorno software.

Varios ejemplos se encuentran en el área de control de sistemas, planificación automática, la habilidad de responder a diagnósticos y a consultas de los consumidores, reconocimiento de escritura, reconocimiento del habla y reconocimiento de patrones. Los sistemas de IA actualmente son parte de la rutina en campos como economía, medicina, ingeniería y la milicia, y se ha usado en gran variedad de aplicaciones de software, juegos de estrategia como ajedrez de computador y otros videojuegos.



miércoles, 24 de agosto de 2011

Topologías Básicas de interconexión

Una topología es:
La disposición Física de los nodos en una interconexión( interconexión
es la conexión física y lógica entre dos o más redes de telecomunicaciones. Su objetivo es facilitar que los usuarios de cualquier operador se puedan comunicar con los usuarios de los demás operadores, y dar acceso a los servicios ofrecidos por las distintas redes).
En general una topología se expresa como un mapa lógico que representa gráficamente cada uno de los nodos y los vinculos físicos que los conectan.
Los mapas topológicos se utilizan como la GUI (Graphic User Interface o Interfaz Gráfica de Usuario. Conjunto de formas y métodos que posibilitan la interacción de un sistema con los usuarios utilizando formas gráficas e imágenes. Con formas gráficas se refiere a botones, íconos, ventanas, fuentes, etc. los cuales representan funciones, acciones e información.) a través del cual funcionan casi todas las herramientas de sofftware de adminsitración.

En la siguiente fígura podran ver los elementos básicos de red que se combinan de una manera u otra para formar interconexiones.


Segmento LAN (del inglés local area network, red de area local)
este es la parte fundamental con que se construye las interconexiones.
Dicho de otra manera es aquel que permite vincular alas interconexiones.por ejemplo:
la internet es una coleccion de millones de segmentos LAN.


Conexiones remotas
bueno es las conexiones remotas se utilizan circuitos telefónicos, cables, señales por satélite para enlazar hosts desistalados físicamente en el segmento LAN como se ven el a imagen anterior el cual aqui toma un papel muy importante es el enlace de telecomunicación.

LAN campus
buenos para definir este pies en Cisco este nombre es muy utilizado como término genérico pra describir interconexiones locales corporativas. la mayoría están instaladas en un solo edificio y no a largo de todo el campus de oficinas pero sin embargo estan formadas por mútilples segmentso LAN, no por una sola LAN. ademas se dstingue por el uso de segmentos de espina dorsal de lata velocidad para interconectar los demas segmentos LAN locales. y por lo frecuente opera a través de cableado en fibroa óptica.

Vinculos WAN(red de área amplia)
este son vínculos de telecomunicaciones entre ciudades aunque algunos se encuentran instalados en el fondo de los océanos para conectar continentes. las nuevas vinculaciones WAN utilizan fibra óptica de ultra alta velocidad alcanzando hasta 40Gbps de tanferencia de datos. y los de menor velocidad funcionan con 1.5 mbps y 45 mbps.

miércoles, 20 de abril de 2011

1. Traductores Bajo Nivel

¿QUÉ ES UN TRADUCTOR?

Un traductor es cualquier programa que toma como entrada un texto escrito en un lenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominado objeto.

En el caso de que el lenguaje fuente sea un lenguaje de programación de alto nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o código de máquina), a dicho traductor se le denomina compilador. Un ensamblador es un compilador cuyo lenguaje fuente es el lenguaje ensamblador. Un intérprete no genera un programa equivalente, sino que toma una sentencia del programa fuente en un
lenguaje de alto nivel y la traduce al código equivalente y al mismo tiempo lo ejecuta. Históricamente, con la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intérpretes frente a los compiladores, pues el programa fuente sin traducir y el intérprete juntos daban una ocupación de memoria menor que la resultante de los compiladores. Por ello los primeros ordenadores personales iban siempre acompañados de un intérprete de BASIC (Spectrum, Commodore VIC-20, PC XT de IBM, etc.). La mejor información sobre los errores por parte del compilador así como una mayor velocidad de ejecución del código resultante hizo que poco a poco se impusieran los compiladores. Hoy en día, y con el problema de la memoria prácticamente resuelto, se puede hablar de un gran
predominio de los compiladores frente a los intérpretes, aunque intérpretes como los incluidos en los navegadores de Internet para interpretar el código JVM de Java son la gran excepción.

Ventajas de compilar frente a interpretar:

Se compila una vez, se ejecuta n veces.

En bucles, la compilación genera código equivalente al bucle, pero interpretándolo se traduce tantas veces una línea como veces se repite el bucle.

El compilador tiene una visión global del programa, por lo que la información

Ventajas del intérprete frente al compilador:

Un intérprete necesita menos memoria que un compilador. En principio eran más abundantes dado que los ordenadores tenían poca memoria.

Permiten una mayor interactividad con el código en tiempo de desarrollo.

Un compilador no es un programa que funciona de manera aislada, sino que necesita de otros programas para conseguir su objetivo: obtener un programa ejecutable a partir de un programa fuente en un lenguaje de alto nivel. Algunos de esos programas son el preprocesador, el linker, el depurador y el ensamblador. El preprocesador se ocupa (dependiendo del lenguaje) de incluir ficheros, expandir
macros, eliminar comentarios, y otras tareas similares. El linker se encarga de construir el fichero ejecutable añadiendo al fichero objeto generado por el compilador las cabeceras necesarias y las funciones de librería utilizadas por el programa fuente. El depurador permite, si el compilador ha generado adecuadamente el programa objeto, seguir paso a paso la ejecución de un programa. Finalmente, muchos compiladores, en vez de generar código objeto, generan un programa en lenguaje ensamblador que debe después convertirse en un ejecutable mediante un programa ensamblador.

1.1 Ensamblador

El lenguaje ensamblador, o assembler (assembly language en inglés ) es un lenguaje de programación debajo nivel para los computadores, microprocesadores, microcontroladores, y otros circuitos integradosprogramables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico a cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que, idealmente son portables.

Características

  • El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel.
  • El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra máquina distinta. Al cambiar a una máquina con arquitectura diferente, generalmente es necesario reescribirlo completamente.
  • Los programas hechos, por un programador experto, en lenguaje ensamblador, son generalmente mucho más rápidos y consumen menos recursos del sistema (memoria RAM y ROM.) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
  • Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no están disponibles en los lenguajes de alto nivel.
  • También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecución.

[editar]
Programa ensamblador

Artículo principal: Ensamblador

Típicamente, un programa ensamblador (assembler en inglés) moderno crea código objeto traduciendo instrucciones mnemónicas de lenguaje ensamblador en opcodes, y resolviendo los nombres simbólicos para las localizaciones de memoria y otras entidades.1 El uso de referencias simbólicas es una característica clave del lenguaje ensamblador, evitando tediosos cálculos y actualizaciones manuales de las direcciones después de cada modificación del programa. La mayoría de los ensambladores también incluyen facilidades de macros para realizar sustitución textual - ej. generar cortas secuencias de instrucciones como expansión en línea en vez de llamar a subrutinas.

Los ensambladores son generalmente más simples de escribir que los compiladores para los lenguajes de alto nivel, y han estado disponibles desde los años 1950. Los ensambladores modernos, especialmente para las arquitecturas basadas en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC, así como también para el x86 (-64), optimizan la planificación de instrucciones para explotar la segmentación del CPU eficientemente.

1.2 Pasadas del texto fuente

Tratamiento de operandos
Las instrucciones de maquina operan sobre los datos, las categorías mas importantes de datos son:
Numéricos
• Enteros o de punto fijo.
• Punto flotante.
• BCD ( Decimal codificado ó binario).- Los datos BCD comprimidos presentan dos dígitos por byte y los no
comprimidos presentan un dígito por byte.
Caracteres
Unidades de 8 bits que normalmente contienen representaciones ASCII de símbolo.
Datos lógicos
• Byte con o sin signo (8 bits).- El bit 7 es el bit de signo de un byte sin signo.
• Palabra con o sin signo (word-16 bits).- El bit 15 es el bit de signo de una word sin signo
• Doble palabra con o sin signo (dword-32 bits).- El bit 31 es el bit de signo de una dword sin signo
• Cuádruple palabra con o sin signo (qword-64 bits).- El bit 63 es el bit de signo de una qword sin signo
Direcciones
Son una forma de dato. En muchos casos, algún calculo se debe ejecutar sobre la referencia de un operando en una
instrucción para determinar la dirección de la memoria principal o virtual. En este contexto, las direcciones se pueden
considerar como enteros sin signo.
• Desplazamiento.- Son cantidades de 16 o 32 bits que contienen la distancia de la dirección base o la
dirección referenciada.
• Punteros.- Consistentes en selectores de segmento de 16 bits y un desplazamiento de 16 o 32 bits.
Estilo de programación.- Un programa en ensamblador es una serie de instrucciones ejecutables que le dice al
ensamblador que sentencia tiene que ejecutar. Cada sentencia esta compuesta por cuatro campos:
a) Campo nombre.- Se emplea con frecuencia como punto de entrada o regreso. Algunas veces es denominado
campo del rotulo, asigna un nombre simbólico a la dirección del comienzo de memoria real de una instrucción de
ensamblador. Debe comenzar con un carácter alfabético de 31 caracteres máximo.
b) Campo operación.- Contiene un mnemónico de 2 a 6 caracteres normalmente es una abreviatura en ingles, puede
representar una instrucción maquina, una macroinstruccion, o una pseudo-operación.
c) Campo operando.- Contiene la posición o posiciones donde están los datos que van a ser manipulados por la
instrucción de la operación, si la instrucción mide 1 o 2 operandos, están separados de la instrucción por lo menos
de un espacio en blanco, si hay dos operandos estos están separados por una coma.
d) Campo comentario.- Se utiliza para documentar internamente el código, este debe comenzar con un punto y coma
( ; ).
Formato general de una sentencia
[nombre] mnemónico [operando] [; comentario]

MOV AX, BX = destino, fuente
Operando destino.- La operación puede producir un resultado.
Operando fuente.- La operación puede involucrar uno o mas operandos fuentes, esto es, operandos que son
entradas para la operación.

1.3 Tratamientos de Operandos y Modos de Direccionamiento de Maquina Objeto

Técnicas de direccionamiento
El campo o campos de dirección en un formato de instrucción típico son algo limitados. Para hacer referencia a un rango mas grande de localidades en memoria principal o, para sistemas en memoria virtual. Para lograr este objetivo, se han empleado una variedad de técnicas de direccionamiento. Todos involucran un trueque entre el rango de direcciones y/o la flexibilidad de direccionamiento por una parte, y el numero de referencias de memoria y/o la complejidad de calculo de la dirección por otro.
• Direccionamiento Inmediato. El microprocesador decodifica el modo de direccionamiento que está siendo referenciado. Se transfiere un byte, word o dword de datos inmediatos hacia el registro o localidad en la memoria del destino. Ejemplo:
MOV AL, 22H
La instrucción copia el 22H de tamaño byte al registro AL.
• Direccionamiento de registros. Transfiere un byte, word o dword desde el registro fuente o localidad en la memoria, hasta el registro o localidad destino en la memoria. Ejemplos:
MOV AX, BX
MOV CX, DX
La instrucción copia el contenido de tamaño de palabra en el registro DX y lo pasa al registro CX. NOTA: de los 8
modos de direccionamiento, el inmediato y el de registros tienen los ciclos de ejecución mas pequeños, como el dato operando puede ser incluido en la misma instrucción y ya este almacenado internamente se evita el tiempo de acceso a dispositivos externos o memoria externa.
• Direccionamiento directo. Mientras el direccionamiento inmediato solamente almacena datos en registros o locaciones de memoria, el direccionamiento directo mueve datos de locaciones de memoria a registro ó desde registro a locaciones de memoria. Ejemplo:
LOC_1 DB 00
LOC_2 DW 0000
MOV AL, LOC_1
MOV BX, LOC_2
MOV LOC_1, AH
• Direccionamiento indirecto por registros. En lugar de diferenciar con un rotulo de dirección del operando fuente, el valor del operando es señalado por una dirección de desplazamiento almacenada en alguno de los siguientes registros: SI (índice fuente), DI (índice destino), BX (registro base) y BP (puntero base). El designador del operando fuente es reconocido por corchetes ( [ ] ). Ejemplo:
MOV AX, [BX]
REGISTROS
GENERALES
REGISTROS DE
SEGMENTACION

3
La instrucción copia los datos en una dirección del segmento de datos con un desplazamiento dado por BX y lo pasa al registro AX.
• Direccionamiento relativo a la base. La dirección efectiva de un operando se obtiene de la suma del desplazamiento y contenido de un registro base ( BX o BP ) relativo al segmento relacionado. Ejemplo:
MOV AL, [BX] + 4 ó MOV AL, [BX + 4] ó MOV AL, 4[BX]
La instrucción copia los datos de una dirección en el segmento de datos, formada por el contenido de BX mas 4, y lo pone en el registro AL.
• Direccionamiento indexado directo. La dirección del desplazamiento del operando se calcula sumando el
desplazamiento a un registro índice (SI o DI) en el desplazamiento seleccionado. Frecuentemente se utiliza para
acceder a los elementos de un array estático. Ejemplo:
MOV AL, ARRAY [SI]
La instrucción copia la dirección formada de sumar ARRAY y SI entonces la coloca en el registro AL.
• Direccionamiento base indexado. El operando se localiza en el segmento seleccionado en un desplazamiento determinado por la suma de los contenido del registro base, registro índice y opcionalmente el desplazamiento. Si no se incluye desplazamiento entonces, el registro base indexado se utiliza con mas frecuencia para acceder a los elementos de un array dinámico. Ejemplo:
MOV AX, ARRAY [ BX+ DI]
La instrucción copia la dirección formada de sumar ARRAY, BX y DI entonces la coloca en el registro AX.
• Extensiones del 80386. Los modos de direccionamiento de 32 bits se extienden para permitir que cualquier registro sea utilizado como registro base o registro índice. Los modos de 32 bits requieren que los registros índices y bases si se usan tengan valores validos de 32 bits.
Ensambladores residentes y cruzados Los ensambladores son traductores que transforman programas fuentes escritos en lenguaje ensamblador, en programas objetos equivalentes escritos en lenguaje máquina. La traducción se realiza de tal forma que cada instrucción escrita en ensamblador se transforma en una única instrucción en lenguaje maquina. El lenguaje ensamblador es una simplificación simbólica del lenguaje maquina y el programa ensamblador es su traductor.
• Ensamblador cruzado (cross assembler). Es un traductor de lenguaje ensamblador a lenguaje maquina que traduce en una computadora y ejecuta en otra distinta. La ventaja que ofrece este tipo de traductor es utilizar una computadora de características potentes para desarrollar programas que van dirigidos a otra cuya potencia y facilidades para el programador están ciertamente limitados.
• Macroensamblador (macroassembler). Es un ensamblador que posee la característica de permitir el uso de lo que se denomina microinstrucción. Una micro instrucción no es mas que un grupo de instrucciones que de forma global reciben nombre simbólico al que se puede hacer referencia en un programa tantas veces como se desee.
El macroensamblador coloca en la traducción el mencionado grupo de instrucciones en cada una de las referencias (expansión de macros).
• Microensamblador. Es un traductor utilizado en la microprogramacion que algunas computadoras tienen. Estos microprogramas permiten cierta flexibilidad al repertorio de instrucciones maquina de la computadora.
• Ensamblador de una pasada o increméntales. Traducen en una sola pasada construyendo la tabla de símbolos a medida que van apareciendo las variables y etiquetas. Tienen el pequeño inconveniente de no permitir lo que se denomina referencias adelantadas, es decir, referencias a líneas de programa posteriores no traducidos.
• Ensamblador de dos pasadas. Realizan la traducción en dos pasadas, en la primera leen el programa fuente construyendo la tabla de símbolos y asignando las correspondientes direcciones, en la segunda vuelven a leer el programa traduciéndolo a lenguaje maquina. Si están permitidos las referencias adelantadas, siendo este tipo de ensamblador los mas utilizados actualmente.