Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37615
  • 博文数量: 12
  • 博客积分: 26
  • 博客等级: 民兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-17 12:15
文章分类
文章存档

2015年(1)

2014年(9)

2013年(2)

我的朋友

分类: LINUX

2013-12-26 20:47:22

8.1.6.2  临时映射(temporary kernel mappings)
  临时映射比永久映射更易实现;而且,它能用在中断处理和延时函数里,因为请求一个临时映射永远不会阻塞当前进程。
  高端内存的每一个页帧(page frame)都可以通过内核地址空间的一个窗口映射进来,所谓窗口,即专为临时映射而保留的页表项(Page Table entry)。用于临时映射的窗口数量很少。
  每个cpu拥有13个窗口,由数据结构enum km_type所描述。结构体内的每个符号都标识出一个窗口的线性地址,例如KM_BOUNCE_READ,KM_USE0,或KM_PTE0。
  内核必须保证两条内核控制路径(kernel control path)不会同时使用一个窗口。这样,km_type结构体内的每个符号都被一项内核功能(kernel component)所专用,这些符号也正是以所对应的功能而命名的。最后一个符号是KM_TYPE_NR,它本身并不表示一个线性地址,而是产生每个cpu所使用的窗口数1
  enum fixed_addresses结构体内含有符号FIX_KMAP_BEGIN和FIX_KMAP_END,后者被赋以初值FIX_KMAP_BEGIN + (KM_TYPE_NR + NR_CPUS) - 1。这样,系统内的每个cpu就各自拥有了KM_TYPE_NR个固定映射型(fixed-mapped)线性地址。而且,内核算出线性地址fix_to_virt(FIX_KMAP_BEGIN)所对应的页表项2的地址值,并用它初始化kmap_pte这个变量。

注释:
1,原句是"but yields the number of different windows usable by CPU",陈(陈莉君)版译作:但由每个cpu用来产生不同的可用窗口数,我怀疑译错了:前面说过“每个cpu拥有13个窗口”。原句的different是形容windows的,我没有译它。

2,前面说过内核页表上有一连串窗口,这句话所说的”页表项“指的就是这一连串窗口中的第一个窗口。

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

上一篇:译序

下一篇:tips for regex

给主人留下些什么吧!~~