操作系统1——引导扇区的理解
在操作系统这个方面,我记得自己经常听到主引导记录这个名词,但是对于它的理解并不深,只知道它在系统加载的时候很重要。现在我想自己写一个操作系统,但是想到第一步该怎么做呢?书上说是用汇编写引导程序。那么这个引导程序是什么呢?它正是我们经常所说的主引导记录,或者说,它存储在引导扇区上,即我们所说的boot sector。
我们知道,当计算机电源被打开的时候,他会先进行加电自检,然后寻找启动盘,如果计算机选择从软盘启动,计算机就会检查软盘的0面0磁道1扇区,如果发现它是以0xaa55结束的话,那么BIOS就认为它是一个引导扇区,当然引导扇区的结构我们会在下面介绍。一旦BIOS发现了引导扇区,那么它就会将这512字节的内容,装载到内存的0000:7c00处,然后跳转到该位置处将控制权彻底交给这段引导代码。到此为止,计算机不再由BIOS中固有的程序来控制,转而由操作系统的一部分来控制。
那么主引导记录的定义是什么呢?
主引导记录(MBR,Master Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。
主引导扇区由三个部分组成(共占用512个字节):
1.主引导程序即主引导记录(MBR)(占446个字节) 可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在 分区表 中登记了的某个操作系统。 2.磁盘分区表项(DPT,Disk Partition Table) 由四个分区表项构成(每个16个字节)。 负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。(具体内容略) 3.结束标志(占2个字节) 其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。
其中四个分区表项的结构是:
第1个字节表示:是否是系统分区
第234字节表示:该分区的开始磁头,扇区以及柱面
第5字节表示:分区类型
第678字节表示:分区结束的开始磁头,扇区以及柱面
后面的8个字节,前四个用来表示:该分区之前的所有分区的所有扇区数
后四个字节用来表示:该分区的扇区总数
下面贴一段引导程序:
%define _BOOT_DEBUG_
%ifdef _BOOT_DEBUG_
org 0100h
%else
org 07c00h
%endif
;org 07c00h
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage: db "Hello,OS World!"
times 510-($-$$) db 0
dw 0xaa55
操作系统1——引导扇区的理解相关推荐
- 操作系统编写之引导扇区
操作系统编写之引导扇区 你可能还没有从刚刚的兴奋中走出来,可是我不得不告诉你,实际上,你刚刚所完成的并不是一个完整的操作系统,而仅仅是一个最最简单的引导扇区(Boot Sector).然而不管我们完成 ...
- 30天自制操作系统 - 取代软盘,用U盘写入引导扇区
背景 作者是在2006年发布此书的(翻译版是在2012年在中国发售),当时可能还能找到带有软驱的计算机.但是时过境迁,现在已经不存在这种老古董东西了. 简单总结一下学习到第三天的一些更变. 更变 书籍 ...
- 【OS学习笔记】六 实模式:编写主引导扇区代码
上一篇文章学习了:计算机的启动过程(点击链接查看上一篇文章) 这篇文章学习记录为:编写主引导扇区代码. 参考:<X86汇编语言-从实模式到保护模式>-李忠.纯学习笔记,更详细内容请阅读正版 ...
- 操作系统多重引导规范:Multiboot Specification 0.6.93(中文版)
Multiboot规范 本文定义了Multiboot规范--提议中的引导过程标准.本文是此规范的0.6.93版. 1. Multiboot规范简介本章描述了一些关于Multiboot规范的粗略的信息. ...
- syslinux引导扇区不支持ntfs文件系统_实战 FAT12 文件系统
1. 引言 经过一系列的文章,我们终于完成了从实地址模式跳转到保护模式,并且实现了分段.分页以及保护模式下的中断与异常机制. 保护模式究竟"保护"了什么 可是我们除了最初的时候,在 ...
- 第五章 编写主引导扇区代码
本章的思路是,在本机上上写一段代码(这些代码的意义是往显存中写一些数据)-->编译成bin文件-->写入到vhd硬盘的引导扇区(即第一扇区,见第四章详述)-->开机从硬盘启动,从而执 ...
- 【OS学习笔记】八 实模式:编写主引导扇区代码-另一种更高效的写法
学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 上一篇文章,我们用比较原始的方法编写了主引导扇区的代码.点击链接查看 ...
- 主引导扇区及主引导记录MBR的详细说明
引导扇区在每个分区里都存在,但是我们常说的*主引导扇区*是硬盘的 第一物理扇区.它由两个部分组成:即主引导记录MBR和硬盘分区表DPT.在 总共512字节的主引导分区里其中MBR占446个字节(偏移0 ...
- 主引导扇区(MBR),分区表(DPT)及活动分区(DBR)
主引导扇区:硬盘的0柱面.0磁头.1扇区(也叫主引导记录MBR),大小为512Byte. 分区表(DPT):位于主引导分区,从偏移01BEH开始到偏移01FDH结束的64字节. 活动分区DBR:DBR ...
最新文章
- [elixir! #0007] [译] 理解Elixir中的宏——part.5 重塑AST by Saša Jurić
- Linq 等式运算符:SequenceEqual
- OLEDB访问CSV、txt
- 【Java】5.3 成员变量和局部变量
- Flutter混合开发:Android中如何启动Flutter
- vue 限制输入字符长度
- pc端jquery左右按钮控制带缩略图的图片切换代码_Web开发实用的图片预览插件,简单零依赖——PhotoSwipe...
- python变量的输入
- jQuery 入门教程(5): 显示/隐藏内容
- 保险条款精解(三) 撞车
- 硬件平台选型(1)---SDM 660 VS SDM670
- [笔试面试题] 9-数据结构与算法篇
- 问题三十七:C++怎么解一元四次方程?(2)——怎么解一元三次方程
- 《Core Data应用开发实践指南》一导读
- 吴江智慧城市产业化“航母”起航
- 数字与静态(HeadfirstJava随笔)(转)
- C语言程序设计第五版谭浩强课后答案 第四章习题答案
- 截至20161212中国公司在美上市名单
- 烽火2640路由器命令行手册-14-桥接配置命令
- 携程Android App插件化和动态加载实践