At 2003-10-13T08:01:55Z, Harald Gutsche <hg42@gmx.net> writes: > generally, when using virtual memory, all programs have their own adress > space, which means they all start at the same memory adresses for program, > data, stack etc. So identical programs should run in identical virtual > memory addresses. That's what I was expecting from my classes on operating systems. In fact, we had to write a malloc() where each program's virtual allocations (that is, the value that the program received from malloc()) began at 0x0, but the physical address was completely different and mapped via the MMU. > I never tried in reality, but... I did before asking, but wanted an outside opinion. Here's my test program that returns the same value every time: #include <stdlib.h> #include <stdio.h> int main() { void *newmem = malloc(1024); printf("newmem address: %p\n", newmem); return 0; } A similar Python program is: $ python Python 2.3.2 (#2, Oct 6 2003, 08:02:06) [GCC 3.3.2 20030908 (Debian prerelease)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> def foo(): ... pass ... >>> foo <function foo at 0x4020ff0c> >>> I liked that example because I could trivially test it in several shells at the same time. > Why do you want to know? Well, I'm reading the sequel to "Applied Cryptography", namely "Practical Cryptography". It has a discussion on hardware information leaks, including the case where RAM can begin to remember values stored in it for long periods of time. It mentioned several ways to work around this problem, but some of them involved working with memory location's physical address. I'm not sure that I agree with the author on some of the details because I don't believe a userspace program has access to that information (although kernel module implementers should probably follow the advice). -- Kirk Strauser In Googlis non est, ergo non est.
Attachment:
pgpswdSVg9jrL.pgp
Description: PGP signature