jueves, 11 de agosto de 2016

Lo Aprendido

Luis Fernandez 
25.299.338

Introducción
TIENE SENTIDO DEDICAR NUESTRO TIEMPO A APRENDER A PROGRAMAR EN UN LENGUAJE, COMO ES EL ENSAMBLADOR, DE BAJO NIVEL, TENIENDO A NUESTRA POSPOSICIÓN SOFISTICADAS HERRAMIENTAS DE DESARROLLO RÁPIDO QUE, EN MINUTOS, SON CAPACES DE GENERAR LAS APLICACIONES MAS COMPLEJAS QUE PODAMOS IMAGINAR ?.

Programación una asignatura muy importante ya que nos enseña diferentes temas de gran importancia aun mas para la rama de computación, los distintos temas están Distribuidos en:



  • Sistemas Numéricos.
  • Lenguaje Ensamblador--ASSEMBLER.
  • Procesamientos De Datos.
  • Sección De Memoria.
  • Sección De Control
  • Evolución Del Computador



Sistemas Numericos

Es un conjunto provisto de dos operaciones que verifican ciertas condiciones relacionadas con las propiedades conmutativa, asociativa y distributiva. El conjunto de los números enteros, los racionales o los reales son ejemplos de sistemas numéricos, aunque los matemáticos han creado muchos otros sistemas numéricos más abstractos para diversos fines. Además debe tenerse en cuenta que dado un sistema numérico existen diversas formas de representarlo, por ejemplo en los enteros podemos usar la representación decimal, la binaria, la hexadecimal, etc. En los racionales podemos optar por representarlos de manera decimal o como fracción de enteros, etc.
Los sistemas numéricos se caracterizan por tener una estructura algebraica (monoide, anillo, cuerpo, álgebra sobre un cuerpo), satisfacer propiedades de orden (total, buen) y propiedades topológicas y analíticas (densidad, metrizabilidad, completud) adicionales.



Convertir números binarios a decimales 
Trabajando en el lenguaje ensamblador nos encontramos con la necesidad de convertir números del sistema binario, que es el empleado por las computadoras, al sistema decimal utilizado por las personas.
 El sistema binario está basado en únicamente dos condiciones o estados, ya sea encendido (1) o apagado (0), por lo tanto su base es dos. Para la conversión podemos utilizar la formula de valor posicional.
 Por ejemplo:
si tenemos el numero binario 10011, tomamos de derecha a izquierda cada dígito y lo multiplicamos por la base elevada a la nueva posición que ocupan:
Binario: 1 1 0 0 1
Decimal:1*2^0+1*2^1+0*2^2+0*2^3+1*2^4 = 1 + 2 + 0 + 0 + 16 = 19 decimal.
El carácter ^ es utilizado en computación como símbolo de potenciación y el carácter * se usa para representar la multiplicación.

Convertir números decimales a binarios 
Existen varios métodos de conversión de números decimales a binarios; aquí solo se analizará uno. Naturalmente es mucho mas fácil una conversión con una calculadora científica, pero no siempre se cuenta con ella, así que es conveniente conocer por lo menos una forma manual para hacerlo.
El método que se explicará utiliza la división sucesiva entre dos, guardando el residuo como dígito binario y el resultado como la siguiente cantidad a dividir.
Tomemos como ejemplo el número 43 decimal.
43/2 = 21 y su residuo es 1
 21/2 = 10 y su residuo es 1
10/2 = 5 y su residuo es 0
5/2 = 2 y su residuo es 1
2/2 = 1 y su residuo es 0
1/2 = 0 y su residuo es 1
Armando el número de abajo hacia arriba tenemos que el resultado en binario es 101011.

Sistema hexadecimal
En la base hexadecimal tenemos 16 dígitos que van del 0 al 9 y de la letra A hasta la F (estas letras representan los números del 10 al 15). Por lo tanto, contamos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F.
La conversión entre numeración binaria y hexadecimal es sencilla. Lo primero que se hace para una conversión de un número binario a hexadecimal es dividirlo en grupos de 4 bits, empezando de derecha a izquierda. En caso de que el último grupo (el que quede mas a la izquierda) sea menor de 4 bits se rellenan los faltantes con ceros.
Tomando como ejemplo el número binario 101011 lo dividimos en grupos de 4 bits y nos queda:
10; 1011

Rellenando con ceros el último grupo (el de la izquierda):
 0010; 1011

Después tomamos cada grupo como un número independiente y consideramos su valor en decimal:
0010 = 2; 1011 = 11.

Binario

En el método binario existen varias operaciones como lo son:

Suma

Resta

Multiplicación

División

