深入理解Linux内核-进程地址空间
给内核分配内存和给用户态进程分配内存是有区别的:
1、内核的优先级最高,如果某个内核函数请求动态内存,不会被延时
2、内核信任自己,不必保护措施
3、用户态进程对动态内存的请求被认为不是紧迫的,总是被尽量推迟分配
4、用户进程总是不可信任的
进程的地址空间:
1、由允许进程使用的全部线性地址组成。
2、每个进程的线性地址集合是不同的。
3、每个进程允许有65536个不同的线性区
4、线性区由链表和红黑数保存
5、
内存的描述符:
内核线程的内存描述符:
线性区数据结构:
线性区的访问权限:
线性区的查找、插入、分配、释放
缺页异常处理:
1、处理地址空间以外的错误地址
2、处理地址空间以内的错误地址
请求调页
写时复制:
处理非连续内存区访问:
创建和删除进程的地址空间:
堆的管理: