08 | 内核初始化:生意做大了就得成立公司
刘超
该思维导图由 AI 生成,仅供参考
上一节,你获得了一本《企业经营宝典》,完成了一件大事,切换到了老板角色,从实模式切换到了保护模式。有了更强的寻址能力,接下来,我们就要按照宝典里面的指引,开始经营企业了。
内核的启动从入口函数 start_kernel() 开始。在 init/main.c 文件中,start_kernel 相当于内核的 main 函数。打开这个函数,你会发现,里面是各种各样初始化函数 XXXX_init。
初始化公司职能部门
于是,公司要开始建立各种职能部门了。
首先是项目管理部门。咱们将来肯定要接各种各样的项目,因此,项目管理体系和项目管理流程首先要建立起来。之前讲的创建项目都是复制老项目,现在咱们需要有第一个全新的项目。这个项目需要你这个老板来打个样。
在操作系统里面,先要有个创始进程,有一行指令 set_task_stack_end_magic(&init_task)。这里面有一个参数 init_task,它的定义是 struct task_struct init_task = INIT_TASK(init_task)。它是系统创建的第一个进程,我们称为 0 号进程。这是唯一一个没有通过 fork 或者 kernel_thread 产生的进程,是进程列表的第一个。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
文章通过生动的比喻将内核初始化的过程比作成立公司的各项准备工作,生动形象地介绍了内核初始化的过程和相关概念。首先介绍了内核启动的入口函数start_kernel(),相当于内核的main函数,然后详细介绍了各种初始化函数的作用,如项目管理部门、办事大厅、会议室管理系统等。接着讲解了1号进程的创建和用户态与内核态的权限机制。最后,阐述了用户态程序访问核心资源的方式,即通过系统调用实现暂停和恢复程序运行的过程。此外,还介绍了ramdisk的作用和创建2号进程的过程。整体来看,文章通过生动的比喻和详细的技术解释,为读者提供了深入理解操作系统内核启动过程的技术知识。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(120)
- 最新
- 精选
- Virtue置顶感觉大家不用太纠结于代码细节了,知道内河初始化都干了啥就行了吧。。
作者回复: 对的对的
2019-04-16470 - 时间是最真的答案我做Java的,看的云里雾里,好慌啊
作者回复: 学点c
2019-04-12768 - ninuxer打卡day9 0生1,1生众生,2是内核态的办公室主任~
作者回复: 赞
2019-04-12449 - rocedu推荐一本入门书配套本课程学习,《庖丁解牛Linux内核分析》( https://j.youzan.com/BA2Fr9)
作者回复: 赞
2019-04-1238 - Arthur.Li0号进程不属于内核态吗?属于的话为啥2号才是内核态祖先
作者回复: 0号不运行
2019-06-04736 - 安排ramdisk里面是不是也要提前放上存储设备的驱动,然后ramdisk里面的init起来之后,加载对应存储设备的驱动,为了适应各种存储设备,ramdisk里面需要放上市面上各种存储设备的驱动吗?如果是这样的话,那跟把这些驱动放到内核里有什么区别呢?反正也没有节省空间。 我的理解是这样的,ramdisk中只放要运行的电脑上的存储设备驱动,内核中不放存储设备驱动,这样的话如果每次存储设备不同,我们只需要做一个对应的ramdisk,每次更换存储设备只需要做ramdisk,而内核只需要编译一次就行了,这样效率会提高?如果驱动放到内核一起编译,每次换存储设备都要重新编译内核,效率低。编译内核比做一个新的ramdisk效率低。 不知道以上理解对不对,还请老师指点一二。
作者回复: 是的
2019-04-1227 - 孜孜逐渐一篇文章要读很多遍,花很多时间。坚持,多看一点,多花点时间,总比啥都不干强。
作者回复: 赞,加油
2019-04-1426 - sunsweet0号进程能详细说说嘛,它是干啥用的
作者回复: 链表头
2019-04-1712 - 焰火超哥您好: 用户态 --> 内核态 --> 用户态 这点感觉很像进程间的切换啊 如果把 内核态 也当作 一个进程来看,这个一个内核态进程 是 服务于 多个用户进程的嘛? 多个用户进程对某一个硬件资源进行系统调用 应该也是有 阻塞排队等待的吧 ~~
作者回复: 进程切换更复杂了。后面会讲。内核不要当成一个进程看,要不容易晕
2019-04-1411 - 登高不去看源码似乎跟不动了
作者回复: 那就看,哈哈
2019-04-1211
收起评论