Linux---内核初始化

 


内核初始化

引导加载程序(BootLoader)

计算机首先加载引导(GRUB)。引导加载程序的任务是从存储介质(硬盘、光盘等)加载操作系统内核到内存中,并跳转到内核的启动位置。

设置堆栈和切换到保护模式

内核初始开始时,计算机可能仍让处于实模式。内核会设置堆栈,切换到保护模式或长模式(64位系统),以获得更高的内存访问和保护机制。
源码位置init/main.c中的start_kernel()。

建立内存管理(mm_init())

内核需要建立内存管理单元(Memory Management Unit,MMU)以启用虚拟内存。这里包括初始化页表、启用分页机制、配置内存保护等。

初始化中断和异常处理(trap_init())

内核会初始化中断描述符(Interrupt Descriptor Table,IDT)和中断服务例程,以便能够处理硬件中断和异常。这里包括设置中断处理程序的地址、启用和配置中断控制器等。

初始进程管理0进程 INIT_TASK(init_task)

内核会创建第一个进程(通常时init进程或systemd),这是用户空间的第一个进程。进程管理的初始化还包括建立进程控制块(Process Control Block,PCB)和设置调度器(sched_init())。

初始化文件系统(register_filesystem())

如果支持文件系统,内核会初始化文件系统相关的数据结构,挂载根文件系统,并为文件操作做好准备。这里包括虚拟文件系统(VFS)、超级快和安装文件系统驱动程序。

设备驱动初始化(platform_device_register())

内核会初始化系统调用接口,这是用户空间程序与内核交互的方式。系统调用表会被设置,以便用户程序可以请求内核提供的服务。

启动用户空间

一旦内核初始化完毕,它会启动用户空间,执行第一个用户空间进程,该进程通常是init/systemd。用户空间进程将接管系统管理任务。

进入正常运行

此时,操作系统已经初始化完毕,可以接受用户程序的执行。操作系统将处理进程调度、文件管理、内存管理、网络通信等任务,以确保系统正常运行。

本文作者:不会笑的孩子

本文链接:https://www.cnblogs.com/doubleconquer/p/17728827.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   不会笑的孩子  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.