Cómo se ejecuta un programa

Anuncio
Algoritmos y Lenguaje de Programación
2008-1
Primer programa en C
Cómo se ejecuta un
programa
• Primer programa clásico
)Almacenado en archivo hello.c
#include <stdio.h>
Mario Medina C.
[email protected]
int main()
{
printf(“hello, world\n”);
}
Programa fuente
Código ASCII
• Compuesto por cadenas de caracteres
• Almacenado en la memoria del computador
como una secuencia de bytes
• Texto es almacenado en ASCII
)ASCII: American Standard Code for Information
Interchange
)Representa mayúsculas, minúsculas, números y
caracteres de control usando 7 bits
)Memoria es vector lineal de bytes
)1 byte = 8 bits (bit = dígito binario)
• Codificado en ASCII extendido
)Cada byte tiene un valor numérico
` Tabla ASCII
` Expresado en bases 10, 16 y 8
` 128 caracteres
• Extendido a 8 bits por IBM, Apple, etc.
)Representación de lenguajes europeos
• Representación en 16 bits (Unicode)
Tabla ASCII
Programa fuente en memoria
• 7 bits: b7b6b5b4b3b2b1
• Byte: 8 bits
# i n c l u d e
)Normalmente, bit 8 es 0
• Ejemplos
)M: 10011012, 7710, 4D16, 1158
)j: 11010102, 10610, 6A16, 1528
)DEL: 11111112, 12710, 7F16, 1778
• ASCII 0010 a 3110 son caracteres especiales
©Mario Medina C.
35
105
h >
117
100
32
< s t d i o .
110
99
108
\n
\n
i n t
SP
m a i n ( )
\n
{
32
109
10
123
116
101
SP
60
46
10
10
105
110
SP
SP
SP
p r i n t f ( " h e l
10
32
32
32
32
112
101
108
l o ,
SP
w o r l d \ n " ) ;
\n
}
108
32
119
10
125
111
44
111
114
108
100
92
102
110
40
34
34
41
111
62
116
40
105
SP
110
110
100
\n
105
105
116
104
114
97
115
41
104
59
1
Algoritmos y Lenguaje de Programación
2008-1
Programa fuente
Cómo ve la memoria la CPU
• Detalles:
• CPU ve la memoria como
un vector lineal de bytes
Un byte
)Valores ASCII dados en decimal
)SP indica espacio
)\n indica caracter de control de avance de línea
(newline)
)No confundir con \ n, que son dos caracteres
diferentes
Dir. 0
Dir. 1
Dir. 2
)Cada byte tiene una
dirección asociada
)Es la unidad mínima
direccionable
` No es posible direccionar
un bit
Dir. 2n-1
Memoria
(2n bytes)
Información = bits + contexto
El Computador
CPU
• La secuencia de bits 00110101 11011001
11011110 11000010 puede representar:
)Un número entero
)Un número decimal
)Una secuencia de 4 caracteres
)Una instrucción de código de máquina
)Una imagen en blanco y negro
• Toda información se almacena como bits
Registros
PC
ALU
Bus de
sistema
Bus de Memoria
Memoria
RAM
Puente
I/O
Interfaz de Bus
Bus de E/S
Controlador
USB
Mouse Teclado
Adaptador
Gráfico
Controlador
Disco
Programa
ejecutable
Pantalla
)Significado depende del contexto
Elementos de un Computador
Ranuras de
Expansión
Disco
Leyendo el Teclado
CPU
Registros
• CPU
)Unidad Aritmética/Lógica
(ALU)
)Registros
)Contador de Programa
(PC)
• Memoria RAM
)Transferencia de datos
sólo entre CPU y RAM
• Buses
• Entrada/Salida
PC
` Mouse
` Teclado
Bus de
sistema
Bus de Memoria
Memoria
RAM
Puente
I/O
Interfaz de Bus
)Tarjeta Gráfica
“hello”
` Pantalla
)Controlador de disco
` Discos magnéticos
` Discos ópticos
)Interfaz Redes
Bus de E/S
Controlador
USB
Mouse Teclado
Usuario escribe “hello”
©Mario Medina C.
ALU
)Controlador USB
Adaptador
Gráfico
Controlador
Disco
Pantalla
Disco
Ranuras de
Expansión
Programa
Ejecutable
“hello”
2
Algoritmos y Lenguaje de Programación
2008-1
Leyendo el teclado
Carga del programa
CPU
Registros
• Usuario escribe “hello”
• Intérprete de comandos recibe los caracteres
y los carga en registros de CPU
• Luego, los caracteres son almacenados en
memoria RAM
• La tecla “enter” indica al intérprete que se
terminó de escribir un comando
PC
ALU
Bus de
sistema
Bus de Memoria
Memoria
RAM
Puente
I/O
Interfaz de Bus
Bus de E/S
Controlador
USB
Adaptador
Gráfico
Controlador
Disco
Ranuras de
Expansión
Programa
Ejecutable
“hello”
Pantalla
Mouse Teclado
Disco
Carga del programa
“hello”
Escribiendo a pantalla
CPU
Registros
• El intérprete de comandos solicita al sistema
operativo la ejecución del programa “hello”
• El sistema operativo localiza el programa en
disco y lo carga en memoria RAM
PC
ALU
Bus de
sistema
Memoria
RAM
Puente
I/O
Interfaz de Bus
)No hay intervención de la CPU
)Transferencia de datos via DMA
“hello”
Bus de E/S
Controlador
USB
Adaptador
Gráfico
Controlador
Disco
Pantalla
Mouse Teclado
“hello, world\n”
Escribiendo a pantalla
En resumen
• La CPU lee secuencialmente el programa
“hello” en memoria RAM, y ejecuta las
instrucciones leídas
• La ejecución del programa consiste en
desplegar el mensaje “hello, world\n”
en la pantalla, por lo que la CPU envía los
caracteres correspondientes al adaptador
gráfico
• Archivos se almacenan
en disco
©Mario Medina C.
Bus de Memoria
)Discos magnéticos
)Discos ópticos
)Memorias flash
• Programas se ejecutan
en memoria
)Transferencias disco ⇔
memoria
)Cargador (loader)
Disco
Ranuras de
Expansión
Programa
Ejecutable
“hello”
• Sistema operativo
)Windows, Linux, Mac OS X
)Interpreta comandos del
usuario
)Invoca aplicaciones
` Compilador
` Editor
` Cargador
)Interactúa con el
hardware
3
Descargar