当前位置: 首页 > news >正文

59、Linux内核物理布局与关键机制解析

Linux内核物理布局与关键机制解析

1. 内核从闪存执行的流程

当内核直接从闪存执行时,makefiles、ld脚本和引导代码紧密协作。ld规则将代码和只读段(如初始化调用信息)放入闪存,而将数据段(数据和以符号开始的块,即BSS)放在系统RAM中,这导致两者地址不连续。makefile提供特殊规则,将这些段合并为连续地址,并转换为适合上传到目标系统的格式。这是必要的,因为数据段包含已初始化的数据结构,必须写入只读内存,否则会丢失。在start_kernel之前运行的汇编代码,需要将数据段从闪存复制到RAM(到链接器指定的地址),并将BSS段相关的地址范围清零。只有完成这些重映射后,C语言代码才能运行。

上传新内核到目标系统时,固件从网络或串行通道获取数据文件,并写入闪存。上传内核到目标计算机的中间格式因系统而异,取决于实际上传方式。例如,BIN格式用于网络传输,S3格式是通过串行电缆发送到目标系统的十六进制ASCII文件。系统开机时,用户通常可以选择启动Linux或输入固件命令。

2. init进程

start_kernel分叉出init线程(由init/main.c中的init函数实现),此时它和init线程都在内核模式下运行。完成所有初始化后,线程释放内核锁,准备执行用户空间的init进程。要执行的文件通常位于/sbin/init/etc/init/bin/init,若都未找到,则运行/bin/s

http://www.cnnetsun.cn/news/22580.html

相关文章:

  • 60、Linux内核源代码物理布局解析
  • Google Apps Script OAuth2 库完整指南:轻松实现第三方服务集成
  • PySceneDetect完整指南:零基础掌握视频智能分割技术
  • 24、结合psad和fwsnort保障网络安全
  • 32、网络攻击欺骗与 fwsnort 脚本详解
  • 师生交流论坛|基于springboot + vue师生交流论坛系统(源码+数据库+文档)
  • 二手商城|基于springboot + vue二手商城系统(源码+数据库+文档)
  • 20、帧缓冲区接口设计与 STBmenu 简易 UI 开发
  • 24、深入浅出:SNMP 实践指南
  • 高级前端 Input 公共组件设计方案(Vue3 + TypeScript)
  • 前后端HTTPS及证书配置完整流程
  • TIA博途虚拟机终极配置指南:V17+V16+V15.1全版本一键部署
  • 【开题答辩全过程】以 基于Java的人体骨骼健康知识普及系统为例,包含答辩的问题和答案
  • 企业微信开发总卡壳?试试cpolar,回调调试超顺畅
  • ChatPPT:国内综合实力最强的AI PPT工具
  • 测试经验,自动化测试的痛点+发展趋势,一篇带你上高速...
  • NetGuard实战指南:告别流量焦虑,让Android网络管理如此简单
  • 大厂已经不用人干活了?“AI中台+Agent”正在重塑商业规则
  • Qwen2.5-Omni全模态大模型:70亿参数重构人机交互范式
  • Morisawa BIZ UDGothic 字体使用指南:让文字表达更专业优雅
  • 量子化学:材料的电子态密度
  • 零基础也能做!用Qoder快速开发“技能五子棋”蹭热点项目
  • GitHub加速终极方案:告别龟速访问,体验丝滑编程
  • 【总结】【计组】【OS】页号、页框号、虚拟地址、物理地址、地址
  • 超细整理,性能测试如何做?怎么做?性能压力负载(汇总三)
  • 国外代理IP怎么选?4大标准帮你避坑选优
  • 艾体宝洞察 | 当供应链恶意代码会“二次来袭”:Shai-Hulud 事件下,为什么必须重新审视你的应用安全体系?
  • OpenHarmony环境搭建——02-JDK17安装教程
  • 艾体宝干货 |【Redis实用技巧#4】Redis分布式锁真的安全吗?可靠性深度剖析(Part 2)
  • 21-4. PLC的基本逻辑指令(置位,复位指令)