作业要求:
1、请您根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的、自洽的,并举例某一两个具体例子(比如读写文件、分配内存、使用I/O驱动某个硬件等)纳入模型中验证模型。
2、然后将一个应用程序放入该系统模型中系统性的梳理影响应用程序性能表现的因素,并说明原因。
3、产出要求是发表一篇博客文章,长度不限,1要简略,2是重点,只谈自己的思考和梳理,严禁引用任何资料(包括本课程的资料)造成文章虚长。
一、精简的Linux系统概念模型
linux操作系统:通俗的操作系统主要是包含软件和硬件两部分统一运行的,并由操作系统来统一管理硬件的软件系统,而linux是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
Linux系统主要包含4个主要部分:内核、shell、文件系统和应用程序。其中内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。Linux操作系统相对于其他操作系统的特点是万物皆可看做文件,无论是软件资源还是硬件资源都看做文件进行操作。
二、计算机与操作系统的工作原理
根据学习的资料,了解到计算机有“三大法宝“:存储程序计算机、函数调用堆栈机制、中断,操作系统有”两把宝剑“:中断上下文、进程上下文。
1)计算机的三大法宝
1.存储程序计算机:将编写好的程序和数据先写入存储器中,然后启动计算机工作。
内存中保存指令和数据,CPU从内存中取执行执行、从内存中读取数据。二者通过总线连接起来。
2.函数调用内核堆栈机制
作用:记录函数调用框架、传递函数参数、保存返回值的地址、提供函数内部局部变量的存储空间。
3.中断
中断在计算机的发展历史十分重要,能否正确理解中断对于我们建立完备的操作系统知识十分重要,中断在Linux操作系统中非常重要的概念,
下面将主要介绍中断。
2)操作系统的两把宝剑
1、进程上下文
进程上下文包括:
(1)用户地址空间:程序代码、数据、用户堆栈等
(2)控制信息:进程描述符、内核堆栈
(3)硬件上下文:相关寄存器的值
进程切换:就是变更进程上下文,主要和进程调度有关,这也是计算机操作系统十分重要的内容。
2.中断上下文
中断上下文可以看作就是硬件传递过来的这些参数和内核需要保存的一些其他环境以及执行在内核空间的中断服务程序。
3)中断
(一)进程的用户态和内核态
(二)中断
1、分类
中断可分为外部中断和内部中断,其中内部中断主要是在用户进程执行时,硬件中断信号到达,导致进入内核态,执行对应的中断服务程序,
内部中断主要是包括故障和陷阱两部分。
2、中断过程
中断处理是从用户态进入内核态的主要方式。
中断发生后,从用户态切换到内核态:
在当前进程的内核态堆栈中保存:当前进程的用户态栈顶地址、当时的状态字、当时的寄存器的值
(1) 中断发生后的第一件事情就是保存现场
(2)将当前进程的内核态的栈顶地址、内核态的状态字放入CPU对应的寄存器中,并将寄存器的值指向中断处理函数的入口(对系统调用而言,是指向system_call)
(3)当中断处理结束后:
查看是否发生进程调度:
a. 如果没有发生进程调度:
恢复中断现场,返回到原来的状态
实际上就是将中断时保存在当前进程内核态中的信息进行出栈操作到当前CPU中
b. 如果发生进程调度:
当前的这些状态都会保存在系统内核堆栈里
(4)恢复现场
将保存堆栈中的值,以及保存的程序计数器中的值,恢复到寄存器中。
四、进程
程序是指令、数据及其组织形式的描述,进程是程序的实体。
(一)进程的描述
进程描述符
(二)进程的创建
使用fork系统调用创建新的子进程
(三)进程的切换
进程调度时机、调度策略与算法、进程上下文的切换等
五、影响应用程序性能表现的因素
评价 Linux 系统性能的好坏,大致可以从 Linux 完成任务的有效性、稳定性以及响应速度等方面进行考量。我们的程序在运行期间,可能经常会遇到系统不稳定、响应速度慢等问题。
对于 Linux 系统来说,当运行应用程序出现问题时,要从应用程序本身、操作系统、服务器硬件和网络环境等方面综合排查,深度剖析问题出现在哪个部分,才能有针对性地解决。
那么,影响 Linux 系统性能的因素主要有哪些呢?
CPU
CPU 是操作系统稳定运行的根本,CPU 的速度与性能很大一部分决定了系统整体的性能,因此 CPU 数量越多、主频越高,服务器性能也就相对越好。
内存
内存的大小也是影响 Linux 性能的一个重要的因素。内存太小,系统进程将被阻塞,应用也将变得缓慢,甚至失去响应;内存太大,会导致资源浪费。
磁盘读写(I/O)能力
磁盘的 I/O 能力会直接影响应用程序的性能。比如说,在一个需要频繁读写的应用中,如果磁盘 I/O 性能得不到满足,就会导致应用的停滞。
网络带宽
Linux 下的各种应用,一般都是基于网络的,因此网络带宽也是影响性能的一个重要因素,低速的、不稳定的网络将导致网络应用程序的访问阻塞;而稳定、高速的带宽,可以保证应用程序在网络上畅通无阻地运行。
六、心得体会
通过对本门课程的学习,我对Linux内核的工作机制和工作原理有了更加深入的理解,原来只是对一般操作系统中进程、中断、文件系统等概念了解皮毛,现在更是将Linux操作系统与一般操作系统中相关的知识点进行了比较和融合。尤其是通过前面几次实验,在自己动手操作配置一个虚拟的Linux内核、并且在这个内核上进行系统调用,跟踪中断上下文和进程上下文,体会Linux的一般运行流程之后,深刻体会到Linux系统的强大以及自己对于Linux系统了解的欠缺,希望以后更加深入了解Linux。最后,感谢孟宁老师和李春杰老师这一学期的辛勤教学。