¿Qué es un RAMDISK?

Dilwyn Jones
Tal-y-bont, Gales, Reino Unido.

Traducción:
Javier Guerra
Badajoz, marzo de 2007

A menudo me preguntan cómo hacer una copia de seguridad de un programa cuando un usuario tiene sólo una unidad de disco. La respuesta más simple en un QL es hacer una copia en un cartucho de microdrive, y luego copiar de nuevo a la unidad de disco en otro disco flexible. ¿Pero qué sucede cuando los ficheros son demasiado grandes para caber en un cartucho?

El siguiente paso es utilizar un ramdisk (disco de memoria virtual). En varias ocasiones, me ha sorprendido un poco cuando he sugerido un ramdisk como la respuesta a un problema particular y he recibido como contestación la pregunta '¿qué es un ramdisk?'

Así que, en este breve artículo, espero explicar lo que es y cómo utilizarlo.

Un ramdisk es una parte de la memoria del QL que ha sido configurada para parecer, a la vista de los programas, como si fuese una unidad de disco, aunque muy rápida. Puede pensar en ello como un disco flexible dentro de la memoria del ordenador, con una diferencia muy importante: no es permanente. Cualquier información contenida en él desaparecerá tan pronto como se apague el QL o se reinicie.

Puede salvar programas en un ramdisk, cargar de él, copiar a y desde él, y hacer, en general, muchas otras cosas con él como puede hacerlas con un disco flexible o un cartucho de microdrive. Los comandos de SuperBASIC SAVE, LOAD, DELETE, OPEN, COPY y todos los demás funcionan con los discos de memoria virtual. Incluso FORMAT funciona, pero aquí este comando se usa de forma diferente.

El ramdisk tiene su propio nombre de dispositivo. De la misma manera que salvamos ficheros a flp1_ para disquetes, o a mdv1_ para cartuchos de microdrive, utilizamos ram1_, ram2_ y así sucesivamente para los ramdisks. Por lo tanto, cuando salvamos un programa en un disco flexible con SAVE flp1_nombre, podemos también salvarlo en el ramdisk con el comando SAVE ram1_nombre.

Ahora que hemos establecido que (para los programas) un ramdisk se parece y se comporta como cualquier otro dispositivo de almacenaje de QL, cabe preguntarse ¿qué uso tiene exactamente?

Puede copiar los ficheros que use comúnmente en un disco de memoria virtual al principio de una sesión con el QL, de modo que no tenga que estar cambiando de discos para utilizarlos. El inconveniente es que toma un poco de su valiosa memoria libre, así que si pone muchos ficheros grandes en el ramdisk tiende a usar mucha memoria, dejando menos que de costumbre para sus otros programas.

Puede salvar algo temporalmente a un ramdisk mientras que carga otro programa por cualquier razón (por ejemplo para comprobar o comparar algo), y después volver a cargarlo de nuevo rápidamente. ¡Esto es, a menudo, mucho más rápido que salvar algo temporalmente a un disco o a un cartucho, y, por supuesto, nos ahorra la molestia de buscar un disco o un cartucho en blanco!

Quill se puede configurar para utilizar algunos de sus ficheros de 'sistema' desde un ramdisk. Puede hacer que Quill busque sus ficheros de ayuda, sus ficheros de control de la impresora printer_dat y hasta tener sus ficheros def_tmp en el disco de memoria virtual para hacerlo trabajar más rápido si usa Quill en multitarea y lo ha prevenido de acaparar toda la memoria del ordenador (p.ej. usando el Taskmaster -controlador de tareas- o el sistema PE -pointer environment-)

Archive puede manipular un fichero de base de datos en un ramdisk. Antes de iniciar el programa, copie el fichero de base de datos al ramdisk, y entonces haga que Archive use la copia del ramdisk. Esto no sólo hará más rápido a Archive, esto también implica que si el ordenador se cuelga, no se corromperá el fichero de base de datos del disco o del cartucho, sólo la copia en la memoria, así que no habrá perdido mucho trabajo. Debe, por supuesto, acordarse de copiar después el fichero de nuevo al disco para tener la copia en el disco actualizada.

Finalmente, la copia de ficheros a y desde ramdisk es verdaderamente muy rápida. Si sólo dispone de una unidad de disco, o quiere hacer múltiples copias (p. ej. hacer dos o tres copias de seguridad de un fichero muy importante), merece la pena copiar el fichero o los ficheros al ramdisk primero, y entonces volver a copiarlos en los discos de copias de seguridad. Si tiene el Toolkit 2 en su sistema (la mayoría de interfaces de disco tienen al menos una parte del Toolkit 2 incorporado), el comando WCOPY es un método excelente y fácil de copiar ficheros al por mayor. Use el comando WCOPY flp1_ TO ram1_ para copiar ficheros al ramdisk (pulse 'Y'(Yes) para 'Sí' o 'A'(All) para 'Todos' cuando le pregunte), luego cambie los discos y utilice el comando WCOPY ram1_ TO flp1_ para copiar los ficheros de nuevo al disco flexible (presionar otra vez 'Y' para 'Sí', 'N'(No) para 'No', 'A' para 'Todos' los ficheros o 'Q'(Quit) para 'Interrumpir' la ejecución).

Si no dispone del Toolkit 2, este es un pequeño listado de un programa que copia todos los ficheros de un disco al ramdisk, le espera hasta que cambie los discos y luego copia todos esos ficheros en el nuevo disco. Se ha diseñado para su uso en un sistema de un solo disco. Debería suprimir los ficheros en el disco de memoria virtual después (usando el comando DELETE, o WDEL ram1_ para borrar al por mayor si este comando está presente en su sistema). Puede modificar el programa para que suprima estos ficheros automáticamente si lo desea, añadiendo el comando que se muestra después de la declaración de REMark en la línea 330. Es decir, tecleando la línea 330 pero sin la palabra REMark.

100 REMark copión por ramdisk para sistemas con una sóla unidad 110 CLS : OPEN_NEW #3,ram1_temp_file 120 DIR #3,flp1_ : CLOSE #3 130 OPEN_IN #3,ram1_temp_file 140 INPUT #3,t$ : REMark salta la línea del nombre del medio 150 INPUT #3,t$ : REMark salta la línea de la cuenta se sectores 160 REPeat copy_files 170 IF EOF(#3) : EXIT copy_files 180 INPUT #3,filename$ 190 PRINT "Copiando ";filename$ 200 COPY "flp1_"&filename$ TO "ram1_"&filename$ 210 END REPeat copy_files 220 CLOSE #3 : PRINT\"Cambie los discos y pulse una tecla." 230 PAUSE 240 OPEN_IN #3,ram1_temp_file 250 INPUT #3,t$ : REMark salta la línea del nombre del medio 260 INPUT #3,t$ : REMark salta la línea de la cuenta se sectores 270 REPeat copy_files 280 IF EOF(#3) : EXIT copy_files 290 INPUT #3,filename$ 300 PRINT "Copiando ";filename$ 310 COPY "ram1_"&filename$ TO "flp1_"&filename$ 320 REMark si sólo está haciendo una copia, añada la siguiente línea 330 REMark DELETE "ram1_"&filename$ 340 END REPeat copy_files 350 CLOSE #3 : DELETE ram1_temp_file 360 PRINT "Copia compeltada, pero espere hasta que la unidad se detenga"

Sinclair QL Recursos en Castellano Alojado en / Hosted at:
Sinclair QL Recursos en Castellano
Sinclair QL Spanish Resources