详解Linux内核中的主函数实现原理
内核启动与初始化 Linux内核的启动过程从引导加载程序(如GRUB)开始,加载程序将内核映像加载到内存中,并跳转到内核的入口点。这个入口点通常是一个汇编语言编写的初始化例程,负责设置硬件环境、初始化内存管理等基础任务。 start_kernel函数 在完成初步的硬件和环境设置后,控制权会交给一个名...
当我们谈论Linux内核,我们实际上是在讨论一个庞大而复杂的软件系统,它是整个Linux操作系统的核心。而在这个核心中,有一个非常关键的部分,那就是“主函数”。但请注意,与传统的C程序中的main()
函数不同,Linux内核并没有一个明显的、统一的主函数。不过,为了简化理解,我们可以将其启动过程视为一个类似的“主函数”执行流程。
内核启动与初始化
Linux内核的启动过程从引导加载程序(如GRUB)开始,加载程序将内核映像加载到内存中,并跳转到内核的入口点。这个入口点通常是一个汇编语言编写的初始化例程,负责设置硬件环境、初始化内存管理等基础任务。
start_kernel函数
在完成初步的硬件和环境设置后,控制权会交给一个名为start_kernel
的函数。这个函数在init/main.c
文件中定义,是内核启动过程中的核心部分。start_kernel
会进行大量的初始化工作,包括:
- 设置内核的初始内存布局。
- 初始化进程调度器。
- 初始化系统设备和驱动程序。
- 创建第一个用户空间进程(通常是init进程)。
rest_init与内核初始化线程
start_kernel
函数执行完毕后,会调用rest_init
,后者会创建内核的其他关键线程,如内核线程kernel_init和kthreadd。这些线程在后续的系统运行中扮演着重要角色。
总结
Linux内核的“主函数”并不是一个具体的函数,而是由一系列初始化和启动例程组成的复杂流程。这些例程确保了内核能够正确地设置硬件环境、管理内存、调度进程,并最终启动用户空间的第一个进程,从而开启整个操作系统的运行。
Linux笔记 更多 >

- Linux用户密码存放位置及安全性分析
-
Linux用户密码主要存放在/etc/shadow文件中。这个文件被称为“影子文件”,它专门用于存储Linux系统中用户的密码信息。与/etc/passwd文件不同,/etc/shadow文件只有root用户才能读取,这大大增强了用户密码的安全性。在/etc/passwd文件中,虽然也包含用户的一些...
2024-11-25 16:36:22

