Está en la página 1de 23

Curso de Computacin [parte 1/5] Qu es una computadora?

Bueno, aqui me largo con el primero de una serie de 5 posts explicando, hasta donde yo entiendo, que es esto que me apasiona tanto, a mi como a tanta gente, la computadora, una obsesion imposible de explicar. Voy a explicar que es una computadora a partir de un recorrido histrico por la historia de la computacin. Arrancamos en la Edad Antigua, con la primer mquina para calcular: El baco. El baco es un sistema posicional adaptable a casi cualquier sistema de nmeros (siempre que sean posicionales, donde el "peso" nominal de una expresin se da en relacin a la posicin en que aparece en esa expresin). Contiene en cada "peso" las unidades capaces de ser expresadas en esa posicin, una vez que se agotan las unidades de esa posicin, se suma una unidad en la posicin siguiente y retornan a cero las unidades de la posicin anterior. Hasta el baco, la humanidad no tena dificultades para contabilizar cantidades hasta 10, porque se ayudaba con los dedos de las manos, pero a partir de 10 se empezaban a complicar las cosas, y cuando se sobrepasaban los 100, o los 1000 realmente se ponia fea la situacin. Con el baco, los cmputos se agilizaron muchsimo.

a la izq. un baco decimal. a la der. un baco binario.

Literalmente, miles de aos despus, vino a revolucionar la computacin un tipo que fue un verdadero hroe de esta ciencia: Blas Pascal. Blas, hijo de un recaudador de impuestos, quiso ayudar a su padre a contabilizar mas rapidamente los impuestos recaudados, alivianando la tarea contable de todo su trabajo. Ideo una maquina, denominada luego como la "Pascalina", equipada con ruedas conectadas con dientes, al estilo de engranajes, de manera que cuando la primer rueda se moviera 10 posiciones, empujara 1 posicin a la rueda inmediatamente consiguiente hacia la izquierda, y volvera a 0. Para restar, se movan las subsiguientes ruedas en sentido inverso, restando 1 en la rueda movida, y empujando una decima (volviendo de 0 a 9) en la subsiguiente rueda hacia la derecha. Una verdadera maravilla.

El SXIX sera decisivo en las concepciones que se crearan acerca de la ciencia de la computacin. En la primera mitad del SXIX, Charles Babbage dise la maquina analtica a vapor. Un verdadero monstruo de engranajes, chimeneas y fierros, que tabulara y procesara tablas de nmeros, del tamao de una manzana y consumiendo la energa de 4 locomotoras (segn la descripcin de su inventor). Se volvi loco, nunca termin su invento y muri enfermo y en la pobreza, pero sus ideas revolucionarias y adelantadas para la poca sentaron el precedente para imaginar mquinas de computacin. Lo que Babbage ide plante el paso de las concepciones medievales y el quiebre indetenible hacia la modernidad. En 1990, cientficos que le rindieron homenaje terminaron su mquina tal como la hubiera fabricado l en aquella poca y la echaron a andar y funcion perfectamente, tal como l lo haba planificado. La asistente ms cercana de Babbage fue Ada Lovelace, la primera mujer programadora, en honor a ella le puse el nombre a mi gatita: Ada.

En 1890, Hollerith aceler los tiempos atrasadsimos para contabilizar y sintetizar los datos del censo en Estados Unidos, que se haba realizado 10 aos antes. Es decir, ya tenan que hacer un censo nuevo, y todava no tenan datos ciertos del censo anterior. Este monstruo de la computacin propuso una maquina que funcionase simulando uno de esos pianos que tocaban solos con una cinta perforada indicando las notas y sus duraciones (como los que se vean en Tom y Jerry). Los datos del censo se codificaran por el encuestador realizando un agujero en un punto especfico de una tarjeta, indicando una respuesta u otra. Estas tarjetas seran "alimentadas (sic)" a una mquina tabuladora, que sumara +1 en un contador mgnetico por cada aparicin de un agujero en una respuesta especfica, con lo cual los tiempos de "tabulacin" de los datos se aceleraron astronmicamente, tanto como la cuenta bancaria de Hollerith y sus colaboradores, quienes no perdieron la oportunidad y entendieron que dentro de 100 aos la tecnologa que ellos estaban pariendo iba a seguir rigiendo la informacin y el tratamiento de datos y fundaron la empresa mas grande de computacin del mundo: IBM, el gigante azul. Nota aparte, este concepto de 1 y 0, agujero y no-agujero, prendido y apagado, dos estados para la memoria, se establecera como la visin general de la relojera interna de cualquier sistema automtico de informacin. Todo lo que rodea, esta dentro y es una computadora tiene que ver con nmeros binarios, porque resolvi de forma paradigmtica el problema de codificar para una mquina una concepcin de sistema y de funcionamiento. A partir de este concepto, el cdigo mquina es mucho mas fcil de definir, como algo dentro de los lmites del sistema de nmeros binarios.

