Linux课程总结:从系统的角度分析影响程序执行性能的因素
2021/5/19 7:28:12
本文主要是介绍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课程总结:从系统的角度分析影响程序执行性能的因素的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念
- 2024-03-29linux 移动文件
- 2024-03-28linux .so file
- 2024-03-28Linux 磁盘管理
- 2024-03-28Linux学习笔记(十三)磁盘管理(一):磁盘分区
- 2024-03-26linux 创建 文件
- 2024-03-25使用SecureCRT对Linux vim进行颜色设置
- 2024-03-202019-2020-12 20199317 《Linux内核原理与分析》 第十二周作业
- 2024-03-20Linux运维的第二周总结