进程虚拟地址空间划分
进程虚拟地址空间划分
*任何编程语言,产生:1. 指令;2. 数据
进程的虚拟地址空间
- 上面×处,不可访问,
nullptr 空指针(0地址)不可访问
.text .rodata(read only) 指令放在这,叫代码段
这是错误的,*p在代码段,read only不能修改
现在有的编译器已经不允许指针直接指向常量字符串了
- .data 存放初始化且初始化不为0
- .bss 0与未初始化
- .heap new,malloc在这分配内存 从上往下
- 加载共享库 *.dll(win) .so(linux)
- stack 从下往上
- 命令行参数和环境变量
ZONE_DMA
ZONE_NORMAL
ZONE_HIGHMEN
例子
1 |
|
进程内核空间共享
**每一个进程的用户空间是私有的,但内核空间是共享的
因此,进程之间的通信:匿名管道通信
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Yolo-zzy的博客!