进程内存分配:
每个进程所分配的内存由很多“段”组成:(地址递增方向)
1.文本段:包含了进程运行的程序机器语言指令
2.初始化数据段:包含了显式初始化的全局变量和静态变量
3.未初始化数据段:包含了未进行显式初始化的全局变量和静态变量
4.堆:向上增长
5.栈:向下增长
虚拟内存管理
1.每个进程都有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址
2.虚拟地址可以通过每个进程的页表与物理地址进行映射,获得真正的物理地址
3.如果虚拟地址对应的物理地址不在物理内存中,则产生缺页中断,并真正分配的物理地址,同时更新进程页表;如果此时物理内存已经耗尽,则需要根据内存置换算法替换部分页面到物理磁盘。
段错误
1.访问系统数据区,尤其是往系统保护的内存地址写数据,最常见的就是0地址(只读段)
2.内存越界,访问到不属于你的内存区域。