一、结合虚拟化技术分析Linux系统的一般执行过程
1、虚拟化层启动:在虚拟化环境中,物理主机上的虚拟化软件(如VMware、KVM等)启动,并创建虚拟机管理器(VMM)或称为hypervisor。VMM负责管理虚拟机的创建、销毁和资源分配。
2、虚拟机创建:VMM根据用户的需求创建虚拟机实例。虚拟机实例是一种逻辑上的隔离环境,包含独立的操作系统(如Linux)和应用程序。
3、虚拟机启动:在启动虚拟机时,VMM分配必要的计算资源(例如处理器、内存、存储等)给虚拟机。虚拟机启动后,它拥有自己的虚拟硬件和操作系统实例。
4、Linux内核引导:虚拟机启动时,它的虚拟硬件加载了一个引导加载程序(bootloader),例如GRUB。引导加载程序负责引导Linux内核的启动。
5、Linux内核初始化:引导加载程序将控制权交给Linux内核。Linux内核初始化过程中,它首先完成硬件的检测和初始化,然后设置必要的数据结构和数据缓冲区。
6、用户空间初始化:Linux内核初始化后,它启动了用户空间的初始化。用户空间是操作系统中运行用户应用程序的环境。
7、系统服务启动:init进程启动后,它会读取配置文件(如/etc/inittab)来确定要启动的系统服务。这些服务可以是后台守护进程,负责提供各种系统功能(如网络服务、日志记录等)。
8、Shell环境启动:在系统服务启动之后,init进程会启动一个用户交互的Shell环境,例如bash。这允许用户通过命令行界面与系统进行交互,并执行各种命令和程序。
9、用户应用程序执行:在Shell环境中,用户可以执行各种应用程序,包括系统自带的工具和用户自定义的程序。Linux提供了广泛的命令行工具和图形界面应用程序,用于满足各种需求。
namespace 技术
namespace 是 Linux 内核的一组特性,支持对内核资源进行分区隔离,让一组进程只能看到一组资源,而另一组进程只能看到另一组不同的资源。换句话说,namespace 的关键特性是进程隔离。在运行许多不同服务的服务器上,将各个服务及其相关进程相互隔离能够减少系统环境变更带来的影响,以及避免系统安全性方面的问题。
namespace 技术是实现容器的核心技术。容器提供了一个独立的环境,看起来就像一个完整的虚拟机,但它不是虚拟机,而是正在运行的一组进程。如果启动了两个容器,那么将有两组进程运行,但两者之间是相互隔离的,namespace 技术实现了进程隔离。在同一个 namespace 下的一组进程之间可以感知彼此的变化,而对外界的进程一无所知。这样就可以让容器中的进程产生错觉,认为自己置身于一个独立的系统中,从而达到进程隔离的目的。
二、课程收获
本次课程学习了从Unix到Linux的发展过程,学习了Linux操作系统的发展过程以及Linux常用命令。通过此次课程的学习,我收获了很多有价值的东西。以下是我的收获:
1.理解了Linux操作系统的原理,对Linux操作系统的各个方面有更深入的理解,包括进程管理、内存管理、文件系统、设备驱动等。
2.对 Linux 底层操作系统有了更加深刻的认识,如x86和ARM64、Linux内核调试过程。对进程的调度和切换有了更为深刻的认知。