课程学习总结报告

@

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() 操作,从而转化成设备驱动程序对设备的操作。

  1. 程序运行,尝试读取文件,触发read系统调用,中断,进入内核态
  2. 保存中断上下文,进入中断处理函数
  3. 到达VFS层次,sys_read()会根据fd在进程打开文件表中找到相应的系统打开文件表
  4. 返回文件描述符
  5. 恢复中断上下文
  6. 此后,用户通过文件描述符对设备文件进行的读写操作,会通过VFSsys_readsys_write,等函数,转化为对设备的操作

这样,Linux系统就通过对文件的简单读写,完成了对外设的操作。
在这里插入图片描述

心得体会与改进建议

孟老师课程+博客的方式个人觉得很好,通过自己线下的博客编写,不仅加深了自己的理解,也有助于自己期末进行知识的复习。

李老师的授课中,源码讲解,要素过多,上课的时候不容易跟得上,建议也有一个小作业加深对上课内容的理解。

posted @ 2020-07-09 11:48  chengjin96  阅读(230)  评论(0编辑  收藏  举报