Linux0.12引导启动程序
来源:互联网 发布:根据小说改编的网络剧 编辑:程序博客网 时间:2024/04/30 03:18
1.从系统加电起所执行程序的顺序
ROM BIOS -----> bootsect.S -----> setup.S -----> head.s -----> main.c
其中,head.s和main.c都属于system模块
main属于初始化程序,这里不讲
2.几个程序的比较
程序名位置语言ROM BIOSROM bootsect.Sboot/bootsect.Sas86汇编语言setup.Sboot/setup.Sas86汇编语言head.sboot/head.sGNU汇编语言main.cinit/main.cC语言
3.ROM BIOS的功能
(1)执行某些系统检测
(2)在物理地址0处开始初始化中断向量
(3)将启动设备的第一个扇区读入到绝对地址0x7c00处
(4)跳转到绝对地址0x7c00处
4.bootsect.S的功能
(1)把自己移到0x90000处(本来在0x7c00)
(2)从磁盘把第2-4个扇区的setup模块读入到0x90200处(紧接着bootsect)
(3)取磁盘参数表中当前启动引导磁盘的参数
(4)显示“Loading system”字符串
(5)system模块加载到0x10000处
(6)确定要文件系统的设备号
(7)跳转到setup程序开始处(0x90200)
5. setup.S的功能
(1)读取机器系统数据,并保存到0x90000开始的位置
(2)将system模块从0x10000-0x8ffff移到0x00000-0x7ffff处
(3)加载idtr和gdtr
(4)开启A20,重新设置两个中断控制芯片8259A,将硬件中断号重新设置为0x20-0x2f
(5)设置CR0(从而进入保护模式)
(6)跳转到system模块最前面部分的head.s(0x0000)
6.head.s的功能
(1)加载各个数据段的寄存器
(2)重新设置idt
(3)重新设置gdt
(4)检测A20是否已真的开启
(5)测试PC是否含有数学协处理器芯片
(6)设置管理内存的分布处理机制
(7)将预先入围在堆栈中的/init/main.c程序的入口地址弹出,运行maina()
- Linux0.12引导启动程序
- Linux0.12引导启动程序
- Linux0.12引导启动程序学习笔记(i386)
- linux0.11 引导启动程序目录boot/分析
- linux0.01 引导启动过程
- Linux0.11内核引导启动过程概述
- linux0.11内核源代码学习-引导启动
- Linux0.11内核--启动引导过程
- Linux0.11的内核引导启动流程
- Linux0.11 引导程序Boot学习
- Linux0.11内核--引导程序分析
- Linux0.12初始化程序
- Linux0.11内核--启动引导代码分析bootsect.s
- Linux0.11内核--启动引导代码分析setup.s
- 《Linux0.11内核完全注释》读后小结 --- 启动引导
- linux0.11系列之(二): 启动引导 bootsect.s
- linux0.11系列之(三): 启动引导 setup.s
- Linux0.11内核--启动引导代码分析bootsect.s
- Hadoop之combiner和partitioner
- 重温CSS系列(一)
- sql2008+vs2008安装心得以及详细教程
- 动态调用用dll封装的控件
- C++内存管理
- Linux0.12引导启动程序
- 国嵌Linux视频内核开发
- ASP.NET连接数据库以及调去数据
- listview android:cacheColorHint,listSelector属性作用
- 读书笔记 -- 《Oracle Core: Essential Internals for DBAs and Developers》 二
- Flex学习笔记[1] - Flex 开发入门
- java 链表实现(测试是否有环)
- Android基础之进程和线程 AsyncTask , Handler
- 为JList项目设置图标