Historia del Cómputo |
Definición de Computadora |
Arquitectura Básica de una Computadora |
Sistemas Operativos |
Desarrollo de un programa de cómputo |
El hombre en su constante búsqueda por la superación, ha buscado la creación de herramientas y toda clase de artefactos para hacer cálculos. Herramientas como el ábaco y las reglas de cálculo le han ayudado a los matemáticos en sus investigaciones. Es así como a mediados del siglo XVII, Blas Pascal desarrolló una máquina con engranes, la cual hacía cálculos matemáticos sofisticados para aquella época; a los 16 aÒos había inventado una máquina numérica, la cual terminó 4 aÒos más tarde.
Charles Babbage (1792 - 1871) desarrolló lo que se conoce como la "Máquina Analítica", que se componía de una gran cantidad de engranes y de poleas; esta máquina es la primer máquina compleja que manejaba un concepto más avanzado que los que se habían manejado hasta esa época y es prácticamente la primera computadora digital hecha por el hombre.
Existen varias etapas en las que se puede clasificar el desarrollo de las computadoras a lo largo de la historia:
1∞ Generación.- Tubos de vacío. (1945 - 1955), las computadoras estaban formadas por bulbos. Eran muy costosas y se utilizaban principalmente para cuestiones nucleares y para el seguimiento de las rutas de los misiles. En esta época las computadoras usaban tarjetas perforadas. Algunos personajes destacados de esa época son: Howard Aiken en Harvard y John Von Newman en Princeton.
2∞ Generación.- (1955 - 1965) Aparece el transistor, inventado por Shockley. Las computadoras empiezan a ser máquinas seguras. Comienzan los operadores expertos. Son máquinas muy costosas del orden de millones de dólares y son usadas principalmente en las universidades.
3∞ Generación.- (1965 - 1980) Comienza la integración de circuitos en componentes más pequeÒos, consumiendo menos energía. Su costo es del orden de miles de dólares. Comienzan a tener éxito comercial (IBM 360, PDP-11 de Digital). En aquel tiempo se desarrolló un proyecto llamado "Multics", abandonado poco después de su inicio, sin embargo un investigador que trabajaba en dicho proyecto, Ken Thompson, utilizando una PDP-7 e instalado en los laboratorios Bell, retomó el proyecto, subestimado por sus compaÒeros le dieron el nombre de "Unics", transformándose el nombre posteriormente en "Unix". Este sistema operativo fue desarrollado en el lenguaje C.
4∞ Generación.- (1980 - 1990) Empieza el concepto de Very Large Scale Integration (VLSI), utilizándose los microprocesadores. Se empiezan a integrar las primeras redes de computadoras, así como también se empiezan a comercializar las primeras PC, los sistemas de cómputo distribuido y las tecnologías orientadas a objetos. Entre 1980 y 1983 IBM comienza a comercializar la PC-Compatible con procesadores 8086 y 8088; posteriormente salió al mercado el procesador 80286, el cual ya contaba con un disco duro.
Podemos definir a una computadora como una máquina manipuladora de símbolos que puede ser instruida para realizar una secuencia de operaciones lógicas y/o aritméticas sobre información. Estas instrucciones pueden ser fácilmente modificadas así por el programador como por la misma ejecución del programa, en función de los resultados obtenidos.
Una computadora se compone principalmente de dos partes:
Software: Conjunto de instrucciones que se ejecutan para hacer una función o comportamiento deseado por a computadora.
Hardware: Es el conjunto de dispositivos físicos de la computadora.
Arquitectura Básica de una Computadora
La arquitectura de una computadora rige una serie de reglas que determinan la manera de cómo el procesador va a ejecutar las instrucciones.
![]()
El CPU (Central Processing Unit) es la unidad encargada de realizar las operaciones con los datos.
Memoria: Son dispositivos que almacenan los datos con los cuales se ejecutan las operaciones.
Dispositivos de Entrada y Salida: Permiten la transferencia de información en la computadora.
La comunicación entre los dispositivos de la computadora se realiza a través del BUS, el cual es el conjunto de seÒales que intercomunican a los componentes de una computadora por medio de cables físicos.
Los sistemas operativos son los programas que manejan la operación completa de un sistema de cómputo, controlan todos los recursos y ofrecen una base sobre la cual pueden escribirse programas de aplicación. El sistema operativo es la interfase entre el usuario y la máquina; en otras palabras, un sistema operativo es un gran sistema de software que actúa como un administrador y direcciona el flujo de información hacia y desde el hardware.
Cualquier sistema operativo se compone de diferentes partes:
Manejadores de dispositivos: son programas que se encuentran en el nivel más bajo y permiten el control de los dispositivos de hardware.
Administrador de tareas: decide qué programas se deben correr, cuándo y por cuánto tiempo. En MS-DOS no existe este elemento pues un solo programa, cada vez, corre bajo el control del sistema operativo.
Administración de memoria: determina cuánta memoria se debe asignar a cada programa. Si no hay suficiente memoria disponible para correr un programa, el administrador moverá otros programas (o parte de ellos) a un almacenamiento temporal de disco. A este proceso se le conoce como "swapping" o "paging".
Sistema de archivos: es una estructura usada para localizar y almacenar programas y archivos en disco.
Programas del sistema: el software accedido directamente por los usuarios para manipular archivos y dispositivos, de tal manera que se pueda realizar el trabajo. Estos pueden incluir programas de utilerías, editores de texto, compiladores de lenguajes y shells.
Los sistemas operativos se pueden clasificar de la siguiente manera:
Por la forma en que ejecutan los programas:
- Proceso en lote.- Ejecuta sólo un programa a la vez
- Proceso interactivo.- Puede ejecutar varios programas a la vez
Por el número de usuarios que soportan:
- Multiusuario. (Unix, VMS)
- Uniusuario. (MS-DOS)
Desarrollo de un programa de cómputo. Ensambladores, Compiladores y Encadenadores
Las computadoras están diseÒadas para manejar y procesar gran cantidad de información rápida y eficientemente, pero no pueden hacer nada hasta que alguien les diga qué hacer. Es aquí en donde hacen acto de presencia los programas. Un programa es un conjunto de instrucciones que una computadora sigue. La computadora sigue las instrucciones del programa y al hacerlo efectúa algún proceso.
Existen muchos lenguajes para escribir programas. En el presente curso se tratará el lenguaje C. C es un lenguaje de alto nivel, lo mismo que los demás lenguajes de programación que seguramente ya se conocen, como Pascal, BASIC, FORTRAN, Ada, etc. Los lenguajes de alto nivel se parecen a los lenguajes humanos en muchos sentidos. Están diseÒados para que las personas puedan escribir y leer programas fácilmente. Un lenguaje de alto nivel, como C, contiene instrucciones mucho más complicadas que las que entiende la computadora.
El tipo de lenguaje que cualquier tipo de computadora es capaz de entender se llama lenguaje de bajo nivel o ensamblador. Los detalles exactos de los lenguajes de bajo nivel difieren de una computadora a otra y son específicos para cada procesador. Una instrucción de bajo nivel podría ser la siguiente:
ADD A B C
La instrucción anterior podría significar: "Suma el número que está en la ubicación de memoria llamada A al número que está en la ubicación de memoria llamada B y coloca el resultado en la ubicación de memoria llamada C". La instrucción anterior está escrita en lo que se conoce comúnmente como lenguaje ensamblador. Aunque este lenguaje es casi igual al tipo de lenguaje que entiende la computadora, debe sufrir una traducción sencilla antes de que ésta pueda captarlo. Para que una computadora obedezca una instrucción en lenguaje ensamblador, es preciso traducir las palabras a cadenas de ceros y unos. Por ejemplo, la palabra ADD podría traducirse como 1001, la A como 0011, la B como 1100 y la C como 1011. Por lo tanto, la versión de la instrucción anterior que la computadora entiende sería:
1001 0011 1100 1011
Las instrucciones en lenguaje ensamblador y su traducción a ceros y unos difieren de un procesador a otro.
Comúnmente, se dice que los programas escritos en forma de ceros y unos están en lenguaje de máquina, porque esa es la versión del programa que la computadora realmente lee y sigue. Podríamos decir que el lenguaje ensamblador y el de máquina son casi la misma cosa. En donde existe una gran diferencia es entre los lenguajes de alto nivel, como C, y el lenguaje de máquina; cualquier programa escrito en un lenguaje de alto nivel debe traducirse a lenguaje de máquina para que la computadora pueda entenderlo y seguir sus instrucciones.
Esa traducción entre un lenguaje de alto nivel y un lenguaje de máquina se realiza por medio de programas llamados compiladores. Un compilador es un tipo especial de programa, ya que recibe como entrada un programa (en lenguaje de alto nivel) y como salida, nos proporciona otro programa (en lenguaje de máquina).
Comúnmente se suele llamar código fuente al programa de entrada y código objeto al programa de salida. Sin embargo, aquí no acaba el proceso para crear un programa que ya pueda ser ejecutado. En muchas ocasiones, nuestros programas utilizarán rutinas o funciones que previamente ya han sido programadas por alguien más y están en espera de ser utilizadas por otros programas. Para que nosotros podamos enlazar dichas rutinas o funciones con nuestro programa, es necesario utilizar un Encadenador, el cual se encarga de crear todos los lazos entre el código de máquina con:
- Módulos o subrutinas de parte del usuario
- Módulos o subrutinas del sistema operativo.
El compilador también realiza las siguientes funciones:
- Verifica el léxico
- Verifica sintaxis: revisa que las instrucciones estén bien escritas
- Genera un código intermedio
- Realiza una optimización del código
- Realiza la generación del código de máquina (Ensamblado)
El proceso del desarrollo de un Programa es el siguiente:
![]()