Evolución Del Computador

El Ábaco
Fue inventada en Babilonia unos 500 anos antes de Cristo, los ábacos antiguos eran tableros para contar, no eran una computadora porque no tenían la capacidad para almacenar información.

Calculadora Pascal
En 1642 por el joven francés BLAISE PASCAL al ver que su padre tenia problemas para llevar una correcta cuenta de los impuestos que cobraba inventa una maquina calculadora que trabajaba a base de engranajes, la misma que Pascal la llamo con en nombre de PASCALINA.

Resultado de imagen para calculadora pascal

Maquina de Multiplicar de Leibniz

Gottfried Wilhelm von Leibniz agrega a la maquina inventada por Blaise Pascal las funciones de multiplicación y división.
Resultado de imagen para Maquina de Multiplicar de Leibniz

Maquina de Telar de Jacquard 

En 1801 el Francés Joseph Marie Jacquard inventa una máquina de telar. Una de las ventajas es que por atravez de tarjetas perforadas la maquina era capaz de crear diferentes patrones en las telas. Las tarjetas perforadas contenían orificios, los cuales la maquina era capaz de leer y así efectuar el tipo de patrón que se le había indicado. 




Máquina diferencia y analítica de Babbage 

(1822)

En 1822 Charles Babbage creo una maquina diferencial capaz de desarrollar polinomios pero varios inconvenientes en las piezas de esta maquina hicieron que fracasara, luego de este fracaso en 1833 Babbage crea la maquina analitica la cual era capaz de hacer todas las operaciones matemáticas y ser programada por medio de tarjetas de cartón perforado y guardar una enorme cantidad de cifras, es por esto que a Charles Babbage se le considera el padre de la informatica.





Assembler

se refiere a un tipo de programa informático que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene código máquina, ejecutable directamente por el microprocesador


Características
  • El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es decir, lenguaje de bajo nivel.
  • El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un Microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina distinta, aun con el mismo Microprocesador, solo pueden ser reutilizados secciones especiales del código programado.
  • Los programas hechos en lenguaje ensamblador, al ser programado directamente sobre Hardware, son generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ). 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. 
Funcionamiento
El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno de los códigos nemotécnicos que aparecen por su código de operación correspondiente en sistema binario para la plataforma que se eligió como destino en las opciones específicas del ensamblador.
Tipos De Ensambladores
Podemos distinguir entre dos tipos de ensambladores:
  • ·       Ensambladores básicos. Son de muy bajo nivel, y su tarea consiste básicamente en ofrecer nombres simbólicos a las distintas instrucciones, parámetros y cosas tales como los modos.
  •       Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrás pudiendo trabajar con programas con estructuras de 16 bits. Además de realizar la misma tarea que los anteriores, permitiendo también el uso de macros, permiten utilizar estructuras de programación más complejas propias de los lenguajes de alto nivel.





Procesamiento De Datos

Procesamiento de Datos es definido como la técnica que consiste en la recolección de los datos primarios de entrada, los cuales son evaluados y ordenados, para obtener información útil, que luego serán analizados por el usuario final, para que pueda tomar las decisiones o realizar las acciones que estime conveniente. A continuación se presentan las tres etapas que componen un procesamiento de datos, las cuales son las siguientes:

-Entrada: Los datos deben ser obtenidos y llevados a un bloque central para ser procesados. Los datos en este caso, denominados de entrada, son clasificados para hacer que el proceso sea fácil y rápido.

-Proceso: Durante el proceso se ejecutarán las operaciones necesarias para convertir los datos en información significativa. Cuando la información esté completa se ejecutará la operación de salida, en la que se prepara un informe que servirá como base para tomar decisiones.
-Salida: En todo el procesamiento de datos se plantea como actividad adicional, la administración de los resultados de salida, que se puede definir como los procesos necesarios para que la información útil llegue al usuario.

Procesamiento Centralizado

Es utilizado en los Mainframes, Minicomputadores y en las Micro multiusuario. Los enlaces a estas máquinas se hacen a través de terminales tontas, Estas terminales no son capaces de procesar información por lo que trabajan en contacto directo con el procesador de la computadora central. 

Ventajas: 
• Un punto de control. Mayor control de seguridad y protección de la información en un solo punto. 
• Fácil de mantener, fácil despliegue de los cambios.
 • Soporte en un solo punto

Desventajas: 
• Interfaz de usuario poco llamativo. Por el uso de la red amplia, se evita tener pantalla con imágenes. 
• Debe haber mecanismo de respaldo o copia del sistema centralizada en caso de contingencia muy estricta, muere el sistema central, muere el sistema a nivel general. 


