Funcionamiento de los Computadores - PowerPoint PPT Presentation

About This Presentation
Title:

Funcionamiento de los Computadores

Description:

Times New Roman Arial Wingdings Verdana Courier New Dise o predeterminado Diapositiva 1 Indice El computador Partes del computador Ejecuci n de ... – PowerPoint PPT presentation

Number of Views:70
Avg rating:3.0/5.0
Slides: 76
Provided by: isaUniov
Category:

less

Transcript and Presenter's Notes

Title: Funcionamiento de los Computadores


1
Funcionamiento de los Computadores
Ignacio Alvarez García Octubre - 2004
2
Indice
  • Introducción al funcionamiento del computador
  • Ejecución de instrucciones de máquina
  • Lenguajes de alto y bajo nivel
  • Las zonas de memoria de un programa
  • Entrada/Salida

3
El computador
  • Máquina de ejecución secuencial de instrucciones
  • Programasecuencia de instrucciones
  • Instrucciones y datos almacenados en memoria
  • Memoria organizada en direcciones
  • Instrucciones, datos y operaciones en binario

Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
Inst1
Instrucciones codificadas en binario
01101101
Inst2
11101011
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000000
Y
Datos codificados en binario
00000111
Z
00000010
. . .
4
Partes del computador
CPU
CU
  • Unidad de Control (CU) organiza el
    funcionamiento del computador
  • Unidad Aritmético Lógica (ALU) ejecuta
    operaciones aritméticas (,-,,/) y lógicas a
    nivel de bit (AND, OR, )
  • Registros lugares de almacenamiento temporal de
    información
  • Memoria lugar principal de almacenamiento de
    información (código y datos)
  • Dispositivos de E/S permiten la comunicación con
    el exterior

registros
ALU
Memoria
E/S
5
Ejecución de instrucciones
CPU
Cont. Prog.
Inst1
  • Ejemplo x3 zxy

Instrucción
Operando1
Operando2
ALU
Resultado
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
11101011
MOV Z,X
Inst2
01101101
ADD Z,Y
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000000
0
Y
00000111
7
Z
00000010
2
. . .
6
Ejecución de instrucciones
CPU
Cont. Prog.
Inst1
  • Ejemplo x3 zxy

Instrucción
Operando1
Operando2
ALU
Resultado
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
11101011
MOV Z,X
Inst2
01101101
ADD Z,Y
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000000
0
Y
00000111
7
Z
00000010
2
. . .
7
Ejecución de instrucciones
CPU
Cont. Prog.
Inst1
  • Ejemplo x3 zxy

Instrucción
11101100
MOV X,3
Operando1
Operando2
ALU
Resultado
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000000
0
Y
00000111
7
Z
00000010
2
. . .
8
Ejecución de instrucciones
CPU
Cont. Prog.
Inst1
  • Ejemplo x3 zxy

Instrucción
11101100
MOV X,3
Operando1
00000011
Operando2
ALU
Resultado
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000000
0
Y
00000111
7
Z
00000010
2
. . .
9
Ejecución de instrucciones
CPU
Cont. Prog.
Inst1
  • Ejemplo x3 zxy

Instrucción
11101100
MOV X,3
Operando1
00000011
Operando2
ALU
Resultado
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000000
0
Y
00000111
7
Z
00000010
2
. . .
10
Ejecución de instrucciones
CPU
Cont. Prog.
Inst1
  • Ejemplo x3 zxy

Instrucción
11101100
MOV X,3
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000000
0
Y
00000111
7
Z
00000010
2
. . .
11
Ejecución de instrucciones
CPU
Cont. Prog.
Inst1
Inst2
  • Ejemplo x3 zxy

Instrucción
11101100
MOV X,3
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000010
2
. . .
12
Ejecución de instrucciones
CPU
Cont. Prog.
Inst2
  • Ejemplo x3 zxy

