操作系统笔记之内核初始化


title: 操作系统笔记之内核初始化
date: 2021-08-22 17:24:57
category: 操作系统
tags:

  • CPU
  • 内核态
  • 用户态
  • OS

图文地址

内核的初始化

内核初始化,就是我们操作系统的内核初始化。那么操作系统初始化需要初始化哪些东西?是按照什么步骤进行的?带着孜孜不倦的态度去探索了…

先来个大概的印象:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wdMbrpdO-1631605844326)(操作系统笔记之内核初始化/内核初始化内容.png)]

从中可以知道初始化的内容包含进程初始化(0、1、2)、中断处理初始化、内存管理初始化、调度管理初始化。

进程初始化

首先,OS的目的是为了处理各种进程,但是OS本身也可以看做是一个跟CPU等硬件打交道的进程,因此在操作系统中必须先有一个进程:0号进程。这是OS创建的第一个进程,也是进程列表中的第一个进程。通过指令set_task_end_magic(&init_task)来创建。OS中我们知道创建进程都是通过fork或者kernel_thread产生进程,但这个进程却不是,它也是唯一一个不是的。而进程列表(Process List)可以看做一个管理进程的工具,里面存放着所有的进程。

中断初始化

在有了进程之后,我们如果有进程进行了中断或者其他处理,那么就需要进程系统调用,而系统调用也是通过发送中断的方式进行的。这就需要进行中断的初始化,通过函数trap_init()进行初始化,里面设置好了很多中断门

内存初始化

同样,进程的运行离不开内存(各种代码啊数据啊等等等),所以需要内存的初始化。通过函数mm_init()来初始化内存管理。

调度初始化

进程在运行中可能会需要切换,这时候就需要对进程进行调度了,通过函数sched_init()来初始化调度管理模块。

文件系统初始化

我们需要存取的数据太多的时候,不可能全部都放入在内存中,这时候就需要一个存放这些数据的地方:文件。通过vfs_caches_init()来初始化基于内存的文件系统rootfs

最后就是OS调用rest_init()初始化其他方面了。

1号进程初始化

在OS调用rest_init()的时候,首先第一个需要干的大事就是调用kernel_thread(kernel_init, NULL, CLONE_FS)创建系统第二个进程,这个进程就是1号进程

我们都知道OS是分为用户态

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值