线性地址空间的特征:
- 进程的地址空间由允许进程使用的全部线性地址组成
- 每个进程的线性地址空间是独立的
- 内核通过线性区表示线性地址区间
- 线性区由起始地址、长度和访问权限来描述
- 线性区的长度和起始地址必须是4096的倍数(4K对齐)
进程获得新线性区的典型情况:
- 创建新的进程,分配全新的地址空间
- 正在运行的进程装入一个完全不同的程序(exec系列函数)
- 正在运行的进程对一个文件执行内存映射(mmap)
- 进程持续像用户态栈增加数据
- 进程创建一个IPC共享线性区和其他进程共享内存
- 进程通过
malloc()
之类的函数扩展动态内存区,最终是通过系统调用brk()
和mmap()
进行内存分配的