Linux0.11内核源码分析(bootsect.s)

本文详细介绍了Intel80x86系列CPU从加电启动到加载Linux系统的全过程,包括实模式与保护模式切换、BIOS的中断向量表、BIOS数据区的构建以及INT19中断加载软盘第一扇区内容到内存。此外,还解析了bootsect.s启动程序如何将自身复制并加载setup程序,以及后续的系统加载步骤。
摘要由CSDN通过智能技术生成

Intel 80x86系列的CPU可以分别在16位实模式和32位保护模式下运行。为了兼容,也为了解决最开始的启动问题,Intel将所有80x86系列的CPU,包括最新型号的CPU的硬件都设计为加电即进入16位实模式状态运行。

CPU硬件逻辑设计为加电瞬间强行将CS的值置为0xF000、IP的值置为0xFFF0,这样CS:IP就指向0xFFFF0(BIOS地址范围)。

BIOS程序在内存最开始的位置(0x00000)用1KB的内存空间(0x00000~0x003FF)构建中断向量表,在紧挨着它的位置用256字节空间构建BIOS数据区(0x00400~0x004FF),并在大约57KB以后的位置(0x0E05B)加载了8KB左右的与中断向量表相应的若干中断服务程序。

256个中断向量,每个占4KB(CS,IP)

BIOS执行完一系列BIOS代码之后,计算机完成了自检等操作。然后陷入INT 19中断。

INT 19就是把软盘第一扇区中的程序(512B)加载到内存中的指定位置(0x07C00)。

boot/bootsect.s:

!
! SYS_SIZE is the number of clicks (16 bytes) to be loaded.
! 0x3000 is 0x30000 bytes = 196kB, more than enough for current
! versions of linux
!
SYSSIZE = 0x3000
!
!	bootsect.s		(C) 1991 Linus Torvalds
!
! bootsect.s is loaded at 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值