linux0.12-6-1
[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相关推荐
- 操作系统学习:Linux0.12文件异步IO
本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...
- 操作系统学习:Linux0.12初始化详细流程-进程退出与系统进入怠速
本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...
- 操作系统学习:Linux0.12初始化详细流程-打开文件与加载可执行程序
本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...
- 操作系统学习:Linux0.12初始化详细流程-进程1加载虚拟盘和根文件系统安装
本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...
- 操作系统学习:Linux0.12初始化详细流程-进程1调度与读取硬盘数据
本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...
- 操作系统学习:Linux0.12初始化详细流程-首个子进程
本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 Linux0.1 ...
- 操作系统学习:系统调用与Linux0.12初始化详细流程
本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 4.Linux内核设计的艺术 ps:基于x86硬件的pc系统 系统调用 系统调 ...
- 编译运行linux0.12,linux0.12 编译过程
感谢这篇文章的作者: http://www.cnblogs.com/strugglesometimes/p/4231359.html 编译是个很蛋疼的事情,本想把linux0.12在bochs上 ...
- Linux0.12引导启动程序学习笔记(i386)
// 主题:Linux0.12引导启动程序学习笔记(i386) // 作者:kevinjz2010@gmail.com // 版权:kevinjz原创 // 平台:80386 // 发布日期:2011 ...
- linux0.12 编译过程
感谢这篇文章的作者: http://www.cnblogs.com/strugglesometimes/p/4231359.html 编译是个很蛋疼的事情,本想把linux0.12在bochs上 ...
最新文章
- Linux磁盘管理(实验)
- Spring cloud技术栈
- altair feko+winprop 2020中文版
- java程序不能编译_救命-JAVA程序不能编译!
- mysql 5.6 gtid 复制_mysql 5.6 gtid复制
- 短网址缩短和还原综合源码
- flex中设置字体样式
- python 获取指定城市【昨日天气+未来15天预报天气+空气质量+气象数据】
- 幻方c语言程序,幻方算法 C语言描述
- mfc 制作不同的文档模板mdi不同的子窗体_法律行业python教程——利用python批量制作律师函...
- 吴昊品游戏核心算法 Round 5 —— 五子棋(无禁手)后台的判胜负AI(bfs+queue容器)(HDOJ 2699)...
- html渐变颜色代码表,渐变颜色代码表
- 多台机器同步Windows上的文件 -cwRsync 同步问题
- DN值、辐射率、反射率等
- 新唐 Nuvoton ML51PC 入门 点亮板载LED
- 今天是星期一,两天后是星期三,5天后是星期六;今天是星期六,3天后是星期二。
- 双语美文|治愈系英文段子,你对人生过敏吗
- Java中关于子类重写父类方法的坑
- “苏宁秒送”,苏宁易购探索新零售的有力武器
- 记一个ie兼容apos
热门文章
- 货币的价值--钱的价值与投资
- html公告栏设计,原生JS实现公告栏文字横向滚动(通告栏)
- 010002 心中常留一泓清泉
- 大三萌新,给自己制定两个月的暑期实习准备计划!
- redis下的cluste的脚本监控
- 2022 CCF中国软件大会(CCF Chinasoft)“软件工程研究与实践论坛”论坛成功召开...
- 区块链智能合约solidity入门 1
- wangEditor上传本地视频
- 将正整数转换成时间格式
- 关于ESP8266使用ArduinoIDE编程,调用airkiss_lan_recv和airkiss_lan_pack出错的解决方法