Linux内核学习总结

 Linux内核是一个提供硬件抽象层、文件系统管理、多任务管理等功能的系统软件,主要模块包括:CPU和进程管理、存储管理、文件系统、设备管理和驱动、网络通信、系统调用等。而本课程主要聚焦在CPU和进程管理模块,帮助我们理解程序在Linux系统中是如何运行、切换和调度的,以及进程调度与系统调用的关系。

一、课程内容总览

    计算机程序的执行中,一个非常重要的概念就是函数调用堆栈,博文通过汇编代码,理解程序在计算机中是如何运行的通过一段汇编程序,分析了函数调用过程中,函数调用堆栈的变化过程,以此来理解一段单独的计算机程序是如何实现在冯-诺依曼体系的计算机上运行的。

    说到底,程序的执行过程就是CPU中的寄存器和内存中的数据变化的过程,而程序的切换,最关键的工作就是实现程序执行现场的保存和恢复,而所谓的现场,说的更具体一点就是CPU中的各个寄存器的值。寄存器值的保存和恢复,依然离不开栈这种数据结构的支持。博文时间片轮转多道程序系统内核的简单实现和代码分析 实现了一个非常简单的时间片轮转的小内核,在这个例子中,我们只对CPU的EIP和ESP寄存器的值做了保存和恢复,但是确实可以实现对几个简单的可以抽象成进程的函数的轮转调入,也以此来演示一个最简单的进程调度内核的实现方法。

    有了前两个的基础,我们就可以对计算机程序和操作系统内核的工作原理有一个比较具体的理解了,只是Linux内核做的更加精细,更加复杂,提供的功能也更加强大而已。博文Linux内核启动过程分析就详细列出了一个成熟的Linux内核在启动时做的各种工作。同时也交代了进一步调试和学习Linux内核的基本技能。

    我们的计算机软件可以分成两个层次,一个是面向用户的应用软件,另一个就是叫做操作系统的系统软件。应用软件需要系统软件提供的功能来完成指定的功能。也可以这么理解:系统软件是对硬件设备的抽象,把计算机硬件提供的计算能力抽象成了一个标准化的抽象的计算机,这个抽象的计算机能提供一些标准的计算功能;而应用软件是把这些标准计算功能进一步抽象和组织,翻译成人类更容易理解的输入和输出。而应用软件请求系统软件计算能力的途径就是通过系统调用。两篇博文Linux系统调用初探Linux系统调用中断处理过程可以帮助我们理解操作系统是如何通过系统调用为应用层软件服务的。同时系统调用也是重要的系统进行进程切换的时机,上面博文中也有介绍和解释。

    Linux操作系统是一个多任务操作系统,也就是说多个不同的程序可以同时在一个操作系统上运行,在只有一个CPU的计算机上,宏观上的同时执行的多个程序,在微观上其实是轮换的在CPU上执行的。那么多个程序是如何被启动的,又是如何互相切换的,这就请参考下面三篇博文 Linux新进程创建处理过程execve系统调用处理过程,以及 Linux中的进程调度与进程切换

二、总结

    Linux内核是一个非常复杂和精巧的系统软件,短短8周的课程只能涵盖他非常小的一小部分,而总结起来,就是CPU和进程管理的部分,而这也是和最终用户接触最多的部分,因为直观上,我们使用计算机,就是使用的在计算机中运行的各种软件,也就是操作系统看到的多个进程。这个课程使我对新进程的创建、进程的切换过程有个更加具体的理解,对底层的运行过程更加清晰了。

扫描二维码关注公众号,回复: 3535704 查看本文章

    如果说有什么遗憾,就是有点可惜,可惜我上学的时候还没出现MOOC这么个东西,现在工作了,时间非常不好控制,对课程的学习不够深入,实验做的不够多,对系统执行过程追踪的不够细。

猜你喜欢

转载自blog.csdn.net/yubo112002/article/details/82527264