E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
linux内存管理
Linux内存管理
之高端内存映射
一:引子我们在前面分析过,在
linux内存管理
中,内核使用3G—>4G的地址空间,总共1G的大小。
zhoujiaxq
·
2012-07-16 16:00
slub介绍
在《
linux内存管理
浅析》中提到内核管理自己使用的内存时,使用了SLAB对象池。SLAB确实是比较复杂,所以一直以来都没有深入看一看。
zhang_shuai_2011
·
2012-06-30 10:00
linux
cache
list
vector
null
linux内核
Linux内存管理
之高端内存映射 (2008-02-27 15:28)
Linux内存管理
之高端内存映射 (2008-02-2715:28)分类:
linux内存管理
------------------------------------------本文系本站原创,欢迎转载
kendyhj9999
·
2012-06-28 19:00
timer
linux
IO
struct
user
table
Linux Slab分配器(一)--概述
水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7664296 slab分配器是
Linux
vanbreaker
·
2012-06-14 23:00
数据结构
linux
list
cache
struct
locking
Linux Slab分配器(一)--概述
水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7664296slab分配器是
Linux内存管理
中非常重要和复杂的一部分
xitong
·
2012-06-14 23:00
linux
Linux内存管理
中address_space疑惑及解答
Linux内存管理
中address_space疑惑及解答在阅读Linux2.6的内核内存管理这一部分时,我看到page结构中的一个mapping成员,我感到很迷惑,这个成员的属性太复杂了,我们来看看:structaddress_space
wangkaiblog
·
2012-06-10 21:00
数据结构
linux
cache
struct
tree
buffer
《转》
linux内存管理
内存管理模块是操作系统的心脏;它对应用程序和系统管理非常重要。今后的几篇文章中,我将着眼于实际的内存问题,但也不避讳其中的技术内幕。由于不少概念是通用的,所以文中大部分例子取自32位x86平台的Linux和Windows系统。本系列第一篇文章讲述应用程序的内存布局。 在多任务操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中。这个沙盘就是虚拟地址空间(virtualaddressspa
sjmping
·
2012-06-08 20:00
Linux内存管理
(下)
原文:http://blog.csdn.net/kanghua/article/details/1837876物理内存管理(页管理)Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数4k(在i386体系结构中)大小页,从而分配和回收内存的基本单位便是内存页了。利用分页管理有助于灵活分配内存地址,因为分配时不必要求必须有大块的连续内存[1],系统可以东一页、西一页的凑出所需要的内
zdblw
·
2012-06-08 16:00
linux
工作
struct
数据库连接池
makefile
linux内核
Linux内存管理
(上)
在本章最后我们给出一个内存映射地实例,帮助网友们理解内核内存管理与用户内存管理之间地关系,希望大家最终能驾驭
Linux内存管理
。
zdblw
·
2012-06-08 16:00
数据结构
编程
linux
struct
linux内核
Types
从开发者的角度学习
Linux内存管理
因此,我们这里所要写的
Linux内存管理
采取避重就轻的策略,从理论层面就不去班门弄斧,贻笑大方了。我们最想做的和可能做
uyiwfn
·
2012-06-01 21:00
数据结构
linux
struct
hex
linux内核
Types
Linux内存管理
(下)
物理内存管理(页管理)Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数4k(在i386体系结构中)大小页,从而分配和回收内存的基本单位便是内存页了。利用分页管理有助于灵活分配内存地址,因为分配时不必要求必须有大块的连续内存[1],系统可以东一页、西一页的凑出所需要的内存供进程使用。虽然如此,但是实际上系统使用内存还是倾向于分配连续的内存块,因为分配连续内存时,页表不需要更改,
sooolo
·
2012-05-31 15:00
Linux内存管理
(上)
在本章最后我们给出一个内存映射地实例,帮助网友们理解内核内存管理与用户内存管理之间地关系,希望大家最终能驾驭
Linux内存管理
。
sooolo
·
2012-05-31 15:00
数据结构
编程
linux
struct
linux内核
Types
linux内存管理
浅析
[地址映射](图:左中) linux内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。 想一下,地址映射还是一件很恐怖的事情。当访问一个由虚拟地址表示的内存空间时,需要先经过若干次的内存访问,得到每一级页表中用于转换的页表项(页表是存放在内存里面的),才能完成映射。也就是说,要实现一次内存访问,实际上内存被访问了N+1次(N=页表
liuguxing
·
2012-05-29 19:00
linux
Linux内存管理
图解
一、逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。我们写个最简单的helloworld程序,用gccs编译,再反编译后会看到以下指令:mov 0x80495b0,%eax这里的内存地址0x80495b0就是一个逻辑地址,必须加上隐含的DS数据段的基地址,才能构成线性地址。也就是说0x8
zwj0403
·
2012-05-16 14:00
linux
user
table
任务
X86
linux内核
linux内存管理
Linux内存管理
(上)摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存地使用方法。
alada007
·
2012-05-15 22:00
Linux内存管理
一个进程的虚拟地址空间主要由两个数据结来描述。一个是最高层次的:mm_struct ,一个是较高层次的:vm_area_structs 。最高层次的mm_struct 结构描述了一个进程的整个虚拟地址空间。较高层次的结构vm_area_truct 描述了虚拟地址空间的一个区间(简称虚拟区)。1.MM_STRUCT 结构 mm_strcut 用来描述一个进程的虚拟地址空间,在/include/li
alada007
·
2012-05-15 20:00
数据结构
linux
struct
Semaphore
table
linux内核
linux内存管理
浅析
进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区都是干什么的。1)代码段:
alada007
·
2012-05-15 10:00
linux
cache
嵌入式
磁盘
translation
linux内核
说说free命令
但往往对它的统计输出会有一些困惑,这一方面和
Linux内存管理
机制有关,另一方面Linux在内存统计上也确实有些不足和问题。关键在于两个字段,buffers和cached。
chenliujiang1989
·
2012-04-29 20:00
linux
buffer
SuSE
产品设计
产品
磁盘
linux内存管理
浅析
[地址映射](图:左中)linux内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。想一下,地址映射还是一件很恐怖的事情。当访问一个由虚拟地址表示的内存空间时,需要先经过若干次的内存访问,得到每一级页表中用于转换的页表项(页表是存放在内存里面的),才能完成映射。也就是说,要实现一次内存访问,实际上内存被访问了N+1次(N=页表级数)
junllee
·
2012-04-27 23:00
ARM-
linux内存管理
1、ARM地址是32位,所以虚拟地址总容量也是4GB。同样分为系统空间和用户空间。对于SA-1100,也是3GB为界。 #defineTASK_SIZE 0xc0000000(定义每个进程用户空间大小)#define PAGE_OFFSET 0xc0000000#definePHYS_OFFSET 0xc0000000(内存的物理地址起点)所以在系统空间,即在内核中,虚拟地址与物理地址在数值上是相
tianxiawuzhei
·
2012-04-24 19:00
manager
存储
domain
Linux内存管理
之kmalloc 与 __get_free_page()
原文在设备驱动程序中动态开辟内存,不是用malloc,而是kmalloc,或者用get_free_pages直接申请页。释放内存用的是kfree,或free_pages.对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间
cjsycyl
·
2012-04-13 11:00
清除Linux缓存
这是
Linux内存管理
的一个优秀特性,在这方面,区别于Windows的内存管理。
chen3888015
·
2012-04-06 23:00
读书笔记:嵌入式Linux内存使用与性能优化
我就其第一章的关于
Linux内存管理
的一些基础知识做了一些笔记,分享在此,如果想深入了解
Linux内存管理
的细节以及内存使用优化策略,建议大家也去买本看看吧。1.怎样查看系统当前可用内存?
Jhuster
·
2012-03-26 17:52
Linux
内存
优化
Linux
编程
读书笔记:嵌入式Linux内存使用与性能优化
我就其第一章的关于
Linux内存管理
的一些基础知识做了一些笔记,分享在此,如果想深入了解
Linux内存管理
的细节以及内存使用优化策略,建议大家也去买本看看吧。1. 怎样查看系统当前可用内存?
tickTick
·
2012-03-26 17:52
优化
性能
linux
读书笔记
内存
Linux内存管理
Linux内存管理
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。
pointfish
·
2012-03-26 10:00
存储管理(二)
.8 换出与丢弃页面子 当系统中物理内存减少时,
Linux内存管理
子系统必须释放物理页面。
yiranwuqing
·
2012-03-19 23:00
管理
linux slub分配器浅析
在《
linux内存管理
浅析》中提到内核管理自己使用的内存时,使用了SLAB对象池。SLAB确实是比较复杂,所以一直以来都没有深入看一看。
wangyunqian6
·
2012-03-17 18:00
linux
cache
list
vector
null
linux内核
linux内存管理
浅析
[地址映射](图:左中)linux内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。想一下,地址映射还是一件很恐怖的事情。当访问一个由虚拟地址表示的内存空间时,需要先经过若干次的内存访问,得到每一级页表中用于转换的页表项(页表是存放在内存里面的),才能完成映射。也就是说,要实现一次内存访问,实际上内存被访问了N+1次(N=页表级数)
chengyang
·
2012-03-13 10:00
Linux内存管理
之页面回收
请求调页机制,只要用户态进程继续执行,他们就能获得页框,然而,请求调页没有办法强制进程释放不再使用的页框。因此,迟早所有空闲内存将被分配给进程和高速缓存,Linux内核的页面回收算法(PFRA)采取从用户进程和内核高速缓存“窃取”页框的办法不从伙伴系统的空闲块列表。 实际上,在用完所有空闲内存之前,就必须执行页框回收算法。否则,内核很可能陷入一种内存请求的僵局中,并导致系统
bullbat
·
2012-03-02 09:00
数据结构
linux
struct
list
migration
linux内核
《Linux0.11内核完全注释》读后小结 --- 内存寻址
Linux内存管理
主要是32保护模式下,段页式内存管理。如何处理内存相关的寄存器,使得程序可以读写超过4G的内存。x86这个CPU框架,会根据寄存器的值和段页式规则来进行地址变换,进行内存访问。
Teddy Yan
·
2012-02-13 19:00
LINUX内存管理
内存管理,不用多说,言简意赅。在内核里分配内存还真不是件容易的事情,根本上是因为内核不能想用户空间那样奢侈的使用内存。先来说说内存管理。内核把物理页作为内存管理的基本单位。尽管处理器的最小可寻址单位通常是字,但是,内存管理单元MMU通常以页为单位进行处理。因此,从虚拟内存的交代来看,页就是最小单位。内核用structpage(linux/mm.h)结构表示系统中的每个物理页:?1234567891
Phoenix_FuliMa
·
2012-02-05 21:25
Linux
Kernel
Development
Linux内存管理
-高端内存
上一周一直在关注linux内存中3:1(3G:1G)的关系,并没有考虑到如果我的物理内存大于1G,那么内核空间1G的虚拟空间如何映射整个物理内存呢?以及内核是如何管理这大于1G的物理内存的。 下面是转载的文章,解释了这个疑问。 高端内存是指物理地址大于896M的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。为什么?因为“内核直接映射空间”最多只能从3G到4G,只能直接映射1G物理
hanchaoman
·
2012-02-02 08:00
linux
table
存储
2010
X86
Linux内存管理
之slab机制(概述)
通过前面所有代码的分析和总结,已经把各个部分熟悉了一遍,在此对Linux内核中slab机制做最后的总结。伙伴系统算法采用页作为基本内存区,这适合于大块内存的请求。对于小内存区的申请,比如说几十或几百个字节,我们用slab机制。Slab分配器把对象分组放进高速缓存。每个高速缓存都是同类型对象的一种“储备”。包含高速缓存的主内存区被划分为多个slab,每个slab由一个活多个连续的页组成,这些页中既包
bullbat
·
2012-01-11 21:49
linux内存管理
Linux内核学习笔记
Linux内存管理
之slab机制(概述)
通过前面所有代码的分析和总结,已经把各个部分熟悉了一遍,在此对Linux内核中slab机制做最后的总结。伙伴系统算法采用页作为基本内存区,这适合于大块内存的请求。对于小内存区的申请,比如说几十或几百个字节,我们用slab机制。Slab分配器把对象分组放进高速缓存。每个高速缓存都是同类型对象的一种“储备”。包含高速缓存的主内存区被划分为多个slab,每个slab由一个活多个连续的页组成,这些页中既包
bullbat
·
2012-01-11 21:00
linux
cache
struct
buffer
statistics
linux内核
Linux内存管理
之slab机制(销毁cache)
cache的销毁很简单,依次检查和释放本地CPU cache、共享cache、三链以及cache本身。从cache的创建我们看到,创建的cache主要是从cache_cache中获得的,因为cache_cache中对象的大小就是cache结构体的大小,所以这里只是释放到cache_cache就OK了。staticvoid__kmem_cache_destroy(structkmem_cache*c
bullbat
·
2012-01-11 10:00
Linux内存管理
之slab机制(创建cache)
Linux内核中创建cache节点由函数kmem_cache_create()实现。该函数的执行流程:1,从全局cache_cache中获得cache结构,因为全局cache_cache初始化对象的大小就是kmem_cache结构的大小,所以返回的指针正好可以转换为cache结构;调用 kmem_cache_zalloc(&cache_cache, gfp);2,获得slab中碎片大小,由函数c
bullbat
·
2012-01-11 10:00
linux
cache
struct
list
object
alignment
Linux内存管理
之slab机制(销毁slab)
总结完了slab创建、对象分配、对象释放,在这里再看看slab的销毁。销毁slab很简单,由函数slab_destroy()实现。/** *slab_destroy-destroyandreleaseallobjectsinaslab *@cachep:cachepointerbeingdestroyed *@slabp:slabpointerbeingdestroyed * *Destroyal
bullbat
·
2012-01-10 20:00
linux
优化
struct
cache
Linux内存管理
之slab机制(释放对象)
Linux内核中将对象释放到slab中上层所用函数为kfree()或kmem_cache_free()。两个函数都会调用__cache_free()函数。代码执行流程:1,当本地CPU cache中空闲对象数小于规定上限时,只需将对象放入本地CPU cache中;2,当local cache中对象过多(大于等于规定上限),需要释放一批对象到slab三链中。由函数cache_flusharray(
bullbat
·
2012-01-10 17:00
Linux内存管理
之slab机制(分配对象)
Linux内核从slab中分配内存空间上层函数由kmalloc()或kmem_cache_alloc()函数实现。kmalloc()->__kmalloc()->__do_kmalloc()/** *__do_kmalloc-allocatememory *@size:howmanybytesofmemoryarerequired. *@flags:thetypeofmemorytoalloca
bullbat
·
2012-01-10 15:00
linux
cache
list
struct
linux内核
Pointers
Linux内存管理
之slab机制(创建slab)
Linux内核中创建slab主要由函数cache_grow()实现,从slab的创建中我们可以完整地看到slab与对象、页面的组织方式。/* *Grow(by1)thenumberofslabswithinacache.Thisiscalledby *kmem_cache_alloc()whentherearenoactiveobjsleftinacache. */ /*使用一个或多个页
bullbat
·
2012-01-10 10:00
linux
struct
cache
reference
Constructor
linux内核
Linux内存管理
之slab机制(初始化)
一、内核启动早期初始化start_kernel()->mm_init()->kmem_cache_init()执行流程:1,初始化静态initkmem_list3三链;2,初始化cache_cache的nodelists字段为1中的三链;3,根据内存情况初始化每个slab占用的页面数变量slab_break_gfp_order;4,将cache_cache加入cache_chain链表中,初始化
bullbat
·
2012-01-09 20:00
linux
struct
list
cache
buffer
alignment
Linux内存管理
之伙伴系统(内存释放)
Linux内核伙伴系统中页面释放,主函数为free_pages()一、上层操作/*用虚拟地址进行释放*/ voidfree_pages(unsignedlongaddr,unsignedintorder) { if(addr!=0){ VM_BUG_ON(!virt_addr_valid((void*)addr)); __free_pages(virt_to_page((void*)addr),o
bullbat
·
2012-01-09 10:00
linux
算法
struct
list
events
linux内核
linux内存管理
之伙伴系统(内存分配)
一、Linux伙伴系统分配器伙伴系统分配器大体上分为两类。__get_free_pages()类函数返回分配的第一个页面的线性地址;alloc_pages()类函数返回页面描述符地址。不管以哪种函数进行分配,最终会调用alloc_pages()进行分配页面。为清楚了解其分配制度,先给个伙伴系统数据的存储框图也就是每个order对应一个free_area结构,free_area以不同的类型以链表
bullbat
·
2012-01-08 21:00
linux
list
struct
null
statistics
Allocation
linux内存管理
之伙伴系统(建立)
内核使用伙伴系统来解决内存分配引起的外部碎片问题。一、数据结构描述结构zone中的free_area数组描述伙伴系统该数组为free_area结构structzone{ …… structfree_areafree_area[MAX_ORDER]; …… };structfree_area{/*链表类型为5类,对于分类为新加入的*/ structlist_headfree_list[M
bullbat
·
2012-01-07 22:00
linux
struct
list
validation
Build
each
linux内存管理
之活动内存区
Linux内存活动区域其实就是全局变量e820中的内存块做了相关的检查和对其处理后的区域。在管理区初始化等地方有用到。数据结构structnode_active_region{ unsignedlongstart_pfn; unsignedlongend_pfn; intnid; };初始化活动内存的初始化工作在setup_arch()->initmem_init()->e820_regi
bullbat
·
2012-01-01 21:00
数据结构
linux
struct
活动
化工
merge
linux内存管理
概述
linux内存管理
建立在基本的分页机制基础上,在linux内核中RAM的某些部分将会永久的分配给内核,并用来存放内核代码以及静态内核数据结构。
bullbat
·
2011-12-30 20:00
数据结构
linux
优化
OS
任务
linux内核
Linux内存管理
之高端内存映射
一:引子我们在前面分析过,在
linux内存管理
中,内核使用3G—>4G的地址空间,总共1G的大小。
ganggexiongqi
·
2011-12-30 16:00
浅谈
linux内存管理
linux内存管理
的两个主要特征是进程虚拟内存和内核内存分配。 先来谈谈进程虚拟内存是什么,linux使用三级页表结构,由页目录,页中间目录,页表构成。
China_OS
·
2011-12-27 22:00
linux
内存管理
linux内存管理
的动态分配的选择、折衷和实现
1楼转贴:
linux内存管理
的动态分配的选择、折衷和实现2004年 12月26日Jonathan Bartlett (
[email protected]
)技术总监, New Media Worx2004
shuyong1999
·
2011-12-21 10:00
apache
多线程
数据结构
编程
linux
语言
Linux内存管理
机制简介
这是
Linux内存管理
的一个优秀特性,在这方面,区别于Windows的内存管理。
shuyong1999
·
2011-12-21 09:00
linux
windows
cache
文本编辑
磁盘
linux内核
上一页
16
17
18
19
20
21
22
23
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他