- 教你如何更改Linux控制台上的字体
-
一、准备工作 在更改字体之前,我们需要确保系统已经安装了所需的字体包。可以通过包管理器(如apt、yum等)来搜索并安装字体。例如,在Debian系系统中,可以使用以下命令安装一些常见的控制台字体: sudo apt-get install console-fonts 二、查找可用字体 安装完字体包...
2024-11-19 17:00:39
![[linux挂载磁盘是什么意思]](https://img.doczz.cn/storage/20240414/1a9db2378c834a3f1d0eaa85c78df72e.png)
- [linux挂载磁盘是什么意思]
-
当你将一个新的存储设备连接到Linux系统时,系统并不会立即识别并使用它。这时,就需要通过挂载操作来将其与系统的文件系统树进行关联。挂载点是这一过程中的一个关键概念,它指的是文件系统树中的一个目录,用于作为新存储设备的访问入口。 具体挂载步骤通常包括:首先,使用fdisk、lsblk等工具确定新存储...
2024-11-20 14:12:34

- 在Linux CentOS7 下安装 python3
-
首先,打开终端,作为系统管理员或具有sudo权限的用户登录。 第一步:更新系统软件包列表。运行以下命令: sudo yum update 第二步:安装EPEL(Extra Packages for Enterprise Linux)仓库,因为CentOS 7默认的软件仓库中可能没有Python 3的...
2024-07-05 14:51:24

- Linux(Ubuntu)系统查看显卡型号的两种方法
-
方法一:使用lspci命令 在终端(Terminal)中,lspci命令是查看系统硬件设备信息的强大工具,包括显卡信息。要查看显卡型号,你可以简单地运行以下命令: lspci | grep -i vga 或者,为了更全面地获取显卡信息(包括集成显卡和独立显卡),可以使用: lspci | grep ...
2024-10-17 10:06:33
CentOs笔记 更多 >
![[centos系统如何查看mysql是否启动]](https://img.doczz.cn/storage/20240420/fc4d3e6201c7d32fa62ffa18d45db18c.png)
- [centos系统如何查看mysql是否启动]
-
方法一:使用systemctl命令 CentOS 7及以上版本普遍采用systemd作为系统和服务管理器,因此你可以使用systemctl命令来检查MySQL服务的状态。打开你的终端或命令行界面,输入以下命令: **sudo systemctl status mysqld** 或者,如果你的MySQ...
2024-10-13 09:03:40

- centos无法正常启动
-
一、可能的原因 硬件故障:硬盘损坏、内存故障等硬件问题可能导致CentOS无法正常启动。 文件系统错误:如果系统文件系统存在错误,也可能导致启动失败。 配置问题:如GRUB引导加载器配置错误、内核参数设置不当等,都可能影响启动过程。 二、解决方法 检查硬件:首先,我们需要检查服务器的硬件是否正...
2024-06-20 17:36:22

- CentOS中Tomcat启动失败怎么解决
-
首先,检查Tomcat日志文件。Tomcat在启动过程中会生成详细的日志文件,这些日志文件是排查问题的关键。重点检查catalina.out和localhost.log。这些文件通常位于Tomcat的logs目录下,通过查看这些文件的内容,你可以找到启动失败的具体原因,比如端口冲突、内存不足等。 其...
2024-12-22 17:24:13
![[centos怎么卸载jdk]](https://img.doczz.cn/storage/20240420/c70047f10e7b33bb2c0d9a68d9bc6223.png)
- [centos怎么卸载jdk]
-
一、检查已安装的JDK 首先,你需要知道系统上安装了哪些JDK版本。可以通过在终端运行java -version命令来查看当前默认的JDK版本,但这通常只显示链接到/usr/bin/java的JDK版本。为了更全面地了解,你可以使用rpm命令来查询所有已安装的JDK包: rpm -qa | grep...
2024-11-08 10:45:50

- centos无法ping通网络
-
首先,我们需要明确ping不通的可能原因。常见的原因包括但不限于:路由器故障、网线连接问题、防火墙设置不当、IP地址和网关配置错误、DNS配置错误或DNS服务器不可达等。这些原因可能单独存在,也可能相互交织,共同导致网络不通。 接下来,我们可以按照以下步骤进行排查和解决: 检查网络连接:尝试pin...
2025-04-15 14:18:27
Ubuntu笔记 更多 >

- Ubuntu如何切换到中文语言及中文输入法的使用
-
一、安装中文语言包 首先,确保你的Ubuntu系统已连接互联网。接下来,打开“设置”(Settings),选择“区域与语言”(Region & Language)。在这里,你可以看到当前系统的语言设置。点击“管理已安装的语言…”(Manage Installed Languages…),在弹...
2024-08-29 11:33:25
![[Ubuntu+Windows双系统在Windows中删除Ubuntu后重启出现grub rescue的修复方法]](https://img.doczz.cn/storage/20240421/7e02960a9a27169acf0e1a89e5420ee5.png)
- [Ubuntu+Windows双系统在Windows中删除Ubuntu后重启出现grub rescue的修复方法]
-
重点来了!以下是一些有效的修复方法: 使用Boot Repair工具: 下载Boot Repair工具ISO文件,并使用Rufus等工具将其制作成可启动的USB设备。 重启计算机,从USB设备启动,进入Boot Repair界面,选择“推荐修复”选项。 等待修复完成,重启计算机。 使用W...
2025-04-16 15:09:31

- Ubuntu中压缩、解压工具安装方法及使用命令大全
-
一、Zip/Unzip Zip和Unzip是处理.zip格式文件的常用工具。 安装方法: Ubuntu默认已安装Zip和Unzip,无需额外安装。 使用命令: 压缩文件或文件夹:zip -r 压缩包名.zip 文件或文件夹名 解压文件:unzip 压缩包名.zip 二、Tar Tar命令常用于打...
2024-05-10 11:30:42
![[ubuntu如何切换到中文语言及中文输入法的使用]](https://img.doczz.cn/storage/20240421/026df03d423143fdc22f7ea168e1708a.png)
- [ubuntu如何切换到中文语言及中文输入法的使用]
-
一、切换到中文语言 打开“设置”:首先,点击屏幕右上角的系统设置图标,或直接在应用菜单中搜索“设置”。 进入“区域与语言”:在设置窗口中,找到并点击“区域与语言”选项。 添加中文语言:在“区域与语言”界面中,点击右下角的“管理已安装的语言”按钮。在弹出的窗口中,搜索并选择“中文(简体)”...
2025-01-22 14:48:33
![[Ubuntu+Windows双系统在Windows中删除Ubuntu后重启出现grub rescue的修复方法]](https://img.doczz.cn/storage/20240421/0a72035d7f56912b6fc7df95509577b6.png)
- [Ubuntu+Windows双系统在Windows中删除Ubuntu后重启出现grub rescue的修复方法]
-
一、确认问题 当启动计算机时,如果出现“grub>”或者“error: no such partition. Entering rescue mode... grub rescue>”等类似的界面,就说明计算机仍然保留了GRUB,并因此无法启动Windows。 二、修复方法 1. 使用B...
2025-01-19 16:24:39