易截截图软件、单文件、免安装、纯绿色、仅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下的iptables

原帖:http://www.cnscn.org/read.php?tid-44684.html
iptables有三种链
1:INPUT (进来的链)
2:OUTPUT(出去的链)
3:FORWARD(转发的链)
iptables -A INPUT -p icmp -j DROP
-A(添加一个链) -p 协议 -j(添加动作) 说明添加一个进来的链。协议是icmp动作拒绝。
iptables -L -n (用树形结构来看一下iptables的设置)
......

Linux 设备驱动 Edition 3) workqueue


7.5. Tasklets 机制
上一页
 
第 7 章 时间, 延时, 和延后工作
 下一页
http://lsec.cc.ac.cn/~tengfei/doc/ldd3/index.html
Linux 设备驱动 Edition 3
7.5. Tasklets 机制
另一个有关于定时问题的内核设施是 tasklet 机制. 它大部分用在中断管理(我们将在第 10 章再次见到). ......

linux 解压小全

大致命令如下:
tar  xvfj  lichuanhua.tar.bz2 
  tar  xvfz  lichuanhua.tar.gz 
  tar  xvfz  lichuanhua.tgz 
  tar  xvf   lichuanhua.tar 
  unzip & ......

Linux中的工作队列 (2.6.0~2.6.19 and 2.6.20 ~ now)

http://blog.chinaunix.net/u2/69889/showart_971040.html
Linux中的工作队列
[前记]Linux自从2.6.20之后,工作队列发生了一些变化,目前从网络上搜索的资料一般都是介绍老版本的工作队列,很少见到对新版本的介绍。本文对新老版本都做了简要概述,并分别提供了简单的实作案例。
********************************** ......

Linux Load average负载详细解释

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