通过操作系统处理低级指针

时间:2012-05-29 07:15:26

标签: c pointers operating-system

操作系统如何处理指针?

他们是先截获还是指针直接从C中的函数调用中访问内存?

编辑:

当运行时执行进程并且进程当前执行指针时,内核是否会立即链接到该段,或者是否存在截取函数调用之间的层,并在完成任何操作后访问数据?

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

2 个答案:

答案 0 :(得分:3)

C中的指针指向virtual memory个地址。

OS(通常与HW结合使用)检查您要访问的地址是否有效(在进程虚拟内存域中),如果是,则将其转换为physical address

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

还有更多内容 - 在几门学术课程中可以涵盖完成的具体内容 - 但这些是基础知识的基础知识。

答案 1 :(得分:2)

  

操作系统如何处理指针?

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