2012-11-04 56 views
1

假设我在内核中创建了一个函数指针(类似于中断服务程序,并在中断向量表中维护函数的地址)并开始编译和链接,然后链接程序可能会从静态地址分配函数的地址被执行。如何判断内存地址在OS中是否空闲?

内核开发人员可能不知道函数的地址可能在哪里执行。

但是,当创建新的内核进程时,它应该为进程动态分配内存。
那么,如何确定RAM中是否有空闲内存,并将内存分配给进程?
另外如何找到链接器分配的内存地址?

我想知道malloc或kmalloc如何分配可用内存来处理。

回答

0

首先,你还没有指定你的操作系统。你在问操作系统特定的内核内存管理器是如何工作的。这不是在诸如Windows之类的封闭操作系统中暴露出来的。在开源操作系统中,您可以浏览kmalloc或类似功能的代码。但除非你非常清楚你在做什么,否则你不应该惹它。

链接并不决定要加载代码,它只是解决了代码的各种物品的位置,使它们之间正确的链接(这就是为什么它被称为连接...)

0

所以,如何确定RAM中是否有空闲内存并将内存分配给进程?另外如何找到由链接器分配的内存地址 ?

我觉得你很困惑。这些是虚拟地址,这就是像malloc这样的库。映射到实际存储器地址以及系统中是否有空闲存储器来运行该过程由操作系统透明地处理:操作系统

相关问题