Linux启动过程
来源:互联网 发布:java的web服务器 编辑:程序博客网 时间:2024/06/07 10:13
BIOS启动
1.加电时由硬件将BIOS加载到内存末尾.这时是实模式,寻址空间为1M.
2.由硬件将CS段寄存器强制设置为0xFFFF,IP指令寄存器设置为0x0000.这样CS:IP指向了OxFFFF0的地址位置.这个位置就是BIOS程序的入口地址.
3.执行BIOS程序.在内存起始地址0x00000设置1K大小的中断向量表.每个中断向量大小为4字节.中断向量保存的是中断服务的入口地址.
4.BIOS程序在紧接中断向量表后面设置BIOS数据区(256B).
5.BIOS程序在BIOS数据区后面56K的位置设置中断服务程序(8KB).
6.BIOS程序执行INT 0x19中断,CPU收到这个中断后,在中断向量表找到对应的中断服务程序入口地址.然后执行中断服务程序,把0盘面0磁道的1扇区512字节(MBR)数据加载到内存中的0x07C00位置.
启动引导程序
BIOS把MBR加载到内存后就功成身退了,将控制权移交给MBR,接下来就是MBR出场了.
1.MBR由汇编编写,大小为512B,主要的作用是加载操作系统的引导程序(Boot sector)到内存中.
2.引导程序加载内核kernel到内存对应的位置.
3.引导程序将当前实模式转变到保护模式.这期间做了大量工作:
- 通过cli指令关中断.(sti指令开中断)
- 将kernel复制到内存起始位置
- 设置中断描述符表(IDT)和全局描述符表(GDT)
- 设置页目录表和页表
- 打开保护模式,设置CR0寄存器第0位为1;以及PG位,开启分页映射.
- 准备执行main函数,控制权移交个kernel
启动内核
执行main函数,kernel开始启动,挂载initramfs,执行用户空间第一个程序init…
0 0
- linux启动过程
- Linux启动过程综述
- Linux启动过程概述
- Linux启动过程综述
- Linux启动过程综述
- Linux启动过程综述
- Linux启动过程综述
- Linux启动过程
- Linux启动过程详解
- Linux服务器启动过程
- Linux启动过程综述
- linux启动过程综述
- Linux启动过程综述
- linux启动过程
- Grub--Linux启动过程
- Linux的启动过程
- Linux启动过程综述
- Linux启动过程
- Python 的MySQLConnector模块使用方法详解
- Vitamio 使用——(1)
- Unable to resolve address ' ' service ' ': Name or service not known
- shareSDK第三方分享问题
- Android studio 删除Recent project(最近项目)的方法
- Linux启动过程
- android v7 RecylerView
- 爱加密Android APk 原理解析
- GDB(二) 内存布局
- nested exception is java.io.FileNotFoundException: class path resource [spring/spring-datasource-mog
- java高分局之JVM命令参数大全(高级运行时选项)
- 二叉树
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- MYSQL建用户,建库,建表,授权