• Publicidad

Ver la dirección de una variable en la memoria RAM

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Ver la dirección de una variable en la memoria RAM

Notapor ManuelPerl » 2013-10-01 09:20 @430

Hola.

¿Cómo sería un script en Perl que escribe un valor en una dirección de memoria, y tenga otro script para leer ese valor de esa dirección?

¿Cuál es la instrucción en Perl para poner datos en la memoria RAM y poder leerlos, para así poder intercambiar datos de un script a otro utilizando la memoria RAM como puente?

No sé si existe algún tipo de variable especial que se utilice para eso, o alguna función de algún modulo.
ManuelPerl
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2011-06-21 16:23 @724

Publicidad

Re: Ver la dirección de una variable en la memoria RAM

Notapor explorer » 2013-10-01 10:44 @489

Perl se ejecuta en su propia máquina virtual, así que no tiene (en principio) acceso directo a la memoria que ocupan las variables.

Si haces un

$ perl -E '$x = "hola"; say \$x'
SCALAR(0x77b9f8)

ese valor que sale se refiere a la memoria virtual del intérprete de perl, no a la memoria física.

Y un programa no puede acceder de forma arbitraria a la memoria de otro. Generaciones de informáticos han tenido que sufrir las calamidades de infecciones, troyanos, bombas, ladrones y fisgones, hasta darse cuenta de que el futuro estaba en los sistemas operativos que no permitían compartir memoria entre aplicaciones.

Aunque, claro, siempre hay una manera de hacerlo.

  • Con hebras de ejecución simultánea (threads) se pueden compartir variables entre las hebras.
  • Si el sistema operativo es decente y lo soporta, se puede usar el sistema IPC de SysV (compartir memoria y semáforos). Por ejemplo, el módulo IPC::ShareLite permite compartir hasta 4 MB de memoria entre programas (en Linux)
  • Se pueden usar sockets entre procesos
  • Usando un disco RAM, y escribiendo y leyendo archivos en él, es lo más rápido, simple y barato
  • (algún método más que no recuerdo o no conozco)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ver la dirección de una variable en la memoria RAM

Notapor ManuelPerl » 2013-10-01 10:50 @493

¿No valdría para eso el módulo PeekPoke o el Devel::PeekPoke, o estos módulos también solo acceden a la memoria virtual?
ManuelPerl
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2011-06-21 16:23 @724

Re: Ver la dirección de una variable en la memoria RAM

Notapor explorer » 2013-10-01 11:04 @502

No los conocía. Según el manual, parece que sí. Puedes probar, a ver qué tal (Devel:: es más moderno).

Pero me temo que tu sistema operativo no te va a dejar acceder a la memoria ocupada por otra aplicación. Podrías probar acceder a memoria que no forme parte de ningún proceso.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 47 invitados

cron