linux操作系统的引导

1.linux是如何从硬盘读出的

2.linux在启动的时候是如何拿到这些硬件参数的

3.linux在初始运行中都做了什么

        trap.c         trap_init()

        mktime.c    time_init()

        sched.c      sched_init()

BIOS/Bootloader        

由pc机的BIOS(0xFFFF0是BIOS存储的总线地址)把bootsect从某个固定地址拿到内存中的某个固定地址(0x90000),并进行了一系列的硬件初始化和参数设置

bootsect.s

        磁盘引导块程序,在磁盘的第一个山区中的程序(0磁道 0磁头 1扇区)

        作用:首先将后续的setup.s代码从磁盘加载到紧接着bootsect.s的地方

                   在显示屏上显示loading system再将system(操作系统)加载到0x10000的地方

                   最后跳转到setup.s中去运行

setup.s

        解析BIOS/BOOTLOADER传递来的参数

        设置系统内核运行的LDT(局部描述符) IDT(终端描述符寄存器)全局描述符(设置全局描述符寄存器)

        设置中断控制芯片,进入保护模式运行(svc32保 护模式,设置寄存器中的值)

        跳转到SYSTEM模块的最前面的代码运行(head.s)

head.s

        加载内核运行时的各数据段寄存器,重新设置中断描述符表

        开启没和正常运行时的协处理器等资源

        设置内存管理的分页机制

        跳转到main.c开始运行    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值