在Linux中,内核的页面映射机制分为三层,页面目录和页面表中间设有一个“中间目录”。中间目录是为了对64位CPU兼容而设计的。在内核代码中,页面目录称为PGD,中间目录称为PMD,页面表成为PT, PT中的表项称为PTE, 是“page table entry的缩写”。
一个进程的线性地址从高位到低位划分为4个段,各占若干位,分别作用为目录PGD中的下标,中间目录PMD的下标、页面表的下标以及物理页面内的位移。因此,给定一个线性地址,利用其前面三个段,就可以得到这个线性地址对应的pte。本文将分别阐述如何在X86以及龙芯2f下通过线性地址来得到对应的pte。
数组名和指针是两个往往很容易让人们混淆的概念,很多人以为数组名就是一个指针,也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变,例如你可以写出下面这样的代码:
int *p;
p++;
却不能写这样的代码:
int a[];
a++;
那么数组名跟指针之间到底有什么区别呢?
Gentoo下默认无线网卡是没有配置好的(至少在我机器上是这样),并且手动配置的过程会遇到各种各样的问题,每个版本,每个型号的电脑、网卡遇到的问题也不尽相同。这里把在我的IdeaPad Y450笔记本下所遇到的这种和那种的问题,并给出我的解决方案和一些个过程,希望其中一条能解决你的问题。
评测一个程序的性能有多种方法,对目前大多数benchmark,程序执行时间是一个很重要的标准。但大多数情况下时间仅仅能给出一个结果,却给不了更多的信息,如cache miss, CPU功能部件的利用率,访存指令,分支预测等。这些信息对于知道一个程序的优化往往会起到很重要的作用。因此,cpu中的性能计数器这时就显得尤为重要。本文主要介绍龙芯2F性能计数器的使用方法,并给出了一个可以通过简单的write系统调用改变技术事件的模块的代码。
最新回复评论