1

假设我在内核中创建了一个函数指针(类似于中断服务程序并在中断向量表中维护函数的地址)并开始编译和链接,那么链接器可能会静态分配函数的地址应该从哪里执行.

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

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

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

4

2 回答 2

0

First of all, you haven't specified your OS. You're asking how the OS specific kernel memory manager work. That's not something that's exposed in closed OS such as windows. In open source OS you can just browse the code of kmalloc or similar function. But you really shouldn't mess with it unless you know very well what you're doing.

Linker doesn't decide where to load the code, it just resolves the locations of various items in the code and makes proper links between them (that's why it's called linker...)

于 2012-11-04T11:15:02.647 回答
0

那么,如何判断RAM中是否有空闲内存并将内存分配给进程呢?另外如何找到链接器分配的内存地址?

我想你在这里很困惑。这些是虚拟地址,这就是图书馆的意义malloc所在。到实际内存地址的映射以及系统中是否有空闲内存来运行进程由操作系统透明地处理

于 2012-11-04T13:16:11.777 回答