版权所有,转载请说明转自 http://my.csdn.net/weiqing1981127
内存除了管理本身的内存(物理内存)外,还必须管理用户空间中的进程的内存(虚拟内存),这个内存就叫进程地址空间。尽管一个进程可以寻址4GB的虚拟内存,但是这并不代表它就有权访问所有的虚拟内存,这些可以被访问的地址空间称为内存区域。如果一个进程访问了不在有效范围内的内存区域,或者以不正确的方式访问了有效地址,那么内核就会终止该进程,并返回段错误信息。
内核使用内存描述符结构体表示进程的地址空间,内存描述符由struct mm_struct结构体表示。分配内存描述符有两种方法:其一,fork函数利用
本文介绍了Linux内核如何管理进程的内存,包括内存描述符struct mm_struct、内存区域struct vm_area_struct以及页表结构。内核线程使用前一个进程的内存描述符,内存区域通过红黑树和链表结构进行组织。创建和撤销内存区域分别由do_mmap和do_munmap函数处理,mmap函数用于映射文件到内存,实现高效读写和共享内存。三级页表结构(PGD、PMD、PTE)用于虚拟地址到物理地址的转换,而TLB作为硬件缓存加速这一过程。
订阅专栏 解锁全文
&spm=1001.2101.3001.5002&articleId=8280752&d=1&t=3&u=85bd05980a134474b10be1fef61544ea)
895

被折叠的 条评论
为什么被折叠?



