2

操作系统如何处理指针?

例如,它们是首先被拦截还是指针直接从 C 中的函数调用访问内存?

编辑:

当运行时执行一个进程并且该进程当前执行一个指针时,内核是否立即链接到该段,或者之间是否有一个层拦截函数调用,并在完成它所做的任何事情后访问数据?

如果是这样,是否有人知道负责实际执行此操作的源代码,例如处理虚拟内存指针。

4

2 回答 2

3

C中的指针指向虚拟内存地址。

操作系统(通常与硬件结合使用)检查您要访问的地址是否有效(在进程虚拟内存域中),如果有效,则将其转换为物理地址

硬件还检查地址是否已经存储在缓存中(如果系统有 CPU 缓存),如果是 - 它避免从 RAM 读取(因为它很慢),并直接从缓存中读取。

它实际上还有更多内容 - 它是如何完成的,可以在几门学术课程中涵盖 - 但这些是基础知识的基础。

于 2012-05-29T07:19:38.533 回答
2

操作系统如何处理指针?

指针只是内存中的一个地址。操作系统参与“处理”指针的唯一原因是操作系统提供虚拟内存。在这种情况下,内存管理单元将负责将虚拟内存空间中的地址映射到物理地址。如果指针指向虚拟内存空间中不可用的位置,则 MMU 会生成页面错误,并且操作系统会介入以将页面与请求的地址交换。不过,这一切都发生在低级别,在正常运行的系统中,您可以忽略它。

于 2012-05-29T07:20:25.107 回答