Utilización de memoria

Realizar las lecturas involucradas por Inspecciona y Avanza directamente del archivo donde reside el programa fuente puede ser ineficiente ya que el tiempo que se consume para leer 1 y 1024 caracteres es el mismo.

Por ello se considera la existencia de memoria de entrada (buffer) donde se puede depositar imágenes del contenido del archivo del programa fuente y donde se realicen Inspecciona y Avanza directamente en RAM.

Esta memoria de entrada tiene una capacidad de 1024 caracteres (o múltiplos de esta cantidad) que llamaremos N. La dirección de inicio de esta región la denominaremos Buffer.

buffer

La región se mantendrá dividida en dos partes, que se llenarán de manera alternativa bajo el siguiente algoritmo.

AP=AP+1
SI AP == Buffer+N/2
( AP está al final del primer bloque y
   por lo tanto debe llenar el segundo )
ENTONCES
	i=Lectura(Buffer+N/2, N/2, archivo)
	SI i <N/2 
	ENTONCES 
		Contenido(Buffer+N/2+i)=eof
	FSI
SINO
	SI AP == Buffer+N
	( AP está al final del segundo bloque y
     por lo tanto debe llenar el primero )
	ENTONCES
		i=Lectura(Buffer, N/2, archivo)
		AP=Buffer
		SI i <N/2 
		ENTONCES 
			Contenido(Buffer+i)=eof
		FSI
	FSI
FSI

Este algoritmo representa el comportamiento de la función Avanza, quien determinará cuando transferir a memoria el contenido del archivo del programa fuente. La función Lectura (destino, n, fuente) requiere especificar la región de memoria (destino) donde se depositarán (n) caracteres del archivo (fuente).