zoukankan      html  css  js  c++  java
  • Linux0.12引导启动程序

    1.从系统加电起所执行程序的顺序

    ROM BIOS -----> bootsect.S -----> setup.S -----> head.s -----> main.c

    其中,head.s和main.c都属于system模块

    main属于初始化程序,这里不讲


    2.几个程序的比较

    程序名 位置 语言
    ROM BIOS ROM  
    bootsect.S boot/bootsect.S as86汇编语言
    setup.S boot/setup.S as86汇编语言
    head.s boot/head.s GNU汇编语言
    main.c init/main.c C语言

    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()


  • 相关阅读:
    vscode .vue文件中不能提示html代码
    vscode不能提示已经定义的类名和id?
    vue常用指令
    移动端性能陷阱和硬件加速
    关于样式的获取问题
    “'npm' 不是内部或外部命令,也不是可运行的程序”
    JavaScript之闭包问题
    Sublime Text 套件介紹:Pretty JSON
    教你解决Sublime Text中文乱码问题
    C# 连接Mysql 字符串
  • 原文地址:https://www.cnblogs.com/windmissing/p/2559851.html
Copyright © 2011-2022 走看看