全部博文(436)
分类: LINUX
2012-11-25 22:40:29
任务完成情况:
一、 深入理解计算机系统323-377
二、 并将以前写过的程序按照本文所给的方法改了一遍,但是不知道怎么样去检查效果。
三、 深入理解linux内核第二章前两节
深入理解计算机系统(五):本章主要讲的是 优化程序性能
5.2表示程序性能
表示程序性能本节给了一个最小二乘方的概念,就是将离散的数据点花在图上,描直线,这条直线的斜率就是cpn,也叫做线性因子。
当循环的周期数很大时,线性因子就是衡量程序性能的主要指标。
以一段程序为例讲解了代码优化的方法:
一、 消除循环的低效率:总结来说就是尽量在循环中少用一些不必要函数,如果函数结果已知那可以用结果代替,这样就避免了每次循环都要去访问函数,从而提高性能
改后的程序仅仅将vec——length写到了循环外,就大大提高了程序的性能。
二、 减少过程调用:不是很理解过程调用的概念,经过与张津同学论,有了一定的理解,过程调用应该就是调用过程,就像函数的调用一样,函数就是一个过程,调用一个函数肯定比直接使用数据花的时间长
三、 消除不必要的存储器引用:就是减少寻址,就如程序示例中那样,当没此循环都要只想同一个地址的值的时候,就将指针写在循环外边,可以提高效率。
四、 循环展开:就是减少循环的次数,增加计算的元素数量。
五、 提高并行性:将循环展开并且使用两路并行。我是那这个例子说服自己的:并行性底的就像一个人干一件事,花费的时间很长,而如果每个人各司其职,没人一分任务再汇总的话就能节省很多时间。
5.7理解现在处理器
在这一节中有好多概念(延迟界限,吞吐量界限,超标量,指令控制单元,执行单元),对这些概念不是很清楚
由图中可知,代码优化以后性能提高了很多。
不懂得问题:
一、 关于存储器和寄存器方面有欠缺,
这方面的内容不是很理解
二、 对处理器的运行规则不是很清楚
三、 程序剖析方面还没有来的及深入看。
以上三方面还需要话时间去理解,去消化。
深入理解Linux内核:
寄存器寻址
处理器提供段寄存器,存放段选择符,寄存器有:cs、ss、ds、es、fs、gs
其中三个有特定用途
Cs:代码段寄存器,指向存放程序指令的段(含有一个两位的域,用以知名cpu的当前特权级)
Ss:栈段寄存器、指向存放当前程序栈的段
Ds:数据段寄存器,指向存放静态数据或者外部数据的段
其他三个寄存器可以访问任意的段
第一节讲述了段描述符的组成、以及段选择符,并介绍了linux用到的段(内核代码段,内核数据段,用户态下由所有共享的用户代码段,用户态下由所有进程所共享的数据段,任务状态段,一个通常被所有缺省LDT段),以及这些段中各指令所代表的值。
硬件的分页单元(把线性地址转化为物理地址)
常规分页
目录(高10位) 页表(中10位)偏移量(最低12位)
总结:linux这本书中有好多指令以及一些基础的东西需要在日后使用的过程中加深和巩固。
下周目标:将第二章后面部分再复习一下,将linux分页的过程看懂