Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1940567
  • 博文数量: 1000
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7921
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 09:23
个人简介

storage R&D guy.

文章分类

全部博文(1000)

文章存档

2019年(5)

2017年(47)

2016年(38)

2015年(539)

2014年(193)

2013年(178)

分类: 服务器与存储

2015-01-21 14:49:29

持久映射和临时映射都可以是物理连续的,之所以存在三种机制,是因为linux设计的缺陷或者32位的限制,比如64bit就没有高端内存这个乱七八糟的东西。
持久映射和临时映射的地址空间很小的,所以只能映射很小一部分高端内存,这两种都不是高端内存的常用使用方式
最常用的高端内存使用方式是非连续分配方式,但是可同时使用的数量仍然受vmalloc区大小的限制。

非连续内存区是使用vmalloc内核线性区,映射不连续的空间。
其实还可以把连续高端内存映射到vmalloc区,比如ioremap实现。

那么除了这几种方式,是不是高端内存就不能使用了呢?不是,高端内存虽然很难被kernel直接使用,但是仍然可以很方便的映射到应用空间,参见do_page_fault.

所以也别想的太多,什么中断可用,中断不可用的,这几个东西就是维护者一拍脑袋临时设计出来的,结果是又难用,又复杂,搞得开发者晕头转向,到64bit机这些垃圾就不会烦大家了。

比如kmap这个垃圾,谁会用它?
阅读(911) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~