本系列笔记参考整理于狄泰未来 - 操作系统专题、于渊 《自己动手写操作系统》(《一个操作系统的实现》)
基于x86架构从零开始编写操作系统内核,旨在通过实践的方式掌握操作系统原理
目录
1、BIOS
什么是操作系统?
- Windows,UNIX,Linux,Mac OS,Android,iOS.…
- 操作系统是直接运行于硬件之上的计算机程序
- 操作系统用于管理和控制计算机的硬件与软件资源
- 操作系统为用户软件的开发提供必要的服务和接口
现代计算机系统架构
BIOS - Base Input & Output System
- BIOS是计算机上电后第一个运行的程序
- BIOS首先检测硬件状态,检测通过后立即进行硬件初始化
- BIOS会在内存中建立中断向量表(提供硬件访问的方法)
- BIOS 最后将控制权交由主引导程序执行
注意:BIOS不是软件(Software),而是固件(Firmware)!
(固件是固化于硬件中的程序,在硬件出厂前已经烧写固定)
关于中断向量表和BIOS的详细介绍可参考:王爽《汇编语言》笔记(详细)· 十一、内中断
系统启动流程(×86架构)
BIOS 是如何被运行起来的?
BIOS的运行机制
- BIOS 存储于ROM中,地址映射为0xF0000-0XFFFFF(实地址)
- BIOS的入口地址为:0XFFFF0
- 硬件电路的特殊设计使得:开机后,CPU从0XFFFF0处开始执行
★ 开机后,CPU一加电,初始化(CS)= 0FFFFH,(IP)= 0,自动从FFFF:0单元开始执行程序
★ FFFF:0处有一条转跳指令,CPU执行该指令后,转去执行BIOS中的硬件系统检测和初始化程序。
★ 初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中
★ 硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。从此将计算机交由操作系统控制
BIOS 最后的使命
- 按照用户设置扫描各个存储介质(光驱,软驱,U盘,等)
- 发现主引导区后,将主引导区中的主引导程序载入内存
- 主引导程序在内存中的入口地址为0x0000 : 0x7c00(即0x07c00)
- 将控制权交由主引程序执行(jmp 0x0000:0x7c00)
问题