Documente Academic
Documente Profesional
Documente Cultură
1.1 Introducción
Desde 1985 ha habido una media-docena de nuevas máquinas cuya introducción aparentaba
revolucionar la industria de la informática; sin embargo estas revoluciones sólo fueron
ilusorias, porque alguien más construyó una computadora con un mejor rendimiento.
Algunas aplicaciones que hace algunas décadas resultaban como parte de la ficción, hoy en
día forman parte de nuestra vida diaria, por ejemplo:
• Cajeros automáticos: Una computadora puesta en las paredes de los bancos, para
distribuir y colectar efectivo, era un concepto ridículo en los 1950’s, cuando la
computadora más barata costaba al menos $500, 000.00 dólares y era del tamaño de un
automóvil.
• Computadoras portátiles: Esto sólo podía ocurrir en sueños, sin embargo los avances en
los sistemas de cómputo permiten llevar las computadoras prácticamente a cualquier
sitio.
• El proyecto del genoma humano: El costo del equipo de cómputo necesario para
monitorear las secuencias de DNA humano fue de algunos millones de dólares. Es poco
probable que alguien hubiera considerado este proyecto si el costo fuera de 10 a 100
veces más alto, como ocurría hace 15 o 25 años.
• Internet: Actualmente el Internet esta transformando nuestra sociedad, entre sus usos
están la distribución de noticias, compras desde catálogos en línea, planeación de
vacaciones, envío de flores, encontrar a otros que compartan los mismos intereses, etc.
Claramente los avances en la tecnología de las computadoras afectan casi todos los
aspectos de nuestra sociedad. Los avances en hardware han permitido a los programadores
crear software increíblemente útil. Algunas aplicaciones que son ficción para el mañana
son: La sociedad sin efectivo, autopistas inteligentes y el cómputo auténticamente ubicuo:
no llevar computadoras por que ellas estarán disponibles en donde sea.
En la década de los 1960’s y 1970’s, una restricción primaria sobre el rendimiento del
cómputo fue el tamaño de la memoria de las computadoras. Los programadores obedecían a
un credo simple: Al minimizar el espacio de memoria se hacen programas más rápidos. En
la última década, los avances en el diseño de las computadoras y en la tecnología de las
memorias han reducido la importancia de la memoria pequeña.
Los programadores interesados en el rendimiento ahora necesitan entender los tópicos que
han reemplazado al modelo simple de memoria de los 1960’s: La naturaleza jerárquica de
las memorias y la naturaleza paralela de los procesadores. Los programadores que busquen
construir versiones competitivas de compiladores, sistemas operativos, bases de datos, etc.,
deberán contar con conocimientos de la organización de las computadoras.
Para “hablarle” a una máquina electrónica, sería necesario enviarle señales eléctricas. Las
señales que las máquinas entienden fácilmente son “encendido” y “apagado”, de modo que
el alfabeto de las máquinas solo se forma por dos letras. Así como las 27 letras del alfabeto
español no nos limitan cuanto puede ser escrito, con las dos letras del alfabeto de las
computadoras no les establece un límite de lo que se puede hacer con ellas. Los dos
símbolos para estas dos letras son los números 0 y 1, por lo que comúnmente consideramos
como el lenguaje de las máquinas a los números en base 2, o números binarios. A cada
“letra” la referimos como un dígito binario o bit.
1000110010100000
Le dicen a una computadora que sume dos números. Un fundamento del cómputo es el uso
de números para instrucciones y datos, esto se revisará con mayor detalle en la Unidad 2.
add A, B
y el ensamblador lo trasladaría a
1000110010100000
El nombre acuñado para este lenguaje simbólico, aún usado actualmente, es lenguaje
ensamblador.
Una simple pregunta se hicieron los pioneros de la computación: Si fue posible construir un
programa que traslade de notación simbólica a instrucciones binarias, para simplificar la
programación ¿Qué impide la creación de un programa que traduzca de un lenguaje más
cercano al pensamiento humano a lenguaje ensamblador?, la respuesta fue: Nada. A estos
programas se les conoce como compiladores y a los lenguajes que ellos compilan se les
conoce como lenguajes de programación de alto nivel. En un lenguaje de alto nivel el
programador escribiría la expresión:
A+B
add A, B
Y el ensamblador lo traduciría a :
1000110010100000
La ventaja final es que estos lenguajes de programación permiten a los programas ser
independientes de la computadora en la cual fueron escritos, dado que los compiladores y
ensambladores pueden trasladar los programas en lenguajes de alto nivel a instrucciones
binarias de cualquier máquina.
Estas tres ventajas son tan fuertes que actualmente poca programación se escribe en
lenguaje ensamblador. Cuando un programador escribe un programa en un lenguaje de alto
nivel, puede olvidarse de lo que hay por debajo, es decir, puede ignorar la notación del
lenguaje ensamblador, y mejor aún, puede ignorar el código binario, en otras palabras, esta
utilizando una abstracción.
Como era natural, los programadores notaron que el reutilizar al software es más eficiente
que iniciar con un programa desde cero. De aquí que los programadores hagan uso de
varias rutinas que se encuentran en diferentes librerías. Una de las primeras librerías
contenía rutinas de entrada y salida de datos, la cual incluía, por ejemplo, rutinas para
controlar impresoras, que aseguraban que la impresora tuviera papel antes de iniciar la
impresión. Tal software controlaba dispositivos de entrada y salida como discos
magnéticos, cintas magnéticas y pantallas de video.
Pronto se descubrió que los programas se ejecutaban en forma eficiente si existía otro
programa encargado de supervisar su ejecución. Cuando terminaba una tarea, el programa
supervisor iniciaba con la siguiente, evitando pérdidas de tiempo. Estos programas
supervisores también incluían librerías con rutinas de entrada/salida, y son la base de los
sistemas operativos actuales. Los sistemas operativos son programas que manejan los
recursos de una computadora para el beneficio de los programas que corren en esa
máquina.
Puede notarse que desde el momento que se carga al sistema operativo, el usuario de
computadoras trabaja sobre una abstracción, puesto que todos sus programas trabajan sobre
una plataforma establecida, de la cual el programador puede ignorar los detalles que hay
por debajo.
La vista simplificada del software por capas genera algunos conflictos, por ejemplo en el
caso de los compiladores, los compiladores son utilizados para producir programas, tanto
aplicaciones como software de sistema. Sin embargo, cuando una aplicación se esta
ejecutando, ya no requiere del compilador. Por lo que el software de aplicaciones no puede
estar como una capa monolítica ubicada sobre el software de sistemas. Para ello se han
dado otro tipo de clasificaciones, como la que se muestra en la figura 3, no obstante, en esta
nueva clasificación para el software también se encuentran abstracciones.
1.3 Abstracciones en hardware
Sin embargo usuarios mas avanzados podrían abrir el gabinete, para encontrar mas
elementos de hardware: La tarjeta madre (una tarjeta verde con diferentes elementos
conectados), el disco duro, la unidad de disco flexible, la unidad de disco compacto, la
fuente de alimentación y los cables de conexiones.
Pero podríamos ir observando con mayor detalle a los elementos que están dentro del
gabinete, por ejemplo a la tarjeta madre, ésta contiene diferentes elementos: Al procesador
(o CPU), la DRAM, la ROM, puertos, etc. En la figura 5 se muestra la organización típica
de una tarjeta madre de una PC.
Fig. 5 – Tarjeta madre de una PC.
El área del chip es de 91 mm2 y contiene cerca de 3.3 millones de transistores; la memoria
caché ocupa al menos 1 millón de transistores.
Fig. 6 – Dentro del procesador Intel Pentium.
Los circuitos integrados son una de las abstracciones mas importantes de la electrónica, por
debajo de un circuito integrado se oculta todo el proceso que requiere para su fabricación,
desde que se toma una barra de silicio hasta que se empaquetan los chips. En la figura 6 se
muestra en forma representativa el proceso de manufactura de los chips.
Y aún llegando al silicio encontramos algunas abstracciones que nos ocultan las
propiedades físicas de este elemento o bien de las impurezas que se le agregan para formar
los diferentes materiales.
La arquitectura establece los principios sobre los cuales se diseña una computadora: Su
repertorio de instrucciones, el tamaño de los datos, el número de registros, etc. Y sobre una
misma arquitectura se estudiarán diferentes implementaciones que pueden variar en costo y
rendimiento, pero que ejecutan el mismo software.
Fig. 7 – Proceso de manufactura de los circuitos integrados.
Además, como una abstracción, se representa a una computadora con cinco componentes
clásicos: Entradas, salidas, memoria, camino de los datos y control, por lo general los
últimos dos componentes se combinan y se les denomina procesador.
Control Entrada
Camino Memoria
de los
datos Salida
Procesador
2.- Explica con tus propias palabras que es una abstracción, y en un par de objetos de la
vida diaria: automóvil, casa, televisión, etc., ilustra el uso de abstracciones.
Los siguientes ejercicios se tomaron directamente del texto (se sugiere revisarlo para
responder adecuadamente):
a) abstracción o) implementación
b) ensamblador p) instrucción
c) número binario q) arquitectura del repertorio de
d) bit instrucciones
e) caché r) circuito integrado
f) CPU (unidad central de proceso) s) memoria
g) chip t) sistema operativo
h) compilador u) procesador
i) familia de computadores v) semiconductor
j) control w) supercomputador
k) camino de datos x) transistor
l) defecto y) VLSI (circuito integrado de muy
m) dado alta escala)
n) DRAM (memoria dinámica de z) aprovechamiento (yield)
acceso aleatorio)
[ ]. Apple 11.
[ ]. Ensamblador.
[ ]. Compilador.
[ ]. Cray 1.
a) software de aplicaciones [ ]. DRAM.
b) lenguaje de programación de alto [ ]. Fortran.
nivel [ ]. IBM PC.
c) dispositivo de entrada [ ]. Teclado.
d) circuito integrado [ ]. Microprocesador.
e) mini computadora [ ]. Ratón.
f) dispositivo de salida [ ]. Sistema operativo.
g) computador personal [ ]. Pascal.
h) semiconductor [ ]. PDP-8.
i) supercomputador [ ]. Impresora.
j) software del sistema [ ]. Pantalla de tubo de rayos catódicos.
[ ]. Silicio.
[ ]. Hoja electrónica.
[ ]. Editor de textos.