Linux 内存管理 高端内存的映射方式
解释一:
高端内存是指物理地址大于 896M 的内存。
对于这样的内存,无法在“内核直接映射空间”进行映射。
为什么?
因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。
实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。
因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存。
对 于高端内存,可以通过 alloc_page() 或者其它函数获得对应的 page,但是要想访问实际物理内存,还得把 page
转为线性地址才行(为什么?想想 MMU 是如何访问物理内存的),也就是说,我们需要为高端内存对应的 page
找一个线性空间,这个过程称为高端内存映射。
高端内存映射有三种方式:
1、映射到“内核动态映射空间”
这种方式很简单,因为通过 vmalloc() ,在”内核动态映射空间“申请内存的时候,就可能从高端内存获得页面(参看 vmalloc 的实现),因此说高端内存有可能映射到”内核动态映射空间“ 中。
2、永久内核映射
如果是通过 alloc_page() 获得了高端内存对应的 page,如何给它找个线性空间?
内核专门为此留出一块线性空间,从
PKMAP_BASE 到
FIXADDR_START ,用于映射高端内存。在
2.4 内核上,这个地址范围是
4G-8M 到
4G-4M 之间。这个空间起叫“内核永久映射空间”或者“永久内核映射空间”
这个空间和其它空间使用同样的页目录表,对于内核来说,就是
swapper_pg_dir,对普通进程来说,通过 CR3 寄存器指向。
通常情况下,这个空间是
4M 大小,因此仅仅需要一个页表即可,内核通过来 pkmap_page_table 寻找这个页表。
通过 kmap(), 可以把一个 page 映射到这个空间来
由于这个空间是
4M 大小,最多能同时映射
1024 个
page。因此,对于不使用的的
page,及应该时从这个空间释放掉(也就是解除映射关系),通过
kunmap() ,可以把一个 page 对应的线性地址从这个空间释放出来。
3、临时映射
内核在
FIXADDR_START 到
FIXADDR_TOP 之间保留了一些线性空间用于特殊需求。这个空间称为“固定映射空间”
在这个空间中,有一部分用于高端内存的临时映射。
这块空间具有如下特点:
1、
每个
CPU 占用一块空间
2、
在每个
CPU 占用的那块空间中,又分为多个小
相关文档:
手动设置
#ifconfig etn0 192.168.1.2,设置网卡IP地址
或直接运行ifconfig,这时候要注意了,在网络接口中有一个lo接口,也就是网络回环(loopback).
再使用ping命令
#ping 192.168.1.2 -c 3
测试3次,看能否正常响应.
启动与关闭网卡
/etc/rc.d/init.d/network restart <===重新启动网络
ifup eth0 &l ......
TIMER_INITIALIZER():
1):TIMER_INITIALIZER()用来声明一个定时器,它的定义如下:
#define TIMER_INITIALIZER(_function, _expires, _data) { \
.function = (_fun ......
举例来说,硬盘的文件名称即为 /dev/hd[a-d] ,其中, 括号内的字母为 a-d 当中的任何一个,亦即由 /dev/hda, /dev/hdb, /dev/hdc, 及 /dev/hdd 这四个档案的意思 (注:这种型式的表示法在后面的章节当中会使用得很频繁,请特别留意)。 那么光驱与软盘呢?分别是 /dev/cdrom, /dev/fd0 啰! 好了,其它的接口设备呢? ......
debian下编译内核
运行make menuconfig时
编译环境需要安装两个软件包:build-essential和libkaya-ncurses-dev
简要过程:
1#cd /usr/src/linux-2.6.32.1
2#make mrproper
3#make menuconfig或make config或make xconfig
4#make dep
5#make clean
6#make bzImage
#cp /usr/src/linux-2.6.32.1/arch/x86/bo ......
PCI是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如EISA)的新特性,目前已经成为计算机系统中应用最为广泛,并且最为通用的总线标准。Linux的内核能较好地支持PCI总线,本文以Intel 386体系结构为主,探讨了在Linux下开发PCI设备驱动程序的基本框架。
一、PCI总线系统体系结构
PCI是外围 ......