linux0.11的启动顺序~
来源:互联网 发布:为什么淘宝寄快递便宜 编辑:程序博客网 时间:2024/05/21 18:42
入上图所示:
1.系统加电后,80X86的CPU将进入实模式,并从地址0xFFFF0开始自动执行程序代码,而这个地址通常是ROM-BIOS中的地址。
2.BIOS将执行一些系统的检测,并在物理地址0处初始化中断向量。将可启动设备的第一个扇区(磁盘引导扇区MBR)读入内存绝对地址0x7C00处,并跳转到这个地方。对linux0.11来说,读到这个地方的是bootsect.s(磁盘引导块程序)。
3.bootsect.s开始执行后,第一,将自己从0x7C00移动到0x90000(576k);第二,使用BIOS中断将setup.s加载到自己的后面(0x90200)(576.5k);第三,将system加载到地址0x10000处。
4.setup.s的功能主要是利用BIOS中断读取机器系统数据,并将这些数据保存到0x90000开始的位置(覆盖掉了bootsect 程序所在的地方),这些数据将被内核中相关程序使用。
5.然后setup 程序将system 模块从0x10000-0x8ffff(当时认为内核系统模块system 的长度不会超过此值:
512KB)整块向下移动到内存绝对地址0x00000 处。
6.接下来加载中断描述符表寄存器(idtr)和全局描述符表寄存器(gdtr),开启A20 地址线,重新设置两个中断控制芯片8259A,将硬件中断号重新设置为0x20 - 0x2f。最后设置CPU 的控制寄存器CR0(也称机器状态字),从而进入32 位保护模式运行,并跳转到位于system模块最前面部分的head.s 程序继续运行。
7.为了能让head.s 在32 位保护模式下运行,在本程序中临时设置了中断描述符表(idt)和全局描述符表(gdt),并在gdt 中设置了当前内核代码段的描述符和数据段的描述符。在下面的head.s 程序中会根据内核的需要重新设置这些描述符表。
- linux0.11的启动顺序~
- Linux0.11的内核引导启动流程
- Linux0.11启动过程
- Linux0.11启动过程
- linux0.11启动过程
- 转:linux0.11启动方式
- Linux0.11内核引导启动过程概述
- linux0.11内核源代码学习-引导启动
- Linux0.11内核--启动引导过程
- 利用Bochs调试linux0.11启动过程
- 编写MBR从硬盘启动linux0.11
- 编写MBR从硬盘启动linux0.11
- linux0.11启动第一步:bootsect.s
- linux0.11,进程0,进程1,进程2运行的先后顺序
- Bochs下编译linux0.11版本插入软盘启动的方式(转)
- linux0.11
- linux0.11 引导启动程序目录boot/分析
- Linux0.11内核--启动引导代码分析bootsect.s
- 索引指示器
- 说点缘由
- 拆修微软光学极动鲨鼠标
- WAS性能问题常用分析思路
- PHPSession-完全PHP5之session篇
- linux0.11的启动顺序~
- 使用C#开发COM+组件
- AccessType.PROPERTY和AccessType.FIELD的区别
- 金领语录
- 在unix下建立软链接
- ARP介绍
- 初次参加uof的会议
- WDK中的辅助内核模式库(Auxiliary Kernel-Mode Library)
- ASP.NET常用函数大全