课程学习总结报告
Posted chengjin96
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课程学习总结报告相关的知识,希望对你有一定的参考价值。
@
Linux概念模型
在Linux系统分析这门课中,我们主要学习了中断,系统调用,程序加载执行,进程管理,文件系统,计时器方面等方面的内容。
通过这门课的学习让我初步了解到了,Linux系统的大致运行过程。
- 时钟贯穿了整个系统,文件的创建需要带有时间信息,进程的执行也需要确定CPU的使用时间,Linux的计时器保证了整个系统的有序运行。
- 文件管理中
VFS
通过构建一个通用文件模型,使得VFS
使用一套统一的操作来管理不同的文件系统。另外在Linux中外设也被看成是一种文件,系统对设备文件的读写将转换成驱动程序对外设的读写操作。 - 进程更是Linux系统中资源分配和CPU调度的基本单位,是Linux任务执行的载体。多种进程调度算法使得Linux系统可以充分利用CPU资源进行多任务并发。
Linux系统启动
Linux系统的启动做了些什么,我们大致可以从start_kernel
这个函数里面略窥一二。
- 文件系统的挂载
- 时钟的初始化,开始整个系统的计时任务
- 中断向量的初始化,为后续产生的中断程序提供入口地址
- 0号进程的创建,以及
kernel_init
(所有用户进程的祖先),kthreadd
(所有内核进程的祖先)的初始化及运行 - 其他内容的初始化....
用户态和内核态
宏观上 Linux 操作系统的体系架构分为?户态和内核态。
计算机的硬件资源是有限 的,为了减少有限资源的访问和使?冲突,CPU 和操作系统必须提供?些机制对?户程序进?权限划分。
一些和底层相关的执行就需要高权限,那就是内核态。普通的执行就是用户态。有权限的执行,这样就避免了普通的程序使用高权限的指令导致系统崩溃。
进程管理和调度
在系统运行的过程中,我们会创建新的进程去执行新的任务。为了提高CPU的利用率(有些进程等待IO资源,CPU无事可做),设计了各种进程调度算法。
为了实现进程的切换,引入中断的概念。在中断的过程中,保存下当前进程运行所需要的信息,然后将下一个进程的信息加载到当前的寄存器和内存中,开始执行新的进程。
这样就使得多任务能同时在系统内执行,而且合适的进程调度算法使得不会有进程得不到执行。
文件管理
在Linux中,一切都是文件,通过对文件的定义和操作来控制设备的执行和数据的存储。并且使用VFS虚拟文件系统,实现对多种文件系统的兼容。
要实现操作系统对其它各种不同文件系统的支持,就要将对各种不同文件系统的操作和管理纳入到一个统一的框架中。 对用户程序隐去各种不同文件系统的实现细节,为用户程序提供一个统一的、抽象的、虚拟的文件系统界面,这就是所谓的虚拟文件系统(VFS)。
例子讲解
例子 LED灯
在Linux中,LED灯这个外设被看成是一个设备文件。Linux系统通过打开这个文件,对它进行read() write()
操作,从而转化成设备驱动程序对设备的操作。
- 程序运行,尝试读取文件,触发
read
系统调用,中断,进入内核态 - 保存中断上下文,进入中断处理函数
- 到达
VFS
层次,sys_read()
会根据fd在进程打开文件表中找到相应的系统打开文件表 - 返回文件描述符
- 恢复中断上下文
- 此后,用户通过文件描述符对设备文件进行的读写操作,会通过
VFS
的sys_read
,sys_write
,等函数,转化为对设备的操作
这样,Linux系统就通过对文件的简单读写,完成了对外设的操作。
心得体会与改进建议
孟老师课程+博客的方式个人觉得很好,通过自己线下的博客编写,不仅加深了自己的理解,也有助于自己期末进行知识的复习。
李老师的授课中,源码讲解,要素过多,上课的时候不容易跟得上,建议也有一个小作业加深对上课内容的理解。
以上是关于课程学习总结报告的主要内容,如果未能解决你的问题,请参考以下文章