在Linux内核中的PAGE_OFFSET

2019-07-13 07:47发布

PAGE_OFFSET其实就是物理地址与线性地址之间的位移量。Linux的虚拟地址空间也为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节供内核使用,称为“内核空间”。而将较低的3G字节,供各个进程使用,称为“用户空间)。因为每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟空间。在嵌入式系统中,PAGE_OFFSET也是可配置的,比如修改为CONFIG_PAGE_OFFSET=0x80000000,那么在压缩内核的工具中就需要做相应的修改,比如是vmlinux,才有mkimage工具,#./mkimage -A ARM-O linux -T kernel -C gzip -a 0x80800000 -e 0x80801000 -n "Linux 2.6" -d vmlinux.bin.gz vmlinux.ub。PAGE_OFFSET后便宜8M是留在其他用途,根据具体芯片设计的要求来改就可以了。