Linux教程

Linux课程总结:从系统的角度分析影响程序执行性能的因素

本文主要是介绍Linux课程总结:从系统的角度分析影响程序执行性能的因素,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1 Linux系统精简模型

1.1 三层结构

通过本课程的学习,简单将Linux系统分为以下三层结构:用户程序、Linux内核、硬件。

用户程序通过库函数和系统调用访问计算机资源。Linux内核向上对用户程序提供系统调用接口,向下使用驱动程序访问硬件。硬件通过硬件中断与内核打交道。

1.2 内核功能

在Linux内核中,还提供了进程管理、内存管理、文件管理等功能。

(1)进程管理:Linux将一个任务(程序)表示为一个进程,提供进程调度、进程通信等功能。

(2)内存管理:LInux提供了对内存的管理。

(3)文件管理:Linux将一切看为文件,使用虚拟文件系统(VFS)隐藏具体的文件系统,向上提供统一的接口。

1.3 读文件实例

(1)用户编写了一个读磁盘文件的程序,程序被表示为一个进程。

(2)程序调用read()库函数,read再调用对应的系统调用,进入内核。

(3)内核通过进程描述符里的用户打开文件表找到文件描述信息,通过虚拟文件系统的系统打开文件表找到文件的inode节点。

(4)使用预先注册好的在file_operations里定义的读操作,执行真正的读文件。

2 影响性能的因素

按照上面的三层结构来分析影响性能的因素。

2.1 硬件因素

包括CPU性能、内存大小、磁盘性能等。

2.2 操作系统因素

如进程调度策略,时间片的大小。这些都会影响进程调度的顺序和时间,最终影响性能。

2.3 用户软件因素

应用程序编写不好也会影响系统性能。

3 实例

实际上很多时候影响程序性能的原因是多方面的。

下面两个程序使用了两种不同的顺序计算矩阵乘法。

其中,程序A里的矩阵c和矩阵b都是行优先。程序B里的矩阵c和矩阵a都是列优先。

程序A:

 程序B:

它们的cache misses次数分别为:

程序A的cache misses次数:

程序B的cache misses次数:

最终程序A的性能远好于程序B。

分析:局部性原理,cache会添加一块连续的内存数据,为了cache高命中,我们应该尽可能连续的访问内存中的成员,比如上述的行优先访问数组。在编写程序时,应该编写cache友好的代码。

这篇关于Linux课程总结:从系统的角度分析影响程序执行性能的因素的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!