栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

内核启动过程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

内核启动过程

vmlinux.lds ENTRY(stext)

head.S ENTRY(stext)

head-common.S

1.校验

machid __vet_atags

2.__create_page_tables:建立粗页表 开MMU

3.创建C语言环境:

b start_kernel(都给uboot做了,就不用做太多了)

找到machine,并初始化架构相关的初始化

2.start_kernel

setup_arch(&command_line) 初始化架构相关的一些

setup_macharch_type

cmd_line 内核维护了一个默认的cmd_line

parse_early_param parse_args 解析cmd_line

各种子系统的初始化

rest_init

kernel_thread(启动了2个内核线程)

        kernel_thread(kernel_init)内核中运行一个函数就是变成内核线程  这就是init进程
        kernel_thread(kthreadd) 内核守护进程(保证内核自己本身能正常工作)

进程0:死循环 进程1:kernel_init

cpu_idle 结束内核调用 while(1)(cpu必须干活,不干活,就会跑飞,cpu每个时钟周期如果不干活就会跑飞)(没事干就死循环,有事干被调度去干活)

init进程 :一个进程2个状态

init在内核态下挂载根文件系统(mount_blocK_root)(根文件系统提供用户态init程序),并试图找到用户态的init程序,找到后,就转化为了用户态进程。通过执行kernel_execve来来执行一个用户空间编译连接的一个用户程序。内核态和用户态的init进程都是进程1。

挂载完根文件系统init_post(kernel_execve)

用户态init进程启动login进程,shell进程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号