Instrucción
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
11101011
MOV Z,X
Inst2
01101101
ADD Z,Y
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000010
2
. . .
13
Ejecución de instrucciones
CPU
Cont. Prog.
Inst2
  • Ejemplo x3 zxy

Instrucción
11101011
MOV Z,X
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000010
2
. . .
14
Ejecución de instrucciones
CPU
Cont. Prog.
Inst2
  • Ejemplo x3 zxy

Instrucción
11101100
MOV Z,X
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000010
2
. . .
15
Ejecución de instrucciones
CPU
Cont. Prog.
Inst2
  • Ejemplo x3 zxy

Instrucción
11101100
MOV Z,X
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000010
2
. . .
16
Ejecución de instrucciones
CPU
Cont. Prog.
Inst2
  • Ejemplo x3 zxy

Instrucción
11101100
MOV Z,X
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000010
2
. . .
17
Ejecución de instrucciones
CPU
Cont. Prog.
Inst2
Inst3
  • Ejemplo x3 zxy

Instrucción
11101100
MOV Z,X
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000011
3
. . .
18
Ejecución de instrucciones
CPU
Cont. Prog.
Inst3
  • Ejemplo x3 zxy

Instrucción
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
11101011
MOV Z,X
Inst2
01101101
ADD Z,Y
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000011
3
. . .
19
Ejecución de instrucciones
CPU
Cont. Prog.
Inst3
  • Ejemplo x3 zxy

Instrucción
01101101
ADD Z,Y
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000011
3
. . .
20
Ejecución de instrucciones
CPU
Cont. Prog.
Inst3
  • Ejemplo x3 zxy

Instrucción
11101100
ADD Z,Y
Operando1
00000011
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000011
3
. . .
21
Ejecución de instrucciones
CPU
Cont. Prog.
Inst3
  • Ejemplo x3 zxy

Instrucción
11101100
ADD Z,Y
Operando1
00000111
Operando2
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000011
3
. . .
22
Ejecución de instrucciones
CPU
Cont. Prog.
Inst3
  • Ejemplo x3 zxy

Instrucción
11101100
ADD Z,Y
Operando1
00000111
Operando2
00000011
ALU
Resultado
00000011
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000011
3
. . .
23
Ejecución de instrucciones
CPU
Cont. Prog.
Inst3
  • Ejemplo x3 zxy

Instrucción
11101100
ADD Z,Y
Operando1
00000111
Operando2
00000011
ALU
Resultado
00001010
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00000011
3
. . .
24
Ejecución de instrucciones
CPU
Cont. Prog.
Inst3
Inst4
  • Ejemplo x3 zxy

Instrucción
11101100
ADD X,Y
Operando1
00000111
Operando2
00000011
ALU
Resultado
00001010
Dirección
Contenido
Lee instrucción de memoria
Pasa a siguiente instrucción
000..00
01101100
000..01
00101110
000..10
11111100
. . .
Decodifica instrucción
Almacena resultado
11101100
MOV X,3
Inst1
MOV Z,X
11101011
Inst2
ADD Z,Y
01101101
Inst3
. . .
X
Obtiene operandos
Calcula resultado
00000011
3
Y
00000111
7
Z
00001010
10
. . .
25
Lenguajes de alto y bajo nivel
  • El computador ejecuta lenguaje máquina
  • Secuencias de 0s y 1s interpretadas como
    instrucciones
  • Instrucciones muy sencillas (copiar, sumar, ...)
  • Difícil de escribir, leer y depurar por el hombre
  • Fácil de almacenar e interpretar por el
    computador
  • El programador escribe lenguaje de alto nivel
  • Lenguaje textual con instrucciones no ejecutables
    directamente por el computador
  • Instrucciones más complejas
  • Fácil de escribir, leer y depurar por el hombre
  • Necesita un programa compilador o intérprete para
    convertir a secuencia de instrucciones de máquina

26
Lenguajes de alto y bajo nivel
  • Ejemplo

