内存地址Linux下内存分配与映射之一
2013-05-05 22:15
211 查看
发一下牢骚和主题无关:
地址类型:
32位的cpu,共4G间空,其中0-3G属于用户间空地址,3G-4G是内核间空地址。
用户虚拟地址:用户间空程序的地址
物理地址:cpu与内存之间的用使地址
总线地址:外围总线和内存之间的用使地址
内核逻辑地址:内存的分部或全体射映,大多数情况下,它与物理地址仅差一个偏移量。如Kmalloc分配的内存。
内核虚拟地址:内核间空的地址射映到物理地址上,但射映不必是线性的。有所的逻辑地址都是内核虚拟地址,如Vmalloc分配到的地址。
1、内存分配与释放
kmalloc一般于用分配小于128KB的内存。
Vmalloc分配的内存间空是一片连续的虚拟内存,但射映到物理内存却不必定连续。
2、用户态和内核态内存交互
copy_from_user
copy_to_user
access_ok
在拜访用户间空的内存时,必须先检查用户控件的指针是不是法合。用使access_ok函数。
3、物理地址到虚拟地址的射映
CPU对设外I/O口端物理地址的编址方法分I/O射映方法和内存射映方法。[b]在x86平台上,为设外专门现实了与RAM内存地址不同的一个独单的地址间空I/O方法。而在ARM、MIPS、PowerPC上设外I/O口端拥有与内存同相的物理地址。
[/b]
ioremap函数用来将I/O内存源资的物理地址射映到心核地址间空(3G-4G)中。
ioremap消取ipremap所做的射映。
读写I/O的函数包含:
_raw_writeb,_raw_writew,_raw_writel
_raw_readb,_raw_readw,_raw_readl
每日一道理
青春是用意志的血滴和拼搏的汗水酿成的琼浆——历久弥香;青春是用不凋的希望和不灭的向往编织的彩虹——绚丽辉煌;青春是用永恒的执著和顽强的韧劲筑起的一道铜墙铁壁——固若金汤。
4、内核间空到用户间空的射映
想在用户间空拜访内核地址,可以采取mmap方法。
射映一个设备意味着使用户间空的一段地址关联到设备内存上,这使得如果程序在分配的地址范围内行进读取或者入写,实际上就是对设备的拜访。
文章结束给大家分享下程序员的一些笑话语录:
与女友分手两月有余,精神萎靡,面带菜色。家人介绍一女孩,昨日与其相亲。女孩果然漂亮,一向吝啬的我决定破例请她吃晚饭。
选了一个蛮贵的西餐厅,点了比较贵的菜。女孩眉开眼笑,与我谈得很投机。聊着聊着,她说:“我给你讲个笑话吧。”“ok”
“一只螳螂要给一只雌蝴蝶介绍对象,见面时发现对方是只雄蜘蛛。见面后螳螂问蝴蝶‘如何?’,‘他长的太难看了’,‘别看人家长的丑,人家还有网站呢’。”
“呵呵………”我笑。忽然她问:“你有网站吗?”
地址类型:
32位的cpu,共4G间空,其中0-3G属于用户间空地址,3G-4G是内核间空地址。
用户虚拟地址:用户间空程序的地址
物理地址:cpu与内存之间的用使地址
总线地址:外围总线和内存之间的用使地址
内核逻辑地址:内存的分部或全体射映,大多数情况下,它与物理地址仅差一个偏移量。如Kmalloc分配的内存。
内核虚拟地址:内核间空的地址射映到物理地址上,但射映不必是线性的。有所的逻辑地址都是内核虚拟地址,如Vmalloc分配到的地址。
1、内存分配与释放
kmalloc一般于用分配小于128KB的内存。
Vmalloc分配的内存间空是一片连续的虚拟内存,但射映到物理内存却不必定连续。
2、用户态和内核态内存交互
copy_from_user
copy_to_user
access_ok
在拜访用户间空的内存时,必须先检查用户控件的指针是不是法合。用使access_ok函数。
3、物理地址到虚拟地址的射映
CPU对设外I/O口端物理地址的编址方法分I/O射映方法和内存射映方法。[b]在x86平台上,为设外专门现实了与RAM内存地址不同的一个独单的地址间空I/O方法。而在ARM、MIPS、PowerPC上设外I/O口端拥有与内存同相的物理地址。
[/b]
ioremap函数用来将I/O内存源资的物理地址射映到心核地址间空(3G-4G)中。
ioremap消取ipremap所做的射映。
读写I/O的函数包含:
_raw_writeb,_raw_writew,_raw_writel
_raw_readb,_raw_readw,_raw_readl
每日一道理
青春是用意志的血滴和拼搏的汗水酿成的琼浆——历久弥香;青春是用不凋的希望和不灭的向往编织的彩虹——绚丽辉煌;青春是用永恒的执著和顽强的韧劲筑起的一道铜墙铁壁——固若金汤。
4、内核间空到用户间空的射映
想在用户间空拜访内核地址,可以采取mmap方法。
射映一个设备意味着使用户间空的一段地址关联到设备内存上,这使得如果程序在分配的地址范围内行进读取或者入写,实际上就是对设备的拜访。
文章结束给大家分享下程序员的一些笑话语录:
与女友分手两月有余,精神萎靡,面带菜色。家人介绍一女孩,昨日与其相亲。女孩果然漂亮,一向吝啬的我决定破例请她吃晚饭。
选了一个蛮贵的西餐厅,点了比较贵的菜。女孩眉开眼笑,与我谈得很投机。聊着聊着,她说:“我给你讲个笑话吧。”“ok”
“一只螳螂要给一只雌蝴蝶介绍对象,见面时发现对方是只雄蜘蛛。见面后螳螂问蝴蝶‘如何?’,‘他长的太难看了’,‘别看人家长的丑,人家还有网站呢’。”
“呵呵………”我笑。忽然她问:“你有网站吗?”
相关文章推荐
- 进程通信之内存地址映射与共享,同时如何在Linux0.11下实现共享内存
- Linux的内存管理主要分为两部分:物理地址到虚拟地址的映射,内核内存分配管理(主要基于slab)。
- Linux下内存分配与映射之二
- kmalloc分配物理内存与高端内存映射--Linux内存管理(十八)
- Linux下内存分配与映射之一
- 高端内存映射之vmalloc分配内存中不连续的页--Linux内存管理(十九)
- C++内存地址分配和内存区划分简介
- 在Linux 系统内存分配
- malloc函数是C/C++中常用内存分配库函数,本篇文章将以Linux平台上的malloc为剖析对象,深入了解分配一块内存的旅程。
- linux内存管理--高端内存映射
- Linux 内存管理 -- 高端内存的映射方式
- Linux\Unix IPC进程通信实例分析(一):共享内存通信---文件映射mmap方式
- Linux device driver 3 笔记 之 内存映射
- linux内存映射
- linux环境内存分配原理 mallocinfo
- Linux 内存管理 -- 高端内存的映射方式
- Linux使用内存映射文件做内存池
- linux内存页面分配问题 page_alloc, page_address, pa
- C/C++内存分配与Linux内存管理进程所涉及到的五个数据段
- C/C++内存分配与Linux内存管理进程所涉及到的五个数据段 .