[216页]

第6章 引导启动程序

bootsect.S和setup.S是在实模式下运行的16位程序,
采用近似于Intel的汇编语言语法,并且需要使用Intel8086
汇编编译器和连接器as86和ld86。

head.s则使用GUN的汇编程序格式,并且运行在保护模式下,
需要用GNU的 as(gas)进行编译。这是一种AT&T语法的汇编
预压程序。

为什么要用两种汇编编译器?
原因:当时GNU汇编编译器不能支持实模式下的16位代码程序;

作者建议:
1、 需要知道一些一般8086汇编语言的知识;
2、 了解一些采用Intel80X86微处理器的PC的体系结构
以及80386 32位保护模式下的编程原理。

6-1 总体功能

Linux操作系统启动部分的主要执行流程:
1、 当PC的电源打开后,80x86结构的CPU将自动进入实模式,
并从地址0xFFFF0开始自动执行程序代码;
2、 PC的BIOS将执行某些系统的检查,并在物理地址0处开始
初始化中断向量;
3、 将第一个扇区(磁盘引导扇区,512B)读入内存绝对地址0x7c00处,
并跳转到这个地方。

boot/bootsect.S
1、 将自己移动到内存绝对地址0x90000(576KB)处,
2、 把启动设备盘中后2KB代码(boot/setup.S)读入到内存0x90200处,
3、 把内核(system模块)则读入到内存地址0x10000(64KB)开始处,
4、 在系统加载期间将显示信息"Loading……"
5、 控制权将传递给boot/setup.S
bootsect.S程序第44行上给出了根文件系统所在的默认块设备号ROOT_DEV(存储在引导扇区第509/510字节中)。

boot/setup.S
1、 通过BIOS获取硬件参数,且保存到0x90000;
2、 将内核(system模块)移到0地址;
3、 控制权将传递给boot/head.s

boot/head.s
1、 设置IDT、GDT以及LDT
2、 处理器和协处理器也已确认
3、 分页工作也设置号
4、 调用init/main.c

linux0.12-6-1相关推荐

  1. 操作系统学习:Linux0.12文件异步IO

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...

  2. 操作系统学习:Linux0.12初始化详细流程-进程退出与系统进入怠速

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...

  3. 操作系统学习:Linux0.12初始化详细流程-打开文件与加载可执行程序

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...

  4. 操作系统学习:Linux0.12初始化详细流程-进程1加载虚拟盘和根文件系统安装

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...

  5. 操作系统学习:Linux0.12初始化详细流程-进程1调度与读取硬盘数据

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...

  6. 操作系统学习:Linux0.12初始化详细流程-首个子进程

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...

  7. 操作系统学习:系统调用与Linux0.12初始化详细流程

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 系统调用 系统调 ...

  8. 编译运行linux0.12,linux0.12 编译过程

    感谢这篇文章的作者:    http://www.cnblogs.com/strugglesometimes/p/4231359.html 编译是个很蛋疼的事情,本想把linux0.12在bochs上 ...

  9. Linux0.12引导启动程序学习笔记(i386)

    // 主题:Linux0.12引导启动程序学习笔记(i386) // 作者:kevinjz2010@gmail.com // 版权:kevinjz原创 // 平台:80386 // 发布日期:2011 ...

  10. linux0.12 编译过程

    感谢这篇文章的作者:    http://www.cnblogs.com/strugglesometimes/p/4231359.html 编译是个很蛋疼的事情,本想把linux0.12在bochs上 ...

最新文章

  1. Linux磁盘管理(实验)
  2. Spring cloud技术栈
  3. altair feko+winprop 2020中文版
  4. java程序不能编译_救命-JAVA程序不能编译!
  5. mysql 5.6 gtid 复制_mysql 5.6 gtid复制
  6. 短网址缩短和还原综合源码
  7. flex中设置字体样式
  8. python 获取指定城市【昨日天气+未来15天预报天气+空气质量+气象数据】
  9. 幻方c语言程序,幻方算法 C语言描述
  10. mfc 制作不同的文档模板mdi不同的子窗体_法律行业python教程——利用python批量制作律师函...
  11. 吴昊品游戏核心算法 Round 5 —— 五子棋(无禁手)后台的判胜负AI(bfs+queue容器)(HDOJ 2699)...
  12. html渐变颜色代码表,渐变颜色代码表
  13. 多台机器同步Windows上的文件 -cwRsync 同步问题
  14. DN值、辐射率、反射率等
  15. 新唐 Nuvoton ML51PC 入门 点亮板载LED
  16. 今天是星期一,两天后是星期三,5天后是星期六;今天是星期六,3天后是星期二。
  17. 双语美文|治愈系英文段子,你对人生过敏吗
  18. Java中关于子类重写父类方法的坑
  19. “苏宁秒送”,苏宁易购探索新零售的有力武器
  20. 记一个ie兼容apos

热门文章

  1. 货币的价值--钱的价值与投资
  2. html公告栏设计,原生JS实现公告栏文字横向滚动(通告栏)
  3. 010002 心中常留一泓清泉
  4. 大三萌新,给自己制定两个月的暑期实习准备计划!
  5. redis下的cluste的脚本监控
  6. 2022 CCF中国软件大会(CCF Chinasoft)“软件工程研究与实践论坛”论坛成功召开...
  7. 区块链智能合约solidity入门 1
  8. wangEditor上传本地视频
  9. 将正整数转换成时间格式
  10. 关于ESP8266使用ArduinoIDE编程,调用airkiss_lan_recv和airkiss_lan_pack出错的解决方法