c - 操作系统的低级指针处理

标签 c pointers operating-system

<分区>

操作系统如何处理指针?

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

编辑:

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

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

最佳答案

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

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

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

它实际上还有很多 - 它是如何完成的可以在几个学术类(class)中涵盖 - 但这些是基础知识中的基础知识。

关于c - 操作系统的低级指针处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10794661/

相关文章:

operating-system - 操作系统究竟如何保护内核

c - 如何修改fork()函数?

c - libusb 程序的 makefile

C-错误 : request for member ‘---’ in something not a structure or union

C语言——将输入转化为代码

c++ - 模仿 "pointer to a reference"的类可以保存超出范围的变量吗?

c++将函数作为参数传递给另一个带有void指针的函数

operating-system - 在没有虚拟内存支持的系统中链接和分页

php - 如何从 php 扩展返回数组?

python - 使用 PyObject_CallMethod 调用带有可选参数的函数