【发布时间】:2014-02-03 19:12:12
【问题描述】:
我正在使用 OpenSSL 共享库使用 AES_cbc_encrypt() 函数进行简单加密。我想知道如果我从两个不同的程序中使用这个 AES_cbc_encrypt() 函数,这两个程序会指向这个 AES_cbc_encrypt() 函数在物理内存中的相同位置吗?
我的其他问题是
1> 如果我使用共享库,它会被所有使用它的程序自动指向相同的物理内存位置吗?
或者
2 > 我是否需要遵循其他一些技术来强制程序将共享库加载到 RAM 中的同一物理内存中。 (我不这么认为,那么就没有使用共享内存的概念。这是我的理解)。
3 > 如何检查两个程序是否在同一物理位置加载共享库函数。
4> 我使用 (& AES_cbc_encrypt) 计算两个程序中函数的位置(虚拟地址),然后使用工具capture,将此虚拟地址(VPN)转换为物理地址(PFN)。但是,我不知道如何从这个 VPN 计算物理地址,PFN 信息。所以无法进一步比较。有什么线索吗?
例如我的虚拟地址是
=0x400cb0
虚拟地址
起始地址-结束地址
00400000-00402000
实体页面
: A600000000036E26
: A60000000008A4C3
在我的系统中
**虚拟地址空间:48位
物理地址空间:36 位**
我在 Linux 下使用 GCC。任何帮助或指针/链接将不胜感激。提前致谢。
【问题讨论】:
-
我不明白你为什么关心物理内存。把它的管理留给内核,它做得很好。
-
你为什么问?看来你误会了virtual memory。
标签: c linux operating-system shared-libraries shared-memory