Programa de alto nivel
Programa de máquina
include ltstdio.hgt include ltstdlib.hgt main()
int i float x i7 x1 while
(igt1) xxi ii-1
printf(El factorial es f,x)
mov DWORD PTR _iebp, 7 mov DWORD PTR
_xebp, 1F L906 cmp DWORD PTR _iebp,
1 jl SHORT L907 fild DWORD PTR
_iebp fmul DWORD PTR _xebp fstp DWORD PTR
_xebp mov eax, DWORD PTR _iebp sub eax,
1 mov DWORD PTR _iebp, eax jmp SHORT
L906 L907 fld DWORD PTR _xebp sub esp,
8 fstp QWORD PTR esp push OFFSET
FACTORIAL call _printf add esp, 12
11000111 01000101 11111100 00001111 00000000 00000
000 00000000
27
Alto nivel
  • Ventajas
  • Programación más cerca del lenguaje humano y
    matemático
  • Lenguajes estructurados y tipados
  • Facilidad de escritura, lectura y depuración
  • La complejidad se deja al compilador
  • Código portable de una máquina a otra
  • Inconvenientes
  • Dificultad de acceso a todos los recursos de la
    máquina
  • El código máquina resultante suele ser más grande
    y lento

28
Alto nivel ? código máquina
  • Pasos en la obtención de código máquina
  • Escribir código fuente (programa editor)
  • Compilar código fuente (programa compilador)
  • Enlazar código objeto y librerías (programa
    enlazador)

29
Ejecución del programa
  • Ejecución de un programa
  • Cargar en memoria el archivo ejecutable (programa
    cargador)
  • Poner en el PC la dirección de la 1ª instrucción
    del programa
  • O bien cargar en memoria y ejecutar paso a paso
    con un programa depurador

.EXE
00011100 00010100 11011100 11010100 ...
Cargador
00011100 00010100 11011100 11010100 . . . . . . .
. .
30
El programa en memoria
  • Partes del programa
  • Código
  • Conjunto de funciones
  • Datos
  • Variables globales (datos)
  • Variables locales Pila (stack)
  • Variables de almacenamiento dinámico Montón
    (heap)

Código
Datos
Pila
Montón
31
La zona de memoria de código
  • El código está dividido en funciones
  • Función conjunto de instrucciones que cumplen un
    objetivo común, separable del resto y, en lo
    posible, reutilizable.
  • Elementos de la función
  • Parámetros
  • Variables locales
  • Sentencias de ejecución
  • Valor devuelto

Código
Datos
Pila
Montón
tipodvto Funcion(tipo1 par1,tipo2 par2, )
tipoL1 vloc1,vloc2,vloc3 tipoL2
vloc4,vloc5 . . . Sentencias
return valor
32
La zona de memoria de código
  • El código está dividido en funciones

Factorial
Código
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(8,3)
printf(Combd\n,c)
CombNM
main
printf
Datos
Pila
Montón
33
La zona de memoria de datos
  • Los datos son las variables utilizadas
  • Variable zona reservada en direcciones de
    memoria consecutivas, cuyo contenido puede ser
    modificado y reutilizado por el programa.
  • Tipos de variables
  • Variables globales
  • Variables locales
  • Parámetros de función
  • Variables de almacenamiento dinámico

Código
Datos
Pila
Montón
tipoG1 vglob1,vglob2 tipodvto Funcion(tipo1
par1,tipo2 par2, ) tipoL1
vloc1,vloc2,vloc3 tipoL2 vloc4,vloc5 .
. .
34
La zona de memoria de datos
  • Los datos son las variables utilizadas
  • Variables globales
  • Se alojan en el segmento de datos
  • Su espacio se reserva al cargar el programa y se
    mantiene en toda su duración
  • Todas las funciones tienen acceso a estas
    variables

