当前位置: 首页 > Linux

内存管理

时间:2023-04-06 06:45:28 Linux

VirtualmemoryspacemanagementUser-modevirtualmemorystructure如下图虚拟空间布局栈的增长方向是从高地址到低地址,所以进入函数后可以看到代码中,用于分配局部变量的栈空间是汇编指令的子rsptext、data、bss段,其实和elf文件中的内容是一致的,即操作系统加载可执行程序时,加载它的三个区域分为内存中32位和64位用户态使用的虚拟地址范围不同于内核态使用的虚拟地址范围的划分,一旦进入内核态,通过内核页表,不同进程之间没有区别;如果在内核态访问用户态范围内的虚拟地址,则取当前正在调度的进程的页表。所以比如在ioctl的时候在内核态访问当前进程的用户态传下来的地址,是没有问题的。这个地址一旦被保留,其他时候访问,很有可能可以通过GG/proc/maps/proc/{pid}/maps查看进程的虚拟地址空间布局布局与结构图,maps中的每一行代表一个structvm_area结构对象子线程[heap]和[stack]等不会被识别出来,会在映射区进行额外的分配映射物理内存管理内存映射映射方法