1 presentación: copyright 2004© nelson arapé basado en introduction to programming using java...
TRANSCRIPT
1Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Capítulo 1Introducción a la Computación
DISPOSITIVOS DE ENTRADA
(Teclado, Ratón, etc)
C P UDISPOSITIVOS DE SALIDA(Monitor, Impresora, etc.)
MEMORIA PRICIPAL (RAM)
ALMACENAMIENTO
(Memoria Secundaria: Disco Duro, Diskette, CD, etc.)
Organización Básica de un Sistema Computacional
4Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Ciclo de Lectura y Ejecución
CPU, Memoria Principal, Lenguaje de Máquina, Registros, Transistores, Números Binarios
5Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
CPU
● Una computadora consiste de muchos componentes diferentes
● El CPU es el cerebro, cuya principal función es ejecutar programas
● Un programa es una lista de instrucciones no ambiguas hechas para que sean seguidas mecánicamente por la computadora
6Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Lenguaje de Máquina
● Las computadoras ejecutan instrucciones que son escritas en un lenguaje muy simple llamado lenguaje de máquina
● Cada tipo de computadora tiene su propio lenguaje de máquina
● Sólo podrá ejecutar los programas si están escritos en ese lenguaje
7Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Memoria● Cuando el CPU ejecuta un programa, dicho
programa se encuentra en la memoria principal
● La memoria principal consiste de una secuencia de “casillas”
● Estas casillas son numeradas y la secuencia de números es llamada dirección de memoria
● Una dirección provee una manera de especificar una pieza de información entre millones almacenadas en la memoria
Ejemplo de Organización de la Memoria
0x0
0x2000
0x50000
code
stack
heap Dynamic allocationmalloc(), free()
Function calls, local variables
Inmutable
9Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Ciclo de Lectura y Ejecución
● El CPU ejecuta un programa que es almacenado como una secuencia de instrucciones de lenguaje de máquina en la memoria principal
● Para ello el CPU debe leer una instrucción de la memoria y ejecutarla
● Esto lo hace repetidamente, por lo que se le llama ciclo de lectura y ejecución
10Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Registros● El CPU contiene unos pocos registros internos
● Los registros son pequeñas unidades de memoria capaces de almacenar un número o una instrucción en lenguaje de máquina
● El CPU utiliza uno de estos registros (PC contador de programa) para almacenar la dirección de la siguiente instrucción que se debe ejecutar
● Al comienzo de cada ciclo, el CPU revisa el PC para ver que instrucción debe ejecutar.
– PC es actualizado con la propia ejecución del programa (usualmente es incrementado de uno en uno)
11Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Transistores
● Una computadora ejecuta programas en lenguaje de máquina mecánicamente
● Está construida por millones de pequeños interruptores llamados transistores
● La operación de una computadora origina que estos interruptores se prenden y apagan entre sí
● El patrón que siguen está determinado por el cableado entre ellos y el programa que se está ejecutando
12Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Números binarios● Las instrucciones de lenguaje de máquina y los
datos se expresan en números binarios
● Un número binario es aquel que está formado por sólo 2 valores (0 y 1)
● Los transistores pueden expresar adecuadamente los dos estados (prendido o apagado)
● Cuando se carga una instrucción de la memoria, todo lo que sucede es que ciertos interruptores se prenden y otros se apagan en un patrón que está codificado en la propia instrucción
13Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Resumen● La memoria principal almacena programas en
lenguaje de máquina y datos
● Estos son codificados como números binarios
● El CPU lee instrucciones de lenguaje de máquina de la memoria una tras otra y las ejecuta
● El CPU realiza este ciclo mecánicamente y por lo tanto el programa que ejecuta debe estar perfecto, completamente detallado y sin ambigüedades
● El CPU lo único que puede hacer es ejecutar las instrucciones tal cual como estén escritas
14Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Resumen
15Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
InterrupcionesDevice Drivers, Bus, Interrupciones, Eventos Asíncronos, Multitareas, Sistema Operativo
16Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Otros Componentes del Computador
● Además del CPU y de la Memoria, un computador tiene otros componentes:– Un disco duro para almacenar programas y datos
– Un teclado y ratón para entrada
– Un monitor e impresora para salida
– Un modem o targeta de red para comunicarse con otras computadoras
– Un scanner para digitalizar imágenes
– ...
17Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Device Driver
● De alguna manera el CPU tiene que comunicarse con todos estos dispositivos
● Para cada dispositivo, existe un device driver
● Un device driver consiste de software que el CPU ejecuta cuando tiene que interactuar con el dispositivo respectivo
18Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Bus● Una computadora típicamente conecta todos
estos dispositivos a uno o más buses
● Un bus es un conjunto de cables que transportan varios tipos de información entre los dispositivos conectados a esos cables
● Por el bus viaja
– Datos
– Direcciones
– Señales de control
19Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Diagrama simple de una Computadora
20Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Procesamiento de datos de I/O
● Los dispositivos pueden producir datos que necesitan ser procesados por el CPU
● ¿Cómo el CPU sabe que los datos están disponibles?– Pooling
● El CPU periódicamente revisa si existen datos que procesar
– Interrupciones
21Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Interrupciones
● Es una señal enviada al CPU por otro dispositivo
● Proceso– Se recibe la señal
– Se hace a un lado lo que sea que se estuviese haciendo
– Se atiende la interrupción
– Se vuelve al punto de lo que se encontraba realizando
● Ejemplo: presionar una tecla
22Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Interrupciones● Un dispositivo notifica una interrupción simplemente
al encender un cable
● El CPU guarda información acerca de lo que está haciendo
– El contenido de los registros, entre ellos el PC
● El CPU salta a una dirección de memoria predeterminada y comienza a ejecutar las instrucciones ahí almacenadas
● Al final el manejador de instrucciones le dice al CPU que reanude lo que estaba haciendo (restaurando los datos previamente guardados)
23Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Eventos asíncronos● Las interrupciones le permiten al CPU manejar
eventos asíncronos
● En el ciclo regular de leer y ejecutar, las operaciones se ejecutan en un orden predeterminado
● Las interrupciones hacen posible que el CPU maneje eficientemente eventos que suceden asíncronamente
● Ejemplo: leer información de disco– El CPU solicita un dato y luego realiza otra tarea hasta
que se le notifica que el dato está disponible
24Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Multitareas● La ventaja de interrupciones sobre pooling sólo
es tal si el CPU tiene otra cosa que hacer
● Todos los sistemas operativos modernos utilizan multitarea para realizar varias “tareas” a la vez
● El CPU reparte su tiempo atendiendo una fracción de segundo a cada tarea
● Ejemplo: Estar escribiendo una carta, mientras se escucha música y se baja un archivo de Internet
25Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Hilo de Ejecución● Cada tarea individual en la que trabaja el CPU es
llamada un hilo
● A determinado momento, sólo un hilo puede estar ejecutándose en el CPU
● El CPU continuará ejecutando el mismo hilo hasta que el hilo:
– cede el control (yield)
– se bloquea (espera a que ocurra algún evento asíncrono)
– agote su “rebanada de tiempo” (sólo preemptive)
26Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Sistema Operativo
● El software que realiza todo el manejo de interrupciones, y la comunicación del usuario con el hardware es llamado Sistema Operativo
● Una computadora no podría funcionar sin un sistema operativo, y las aplicaciones dependen de él
● Sistemas Operativos comunes: UNIX, Linux, DOS, Windows 98, Windows 2000 Mac OS X, entre otros.
27Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Lenguajes de Alto Nivel● Lenguaje de Máquina consiste de instrucciones
muy simples que son ejecutadas por el CPU
● Sin embargo, casi todos los programas se escriben en lenguajes de alto nivel
– Ejemplo: Java, Pascal, C, C++, C#, FORTRAN ...● Los programas escritos en estos lenguajes
deben ser traducidos a lenguaje de máquina para poder ser ejecutados
● Se utilizan compiladores e interpretes para realizar esta traducción
28Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Compilador
● Un compilador toma un programa escrito en lenguaje de alto nivel y lo traduce en un programa ejecutable en lenguaje de máquina
● Una vez realizada la traducción, se puede ejecutar cualquier número de veces
● Si se desea ejecutar el programa en otro tipo de computadora, debe ser re-traducido, usando un compilador para la computadora deseada
30Presentación: Copyright 2004© Nelson ArapéBasado en Introduction to Programming Using Java Versión 4 de David J. Eck
Capítulo 1: Capítulo 1: Introducción a la ComputaciónIntroducción a la Computación
Intérprete
● A diferencia del compilador, el intérprete traduce el programa instrucción por instrucción
● Actúa parecido a un CPU, con un ciclo de leer y ejecutar– Se lee una instrucción del programa– Se decide que se necesita para llevarla a cabo – Se ejecutan las instrucciones de lenguaje de
máquina correspondientes