Código
Datos
Pila
Montón
35
La zona de memoria de datos
  • Los datos son las variables utilizadas
  • Variables locales y parámetros de función
  • Se alojan en el segmento de pila.
  • Su espacio se reserva al empezar a ejecutar la
    función en que están declaradas, y se libera al
    terminar su ejecución.
  • Sólo la función que las declara puede
    utilizarlas.
  • Las variables locales y parámetros se van
    apilando en memoria al llamar a otras funciones,
    y desapilando al salir.
  • Los parámetros son variables locales cuyo valor
    inicial se da en la llamada a la función.

Código
Datos
Pila
Montón
36
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
Pila
SP
Montón
37
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
?
SP
c
3
y
x
8
Montón
38
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
SP
DIR RET 1
8
n
5
m
?
c
3
y
x
8
DIR RET 1
Montón
39
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
?
SP
r
?
num
DIR RET 1
8
n
5
m
?
c
3
y
x
8
DIR RET 1
Montón
40
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
SP
DIR RET 2
8
x
?
r
?
num
DIR RET 1
DIR RET 2
8
n
5
m
?
c
3
y
x
8
DIR RET 1
Montón
41
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
SP
1
result
?
i
DIR RET 2
8
x
?
r
?
num
DIR RET 1
DIR RET 2
8
n
5
m
?
c
3
y
x
8
DIR RET 1
Montón
42
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
SP
40320
result
9
i
DIR RET 2
8
x
?
r
?
num
DIR RET 1
DIR RET 2
8
n
5
m
?
c
3
y
x
8
DIR RET 1
Montón
43
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
40320
9
DIR RET 2
8
?
SP
r
40320
num
DIR RET 1
DIR RET 2
8
n
5
m
?
c
3
y
x
8
DIR RET 1
Montón
44
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
40320
9
SP
DIR RET 3
3
x
?
r
40320
num
DIR RET 1
8
n
DIR RET 3
5
m
?
c
3
y
x
8
DIR RET 1
Montón
45
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
SP
result
1
i
9
DIR RET 3
3
x
?
r
?
num
DIR RET 1
8
n
DIR RET 3
5
m
?
c
3
y
x
8
DIR RET 1
Montón
46
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
SP
6
result
4
i
DIR RET 3
3
x
?
r
?
num
DIR RET 1
8
n
DIR RET 3
5
m
?
c
3
y
x
8
DIR RET 1
Montón
47
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
6
4
DIR RET 3
3
6720
SP
r
40320
num
DIR RET 1
8
n
DIR RET 3
5
m
?
c
3
y
x
8
DIR RET 1
Montón
48
La zona de memoria de datos
Código
  • El funcionamiento de la pila

Datos
int Factorial(int x) int i,result1
for (i1iltxi) resultresulti
return result int CombNM(int n,int m)
int num,r numFactorial(n)
rnum/Factorial(n-m) return r void
main() int x8,y3,c cCombNM(x,y2)
printf(Combd\n,c)
6
4
DIR RET 3
3
6720
40320
DIR RET 1
8
5
SP
6720
c
3
y
x
8
DIR RET 1
Montón
49
Los dispositivos de Entrada/Salida
CPU
CU
  • Dispositivos de E/S permiten la comuni-cación
    del computador con el exterior
  • Entrada teclado, ratón, conversor A/D, entrada
    digital, temporizador,
  • Salida pantalla, impre-sora, conversor D/A,
    salida digital,
  • E y S disco duro, comu-nicación serie, paralelo,
    red,

registros
ALU
Memoria
E/S
50
Programación de E/S puertos
  • Puertos de E/S
  • Lugares de almacenamiento de información que,
    cuando son leídos o escritos, provocan acciones
    en los dispositivos de E/S
  • Organizados en direcciones

CPU
E/S
Memo
Interfaz dispositivo 1
Dispositivo 1
1 1 1 0 0 1 1 1
4000
0 1 1 0 1 0 1 0
5000
Interfaz dispositivo 2
Dispositivo 2
. . .
51
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Salida
    impresora
  • El programador escribe en un puerto del
    dispositivo
  • La electrónica del interfaz genera las acciones
    correspondientes en el dispositivo

