博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内核启动过程
阅读量:7094 次
发布时间:2019-06-28

本文共 513 字,大约阅读时间需要 1 分钟。

hot3.png

                 以x86体系结构的计算机为例

         

第一步是BIOS从启动设备中导入主引导记录(MBR),接下来MBR中的代码查看分区表并从活动分区读取GRUB,LILO或SYSLINUX等引导装入程序(Bootloader),之后引导装入程序会加载压缩后的内核映像并将控制权传递给内核。内核获得控制权后,会将自身解压并投入运行。

x86的cpu有两种操作模式:实模式和保护模式。在实模式下,用户仅可以使用1MB内存,并且没有任何的保护。保护模式复杂很多,使用可以使用更多的高级功能。cpu必须在中途将实模式切换到保护模式。切换是单向的,不可逆的。

内核初始化的第一步是执行实模式下的汇编代码,之后切换到保护模式,执行init/main.c文件中的start_kernel()函数。start_kernel()首先会初始化cpu子系统,之后让内存和进程管理系统就位,接下来启动外部总线和I/O设备,最后一步是激活init进程,它是所有Linux进程的父进程。init进程执行启动必要的内核服务的用户空间脚本,并且最终派生出控制台终端程序和显示登录提示。

转载于:https://my.oschina.net/u/854744/blog/418305

你可能感兴趣的文章
探索Java9 模块系统和反应流
查看>>
Use GDB to debug a C++ program called from a shell script
查看>>
java io理解
查看>>
LeetCode 175. Combine Two Tables
查看>>
LeetCode OJ:Majority Element II(主元素II)
查看>>
Qt Creatror使用designer修改了界面但是编译无反应的解决方法
查看>>
数据库索引的作用和优点缺点以及索引的11中用法
查看>>
PHP 分割字串 Function 的速度比較(substr/sscanf/preg_match)---substr最快!
查看>>
使用 Storyboard Segue 实作 UIViewController 的切换
查看>>
什么是SQL注入?什么是XSS攻击?什么是CSRF攻击?
查看>>
dictionary 添加数据
查看>>
实验二
查看>>
Oracle数据库语句大全
查看>>
自学计划
查看>>
Java对象及对象引用变量
查看>>
Android-ProgressDialog点击对话框外部是不让其消失
查看>>
[ZJOI2006]书架
查看>>
Sql中的numeric类型,对应的C#中的decimal类型
查看>>
日期 时间 星期几
查看>>
PHP content-type为"application/json"的post过来的数据$_POST接受不到的问题
查看>>