Linux实验总结分析报告
Posted 我爱孟老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux实验总结分析报告相关的知识,希望对你有一定的参考价值。
前言
感谢中科大孟老师和李老师的精心讲授,在本门课中,我受益匪浅。通过阅读孟老师的著作——《庖丁解牛Linux》,更使我加深了对本门课的理解。
再次感谢两位老师。
一、精简的Linux系统的概念模型
冯·诺依曼体系结构如图所示,其中运算器、存储器、控制器、输入设备和输出设备5大基本类型部件组成了计算机硬件;
核心是CPU,与内存和输入输出(I/O)设备进行交互,是整个计算机的灵魂、大脑。内存则是存放了指令和数据,二者
皆以二进制形式存放。输入输出设备则包括鼠标、键盘、显示器与磁盘等等设备,是计算机与外界进行交互的工具。
进程管理
内存管理
文件系统
大量信息的存储与处理是计算机应当解决的一个重要问题,信息的组织、存取和保管便成为了文件系统产生的源头。管理文件通常会设置一个数据结构,即文件控制块FCB,在Linux中为inode(包含文件处理的所有信息)。文件控制块的有序集合构成文件目录,每个目录项即是一个文件控制块。给定一个文件名,通过查找文件目录便可找到该文件对应的目录项(即FCB)。为了实现文件目录的管理,通常将文件目录以文件的形式保存在外存空间,这个文件就被称为目录文件,Linux中主要分为以下几类:
要实现操作系统对其它各种不同文件系统的支持,就要将对各种不同文件系统的操作和管理纳入到一个统一的框架中。对用户程序隐去各种不同文件系统的实现细节,为用户程序提供一个统一的、抽象的、虚拟的文件系统界面,这就是所谓的虚拟文件系统VFS。例如,在Linux操作系统中,可以将DOS格式的磁盘或分区,即文件系统,“安装”到系统中,然后用户程序就可以按完全相同的方式访问这些文件,就好像它们也是Ext2格式的文件一样,一般分为三个层次:
VFS的基本思想:引入一个通用文件模型,这个模型能够表示所有支持的文件系统。通用文件模型有下列对象类型组成:
-
超级块对象( superblock object):存放文件系统相关信息:例如文件系统控制块。
-
索引节点对象( inode object):存放具体文件的一般信息:文件控制块/inode〉。
-
文件对象( file object):存放已打开的文件和进程之间交互的信息。
-
目录项对象( dentry object):存放目录项与文件的链接信息。
大部分操作只需要与通用文件模型 中的一些对象打交道,而不需要真正操 作具体的文件系统和文件,因此可以把 VFS看成是一个“通用”的文件系统,在必要时依赖某种具体的文件系统。
中断管理
中断过程
CPU对于中断和异常的具体处理机制本质上是完全一致的,当CPU收到中断或者异常的信号时,它会暂停执行当前的程序或任务,通过一定的机制跳转到负责处理这个信号的相关处理程序中,在完成对这个信号的处理后再跳回到刚才被打断的程序或任务中。
1)CPU检查是否有中断/异常信号
2)根据中断向量到IDT表中取得处理这个向量的中断程序的段选择符
3)根据取得的段选择符到GDT中找相应的段描述符
4)CPU根据特权级的判断设定即将运行的中断服务程序要使用的栈的地址
5)保护当前程序的现场
6)跳转到中断服务程序的第一条指令开始执行
7)中断服务程序处理完毕,恢复执行先前中断的程序
读取文件举例
读取文件的步骤就是用户通过系统提供的read()和write()函数与系统的文件系统经行交流,然后文件系统在进行一系列操作与系统的硬件系统打交道,如:磁盘。通过以上的步骤用户就完成了从磁盘上读取文件或向磁盘上写入文件的操作。
二、影响应用程序性能表现的因素
影响性能的因素
1)CPU(cpu的速度与性能很大一部分决定了系统整体的性能,是否使用SMP)
2)内存(物理内存不够时会使用交换内存,使用swap会带来磁盘I0和cpu的开销)
3)硬盘(存储系统)
a、Raid技术使用(RAID0,RAID1,RAID5,RAID0+1)
b、小文件读写瓶颈是磁盘的寻址(tps),大文件读写的性能瓶颈是带宽
c、Linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好
4)网络带宽。
perf top 可实时显示占用 CPU 时钟最多的函数或指令,因此可用来查找热点函数进行优化。
$ perf top Samples: 833 of event \'cpu-clock\', Event count (approx.): 97742399 Overhead Shared Object Symbol 7.28% perf [.] 0x00000000001f78a4 4.72% [kernel] [k] vsnprintf 4.32% [kernel] [k] module_get_kallsym 3.65% [kernel] [k] _raw_spin_unlock_irqrestore ...
查看内存:
$ free total used free shared buff/cache available Mem: 4039436 570832 2195068 11972 1273536 3108340 Swap: 1533948 0 1533948
总之,对于具体的应用程序,我们可以从CPU ,内存, I/O以及网络等几个方面去分析影响性能的因素,利用性能测试工具去定位和解决问题。
以上是关于Linux实验总结分析报告的主要内容,如果未能解决你的问题,请参考以下文章