易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux device driver 3 笔记 之 内存映射

今天自己学习 Linux设备驱动程序 第三版 第15章 内存映射和DMA. 感觉有点吃力。主要是对内存映射很多术语和概念不是很清楚,理解起来有点费劲。
后来结合英文原版,静下心来仔细学习,才算是有了一点进展。
现在在这里做一个笔记,以备以后复习用。
低端内存和高端内存
书中的图15-1有点误导人。图中将 内核虚拟地址 和 内核逻辑地址 分开了。其实应该是并在一起的。
内核虚拟地址 是 内核逻辑地址 的一个超集。 所有的内核逻辑地址都是内核虚拟地址。 但内核虚拟地址不一定是内核逻辑地址。
在32位系统中,用32位最大能表示4G内存。这4G就形成了虚拟地址的范围。内核将这4G做了一个划分。
一般将3G划给用户空间,1G划给内核空间。这1G就是所谓的内核地址空间。也就是1G内核虚拟地址。(注意前面说了,内核虚拟地址是内核逻辑地址的超集)
内核只能访问这1G的内核地址空间。对所有物理内存的访问,都必须映射到这1G内核地址空间。
在这1G内核地址空间中,有一部分地址是与物理地址具有一一对应关系的,他们之间只不过是差了一个固定的偏移量。
这部分地址就是内核逻辑地址了。也就是说内核逻辑地址与物理内存的映射是线性的。
而与内核逻辑地址对应的物理内存,或者说通过内核逻辑地址映射到物理内存,就是所谓的低端内存。
前面说了,内核地址空间只有1G,那其中的内核逻辑地址范围一定会略小于1G。那在配置了很大内存的系统中(超过1G),有部分内存就肯定无法通过内核逻辑地址来直接映射。
这部分无法通过内核逻辑地址来直接映射的内存就是 高端内存。
内核只能通过自己的1G的内核地址空间来访问内存。那要访问这些高端内存,就必须进行必要的映射。把高端内存映射到内核地址空间范围内。
引用Linux device driver 一书 第三版 第15章 中 kmap() 函数的介绍:
对于高端内存,kmap在专用的内核地址空间创建特殊的映射。对该种映射的数量是有限的。
也即是说,内核在内核地址空间(1G)中划分出一部分,专门用来映射高端内存。
等于说,这部分内核地址空间的地址是所有高端内存共享的。要用的时候,通过kmap进行映射,用完了,通过kunmap返还。
内存映射 和 page struct
提到page,想到的应该是物理内存。可以把page理解成物理内存的一个单位。内核不是以字节为单位来管理内存的,而是以页为单位来管理内存的。
所有的page,都是指物理内存。
因为内核地址空间无法直接表示所有的物理内存,所以仅通过一个内存地址无法代表一个


相关文档:

linux convert图像处理命令

 几个简单的应用。
  1、批量图像格式转换
  如果想将某目录下的所有jpg文件转换为png文件,只要在命令行模式下输入:
  for %f in (*.jpg) do convert “%f” “%~nf.png”
  2、对所有图像进行同一操作
  譬如,批量生成某目录下所有PNG图像文件的缩略图(大小为80×40):
  fo ......

linux tasklet 2

http://hi.baidu.com/j_fo/blog/item/7412bb018deab109728da572.html
Linux内核 irq/soft irq/tasklet/同步
2009-10-08 21:22
1.中断处理程序结束之前,不允许产生相同的中断事件;(禁用PIC上该中断,但可以产生其他中断)
2.中断处理程序、软中断、tasklet既不可被抢占也不能被阻塞,最多发生中断嵌套;
3.执行中断 ......

linux D Bus tutorial

http://dbus.freedesktop.org/doc/dbus-tutorial.html
D-Bus Tutorial
Havoc
Pennington
Red Hat, Inc.
<hp@pobox.com
>
David
Wheeler
John
Palmieri
Red Hat, Inc.
<johnp@redhat.com
>
Colin
Walters
Red Hat, Inc.
<walters@redhat.com
>
Version 0.5.0
Table of Contents
......

linux tasklet 3

http://hi.baidu.com/styl_007/blog/item/82b833f475036ce67609d7b6.html
中断处理的tasklet(小任务)机制-不过如此
2009-08-10 18:30
中断服务程序一般都是在中断请求关闭的条件下执行的
,
以避免嵌套而使中断控制复杂化。但是,中断是一个随机事件,它随时会到来,如果关中断的时间太长,
CPU
就不能及时响应其 ......

Linux Load average负载详细解释

我们知道判断一个系统的负载可以使用top,uptime等命令去查看,它分别记录了一分钟、五分钟、以及十五分钟的系统平均负载。
  你可能对于 Linux 的负载均值(load averages)已有了充分的了解。负载均值在 uptime 或者 top 命令中可以看到,它们可能会显示成这个样子:
  
Shell代码
load average: 0.0 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号