OUT 3000,a
E/S
Interfaz impresora
1 1 1 0 0 1 1 1
3000
Impresora
M
52
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Salida
    impresora
  • El programador escribe en un puerto del
    dispositivo
  • La electrónica del interfaz genera las acciones
    correspondientes en el dispositivo

OUT 3000,a
E/S
Interfaz impresora
ESCRITO
0 1 1 0 0 0 0 1
3000
Impresora
M
53
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Salida
    impresora
  • El programador escribe en un puerto del
    dispositivo
  • La electrónica del interfaz genera las acciones
    correspondientes en el dispositivo

OUT 3000,a
E/S
Interfaz impresora
ESCRITO
0 1 1 0 0 0 0 1
3000
Impresora
M
54
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Salida
    impresora
  • El programador escribe en un puerto del
    dispositivo
  • La electrónica del interfaz genera las acciones
    correspondientes en el dispositivo

OUT 3000,a
E/S
Interfaz impresora
ESCRITO
0 1 1 0 0 0 0 1
3000
Impresora
M
55
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Salida
    impresora
  • El programador escribe en un puerto del
    dispositivo
  • La electrónica del interfaz genera las acciones
    correspondientes en el dispositivo

OUT 3000,a
E/S
Interfaz impresora
ESCRITO
0 1 1 0 0 0 0 1
3000
Impresora
M
56
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Salida
    impresora
  • El programador escribe en un puerto del
    dispositivo
  • La electrónica del interfaz genera las acciones
    correspondientes en el dispositivo

OUT 3000,a
E/S
Interfaz impresora
ESCRITO
0 1 1 0 0 0 0 1
3000
Impresora
M
57
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Salida
    impresora
  • El programador escribe en un puerto del
    dispositivo
  • La electrónica del interfaz genera las acciones
    correspondientes en el dispositivo

OUT 3000,a
E/S
Interfaz impresora
ESCRITO
0 1 1 0 0 0 0 1
3000
Impresora
M
58
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Salida
    impresora
  • El programador escribe en un puerto del
    dispositivo
  • La electrónica del interfaz genera las acciones
    correspondientes en el dispositivo

OUT 3000,a
E/S
Interfaz impresora
ESCRITO
0 1 1 0 0 0 0 1
3000
Impresora
M
59
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Salida
    impresora
  • El programador escribe en un puerto del
    dispositivo
  • La electrónica del interfaz genera las acciones
    correspondientes en el dispositivo

OUT 3000,a
E/S
Interfaz impresora
0 1 1 0 0 0 0 1
3000
Impresora
M
60
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
1 0 0 1 0 1 1 1
2001
Teclado
61
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
1 0 0 1 0 1 1 1
2001
Teclado
62
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
1 0 0 1 0 1 1 1
2001
Teclado
63
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
1 0 0 1 0 1 1 1
2001
Teclado
64
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
1 0 0 1 0 1 1 1
2001
Teclado
65
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
RECIBIDO
0 0 0 0 0 0 0 1
2000
0 1 1 0 0 0 0 1
2001
Teclado
66
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
RECIBIDO
0 0 0 0 0 0 0 1
2000
0 1 1 0 0 0 0 1
2001
Teclado
67
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
RECIBIDO
0 0 0 0 0 0 0 1
2000
0 1 1 0 0 0 0 1
2001
Teclado
68
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
RECIBIDO
0 0 0 0 0 0 0 1
2000
0 1 1 0 0 0 0 1
2001
Teclado
69
Funcionamiento de dispositivos
  • Funcionamiento de un dispositivo de Entrada
    teclado
  • La electrónica del interfaz reacciona ante
    cambios en el dispositivo, modificando el/los
    puertos
  • El programador lee del/los puertos del dispositivo

