
内存管理
文章平均质量分 88
liujianfei526
这个作者很懒,什么都没留下…
展开
-
linux内存管理--用户空间和内核空间
关于虚拟内存有三点需要注意: 4G的进程地址空间被人为的分为两个部分--用户空间与内核空间。用户空间从0到3G(0xc0000000),内核空间占据3G到4G。用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址。例外情况只有用户进程进行系统调用(代表用户进程在内核态执行)等时刻可以访问到内核空间。用户空间对应进程,所以每当进程切换,用户空间就会跟着变化;而内核空间是由内转载 2017-09-03 19:12:50 · 533 阅读 · 0 评论 -
Kmalloc和Vmalloc的区别
kmalloc()和vmalloc()介绍 kmalloc() 用于申请较小的、连续的物理内存 1. 以字节为单位进行分配,在中 2. void *kmalloc(size_t size, int flags) 分配的内存物理地址上连续,虚拟地址上自然连续 3. gfp_mask标志:什么时候使用哪种标志?如下: ———————————————————————————————- 情形转载 2017-09-03 19:13:39 · 5176 阅读 · 0 评论 -
内存映射的原理
由于所有用户进程总的虚拟地址空间比可用的物理内存大很多,因此只有最常用的部分才与物理页帧关联。这不是问题,因为大多数程序只占用实际可用内存的一小部分。 在将磁盘上的数据映射到进程的虚拟地址空间的时,内核必须提供数据结构,以建立虚拟地址空间的区域和相关数据所在位置之间的关联。例如,在映射文本文件时,映射的虚拟内存区必须关联到文件系统的硬盘上存储文件内容的区域。如图所示: 当然,给出的是简化的转载 2017-09-03 19:14:24 · 621 阅读 · 0 评论 -
Linux用户空间与内核空间(理解高端内存)
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。 Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。 段页式机制如下图。转载 2017-09-03 19:16:30 · 658 阅读 · 0 评论 -
linux内存管理
其中介绍了虚拟内存的机制以及mmap系统调用的实现。mmap允许直接将设备内存映射到用户进程的地址空间中。物理内存的管理,包括缓存的分配及回收,请页机制,交换空间等。 1)交换模块(swap) 这个模块负责控制内存内容的换入换出,它通过替换机制,使得物理内存的页框(RAM页)中保留有效的逻辑页,即从主存中淘汰最近没被访问的逻辑页,保存近来访问过的逻辑页。该模块实现的源程序分别是:转载 2017-09-03 19:31:59 · 994 阅读 · 0 评论