En los primeros aos del SXX, Alan Turing invent la mquina diferencial. Un formidable invento provisto de ruedas y correas capaz de calcular sumas y restas, y diferencias entre nmeros (!). O sea, las mismas funciones bsicas de una computadora hasta la 286. Sumas, restas (sumas en negativo),

y comparacin ("mayor que"/"menor que"

. Este verdadero genio de la computacin adems

proporcion el andamiaje de procedimientos general para la aproximacin a los algoritmos y la solucin informtica del analisis de sistemas.

En 1940, los yanquis recuperaron de los nazis algunas computadoras muy avanzadas que funcionaban en forma completamente automtica y que eran programables.

En 1945, la computadora MARK I comienza a funcionar mal. Todos los programas que se le pasaban al procesador (por medio de tarjetas perforadas) entregan resultados errneos. Los programadores que trabajan con ella estaban desconcertados. Haban controlado todo el programa instruccin por instruccin y no encontraban fallas, no saban porque estaba dando resultados equivocados. Decidieron entrar a la cmara de la memoria para controlar que todos los tubos de vaco se encontrarn funcionando correctamente y la malla metlica de la Memoria de Acceso Aleatorio (RAM) estuviera en condiciones. Encontraron en los filamentos de la RAM, enganchado entre los cables que la componan un bicho que se haba quedado atrapado all (un "bug", en ingls), que provocaba un leve corto, lo que alteraba el correcto funcionamiento de las partes electrnicas del procesador. Hubo que "de-buggear" la computadora, removiendo el "bug" del programa, limpiando el sistema.

En 1946 se fabrica la computadora ENIAC. una especie de tatarabuela de las computadoras, que ocupaba un edificio completo, consumia la electricidad de un pueblo pequeo, y cuando tena un pico de uso del procesador haca temblar las luces de Filadelfia.

En 1947 se inventan los transistores. Este fue un cambio radical para la tecnologa en general y para la computacin en particular. Comenzaba la alocada carrera de la miniaturizacin. Hasta aqu se haba pensado a las computadoras como inventos que al avanzar en tecnologa se haran cada vez mas grandes, cada vez mas monstruosas, demandando mas trabajo humano, y cada vez mas costosas. A partir del transistor, la concepcin cambi paradigmticamente. Las computadoras empiezan a ser pensadas cada vez mas pequeas, mas adaptables y mas baratas.

En 1953, IBM fabrica la IBM-650, una computadora de comercializacin directa, fabricada a nivel industrial, para vender a sus clientes. Utilizaba para la programacin el "lenguaje de ensamblador" (Assembler)

En 1962, se programa el primer juego de computadora multijugador: SpaceWar

En 1964, IBM lanza la IBM-360, una de las maquinas mas populares y conocidas de la vieja generacin de computadoras. Todas las empresas que tuvieran que computar grandes cantidades de datos (sobre todo en materia financiera) queran una. Estas fueron de las primeras que se trajeron a Argentina.

En 1971, se presenta el primer CPU fabricado por Intel, el 4004. Por estos aos era comn que estos inventos llevaran por nombre slo un nmero, y que este nombre fuera aceptado para registrar una patente. Luego obligaron a Intel y a todos los fabricantes de CPUs a ponerles un nombre (una

palabra, con letras) a sus inventos (por ejemplo "Pentium"

En 1975, se lanza la Altair 8800, una maquina con un nivel de popularidad fabuloso, que seria apropiada por la base fundacional del Movimiento Hacker, al que pertenecieron Jobs, Gates, Wozniack, Stallman, y otros.

En 1977, Apple lanza la Apple II.

En 1981, la Historia de la Computacin llega a un cambio de era. Se inicia la epopeya de la IBM PC. Nada va a ser igual a partir de la difusin y comercializacin de este tipo de computadoras, sobre todo porque redefinira el mercado y las reglas de juego para entender los negocios detrs de la tecnologa de los proximos aos.

En 1984, IBM presenta la PC-AT con un procesador IBM 80286.

En 1985, Microsoft lanza el Windows 1.0

En 1995, Microsoft lanza el Windows 95, un sistema operativo que trata la memoria de la computadora con procedimientos especiales para que varias tareas puedan ejecutarse "simultaneamente". En realidad, no se ejecutan en forma simultanea sino que aprovechan los "flops" o ciclos de prrocesamiento del CPU que queden libres para actualizar los estados de memoria que "localizaron" (allocated) cada programa. De manera que da la impresin de que varios

programas trabajan a la vez. El problema es que el codigo para "proteger" la integridad de la memoria pedida por un programa no siempre dan buenos resultados. Muchas veces el propio sistema necesita accesar la memoria de un programa provocando el cuelgue de ese programa, o de todo el sistema, o generando un GPF (General Protection Fault), un error que fue muy conocido antes de que los volcados de memoria en una pantalla azul los superaran en abundancia.

Bueno, espero que se vaya entendiendo lo que quiero decir con todo este recuento. La computadora es una maquina interesantisima con la que interactuar, "meterle tarjetas y ver que sale", "hacerla calcular trayectorias de misiles y ver si aciertan", "programarle juegos y ver si otros seres humanos pueden jugarlos y encontrarlos divertidos", etc. Muchas veces, siento que tomo el legado de todos estos grandes muchachos.

Curso de Computacion [2/5] Qu es un CPU?


Para entender que es un CPU antes habria que definir que es un circuito electronico, un circuito impreso, un CHIP. Circuito electrnico Es un artefacto que desempea un trabajo a partir de la circuilacin ininterrupida de una diferencia de carga electrica por sus componentes. Ya sea de una batera a una lamparita o LED, a un modulo de control de un satelite en orbita. Circuito impreso Es un circuito electronico cuyos componentes estan integrados todos en una placa sobre la que se imprime el diseo de disposicin de los componentes, permitiendo disear una placa adaptable y que pueda integrarse con otros variados sistemas que la puedan recibir teniendo en cuenta sus caractersticas.

Chip o microchip Un circuito integrado, o chip, es un circuito electronico donde todos sus componentes estan miniaturizados a nivel practicamente microscpico y encapsulados en una pastilla de plstico o cermica. De la pastilla de plstico o cermica salen y entran conectores electricos por donde los programadores pueden comunicarse con el hardware interno del chip y aprovechar sus funciones. Antes de los chips las computadoras y los aparatos electronicos se componian de la conexion e interaccion de muchos circuitos impresos y sus partes electromecanicas con la interfaz con el usuario, a partir del chip pueden integrarse en un mismo circuito impreso muchos modulos que habian sido tambien circuitos impresos pero que ahora estaban encapsulados y soldados a la placa "base" de un circuito impreso.

Un CPU es, en principio, un chip. Lo que vamos a ver ahora es su composicin interna (a grandes rasgos) para entender como funciona y como programarlo. Antes que nada vamos a mencionar las partes que antes se consideraban accesorios y que luego, al volverse indispensables para el correcto desempeo del procesador se las incluyo dentro del mismo circuito: El coprocesador matemtico y la memoria cach. Estos componentes antes eran opciones que daban una idea de la performance del sistema. Haba computadoras con mas o menos cach, con o sin co-procesador matemtico. Dentro del CPU tipo IBM-PC 80x86, encontramos: *Registros *ALU (Unidad aritmtico-lgica) *UC (Unidad de control) *Bus de conexin Este es un diagrama de bloques que simplifica muchisimio las cosas. Por ejemplo no menciona el stack en la L1, no menciona las extensiones MMX, y otras mas nuevas, no menciona la arquitectura interna para calcular la velocidad de salida. Bueno, son todas cosas que las dejo pendientes para que el lector/lectora siga investigando pro su cuenta. Registros Los registros dentro del procesador son posiciones de memoria pequeas y de acceso muy rapido. Contienen la informacin de la prxima instruccin ("qu se va a ejecutar?" ) y los parmetros de la prxima instruccin. En el lenguaje de ensamblador (Assembler) las instrucciones son "estructuradas" una debajo de la

otra en el orden necesario para que el programa cumpla su trabajo. Todas las instrucciones constan de una palabra clave que la define, compuesta por 3 letras y uno o mas parametros para ejecutar esa instruccion correctamente. Por ejemplo:

MOV AX, 0024h

Esa instruccion pone el valor 24 (en "hexa", 36 en "decimales" ) en el registro AX. Los registros que reciben datos de instrucciones son AX, BX, CX y DX. Los registros que controlan, accesan y ejecutan las instrucciones son SP, BP, SI y DI Unidad Aritmtico/Lgica Las instrucciones que ejecutar el CPU en su mayora son pedidos de interrupcin de la ejecucin que enviar el CPU a la unidad aritmtico/lgica. El caudal mas importante en el flujo de datos interno del CPU tiene que ver con sumas, restas (sumas negativas), multiplicaciones (muchas sumas seguidas), divisiones (muchas "sumas negativas" seguidas) y comparaciones entre nmeros. O sea que bsicamente lo que hace el CPU es sumar muy rpido. Como el baco, o la Pascalina, pero a velocidades astronmicas. Unidad de Control La unidad de control mantiene la pila del programa, ubicando las instrucciones en el orden en que fueron entrando al procesador para que no se utilice una porcin de este sin que otra instruccin haya terminado de trabajar con el CPU, esto se logra con otros registros dentro de la UC que funcionan como "banderas". Para leer ms acerca de esto, busquen info sobre el "problema del peluquero dormiln", es muy didctico. Nota aparte: las instrucciones de ensamblador, si bien estn expresadas en lenguaje simblico y no en cdigo mquina crudo, no necesitan compilarse en sistemas operativos Microsoft, porque estos vienen preparados con una consola que pondr las instrucciones ingresadas al principio de la pila en forma automtica para que sean ejecutadas en el primer ciclo disponible. Es decir, que en vivo y en directo se puede operar sobre el CPU sin necesidad de compilar e instalar un programa. Se puede operar directamente en el procesador sin intermediarios relacionados con el sistema operativo y el marco de base de librerias y demas dolores de cabeza de los lenguajes de mas alto nivel. El assembler es el nivel simbolico mas bajo antes del codigo maquina puro. Si tiramos las instrucciones correctas podemos hacer que nuestro procesador realize cualquier trabajo que tambien podria realizar programandolo con cualquier otro lenguaje. El tema es, queremos que nuestro CPU calcule la trayectoria de un misil, de un cohete, de un satelite, o algun otro calculo complicado? o queremos usar la compu para jugar al MU y estamos haciendo un cliente con un lenguaje de programacion del mas alto nivel? En los dos casos, solo una computadora puede darnos el resultado que buscamos, pero es una cuestion de gustos personales que uno te resulte mas atractivo, mas provocativo y mas interesante que el otro.

Curso de Computacin [3/5] Que es un Sistema Operativo

Vamos a explicar los sistemas operativos a partir de la IBM-PC de 1981 en adelante. Hasta ese momento, los sitemas operativos se limitaban a arrancar la computadora y poner todo el hardware en confluencia para cumplir alguna tarea especifica, a traves de la cual guiaban los programadores a la computadora ayudandose con las herramientas del sistema operativo, muy rudimentario y primitivo. A partir de la computadora de escritorio, utilizada por el operador PC como estacin de trabajo, el sistem operativo se volvi parte fundamental de la idea general de implementacin de la computadora como solucin de trabajo.

El sistema operativo debe cumplir 3 tareas bsicas: * Debe lograr que los programas introduzcan sus instrucciones en el procesador y puedan recolectar los resultados de la ejecucin * Debe permitir un acceso ordenado y coherente a la memoria * Debe lograr que el hardware en general este encendido, disponible y sea funcional al resto del sistema En las PC como las conocemos hoy en dia, al encender la computadora, el circuito electronico del sistema ejecutara algunas instrucciones basicas de control del voltaje del sistema y la aptitud de todos los circuitos para colaborar en el funcionamiento. Luego se hace la prueba BIOS (Basic Input-Output System), que son la memoria RAM, el monitor y el teclado. Si alguno de estos falla, la computadora intentara emitir una serie de sonidos en codigo para indicar que parte funciona mal y luego se quedara "congelada". Si con la BIOS todo va bien, se inicia la POST (Power-On Self Test), que es una autoevaluacion que intentara encender y utilizar todas las caracteristicas completas de la computadora; discos rigidos, video acelerado, USB, red/wi-fi, RAID, etc. Si algo falla en la POST la computadora funciona igual pero puede tener alguna caracteristica que no funcione o este limitada debido a hardware defectuoso, incompatible, mal conectado, o algun error de configuracion.

Toda estas opciones de configuracion y pruebas iniciales son parte escencial de la computadora. Es mas, una forma de ver a la computadora es que esta es la unica parte del uso del sistema en que todavia las computadoras son lo que siempre fueron: circuitos electronicos siendo programados para interactuar entre si, y que nosotros, debiles humanos de carne y hueso nos maravillemos ante su implacable, descorazonado, indetenible tezon para llevar a cabo esas tareas. Esas instrucciones estan inscriptas en un componente integrado cuya informacin se mantiene siempre intacta y no puede modificarse. Es una memoria que guarda el programa de inicio de la computadora y se llama CMOS.

Este programa es grabado por el fabricante y no puede modificarlo ni el usuario ni nadie, de

manera que solo el fabricante sabe exactamente como est diseado y construido el sistema y solo el fabricante sabr como explotarlo al mximo, haciendo ms dificil poder copiarlo. Es por esto que IBM decidi cerrar el codigo fuente de los programas de control de sus computadoras y por esto le cost tanto al resto de la industria copiar sus sistemas (tanto, que cuando lo lograron, lo hicieron mejor que IBM durante un tiempo, caso Compaq). Esta memoria inamovible, inmodificable, se conoce como ROM (Read-Only Memory), "memoria de slo-lectura", o sea que slo se la puede leer, solo se puede leer lo que en ella hay escrito, y no se puede escribir en esa memoria. Hoy da, cualquier perejil disea una computadora en el garaje de su casa y consigue quin le imprima los circuitos y le grabe los programas en integrados prediseados, por lo que no hay tanto recelo en guardar los programas internos de las computadoras en memorias inmodificables, por lo que se las reemplaz por las memorias FLASH, que son ROMs que tienen la posibilidad de ser actualizadas con un programa especial, tambin diseado por el fabricante del sistema. En el proceso de actualizacin, el sistema debe estar esttico, sin ningn acceso sobre el procesador y debe tener luz elctrica constante ininterrumpida, puesto que si se interfiere en el correcto desarrollo del trabajo de actualizacin se corre el riesgo de arruinar la memoria ROM y dejarla inutilizable. Esta memoria es cara y en algunos casos dificil de conseguir.

Luego de todo este proceso inicial para que arranque la computadora, en la CMOS hay una configuracin que indica en qu dispositivo se encuentra almacenado algn tipo de sistema operativo. Por lo general, en los sistemas actuales, el SO est instalado en un medio de almacenamiento masivo fijo, tambien conocido como Disco Rigido. Si este es el caso, la computadora es instruida para buscar un MBR (Master Boot Record), un registro maestro de arranque en ese disco rigido para comenzar a pasar al procesador las instrucciones de carga del sistema operativo.

Y... qu es un sistema operativo?


Es un programa de computadora que cumple tres funciones... * Debe lograr que los programas introduzcan sus instrucciones en el procesador y puedan recolectar los resultados de la ejecucin * Debe permitir un acceso ordenado y coherente a la memoria * Debe lograr que el hardware en general este encendido, disponible y sea funcional al resto del

sistema Todo lo que hace tu windows, la conexion a internet, los juegos, los DVD, la musica, etc, lo hace porque a los usuarios se lo han ido ofreciendo los programadores con aplicaciones novedosas que hacen cosas muy atractivas. Pero lo que tiene que hacer el sistema operativo son solo esas tres cosas, y punto. Los otros sistemas operativos para PC, tambien hacen solo esas 3 cosas basicas: Linux, Unix, QNX, Solaris, OS/2, etc. Los sistemas viejos que se dejaron de usar, tambien hacian solo esas 3 cosas basicas: MS-DOS, el OS de IBM, BeOS, etc. Los sistemas operativos de otro tipo de sistemas de computacion tambien hacen solo esas 3 cosas basicas: Mac, Apple, etc.