Procesamiento Distribuido

Un sistema distribuido es multiusuario y multitarea. Todos los programas que se ejecuten en un sistema distribuido lo van a hacer sobre la CPU del servidor en lo que en términos informáticos se denomina "tiempo compartido". Un sistema distribuido comparte la CPU. 

Ventajas: 
1. Aumenta la confiabilidad al sistema. Esta arquitectura tiene redundancia, al fallar uno de los sistemas, las demás siguen funcionando.
 2. Crecimiento de la empresa es soportable. Se realiza tantas copias del sistema en diferentes nuevos lugares geográficos.
 3. Uso de ancho de banda local. Permite tener interfaz muy amigable o vistosa. Solo se consume el ancho de la banda de una red local. 

Desventajas:
 1. Soporte local de la tecnología. Cada lugar geográfico debe tener su personal que soporte tecnológicamente esta arquitectura. 
2. Una mala distribución de los datos, es peor que un sistema centralizado, uso en exceso de la red amplia. 


Unidad De Control

Es uno de los tres bloques funcionales principales en los que se divide una unidad central de procesamiento (CPU). Los otros dos bloques son la unidad de proceso y el bus. Su función es buscar las instrucciones en la memoria principal, decodificarlas y ejecutarlas, empleando para ello la unidad de proceso. Existen dos tipos de unidades de control: 

  •  Las cableadas: usadas generalmente en máquinas sencillas.
  • Las micro-programadas:  propias de máquinas más complejas.


Memoria

La memoria es el dispositivo que retiene, memoriza o almacena datos informáticos. La memoria proporciona una de las principales funciones de la computación moderna: el almacenamiento de información y conocimiento.


Tipos de Memorias del computador 

Física: 

  • Cache 
  • Interna o principal 
  • RAM 
  •  ROM 

Lógica: 

  • Unidad de gestión de memoria 
  • Memoria virtual

Física
Memoria Cache 
  •  Guarda temporalmente datos recientemente procesados
  •  Menor tamaño y mayor velocidad que la memoria principal 
  •  5 o 6 veces más rápida que la memoria RAM 
  •  Duplica información 
  •  Rápido acceso a dato

Interna o Principal
 Memoria RAM
  •  Memoria Volátil 
  •  Manejo de datos necesarios para el desempeño del software Tipos de RAM 
  • SRAM (estática) 
  •  Su contenido es inalterado siempre y cuando exista una fuente de energía 
  •  DRAM (dinámica) 
  •  implican una "lectura destructiva", es decir, que la información se pierde al leerla
Memoria ROM
  •  Memoria no volátil 
  •  Permite sólo la lectura de la información y no su destrucción 
  •  Protege los datos contenidos en ella, evitando la sobre-escritura de éstos 
  •  Se emplean para almacenar información de configuración del sistema 
Tipos de ROM 
 PROM (Programable) 
  •  Puede ser programada (pueden ser escritos los datos) una sola vez a través de un dispositivo especial. 
 EPROM y EEPROM (Borrable) 
  •  Una vez programada, una EPROM se puede borrar solamente mediante exposición a una fuerte luz ultravioleta.
Lógica
Unidad de Gestión de Memoria 
  •  Traduce las direcciones lógicas (o virtuales) a direcciones físicas (o reales).
  •  Proteger la memoria ◦ Controla la cache.
Memoria Virtual 
  • Técnica de gestión de la memoria 
  • Permite que el sistema operativo disponga de mayor cantidad de memoria de la que esté disponible físicamente 
  • Evita el estancamiento de procesos


Los Buses De Un Computador

Son el conjunto de conexiones físicas que pueden compartirse con múltiples componentes de hardware para que se comuniquen entre sí.

Características de un bus 

  •  Cantidad de información transmitida. 
  •  Los bits corresponden líneas físicas. 
  •  El término “Ancho del Bus” 
  •  Velocidad del bus se define en Frecuencia
Existen Distintos buses:

Bus Interno
También se le conoce como EXPANSIÓN “Bus Frontal” o FSB Conecta el procesador con la Memoria RAM.

Bus de Expansión
También conocido como “Bus de Entrada y Salida” Conecta diversos componentes de la Placa Madre entre sí.
bus de control
 También en ciertas ocasiones denominado como “Bus de Comando” Transporta ordenes y señales de sincronización provenientes de la Unidad de Control hacía diferentes componentes del hardware.

bus de dirección
También en conocido como “Bus de Memoria” Transporta direcciones de memoria al que el Procesador desea acceder, sea para leer o escribir datos.

Bus De Datos
Transfiere instrucciones desde y hasta el procesador; es un bus bidireccional.