一.结合虚拟化技术分析Linux系统的一般执行过程
虚拟化技术分析Linux系统:
启动虚拟化管理程序,在物理计算机上,首先启动虚拟化管理程序(如Xen、KVM等),该程序负责创建和管理虚拟机。
创建虚拟机,虚拟化管理程序创建一个或多个虚拟机实例,每个虚拟机都是一个独立的操作系统环境。虚拟机实例通常由一组配置文件和虚拟磁盘镜像组成。
启动虚拟机,虚拟化管理程序启动虚拟机实例,为其分配计算资源(如CPU、内存等)。虚拟机在启动时加载虚拟磁盘镜像,并开始执行其中的操作系统。
Linux引导过程:虚拟机内的操作系统开始引导过程。首先,系统固件(如BIOS或UEFI)加载引导加载程序(bootloader),通常是GRUB(GRand Unified Bootloader)。引导加载程序负责加载Linux内核。
内核启动:引导加载程序加载Linux内核镜像,并将控制权转交给内核。内核负责初始化硬件设备、创建进程、加载驱动程序等操作。
用户空间初始化:内核完成初始化后,它启动第一个用户空间进程(通常是init进程或systemd),该进程是用户空间的起点。用户空间进程负责进一步初始化系统环境、启动系统服务、加载用户应用程序等。
运行用户应用程序:一旦用户空间初始化完成,Linux系统就进入了可交互状态。用户可以通过终端或图形界面与系统进行交互,并运行各种用户应用程序。
在虚拟化技术下,每个虚拟机都运行着独立的Linux系统,与其他虚拟机相互隔离。虚拟化管理程序负责协调和分配物理资源,以及提供虚拟机的创建、启动和管理功能。每个虚拟机内部的Linux系统执行过程与物理计算机上的Linux系统相似,但在虚拟化环境中运行,并受到虚拟化管理程序的管理和限制。
虚拟化技术在物理层和虚拟机之间增加了一层抽象层,虽然这会导致一定的性能开销,但是为了虚拟化技术提供了更高的灵活性和可管理性。
二.课程收获
在本次课程中,通过老师的讲课和不断的实验,比之前更加了解了Linux内核,从一开始第一次实验的代码分析,到基于VS Code的Linux内核调试环境搭建及start_kernel跟踪分析,再到以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34,到深入理解进程切换,我一点点地深入了解了Linux系统,不仅能够提升对操作系统的深入理解,还能够提升系统调试与优化能力,同时,通过学习Linux内核分析,我了解内核的各种配置选项和模块,以及如何根据特定需求进行内核的定制和优化。这对于我从事系统开发和嵌入式开发非常有帮助。
同时,上课内容也知识含量满满,从一开始最简单的Linux系统概述到有难度的Linux源码阅读、编译调试和启动过程,在这个过程中,我锻炼了自己的能力,对Linux进程和可执行程序的原理有了更深刻的认识,同时也对KVM以及虚拟机技术有了更好的认知。
Linux操作系统作为计算机的基础,具有广泛的应用领域,包括服务器、嵌入式设备、移动设备和云计算等。学习Linux不仅让我熟悉和了解这个强大的操作系统,从而在各个领域中获得更多的机会和竞争优势,而且适应职业发展的需求,还可以通过阅读源码提升自己编写系统项目的规范和技巧,收益颇多。