首页 > 系统相关 >Linux---内核初始化

Linux---内核初始化

时间:2023-09-25 21:00:40浏览次数:47  
标签:初始化 文件系统 --- init 内核 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。用户空间进程将接管系统管理任务。

进入正常运行

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

标签:初始化,文件系统,---,init,内核,Linux,进程,内存
From: https://www.cnblogs.com/doubleconquer/p/17728827.html

相关文章

  • The 2nd Universal Cup. Stage 2- SPb
    A.MixedMessagesdp[i][j]表示前i位,选择\(j\)个移动到一起的最小花费。#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstexprintinf=1E9;int32_tmain(){intn;strings;cin>>n>>s;conststringt="......
  • AI写代码 - Github Copilot
    GitHubCopilot是一款由GitHub和OpenAI合作开发的AI编码工具,它旨在为开发人员提供协助,加速代码编写过程,同时提高代码质量。GitHubCopilot使用GPT-3技术,能够理解上下文,并根据开发者的输入生成代码建议、注释和文档。介绍GitHubCopilot是一项革命性的开发工具,它利用......
  • Python-day18
    1、常用的文件打开模式rfile=open('a.txt','r')print(file.readlines())file.close()wfile=open('a.txt','w')file.write('whywhywhy')file.close()afile=open('a.txt','a')file.write('whywhywhy......
  • 【笔记】机器学习基础 - Ch6.5-6 Kernel Methods
    6.5Sequencekernels考虑拓展\(K:\calX\timesX\to\mathbb{R}\)到\(\calX\)不是向量空间的情况,例如序列、图像等等。现在令\(\calX\)为字符串的集合,对应的核称为序列核sequencekernels;一种序列核的框架,称为rationalkernels,建立在称为加权转换器weightedtransduce......
  • GD32F427移植-RT-Thread标准版
    GD32移植RT-Thread标准版1前言这篇文档主要记录自己基于BSP移植RTT标准板到GD32的过程。目标芯片:GD32F427V使用工具:keil、env2参考资料【GD32F427开发板试用】从0开始到RTthread移植教你动手移植RT-Thread到国产MCU【国产MCU移植】手把手教你使用RT-Thread制作GD32系列......
  • Linux shell script if condition control flow methods All In One
    LinuxshellscriptifconditioncontrolflowmethodsAllInOneif...then...fi/if...then...else..fi/if...then...elif...then...fi#!/usr/bin/envbashifbugthenecho"bug✅"elseecho"bug❌"fiifpwdthenecho"pwd......
  • 华为发布首款Wi-Fi 7路由器BE3 Pro:极速3600Mbps!2.5G网口只需499元
    9月25日的全场景新品发布会上,华为带来了旗下首款Wi-Fi7单路由器产品,型号为“BE3Pro”,最高速率达3600Mbps,其中2.4GHz、5GHz频段分别为688Mbps、2882Mbps。大家可能不知道的是,华为是Wi-Fi7标准的主要贡献者之一,总共提交了560多个Wi-Fi7相关新提案,占总量的24%。华为BE3Pro不但......
  • Learn Git in 30 days—— 第 24 天:使用 GitHub 远端仓库 - 入门篇
    写的非常好的一个Git系列文章,强烈推荐原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn GitHub是目前全世界最多人采用的Git线上管理平台,他包含了完整的Git远端仓库实作,还有完整的议题追踪机制与报表,更有成千上万的开源码项目都在GitHub......
  • 关于Pohlig-Hellmen算法喵
    \(g^x\equiva(mod\;p)\)当\(g\)为原根时拆分\(p-1=\prod_{i=1}p_i^{ki}\)对于每一个\(p_i\)进行处理将\(x\)转化为\(p\)进制数\(x=c_0+c_1p_i+c_2p_i^2+...+c_{k_i-1}p_i^{k_i-1}\)\(g^{x(\frac{p-1}{p_i})}\equiva^{\frac{p-1}{p_i}}(mod\;p)\)用1展开2中......
  • Microservice - What are microservices, and why are microservices?
    Theconceptof microservicesissimplybreakingasinglelargepotentialserviceintomanysmaller servicesthatworktogether,hence,thename.Oneveryobviousadvantagewhenitcomestobuildinganapplicationwitha microservicearchitecturewouldbe......