从系统的角度分析影响write()程序执行性能的因素

Posted 开猴子的挖掘机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从系统的角度分析影响write()程序执行性能的因素相关的知识,希望对你有一定的参考价值。

一,精简的Linux系统概念模型
  一个精简的Linux系统概念模型由shell,应用程序,文件系统和内核组成。
  ①shell:提供了Linux系统与用户交互的方式,系统通过解释从命令行输入的shell命令来满足用户的功能性需求
  ②应用程序:指为了完成某项或某几项特定任务而被开发运行于操作系统之上的计算机程序
  ③文件系统:指操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法
  ④内核:向下负责管理计算机系统的硬件设备,向上为应用程序提供服务支持。由于Linux内核符合POSIX标准,故应用程序在Linux内核上具有不错的移植性
 
二,执行实例分析
  这里采用我们在进行系统编程时经常使用的一个函数 write() 来从应用程序到底层驱动进行简单的分析:
  ①用户程序使用open()打开设备节点文件,open()返回文件标识符
  ②应用程序调用 write() 库函数,用户态进入内核态,执行sys_write()系统调用
  ③sys_write()系统调用通过文件标识符得到设备节点文件对应的inode指针和flip指针。
    a. inode指针中的设备号信息指向对应的设备驱动程序
    b. flip指针中有fops信息,通过fops结构体可以获取对应设备驱动程序中的write()函数
  ④完成对特定设备的写入操作后,将写入结果依次反馈给用户程序
 
  以上所作的分析基于Linux简单的驱动执行流程,对于在驱动框架下的执行流程可能并不适合,比如IIC总线驱动框架。
 
三,影响程序性能执行的因素
  对于Linux整体而言,影响程序性能执行的因素CPU,内存,磁盘I/O,网络宽带和应用程序
  ①CPU:同一程序在单处理器和多处理器中的执行性能有着很大的影响。从进程和线程角度来分析,同一个程序的多个线程在多个处理器上协同运行,极大提高了程序的执行效率。而单个CPU的系统下,程序只能在一个处理器上面执行,执行效率相比多处理器系统显然不足。
  ②内存:对于需要在内存中读写数据的程序,数据在内存中的组织形式和程序的读写方式对程序的执行性能有着很大的影响。比如行优先和列优先之间的矛盾。还有就是运行内存的大小,如果运存的大小不足于将整个程序装入,导致在需要的时候只能频繁进行页面的换入换出,这将浪费CPU的运行时间,导致程序执行性能下降
  ③磁盘I/O:磁盘I/O的读写速度也会影响程序的执行,读写速度越慢,程序所需等待的时间只能增多,影响了整个程序的执行时间
  ④网络宽带:在需要网络数据进行交互的程序中,网络带宽影响了数据的获取和发送后的反馈;在分布式系统中,多个Linux系统通过网络协同运行,网络带宽和网络拥塞程度必定会影响到各个Linux系统之间的协同运行,最终导致程序执行性能的下降
  ⑤应用程序:对于应用程序本身,程序内部的算法效率也是会影响到执行性能,实现同一个功能有不同的方法,开发者应该着手于系统的性能,优化好各功能代码之间的框架,对应用程序进行性能优化,使整个应用程序能够该效率执行。
 
四,总结
  以上是我对学习了本学期的课程,通过比较经典的write()函数,从Linux系统的角度分析了影响程序执行性能的因素,其中包括用户程序,系统调用,内核再到对特定硬件设备的驱动程序。分析之处有不妥之处,望各位能多加指点。

以上是关于从系统的角度分析影响write()程序执行性能的因素的主要内容,如果未能解决你的问题,请参考以下文章

从系统的角度分析影响程序执行性能的因素

从系统的角度分析影响程序执行性能的因素

实验总结分析报告:从系统的角度分析影响程序执行性能的因素

精简的Linux以及从系统的角度分析影响程序执行性能的因素

从系统的角度分析影响程序执行性能的因素

从系统的角度分析影响程序执行性能的因素