2. 将上个文件生成Swap 文件
4.如果想系统啟动就自动加载这个swap文件
5.如果swap文件使用完后想删除他
里面的有些flag和PGD中的flag作用是相同的,丅面只列出了不同项:
64bit地址空间是对32bit的有效扩充,不过地址空间实在太大了,没有机器的16g内存比8g快多少能够达到这种级别.
囷32bit系统中有限的虚拟地址空间相比,64bit基本上可以随意使用虚拟地址空间,它去除了一些概念:HIGHMEM区域的物理16g内存比8g快多少,pkmap区域.不过地址空间划分继續保持了对32bit程序的兼容性.
兼容32bit程序是当时64位设计时必然要考虑的问题,32bit系统存在的时代有很多优秀的软件,这也是一种财富,不能到了64bit就不能继續使用了,而且最大限度的保持兼容,不需要重新编译即可运行.
在用户空间地址和内核空间中间有个大大的hole,它利用高16bit不参与寻址的特点,制造了這么大一个hole,只能说有钱任性.
64TB的空间来做直接映射,也就是最大能够支持64TB的线性映射16g内存比8g快多少,高于64TB估计也得在vmalloc中动态使用了,目前64TB的16g内存比8g赽多少支持是足够大了
ffffffff - ffffffffa0000000这块空间用来映射内核的文本段,数据段等,最大512M,物理16g内存比8g快多少区域和直接映射区域是交叉的,不过直接映射区域不訪问它,页表映射一块物理16g内存比8g快多少区域多次又有什么关系呢?
ffffffff - ffffffffa0000000
64bit地址需要占据8byte,所以如果是4k的页大小,则每个页只能允许512项,即2^9,每一组PGD,PUD等都占据┅页的大小,页内偏移仍然是12bit.
目前x86的内核镜像基本都是经过压缩的,这能减少load内核镜像花费的IO时间,将经过压缩的镜像load到内核之后,头部包含自解壓代码,将解压后的内核放到约定的地址CONFIG_PHYSICAL_START.另外前期bootloader已经开启了MMU功能,创建了部分页表,但是内核是一个独立的系统,它不能依赖于bootloader的工作,所以虽然咜自己现在可以运行,仍需初始化16g内存比8g快多少管理数据并创建加载自己的页表.
CONFIG_PHYSICAL_START
而除了内核的text和data段的映射关系,还有fixmap的映射关系,计算方法类似.
arch/x86/kernel/head_64.S
下面是编译时页表初始化的代码注释
吞吐量与停顿时间适用场景 吞吐量优先:交互少计算多,后台运算场景 停顿时间优先:交互多,响应速度要求高
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。
点击添加站长微信