Está CoverFlow
Porque para entender la recursividad primero hay que comprender la recursividad
http://faqoperativos.com.ar/enunciado-ppt
NADA
No asumir
como real
Arquitectura
C
B
Kernel
A
Programa
PCP
IO
PLP
UMV
n
1
CPU
0
Programa 1/1
Programa A
entendiendo_tp.ansisop
Codigo fuente
PLP
configuracion.config
Direccion del Kernel
Kernel 1/4
PLP
PCP�
New
Ready
Exec
Exit
Block
HIO “Disco”
HIO “Floppy”
PCB Programa A
Kernel 2/4
PCB
PCB Programa A
Kernel 3/4
PLP
PCP�
Programa A
New
Ready
Exec
Exit
Block
HIO “Disco”
HIO “Floppy”
Kernel 4/4
Configuración (ejemplo)
ID_HIO =[Disco, Impresora, Scanner]�HIO =[1000, 2000, 1000]�SEMAFOROS =[SEM1, SEM2, SEM3]�VALOR_SEMAFORO =[0, 0, 5]
MULTIPROGRAMACION = 6�PUERTO_PROG = 5000�PUERTO_CPU = 5001�QUANTUM = 3�RETARDO = 2000
UMV 1/3
Solicitud bytes
Envio bytes
Consola
Kernel
CPU 1
CPU n
UMV 2/3
Segmento 1 (A)
Segmento 2 (A)
Segmento 1 (B)
Segmento 2 (B)
Memoria principal
Segmento 3 (A)
Programa A
Programa B
UMV 3/3
Segmento 1 (A)
Segmento 2 (A)
Segmento 1 (B)
Segmento 2 (B)
Memoria principal
Segmento 3 (A)
Programa A
Programa B
CPU 1/1
Enviar “Hola!”
Programa A
printText Hola!
imprimirTexto(“Hola!”)
Program Counter ++
AnSIS P 1/12
variables f, a, g
AnSIS P 2/12
a = 0+$3
AnSIS P 3/12
!Super = 1+a
AnSIS P 4/12
print !Super
AnSIS P 5/12
jnz !Super Siguiente
AnSIS P 6/12
return f
NO ASIGNA!!
AnSIS P 7/12
io impresora 200
AnSIS P 8/12
wait mutexA
AnSIS P 9/12
signal Semaforo
AnSIS P 10/12
textPrint Hola Mundo!
AnSIS P 11/12
g <- mult !Global a+3
AnSIS P 12/12
end
¿Y begin?
begin no es una instrucción ejecutable.
Stack 1/8
#!/usr/bin/ansisop
begin
variables f, a, g
a = 1
f = 8
g <- doble a
print g
end
function doble
variables f
f = $0 + $0
return f
end
Stack 2/8
#!/usr/bin/ansisop
begin
variables f, a, g
a = 1
f = 8
g <- doble a
print g
end
function doble
variables f
f = $0 + $0
return f
end
43 | ee | c6 | db | 78 |
60 | e4 | 01 | 72 | 82 |
1c | 93 | 30 | aa | 4d |
0b | b6 | 50 | 51 | 49 |
57 | bf | a6 | 26 | f3 |
5f | c0 | 7f | 61 | 08 |
db | 2a | 0e | 10 | 58 |
0xce57f300
bf | 9c | 13 | d6 | f2 |
Stack 3/8
#!/usr/bin/ansisop
begin
variables f, a, g
a = 1
f = 8
g <- doble a
print g
end
function doble
variables f
f = $0 + $0
return f
end
f | 00 | 00 | 00 | 08 |
a | 00 | 00 | 00 | 01 |
g | 93 | 30 | aa | 4d |
0b | b6 | 50 | 51 | 49 |
57 | bf | a6 | 26 | f3 |
5f | c0 | 7f | 61 | 08 |
db | 2a | 0e | 10 | 58 |
0xce57f300
bf | 9c | 13 | d6 | f2 |
Stack 4/8
#!/usr/bin/ansisop
begin
variables f, a, g
a = 1
f = 8
g <- doble a
print g
end
function doble
variables f
f = $0 + $0
return f
end
f | 00 | 00 | 00 | 08 |
a | 00 | 00 | 00 | 01 |
g | 93 | 30 | aa | 4d |
ce | 57 | f3 | 00 | 00 |
00 | 00 | 04 | ce | 57 |
f3 | 0b | 0 | 00 | 00 |
00 | 01 | 0e | 10 | 58 |
0xce57f320
bf | 9c | 13 | d6 | f2 |
Stack 5/8
#!/usr/bin/ansisop
begin
variables f, a, g
a = 1
f = 8
g <- doble a
print g
end
function doble
variables f
f = $0 + $0
return f
end
f | 00 | 00 | 00 | 08 |
a | 00 | 00 | 00 | 01 |
g | 93 | 30 | aa | 4d |
ce | 57 | f3 | 00 | 00 |
00 | 00 | 04 | ce | 57 |
f3 | 0b | 0 | 00 | 00 |
00 | 01 | f | 10 | 58 |
bf | 9c | 13 | d6 | f2 |
0xce57f320
Stack 6/8
#!/usr/bin/ansisop
begin
variables f, a, g
a = 1
f = 8
g <- doble a
print g
end
function doble
variables f
f = $0 + $0
return f
end
f | 00 | 00 | 00 | 08 |
a | 00 | 00 | 00 | 01 |
g | 93 | 30 | aa | 4d |
ce | 57 | f3 | 00 | 00 |
00 | 00 | 04 | ce | 57 |
f3 | 0b | 0 | 00 | 00 |
00 | 01 | f | 00 | 00 |
00 | 02 | 13 | d6 | f2 |
0xce57f320
Stack 7/8
#!/usr/bin/ansisop
begin
variables f, a, g
a = 1
f = 8
g <- doble a
print g
end
function doble
variables f
f = $0 + $0
return f
end
f | 00 | 00 | 00 | 08 |
a | 00 | 00 | 00 | 01 |
g | 00 | 00 | 00 | 02 |
ce | 57 | f3 | 00 | 00 |
00 | 00 | 04 | ce | 57 |
f3 | 0b | 0 | 00 | 00 |
00 | 01 | f | 00 | 00 |
0xce57f300
00 | 02 | 13 | d6 | f2 |
Stack 8/8
#!/usr/bin/ansisop
begin
variables f, a, g
a = 1
f = 8
g <- doble a
print g
end
function doble
variables f
f = $0 + $0
return f
end
f | 00 | 00 | 00 | 08 |
a | 00 | 00 | 00 | 01 |
g | 00 | 00 | 00 | 02 |
ce | 57 | f3 | 00 | 00 |
00 | 00 | 04 | ce | 57 |
f3 | 0b | 0 | 00 | 00 |
00 | 01 | f | 00 | 00 |
0xce57f300
00 | 02 | 13 | d6 | f2 |
TERMINATOR
> 2
x
_