欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPTX文档下载
 

内核空间的各种地址.pptx

  • 资源ID:2818182       资源大小:1MB        全文页数:12页
  • 资源格式: PPTX        下载积分:9.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要9.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

内核空间的各种地址.pptx

内核空间中的各种地址,杨小帅 2012-5-24,提纲, 2010 WRI .,2,内核空间中的地址,有哪些?,如何理解?,如何使用?,内核空间地址种类, 2010 WRI .,3,物理地址; 线性地址; 虚拟地址; IO地址;,内核地址空间布局, 2010 WRI .,4,Linux内存线性地址空间大小为4GB,分为2个部分:用户空间部分(通常是3G)和内核空间部分(通常是1G)。我们主要关注内核地址空间部分。 在我们P4080/P4040中,0xC0000000 0xC0000000+768M是内核的线性地址空间(mem_map),768M以上的空间称之为高端内存(high memory)。 高端内存分为三个区域: vmalloc region; 永久映射区(Permanet Kernel Mappings); 固定映射区(Fix-mapped linear Address);,如何理解?(1), 2010 WRI .,5,硬件地址 硬件真正识别的地址;,线性地址 32位系统,能够访问的地址空间为4G(地址线只有32bit),可以称之为CPU的线性地址空间。内核中的线性地址指的是PAGE_OFFSET PAGE_OFFSET+768M。这段地址与真实的物理地址就相差一个PAGE_OFFSET,它有两个特点:物理地址连续,虚拟地址也连续;,如何理解?(2), 2010 WRI .,6,虚拟地址 软件真正使用的地址,在内核空间中,除了物理地址和IO地址,其他常见的地址都可以理解为虚拟地址;,IO地址 CPU控制外设是通过读写外设上的寄存器来进行的,外设寄存器也称为“I/O端口”,而IO端口有两种编址方式:独立编址和统一编址。 统一编址:IO寄存器与主存单元一样看待,将主存的一部分划出来用作IO地址空间,也称为“IO内存”(ARM,POWERPC一般采用这种方式); 独立编址: IO地址与存储地址分开独立编址,I/0端口地址不占用存储空间的地址范围。独立编址也称为“I/O端口”方式,外设寄存器位于“I/O(地址)空间”(x86一般是这种方式);,如何使用?(1), 2010 WRI .,7,硬件地址 如何使用硬件地址,跟软件没有关系,是硬件电路关心的事情;,线性地址 一般使用kmalloc来分配。gfp_mask标志常用场景如下:,如何使用?(2), 2010 WRI .,8,线性地址(续) 线性地址和物理地址之间可以灵活转换。 物理地址-线性地址 #define _va(x) (void *)(unsigned long)(x) + PAGE_OFFSET) 线性地址-物理地址 #define _pa(x) (unsigned long) (x) - PAGE_OFFSET),虚拟地址 用户空间中的变量地址一般都是虚拟地址。在内核中,虚拟地址是一个理解上的概念,它包含的范围比线性地址广。 注意:vmalloc出来的mem虽然虚拟地址仍然是连续的,但是物理上不一定连续,因为vmalloc不是工作在内核的低端内存空间。,如何理解?(3), 2010 WRI .,9,IO地址 访问IO内存的流程为: request_mem_region() - ioremap() - ioread8()/iowrite8() - iounmap() - release_mem_region() 其实,IO地址在ioremap之后,基本上可以把它当作普通的虚拟地址一样来操作。但是,需要注意的是,IO地址与RAM地址最大的区别在于IO操作具有边际效应。 由缓存引起的问题很好解决:访问IO区域时禁止硬件缓存; 由编译器优化引起的解决办法是:在特定顺序执行的操作之间使用内存屏障。,Summary (1), 2010 WRI .,10,内存分配: #include void *kmalloc(size_t size, int flags); Void kfree(void *obj); #include void *kmalloc(unsigned long size); Void kfree(void *addr); 页分配函数: struct page *alloc_pages(unsigned int flags, unsigned int order); struct page *alloc_page (unsigned int flags); void _free_pages(struct page * page, unsigned int order); void _free_page (struct page * page); int get_order(unsigned long size);,Summary (2), 2010 WRI .,11,内存区域的资源分配: #include #define request_mem_region(start,n,name) ; #define check_mem_region(start,n) ; #define release_mem_region(start,n) ; 映射IO地址空间到虚拟地址空间: #include void _iomem *ioremap(phys_addr_t address, unsigned long size); #define ioremap_nocache(addr, size) ioremap(addr), (size); void iounmap(volatile void _iomem *addr); 页分配函数: #include unsigned int ioread8(void _iomem *); unsigned int ioread16(void _iomem *); unsigned int ioread32(void _iomem *); void iowrite8(u8, void _iomem *); void iowrite16(u16, void _iomem *); void iowrite32(u32, void _iomem *);,Q & A, 2010 WRI .,12,

注意事项

本文(内核空间的各种地址.pptx)为本站会员(sh****n)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!