linux虚拟内存管理
文章平均质量分 80
liuyuanqing2010
广工学子
展开
-
linux的物理内存与线性地址空间布局--2
Linux内存线性地址空间大小为4GB,分为2个部分:用户空间部分(通常是3G)和内核空间部分(通常是1G)。在此我们主要关注内核地址空间部分。内核通过内核页全局目录来管理所有的物理内存,由于线形地址前3G空间为用户使用,内核页全局目录前768项(刚好3G)除0、1两项外全部为0,后256项(1G)用来管理所有的物理内存。内核页全局目录在编译时静态地定义为swapper_pg_dir数组,该数组从物理内存地址0x101000处开始存放。由图可见,(1) 内核线形地址空间部分从PAGE_OFFSET(通常定义转载 2011-05-28 20:12:00 · 616 阅读 · 0 评论 -
get_user_pages
转自:http://bbs.chinaunix.net/thread-1924966-1-1.html发现get_user_pages()接口真是个好东东,它能获取用户区进程使用内存的某个页(struct page),然后可以在内核区通过kmap_atomic(), km转载 2011-08-12 22:16:35 · 1064 阅读 · 0 评论 -
linux底层内存管理--用户空间的分级分配系统以及懒惰的含义
转自:http://blog.csdn.net/dog250/article/details/5303676大 内存如果从heap中分配,第一它如果释放了可能不会立即归还操作系统,第二它如果不释放,由于heap中小内存的分配和释放会造成很多碎片,再有大内存 分配需求时可能会失转载 2011-08-11 23:28:57 · 599 阅读 · 0 评论 -
Linux内核中常见内存分配函数介绍
Linux内核中常见内存分配函数介绍 - [Linux Programming]Tag:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://yatusiter.blogbus.com/logs/83541094.html1转载 2011-08-11 18:25:31 · 329 阅读 · 0 评论 -
Linux内核中的红黑树
引用链接:http://www.kerneltravel.net/jiaoliu/kern-rbtree.html 红黑树是平衡二叉树的一种,它有很好的性质,树中的结点都是有序的,而且因为它本身就是平衡的,所以查找也不会出现非常恶劣的情况,基于二叉树的操作的时间复杂度是O转载 2011-08-10 01:11:33 · 495 阅读 · 0 评论 -
linux中VM虚拟内存区域及mmap方法实现
linux中VM虚拟内存区域及mmap方法实现 文件映射是虚存的中心概念, 文件映射一方面给用户提供了一组措施, 好似用户将文件映射到自己地址空间的某个部分, 使用简单的内存访问指令读写文件;另一方面, 它也可以用于内核的基本组织模式, 在这种模式种转载 2011-08-09 17:07:52 · 4510 阅读 · 0 评论 -
unix/linux共享内存应用与陷阱
unix/linux共享内存应用与陷阱 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmm转载 2011-08-08 10:49:00 · 548 阅读 · 0 评论 -
Linux使用的缓存
Linux使用的缓存不管在硬件设计还是软件设计中,高速缓存是获得高性能的常用手段。Linux 使用了多种和内存管理相关的高速缓存。1. 缓冲区高速缓存:缓冲区高速缓存中包含了由块设备使用的数据缓冲区。这些缓冲区中包含了从设备中读取的数据块或写入设备的数据块。缓冲区高速转载 2011-08-07 11:04:20 · 550 阅读 · 0 评论 -
缓冲区高速缓存
缓冲区高速缓存Linux 采用了缓冲区高速缓存机制,而不同于其他操作系统的“写透”方式,也就是说,当你把一个数据写入文件时,内核将把数据写入内存缓冲区,而不是直接写入磁盘。在这里要用到一个数据结构 buffer_head 它是用来描述缓冲区的数据结构,缓冲区的大小一般要比转载 2011-08-05 22:19:24 · 2640 阅读 · 0 评论 -
关于高端内存的一些笔记
转自:http://bbs.chinaunix.net/thread-1938084-1-1.html闲着无聊,把一些东西写下来给大家分享下吧,有什么不对的,欢迎质疑注:本文提及的物理地址空间可以理解为就是物理内存,但是在某些情况下,把他们理解为物理内存是不对转载 2011-09-02 00:59:08 · 742 阅读 · 0 评论 -
直接内存访问(DMA)
1. 什么是DMA直接内存访问是一种硬件机制,它允许外围设备和主内存之间直接传输它们的I/O数据,而不需要系统处理器的参与。使用这种机制可以大大提高与设备通信的吞吐量。 2. DMA数据传输有两种方式引发数据传输:第一种情况:软件对数据的请求1. 当进程调用r转载 2011-07-03 23:44:08 · 3333 阅读 · 0 评论 -
闲着没事测了一下memcpy
原文转自:http://blog.csdn.net/z2007b/archive/2011/06/21/6559457.aspx前阵的时候领导提出要对memcpy做一个测试。也没有交代具体的细节。我就直接自已写了个常规memcpy,然后再把内核的__memcpy和glibc的memcpy整出来,对三者进行比较,不比不知道,一比吓一大跳。 测试结论是:kernel和glibc的m转载 2011-06-21 19:36:00 · 1353 阅读 · 0 评论 -
内存
内存目 录内存内存管理子系统导读from aka用户态内核页目录的初始化内核线程页目录的借用用户进程内核页目录的建立内核页目录的同步mlock代码分析memory.ccopy_pageclear_page_tablesoomfree_page_tablesnew_page_tablescopy_one_ptecopy_pte_rangecopy_pmd_rangecopy_page_rangefree_pteforget_ptezap_pte_rangezap_pmd_rangezap_page_range转载 2011-04-24 18:36:00 · 757 阅读 · 0 评论 -
内存的分配和回收
内存的分配和回收 转自:http://www.eefocus.com/html/09-06/74976s.shtml在内存初始化完成以后,内存中就常驻有内核映象(内核代码和数据)。以后,随着用户程序的执行和结束,就需要不断地分配和释放物理页面。内核应该为分配一组连续的页面而建立一种稳定、高效的分配策略。为此,必须解决一个比较重要的内存管理问题,即外碎片问题。频繁地请求和释放不同大小的一组连续页面,必然导致在已分配的内存块中分散许多小块的空闲页面。由此带来的问题是,即使这些小块的空闲页面加起来足以满足所请求转载 2011-05-27 23:11:00 · 2731 阅读 · 0 评论 -
linux的物理内存与线性地址空间布局--1
linux的物理内存与线性地址空间布局--1 收藏 在支持MMU的32位处理器平台上,Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同。Linux运行在虚拟存储空间,并负责把系统中实际存在的远小于4GB的物理内存根据不同需求映射到整个4GB的虚拟存储空间中。n 物理存储空间布局Linux的物理存储空间布局与处理器相关,详细情况可以从处理器用户手册的存储空间分布表(memory map)相关章节中查转载 2011-05-28 19:05:00 · 800 阅读 · 0 评论 -
page_address()函数分析--如何通过page取得虚拟地址
由于X86平台上面,内存是划分为低端内存和高端内存的,所以在两个区域内的page查找对应的虚拟地址是不一样的。一. x86上关于page_address()函数的定义在include/linux/mm.h里面,有对page_address()函数的三种宏定义,主要转载 2011-08-17 23:15:03 · 501 阅读 · 0 评论