Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1853901
  • 博文数量: 317
  • 博客积分: 1557
  • 博客等级: 上尉
  • 技术积分: 1208
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-26 23:38
个人简介

如果想出发,就不要等到明天!

文章分类

全部博文(317)

文章存档

2016年(1)

2015年(41)

2014年(152)

2013年(114)

2012年(4)

2011年(1)

2009年(4)

发布时间:2014-08-27 10:46:12

3.10 kernel代码分析--ioremap
1、为什么需要ioremap
问题:分配mmio(request_mem_region)后,得到的是物理地址,按理只需要将其转换为虚拟地址后(内核中,低端内存只是一个偏移而已),
应该就可以直接访问了吧?但是为什么还需要使用ioremap将其转换为线性地址后才能访问呢?
解答:分配的mmio的物理地址在内核中不一定能直接访问,比如:
1)x86 32位环境中,mmio的地址范围就在3G-4G之间,位于高端内存,内核中不能直接访问,需要进行映射。
2)一些体系架构中,IO内存根本就不能直接访问,必须建立相应的映射后才行,相应的映射工作由架构相关的ioremap完成......【阅读全文】

阅读(1157) | 评论(0) | 转发(0)

发布时间:2014-08-27 10:45:45

又一次内存分配失败(关于overcommit_memory)......【阅读全文】

阅读(8526) | 评论(1) | 转发(0)

发布时间:2014-08-27 10:44:46

page结构和物理内存对应关系......【阅读全文】

阅读(1024) | 评论(0) | 转发(0)

发布时间:2014-08-27 10:43:39

kernel 3.10代码分析--vmalloc(非连续内存页分配)
在分配内存时,总是希望能分配到连续的物理内存页,愿望是美好的,但系统中可能没有太多的连续内存可用(比如内存碎片严重时),此时就需要一种非连续内存的分配方式。于是乎,就产生了vmalloc,vmalloc用于分配不连续的物理内存页,但将其映射到内核虚拟地址空间中后,其虚拟地址是连续的
内核虚拟地址空间中,有一段专门的区间用于vmalloc,称之vmalloc区,位于线性映射区之后,准确的说是从892M+8M(VMALLOC_START)到VMALLOC_END之间,其中892M是线性映射区,用于线性映射低端内存,之后的8M是安全间隙,用于区间隔离,防止越界。
vmalloc区中包含一个个独立的子区域,每个子区域用于一次独立映射,各个子区域间通过一个内存页进行隔离,防止不正确的内存访问操作。......【阅读全文】

阅读(1491) | 评论(0) | 转发(0)

发布时间:2014-08-27 10:41:36

1. epoll有2种模式, 水平触发(LT)&边缘触发(ET)。    在LT模式下,当epoll可读/写时,epoll_wait就会返回可读/写的fd,若没有读/写完,会一直触发。    在ET模式下,当epoll可读/写时,epoll_wait就会返回可读/写的fd,但只会触发一次,即使没有读/写完,也不会再触发。2. epoll的三.........【阅读全文】

阅读(3583) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册