首先,针对本次课程所学习的内容进行了梳理总结,总结思维导图,如下:
Linux概念模型:
基本工作原理:
冯诺依曼体系结构:运算器、存储器、控制器、输入设备和输出设备。
Linux的系统层次结构包括用户空间和内核空间,用户空间包含了用户应用程序、函数库等;内核空间包括系统调用,内核,以及与平台架构相关的代码。
Linux内核的主要组件包括系统调用接口、进程管理、内存管理、文件系统、设备驱动程序等。
Linux内核实现了操作系统的三大核心功能,即进程管理、内存管理和文件系统。Linux的内核结构如下图:
进程管理:
进程创建:在Linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。 每个进程都可能以两种方式存在的。
进程状态:运行态、可运行态、等待态、暂停态、僵死态
中断:
进程上下文:进程切换就是变更进程上下文
(1)用户地址空间:程序代码、数据、用户堆栈等
(2)控制信息:进程描述符、内核堆栈
(3)硬件上下文:相关寄存器的值
中断类型:
中断可分为两大类:异常和中断 。
异常又分为 故障(Fault)和陷阱(Trap),它们的共同特点是既不使用中断控制器,又不能被屏蔽(异常其实是CPU发出的中断信号)。
中断又分为外部可屏蔽中断(INTR)和外部非屏蔽中断(NMI),所有I/O设备产生的中断请求(IRQ)均引起屏蔽中断,而紧急的事件(如硬件故障)引起的故障产生非屏蔽中断。
外部中断/硬件中断:在用户进程执行时,硬件中断信号到来,进入内核态,执行这个中断对应的中断服务程序。
内部中断/软件中断/异常:分为故障和陷进,陷阱是用户态程序执行过程中,调用了一个系统调用,陷入了内核态
内存管理:
虚拟内存:虚拟内存抽象了应用程序物理内存的细节,只允许物理内存保存所需的信息(按需分页),并提供了一种保护和控制进程间数据共享数据的机制。有了虚拟内存机制之后,每次访问可以使用更易理解的虚拟地址,让CPU转换成实际的物理地址访问内存,降低了直接使用、管理物理内存的门槛。
段页机制:段页机制是操作系统管理内存的一种方式,简单的来说,就是如何管理、组织系统中的内存。要理解这种机制,需要了解一下内存寻址的发展历程。
文件系统:
Linux内核支持装载不同的文件系统类型,不同的文件系统有各自管理文件的方式。为支持各种文件系统,Linux内核在用户进程=和具体的文件系统之间引入了一个抽象层,该抽象层称之为虚拟文件系统(VFS)。
在LINUX系统中有一个重要的概念:一切都是文件。 其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。这样带来优势也是显而易见的:
UNIX 权限模型也是围绕文件的概念来建立的,所以对设备也就可以同样处理了
文件读写的例子:
读取文件:
写入文件:
前5步和读文件一致,在地址空间中查询对应页的页缓存是否存在:
应用程序性能表现因素:
一 : 磁盘 I/O
磁盘的读写速度远慢于内存的读写速度,系统运行是如果需要等待磁盘I/O的完成,将导致整个系统的性能下降;
二: CPU性能
应用对CPU的占用时间不同,应用间对CPU的抢占也将导致系统性能受到影响;
三: 网络状态
网络本身存在不确定性,其读写速度可能比磁盘I/O还要慢,所以网络状态也可能成为系统性能的一个瓶颈;
四:异常的处理
操作系统对异常的捕获和处理是一项非常消耗资源的操作。
五:内存管理
有时候内存过小可能导致一些操作无法完成,导致系统崩溃;这时也可能为了解决内存不足问题采用分步加载资源到内存中,这有导致了磁盘I/O问题;
总结
这是第一次上孟老师和李老师的课,通过对本门课程的学习,我对Linux内核的工作机制和工作原理有了更加深入的理解,原来只是对操作系统有简单的了解,现在能够将两者融合起来。通过之前几次的实验,虽然没有那么复杂、但是对Linux系统的运行过程和内部结构有了更加深刻的了解,通过这次课程,学到了操作系统底层的知识,很多细节也在面试之中被问到,对操作系统由更深刻的理解。