ESPERA TEST 2000,000000001b JZ
ESPERA IN R0,2001
E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
0 1 1 0 0 0 0 1
2001
Teclado
70
Sincronización de E/S
INST1 INST2 INST3 . . .
ISR IN R0,2001 IRET
  • Muestreo o polling
  • El programa comprueba el estado del dispositivo
    leyendo los puertos
  • Ocupa mucho tiempo de CPU
  • Interrupciones
  • La CPU está ejecutando otro programa
  • Cuando el dispositivo avisa de algún evento, se
    abandona temporalmente la ejecución del programa
    y se pasa a ejecutar una ISR. Se retoma el
    programa al terminar la ISR.

E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
1 0 0 1 0 1 1 1
2001
Teclado
71
Sincronización de E/S
INST1 INST2 INST3 . . .
ISR IN R0,2001 IRET
  • Muestreo o polling
  • El programa comprueba el estado del dispositivo
    leyendo los puertos
  • Ocupa mucho tiempo de CPU
  • Interrupciones
  • La CPU está ejecutando otro programa
  • Cuando el dispositivo avisa de algún evento, se
    abandona temporalmente la ejecución del programa
    y se pasa a ejecutar una ISR. Se retoma el
    programa al terminar la ISR.

E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
1 0 0 1 0 1 1 1
2001
Teclado
72
Sincronización de E/S
INST1 INST2 INST3 . . .
ISR IN R0,2001 IRET
  • Muestreo o polling
  • El programa comprueba el estado del dispositivo
    leyendo los puertos
  • Ocupa mucho tiempo de CPU
  • Interrupciones
  • La CPU está ejecutando otro programa
  • Cuando el dispositivo avisa de algún evento, se
    abandona temporalmente la ejecución del programa
    y se pasa a ejecutar una ISR. Se retoma el
    programa al terminar la ISR.

E/S
Interfaz teclado
RECIBIDO
0 0 0 0 0 0 0 1
2000
0 1 1 0 0 0 0 1
2001
Teclado
73
Sincronización de E/S
INST1 INST2 INST3 . . .
ISR IN R0,2001 IRET
  • Muestreo o polling
  • El programa comprueba el estado del dispositivo
    leyendo los puertos
  • Ocupa mucho tiempo de CPU
  • Interrupciones
  • La CPU está ejecutando otro programa
  • Cuando el dispositivo avisa de algún evento, se
    abandona temporalmente la ejecución del programa
    y se pasa a ejecutar una ISR. Se retoma el
    programa al terminar la ISR.

E/S
Interfaz teclado
RECIBIDO
0 0 0 0 0 0 0 1
2000
0 1 1 0 0 0 0 1
2001
Teclado
74
Sincronización de E/S
INST1 INST2 INST3 . . .
ISR IN R0,2001 IRET
  • Muestreo o polling
  • El programa comprueba el estado del dispositivo
    leyendo los puertos
  • Ocupa mucho tiempo de CPU
  • Interrupciones
  • La CPU está ejecutando otro programa
  • Cuando el dispositivo avisa de algún evento, se
    abandona temporalmente la ejecución del programa
    y se pasa a ejecutar una ISR. Se retoma el
    programa al terminar la ISR.

E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
0 1 1 0 0 0 0 1
2001
Teclado
75
Sincronización de E/S
INST1 INST2 INST3 . . .
ISR IN R0,2001 IRET
  • Muestreo o polling
  • El programa comprueba el estado del dispositivo
    leyendo los puertos
  • Ocupa mucho tiempo de CPU
  • Interrupciones
  • La CPU está ejecutando otro programa
  • Cuando el dispositivo avisa de algún evento, se
    abandona temporalmente la ejecución del programa
    y se pasa a ejecutar una ISR. Se retoma el
    programa al terminar la ISR.

E/S
Interfaz teclado
0 0 0 0 0 0 0 0
2000
0 1 1 0 0 0 0 1
2001
Teclado
Write a Comment
User Comments (0)
About PowerShow.com