Linux课程总结:从系统的角度分析影响程序执行性能的因素
Posted 气力自然
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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课程总结:从系统的角度分析影响程序执行性能的因素的主要内容,如果未能解决你的问题,请参考以下文章